DAVID J. MALAN: Gach ceart. Mar sin, fáilte roimh an gcéad Iarbháis CS50 do tráth na gceist. Shíl muid gur mhaith linn Ghorta an traidisiún na bliana seo. Agus beidh sé seo deis chun siúl tríd an réitigh ar an tráth na gceist. Agus beidh muid ag bhrostú nó mall síos atá bunaithe ar ar leas na ndaoine anseo. Mar sin, tá tú is dócha toisc go bhfuil tú anseo suim acu i conas a d'fhéadfadh tú a bheith nó Ba chóir a bheith freagraíodh de na fadhbanna seo. Mar sin, cén fáth nach bhfuil a chur orainn le breathnú ag an alt seo ar dtús? Mar sin, teaghráin a fháil. Thug sé seo duit trí leaganacha éagsúla de chlár a bhí, ar deireadh thiar, i gceist a fháil ar teaghrán ó úsáideoir. Cibé acu atá nó nach raibh sé go raibh chlé chun tú a chinneadh. Agus d'iarr muid i gCeist 0, Is dócha go bhfuil an leagan 1 thiomsú agus a fhorghníomhú. Cén fáth a mbeadh an clár segfault? Ar an gcéad amharc, aon mholtaí maidir le cén fáth? Yeah. LUCHT ÉISTEACHTA: Mar sin, cuimhin liom go bhfaca seo i sampla roimhe seo den féachaint ar an char * s agus féachaint ar an scanadh ar an agus go bhfaca mar tá sé ina pointeoir, conas raibh sé i bhfeidhm cad a scanadh tú i? An bhfuil sé s nó an seoladh ar s? DAVID J. MALAN: OK. Dea. Mar sin, ar deireadh thiar, leis an foinse aon fhadhb ag dul is dócha a laghdú leis an athróg s. Agus tá sé go deimhin, ar an athróg. Is é an cineál sonraí an athróg ruabhreac *, rud a chiallaíonn sé ag dul chun bhfuil an seoladh de chineál. Agus luíonn ann an léargas. Tá sé ag dul go bhfuil an seoladh ar pearsa nó, níos ginearálta, an seoladh an chéad charachtar i bloc ar fad de charachtair. Ach tá na gabhála sin scanadh s, na críche sin i saol, Tugtar seoladh agus tugadh cód formáid, cosúil le% s, a léamh teaghrán isteach an smután de cuimhne ag an seoladh sin. Ach mar níl aon chomhartha comhionann os comhair go Leathstad ar an gcéad líne de chód, toisc nach bhfuil againn i ndáiríre leithdháileadh aon chuimhne le malloc, toisc nach raibh sé i ndáiríre leithdháileadh le sraith de roinnt méid, fad bhfuil tú ag déanamh go bhfuil ag léamh an úsáideora ionchur méarchlár i roinnt iomlán luach truflais, a Is i s réir réamhshocraithe. Mar sin, odds bhfuil tú ag dul a segfault má nach seoladh díreach a tharlóidh amhlaidh a bheith ina luach a gur féidir leat, i ndáiríre, scríobh chuig. Mar sin dona gan a leithdháileadh do chuimhne ann. Mar sin, i gceist 1, d'iarr muid, Is dócha go bhfuil leagan 2 thiomsú agus a fhorghníomhú. Cén fáth a mbeadh an clár seo segfault? Mar sin, is é an ceann seo níos lú Buggy. Agus níl i ndáiríre ach amháin bhealach soiléir nuair is féidir leat tús le segfault anseo. Agus is é seo téamach. Am ar bith againn ag baint úsáide as c i gcuimhne, cad d'fhéadfaí a dhéanann tú a d'fhéadfadh a segfault le leagan 2? LUCHT ÉISTEACHTA: Má úsáideann tú go ionchur i teaghrán go níos faide ná 49 carachtair. DAVID J. MALAN: Go díreach. Am ar bith a fheiceann tú rud éigin seasta fad nuair a thagann sé chun eagar, do Ba chóir radair dul amach go bhféadfadh sé seo a bheith fadhbanna más rud é nach bhfuil tú ag seiceáil an theorainneacha eagar. Agus sin an fhadhb anseo. Táimid ag baint úsáide as fós scanf. Táimid ag baint úsáide as fós% s, rud a chiallaíonn iarracht a léamh teaghrán ón úsáideoir. Sin ag dul a bheith ina s léamh, a, ag an bpointe seo, go héifeachtach leis an seoladh ar smután de chuimhne nó tá sé coibhéiseacha a ghlacadh. Tá sé an t-ainm eagar na gcarachtar a chuimhne. Ach go díreach, má léann tú teaghrán go bhfuil níos faide ná 49 carachtair, 49 mar is gá duit seomra do na cúlslais 0, tá tú ag dul thar maoil go Maolán. Agus a d'fhéadfadh tú a fháil t-ádh agus a bheith in ann scríobh carachtar 51, 52, 53. Ach ag pointe éigin, an OS ag dul a rá, uimh. Ní hé seo an cinnte cuimhne bhfuil tú ag cead dteagmháil. Agus is é an clár ag dul a segfault. Mar sin, ba chóir don heuristics a bheith ar bith am atá tú a fuair fad seasta, tá tú a dhéanamh cinnte go bhfuil tú ag seiceáil an fad is cuma cad é go bhfuil tú ag iarraidh a léamh isteach é. LUCHT ÉISTEACHTA: Mar sin, chun an fhadhb go bhfuil, d'fhéadfaí tú go raibh ráiteas seiceáil iarbhír is mó ar fhad mó nó níos lú ná? DAVID J. MALAN: Go hiomlán. Tá tú díreach ar choinníoll a deir, má tá an - nó in áit nach bhfuil a fhios agat gá roimh ré cé mhéad carachtair an Tá úsáideoir ag dul chun cineál, mar gheall ar tá tú sicín agus an ubh. Ní go dtí go atá tú ag léamh sé i le scanf Is féidir leat a dhéanamh amach cé chomh fada is atá sé. Ach ag an bpointe sin, tá sé ró-dhéanach, mar atá tú ag léamh cheana féin é i roinnt bloc cuimhne. Mar sin, mar leataobh, na seachnaítear leabharlann CS50 ar an gceist seo ar fad, chun cuimhne trí úsáid a bhaint fgetc. Agus léann sé carachtar amháin ag an am, tip-toeing chomh maith, a fhios agam go bhfuil tú Ní féidir thar maoil le carachtar má léann tú amháin ag an am. Is é an ghabháil le tabhairt chun cuimhne getstring é go bhfuil muid i gcónaí a ath-mhéid go smután de chuimhne, a bhfuil ach pian. Tá sé a lán de na línte Cód sin a dhéanamh. Mar sin, bheadh ​​an cur chuige eile a bheith le a úsáid i ndáiríre col ceathrar, mar sin a labhairt, de scanf. Tá leagan de a lán de na feidhmeanna a sheiceáil i ndáiríre an fad ar cé mhéad carachtair go dtiocfadh leat a léamh maximally. Agus d'fhéadfaí tú a shonrú, ná léamh níos mó ná 50 carachtair. Mar sin, bheadh ​​an cur chuige eile ach tuisceanach níos lú na n-ionchur níos mó. Mar sin, ceist 2 Iarrann, is dócha go leagan $ 3 a thiomsú agus a fhorghníomhú. Cén fáth a d'fhéadfadh an clár segfault? Mar sin, is é an ceann seo i ndáiríre mar an gcéanna fhreagairt, cé go Breathnaíonn beagán fancier. Táimid ag baint úsáide as malloc, a mothaíonn mhaith táimid ag tabhairt dúinn féin roghanna níos mó. Agus ansin tá muid ag freeing go cuimhne ag an deireadh. Tá sé fós ach 50 bytes de chuimhne. Mar sin, d'fhéadfadh muid iarracht i gcónaí a léamh i 51, 52, 1000 bytes. Tá sé ag dul a segfault le haghaidh díreach ar an gcúis chéanna. Ach tá cúis eile freisin. Cad eile a d'fhéadfadh malloc ar ais sa bhreis an seoladh ar smután de chuimhne? D'fhéadfadh sé ar ais null. Agus ós rud é nach bhfuil muid ag seiceáil le haghaidh sin, d'fhéadfadh muid a bheith ag déanamh rud éigin dúr chúis eile, is é sin d'fhéadfadh muid a bheith ag insint scanf, a léamh ionchur an úsáideora as an méarchlár i 0 suíomh, aka null. Agus sin, freisin a bheidh, cinnte tús le segfault. Mar sin, chun na críche an tráth na gceist ar, ba mhaith linn gur ghlac ceachtar de na mar cúis bhailí. Is é ceann comhionann. Is é ceann beagán níos mine. Ar deireadh, maidir leis an chláir úsáid a bhaint as cuimhne, cén chaoi a leagan 2 agus leagan 3 difriúil? Mar sin, cad is fiú, chonaic muid soláthar seemingly endless na féidir freagraí ar an. Agus i measc daoine freagraí, cad a bhí muid ag súil le haghaidh, ach ghlac muid eile rudaí, bhí roinnt lua go bhfuil leagan 2 úsáid a bhaint as an chairn mar a thugtar air. Tá Leagan 3 baint úsáide as an gcarn. Agus feidhmiúil, ní hionann sin i ndáiríre a dhéanamh go léir go bhfuil mórán difríochta. Ag deireadh an lae, táimid fós ach ag fáil 50 bytes de chuimhne. Ach go raibh ar cheann de na freagraí is féidir go raibh muid ag breathnú ar. Ach feicfidh tú, mar a gheobhaidh tú do tráth na gceist ar ais ó na TFS, go raibh muid glacadh le plé eile ar a n- úsáidí díchosúla de chuimhne chomh maith. Ach Stack agus bheadh ​​carn a bheith freagra éasca chun dul leis. Ceisteanna ar bith? Mé a thabhairt duit Rob. ROB BOWDEN: Mar sin, fadhb 4. Is é seo an ceann áit a raibh tú a líonadh i líon na mbeart as gach na cineálacha difriúla a úsáideadh. Mar sin, an chéad rud a fheiceann muid. Glac le ailtireacht 32-giotán, mar seo fearas CS50. Mar sin, ar cheann de na rudaí bunúsacha faoi Ailtireachtaí 32-giotán, insíonn go bhfuil dúinn go díreach cé chomh mór is pointeoir ag dul a bheith san ailtireacht. Mar sin, láithreach, tá a fhios againn go bhfuil aon pointeoir Is é an cineál 32-giotán nó 4 bytes. Mar sin, ag féachaint ar an tábla, Is nód * cineál pointeoir. Sin ag dul a bheith 4 bytes. Nód struct *, go litriúil comhionann le réalta nód. Agus mar sin go bhfuil dul chun bheith 4 bytes. Teaghrán, mar sin ní dhéanann sé cuma mhaith le pointeoir go fóill, ach an typedef, ina Is teaghrán ach * ruabhreac, a Is le cineál pointeoir. Mar sin, go bhfuil ag dul a bheith 4 bytes. Mar sin, tá na trí na 4 bytes. Anois, tá nód agus mac léinn le beagán níos casta. Mar sin, ag féachaint ar nód agus na mac léinn, feicimid nód mar slánuimhir agus pointeoir. Agus is é an mac léinn dhá threo taobh istigh de sé. Mar sin, ar a laghad le haghaidh ár chás anseo, ar an mbealach go deireadh muid suas an méid a ríomh Tá an struct chur suas go díreach gach rud go bhfuil taobh istigh den struct. Mar sin, le haghaidh nód, ní mór dúinn slánuimhir, a bhfuil 4 bytes. Tá pointeoir, a bhfuil 4 bytes. Agus mar sin tá nód amháin ag dul a chur ar bun 8 bytes. Agus mar an gcéanna le haghaidh mac léinn, ní mór dúinn a pointeoir go 4 bytes agus ceann eile pointeoir go 4 bytes. Mar sin, go bhfuil ag dul go dtí deireadh suas a bheith 8 bytes. Mar sin, tá nód agus na mac léinn ag 8 bytes. Agus tá na trí na 4 bytes. Ceisteanna ar sin? Tá. LUCHT ÉISTEACHTA: An bhfuil go raibh sé ina 64-giotán ailtireacht bheadh, go dhúbailt ar fad iad? ROB BOWDEN: Ní bheadh ​​sé dhúbailt ar fad iad. Mar sin, ailtireacht 64-giotán, sé, arís, athruithe bunúsacha rud go Is pointeoir anois 64 giotán. Yeah. Mar sin, tá pointeoir 8 bytes. Mar sin, seo go raibh 4 bytes ag dul a bheith 8 bytes. Mac léinn, a bhí dhá threo, go maith, anois tá sé ag dul chun bheith 8 bytes, 8 bytes. Tá sé ag dul a dhéanamh an 16 bytes. Ach tá nód fós 4 bytes. Mar sin, tá an pointeoir ag dul a bheith 8 bytes. Is é seo 4 bytes. Mar sin, tá nód ag dul ach a bheith 12 bytes. Ceisteanna ar bith eile ar an duine? Mar sin, an chéad cheann eile, is iad seo na cóid stádas HTTP. Agus bhí tú cur síos a dhéanamh imthosca faoina gcuirfear na fhéadfadh ar ais chugat. fadhb amháin a chuala mé roinnt mac léinn Tá go rinne siad a dhéanamh ar an earráidí a bheith ar deireadh an chliaint. Mar sin, nuair a déanaimid ár ndícheall a dhéanamh ar an iarraidh leis an bhfreastalaí, téann rud éigin mícheart ar ár deireadh. Ach go ginearálta, tá na cóid seo á gcur ar ais ag an freastalaí. Mar sin, ba mhaith linn a figiúr amach cad atá ar siúl mícheart nó ceart ar an bhfreastalaí a cúiseanna na rudaí seo a chur ar ais. Mar sin, cén fáth go mbeadh sin amhlaidh i tuairisceáin freastalaí Cód stádas 200? Aon smaointe? Yeah. Mar sin, rud éigin faoi go rathúil an t-iarratas chuaigh trí. Agus tá siad in ann a thabhairt ar ais is cuma cad d'iarr tú ar. Mar sin, bhí gach rud breá. Cad mar gheall ar 302 le fáil? Yeah. LUCHT ÉISTEACHTA: Bhí an freastalaí ag lorg cad a d'iarr tú. Ach ní fhéadfadh sé a aimsiú. Mar sin, níl an earráid. ROB BOWDEN: Mar sin, bhí an bhfreastalaí ag lorg rud atá uait. Mar sin, ach breathnú anseo, 302 le fáil, go raibh sé in ann é a aimsiú. LUCHT ÉISTEACHTA: Tá brón orm. Ciallaíonn Fuarthas amach go raibh siad é a aimsiú. Tá brón orm. ROB BOWDEN: Mar sin, 302 Found. Is é an freastalaí in ann a fháil rud atá uait. LUCHT ÉISTEACHTA: Ach nach bhfuil sé ar taispeáint é? ROB BOWDEN: An difríocht idir seo 302 agus 200 is go bhfuil sé fhios cad ba mhaith leat. Ach nach bhfuil sé go díreach nuair is a raibh tú a iarraidh. Mar sin, tá 302 ina athsheolaidh tipiciúil. Mar sin, d'iarr tú leathanach. Fhios sé, ó, ba mhaith liom a thabhairt ar ais duit seo. Ach tá sé seo ag URL éagsúla. Mar sin, hug, ba mhaith leat i ndáiríre seo. DAVID J. MALAN: Tá sé ina píosa a dúirt gur thug muid duit guys athsheolaidh fheidhm a úsáidtear an fheidhm header sin, ar a seal, a phriontáil amach suíomh, colon, agus ansin an URL a ba mhaith leat a dhiúltú ar an úsáideoir. Cé nach raibh tú a fheiceáil 302 follasach ann, is é sin cad PHP Bheadh ​​isteach magically mar an header ag rá go díreach cad a dúirt Rob ann - aimsithe. Ach go here ionad. ROB BOWDEN: OK. Mar sin, cad mar gheall ar 403 forbidden? LUCHT ÉISTEACHTA: Sílim go bhfuil sé go bhfuil an freastalaí Tá ag rá go bunúsach go bhfuil an cliant Ní féidir teacht ar an leathanach baile. ROB BOWDEN: Mar sin, tá. Bhuel, an freagra tipiciúil a bhí againn Tá súil le rud éigin cosúil le, na comhaid Ní chmodded cuí. Sin é is dócha cad iad na himthosca chonaic tú iad. Ach tá cúis ann go bhfuil an cliant D'fhéadfadh a bheith ag an locht anseo. Níl i ndáiríre cód stádais eile - 401. Mar sin, is iad seo an-chosúil. Tá 401 neamhúdaraithe. Agus is é 403 forbidden. Agus mar sin neamhúdaraithe tú go heisiach a fháil mura bhfuil tú logáilte isteach Ach d'fhéadfadh logáil isteach chiallaíonn go bhfuil tú údaraithe. Ach má tá tú logáilte isteach cheana féin i agus tú nach bhfuil fós ag cead, ansin is féidir leat a fháil freisin forbidden. Mar sin, má tá tú logáilte isteach agus nach bhfuil cead, is é freisin cosc rud is féidir leat a fháil. DAVID J. MALAN: Agus an mheicníocht trína a bhfuil na fadhbanna de ghnáth réiteach ar an bhfreastalaí is trí áiteanna ar a ordú? Chmod, má tá sé, go deimhin, ar ceadanna eisiúint ar an gcomhad nó eolaire. ROB BOWDEN: Ansin 404 Ní bhfuarthas. Yeah. Mar sin, murab ionann agus 302 nuair nach raibh sé go díreach áit a bhfuil tú ag iarraidh ach a fhios sé cad ba mhaith leat, seo, tá sé ach aon smaoineamh cad ba mhaith leat. Agus nach bhfuil tú ag iarraidh rud éigin bailí. 418 Tá mé taephota agus ansin 500 freastalaí inmheánach. Mar sin, cén fáth a d'fhéadfadh tú a fháil go? Mar sin, segfault - Ndáiríre níl a fhios agam an grádú caighdeán seo. Ach má bhí rud éigin do chód PHP mícheart ann, go teoiriciúil, d'fhéadfadh sé segfault i ndáiríre, agus sa chás sin, seo 500 earráid freastalaí inmheánach, rud atá cearr le do fhreastalaí cumraíocht. Nó níl earráid chomhréire i do PHP cód. Nó an bhfuil rud éigin dona ar siúl. DAVID J. MALAN: Táimid fhaca mé segfault i measc roinnt daoine freagraí. Agus go teicniúil, d'fhéadfadh sé tarlú. Ach bheadh ​​a bheith ina PHP, an clár scríofa ag daoine eile, i ndáiríre segfaulted, nach bhfuil ach má tá na daoine screwed suas agus scríobh cód Buggy i n-ateangaire a bheadh PHP féin segfault. Mar sin, cé go bhfuil 500 cosúil le segfault i spiorad, tá sé beagnach i gcónaí ar an mar thoradh ar shaincheist comhad cumraíochta le do fhreastalaí gréasáin nó, mar a dúirt Rob, ar earráid chomhréire, is mian leat Ní raibh dhúnadh ceanglófar. Nó chaill tú Leathstad áit éigin. LUCHT ÉISTEACHTA: Mar sin, le haghaidh an pset Shuttle, mé I mo thuairimse, nuair a rinne mé é nuair a chliceáil mé ar an bhrabhsálaí, ach rud ar bith a tháinig suas, cad a dtugtar siad leathanach bán. Ach bhí sé mar gheall ar an cód. Sílim go raibh JavaScript, ceart? ROB BOWDEN: Yeah. LUCHT ÉISTEACHTA: Would go bhfuil earráid fós ag teacht suas? ROB BOWDEN: Mar sin, nach mbeadh tú gotten earráid seo mar gheall ar gach rud ó thaobh an fhreastalaí gréasáin a bhí go hiomlán fíneáil. Ach iarr tú index.html. D'iarr tú shuttle.js agus service.js. Agus bhí sé in ann filleadh go rathúil a thabhairt duit gach ceann de na rudaí - 200. OK. Tá sé ach amháin nuair a rinne do bhrabhsálaí chun léirmhíniú an cód JavaScript a tá sé cosúil le, fan, nach bhfuil sé seo JavaScript earráid bailí. Ceisteanna ar bith eile? Gach ceart. DAVID J. MALAN: Mar sin, seo chugainn Bhí suas Uimhir 11. Agus bhí 11 ar an scariest do a lán daoine. Mar sin, an rud is tábhachtaí a thabhairt faoi deara anseo ná go raibh sé seo, go deimhin, mar gheall ar liosta nasctha doubly. Ach ní raibh sé seo an bhliain seo caite mar an gcéanna fhadhb liosta nasctha doubly, Ní raibh a thabhairt duit an caveat go D'fhéadfadh an liosta, i ndáiríre, a bheith neamhshórtáilte. Mar sin, ar an bhfíric go raibh an liosta neamhshórtáilte agus ar an bhfíric go raibh an focal sin béim ar a bhí i gceist ann a chur in iúl go bhfuil sé seo i ndáiríre ar an simpliú ar cad tá a bheadh ​​curtha ar shlí eile fadhb níos dúshlánaí agus níos faide amháin. Mar sin, bhí botún coitianta anseo chun chuir réiteach na bliana seo caite ar do cheann ghlaoire agus ansin ach a chóipeáil blindly go síos mar an freagra, a bhfuil an ceart fhreagairt ar cheist éagsúil den chineál céanna i spiorad. Ach an subtleties anseo Ba mar seo a leanas. Mar sin, ceann amháin, ní mór dúinn nód a dhearbhú agus sainithe ar an mbealach is gnách anseo. Ansin sainmhínithe againn liosta de bheith ina domhanda pointeoir initialized a margadh saothair. Ansin dealraimh, níl dhá fheidhm ní mór dúinn fréamhshamhlacha do anseo, cuir isteach agus bain. Agus ansin ní mór dúinn roinnt cód samplacha anseo a dhéanamh a bunch de insertions. Agus ansin linn a iarraidh ort a chur i gcrích ar an cur i bhfeidhm a chur isteach thíos i cibé ar bhealach a cuireann sé isteach ar an liosta n i am tairiseach, chun suntais, freisin, fiú má cheana féin i láthair. Mar sin, an áilleacht a bheith in ann a chur isteach in am tairiseach é go leanann sé go bhfuil tú a chur isteach an nód nua ina? Isteach an tosaigh. Mar sin, eliminates sé, buíochas le Dia, ar a laghad, ar cheann de na cásanna a úsáidtear chun a cheangal línte fiú níos mó de chód, maith liom é a rinne an bhliain seo caite agus fiú sa rang nuair a muid Labhair tríd an gcineál seo rud le daoine agus le roinnt briathartha cód pseudo. Mar sin, i an réiteach anseo, a ligean ar skip thar leis sin ach go bhfuil ar amhairc an scáileán. Fógra go bhfuil muid ag déanamh an méid seo a leanas. Agus faoi deara chomh maith leis an simpliú eile go raibh fiú má tá sé cheana féin i láthair, mar sin ciallaíonn sé seo fiú má Is é an líon cheana féin ann, is féidir leat ach blindly isteach eile cóip de. Agus sin, freisin bhí i gceist, a bheith ina simpliú, ionas go bhféadfaí tú díriú ar, i ndáiríre, tá roinnt de na níos mó chuid hintleachtúil suimiúil agus Ní ach cuid earráid breise a sheiceáil mar gheall ar an am teoranta. Mar sin, sa sampla réiteach, leithdháileadh againn pointeoir ar an taobh clé-lámh taobh anseo chun nód. Anois, a thuiscint go pointeoir, mar Dúirt Rob é, ach 32 giotán. Agus nach ndéanann sé go bhfuil i ndáiríre seoladh go dtí go tú shannadh an seoladh. Agus a dhéanann muid go bhfuil ar an-na láimhe deise taobh via malloc. Cosúil le shaoránach maith, a sheiceáil go Ní malloc, i ndáiríre, nialasach, ionas go nach bhfuil muid thaisme a chruthú ar segfault anseo. Agus am ar bith a úsáideann tú malloc sa saol, tá tú Ba chóir a sheiceáil le haghaidh Eolas faoin margadh saothair, lest Tá tú a bug subtle. Ansin thúsú againn go null ag shannadh n agus roimhe sin agus seo chugainn. Agus sa chás seo anseo, initialized mé roimhe null, mar gheall ar an nua Tá nód ag dul a bheith ar an nua ag tosú ar mo liosta. Mar sin, níl dul chun bheith níl aon rud roimhe. Agus ba mhaith liom a chur mar aguisín bunúsach ar an liosta atá ann cheana leis an nód nua ag a leagan síos in aice cothrom le liostú féin. Ach níl mé a rinneadh díreach go fóill. Mar sin, má tá an liosta féin ann cheana, agus bhí nód amháin ar a laghad i bhfeidhm cheana féin, má tá sé seo an liosta anseo agus cuir isteach mé nód nua anseo, mé Ní mór a dhéanamh cinnte go bhfuil mo nód iar Léiríonn gcúl le mo nód nua, toisc go bhfuil an, arís, liosta nasctha doubly. Mar sin, a dhéanann muid seiceáil sanity. Más rud é nach bhfuil an liosta faoin margadh saothair, má tá ann cheana féin nóid amháin nó níos mó ann, ansin cuir ar ais go tagairt sin a labhairt. Agus ansin an rud an-deireanach is gá dúinn a dhéanamh ná a nuashonrú i ndáiríre an domhanda liosta athróg féin a chur in iúl leis an nód nua. Yeah. LUCHT ÉISTEACHTA: Sa arrow pointeoir [Inaudible] ionann null, a dhéanann go déileáil leis an liosta mar gheall ar Is é an liosta null a úsáid? DAVID J. MALAN: Nope. Is é sin ach dom a bheith réamhghníomhach cúramach, sa mhéid is go má tá sé seo mo liosta bunaidh le b'fhéidir roinnt nóid níos mó os cionn anseo agus tá mé ag mo chur isteach nód nua thar anseo, níl dul a bheith rud ar bith níos mó ná anseo. Agus ba mhaith liom a ghabháil go smaoineamh ag leagan síos roimhe seo a Eolas faoin margadh saothair ar an nód nua. Agus is dócha, má tá mo cód ceart agus níl aon bhealach eile a chur isteach nóid eile seachas an fheidhm seo, is dócha, tá fiú má liosta cheana nóid amháin nó níos mó ann, is dócha an liosta, an chéad nód a bheadh, go mbeadh pointeoir roimhe null féin. LUCHT ÉISTEACHTA: Agus díreach a leanúint-suas. An chúis a chuir tú an pointeoir ionann chugainn liosta é atá tú ag déanamh an pointeoir roimh an liosta sa mhéid is go bhfuil sé ag cur in iúl go dtí an chéad cheann eile, buille faoi thuairim mé - Mé don't - ach liostaí? DAVID J. MALAN: Go díreach. Agus mar sin a ligean ar a mheas i ndáiríre dhá chás anseo i ndáiríre, cé go raibh an Ní an t-ordú beidh muid ag smaoineamh ar iad a go leor mar an gcéanna cód an. Ach ar leibhéal ard, má léiríonn sé seo liosta agus tá sé seo le 32-giotán pointeoir, is é an scéal simplí go bhfuil sé seo Eolas faoin margadh saothair de réir réamhshocraithe. Agus is dócha ba mhaith liom a chur isteach ar an Ba é líon 50 an chéad uimhir. Mar sin, tá mé ag dul chun dul ar aghaidh agus a leithdháileadh nód, atá ag dul go bhfuil trí réimsí - n, roimhe sin, agus seo chugainn. Tá mé ag dul a chur ar an uimhir 50 anseo, mar go mbeidh sé seo a bheith n. Beidh sé seo romhainn. Agus beidh sé seo a bheith roimhe. Agus mar sin cad a dhéanfaidh mé sa chás seo? Bhuel, tá mé a rinneadh díreach tar líne 1 anseo. Faigheann pointeoir n n. Tá mé ag rá ansin, roimhe Ba chóir a fháil null. Mar sin, tá sé seo ag dul a bheith ar neamhní. Ansin mé ag dul a rá seo chugainn ag dul liosta a fháil. Agus oibríonn sé seo díreach amach go maith. Tá sé seo Eolas faoin margadh saothair. Agus mar sin tá mé ag rá, an nód nua seo chugainn Ba chóir réimse fháil is cuma cad é seo. Mar sin, go gcuireann null eile ann. Agus ansin an rud deireanach Tá féidir liom a sheiceáil anseo. Más rud é nach bhfuil an liosta cothrom le Eolas faoin margadh saothair, ach tá sé is comhionann leis Eolas faoin margadh saothair, ionas skip go ar fad. Agus mar sin go léir is féidir liom é seo chugainn liosta Faigheann pointeoir, a bhfuil de thoradh go pictiúrtha i pictiúr mar sin. Mar sin, go bhfuil scéal amháin. Agus an ceann a bhí tú ag iarraidh faoi Is sonrach gcás mar seo, áit a bhfuil muid cheana féin liosta aon-nód. Agus má théann mé ar ais ar bun sa bunaidh ráiteas faidhbe, an chéad cheann eile beidh muid isteach é a rá 34, ach le haghaidh ar mhaithe le plé. Mar sin, tá mé ag dul go dtí díreach caothúil tharraingt go bhfuil níos mó anseo. Mé díreach tar éis malloced. A ligean ar glacadh mé ag seiceáil do null. Anois, tá mé ag dul a thúsú n a bheith 34. Agus beidh sé seo a bheith n. Beidh sé seo romhainn. Agus beidh sé seo a bheith roimhe. A ligean ar a dhéanamh cinnte nach raibh mé seo a fháil ar gcúl. Tagann Roimhe Seo dtús sa mhíniú. Lig dom seo a shocrú. Tá sé seo roimhe seo. Tá sé seo chugainn. Cé go bhfuil na comhionann, a ligean ar a choinneáil ag teacht. Roimhe Seo. Tá sé seo chugainn. Mar sin, tá mé díreach tar éis mo malloced nóta, a sheiceáil do null, a shanntar 34 isteach an nód. Roimhe Seo Faigheann null. Mar sin, a thugann dom go. Ar Aghaidh Faigheann liosta. Mar sin, is é an liosta seo. Mar sin, is é seo an céanna anois le tarraingt seo arrow, ionas go mbeidh pointe siad le ceann amháin i mar an gcéanna. Agus ansin tá mé ag seiceáil an liosta Ní cothrom le Eolas faoin margadh saothair. Agus nach bhfuil sé an am seo. Ansin mé ag dul liosta a dhéanamh Faigheann roimhe pointeoir. Mar sin, a liostú roimhe sin faigheann PTR. Mar sin, tá an éifeacht a chur arrow grafacha anseo. Agus tá go bhfuil ag éirí beagán wavy, na línte. Agus ansin, ar deireadh, mé suas chun dáta liosta a chur in iúl a pointeoir. Mar sin anois pointí seo a Guy. Agus anois, a ligean ar a dhéanamh ar mear seiceáil sanity. Seo an liosta, a bhfuil an athróg domhanda. Is é an chéad nód, go deimhin, 34, mar gheall ar Tá mé ag tar éis arrow. Agus sin ceart mar ba mhaith liom a isteach ag tús an liosta gach nód nua. Mar thoradh ar a réimse chugainn dom an Guy. Má mé a choinneáil ag dul, bhuail mé seo chugainn é null. Mar sin, níl aon liosta níos mó. Má bhuail mé roimhe seo, rachaidh mé ar ais nuair a bheith ag súil agam. Mar sin, fós tá roinnt leideanna, ar ndóigh, a ionramháil. Ach ar an bhfíric go raibh inis tú a dhéanamh in am tairiseach ciallaíonn sé seo duit ach Tá líon teoranta de rudaí bhfuil tú ag a cheadaítear a dhéanamh. Agus cad é an uimhir? D'fhéadfadh sé a bheith céim amháin. D'fhéadfadh sé a bheith dhá. D'fhéadfadh sé a bheith 1,000 céimeanna. Ach tá sé críochta, rud a chiallaíonn nach féidir leat tar éis de chineál ar bith looping ar siúl anseo, gan aon athchúrsáil, gan aon lúb. Tá sé seo fuair ach a bheith línte crua-códaithe de chód mar atá againn sa sampla seo. Mar sin, an fhadhb seo chugainn 12 iarr orainn a comhlánaigh an cur i bhfeidhm bhaint thíos sa chaoi go mbainfidh sé n ón liosta in am líneach. Mar sin, tá tú beagán níos mó seomra wiggle anois. Is féidir leat glacadh leis go n, más ann dó an liosta a bheidh, a bheith i láthair níos mó ná uair amháin. Agus go bhfuil i gceist ró-a bheith ina tráth na gceist bunaithe ar foshuíomh a shimpliú, mar sin go má fhaigheann tú an uimhir 50 áit éigin ar an liosta, nach bhfuil tú chomh maith a bheith buartha faoi ag leanúint ar aghaidh iterate, lorg gach is féidir cóip de 50, rud a chineachadh díreach i roinnt minutia i am teoranta. Mar sin, le remove, bhí an ceann seo cinnte níos dúshlánaí agus níos mó cód a scríobh. Ach ag an gcéad amharc, frankly, d'fhéadfadh sé breathnú ar rud éigin mór agus cosúil le níl aon slí a d'fhéadfadh tú a bheith teacht suas le ar tráth na gceist. Ach má táimid ag díriú ar na céimeanna ar leith, tá súil againn, beidh sé go tobann stailc tú go bhfuil gach ceann de na duine aonair céimeanna ciall soiléir i siar. Mar sin a ligean ar ghlacadh le breathnú. Mar sin, an chéad, a thúsú muid pointeoir a bheith liostáil féin. Mar ba mhaith liom am líneach, ciallaíonn sin Tá mé ag dul go bhfuil roinnt lúb. Agus ar bhealach coiteann a iterate thar an nóid i struchtúr liosta nó de chineál ar bith struchtúr is iteratively a ghlacadh pointeoir chun tosaigh ar na sonraí struchtúr agus ansin tús ach thabhairt cothrom le dáta é agus siúl do bhealach a dhéanamh tríd an struchtúr sonraí. Mar sin, tá mé ag dul a dhéanamh go díreach. Cé pointeoir, mo athróg sealadach, nach bhfuil cothrom le Eolas faoin margadh saothair, a ligean ar dul ar aghaidh agus a sheiceáil. An raibh mé ádh? An bhfuil an réimse n sa nód Tá mé faoi láthair ag féachaint ar cóimhéid leis an líon mé ag lorg? Agus má tá, a ligean ar rud éigin a dhéanamh. Anois, faoi deara seo más rud é an coinníoll timpeall ar an iomlán línte seo a leanas de chód. Is é seo an rud amháin cúram mé faoi - aimsiú roinnt i gceist. Mar sin, níl aon eile, a shimpliú rudaí choincheapa de beagán. Ach anois, thuig mé, agus a bheadh ​​agat ach amháin seo a bhaint amach tar éis smaoineamh sé trí beagán, níl iarbhír dhá chás anseo. Is é ceann áit a bhfuil an nód ag an ag tosú ar an liosta, a bhfuil beag annoying, mar gheall ar go bhfuil ar cás speisialta, toisc go bhfuil tú chun déileáil leis an rud seo, a Is é an aimhrialtacht amháin. I ngach áit eile ar an liosta, tá sé an rud céanna. Níl nód roimhe sin agus seo chugainn ar nód, nód roimhe, nód seo chugainn. Ach tá sé seo Guy speisialta beag má tá sé ag an tús. Mar sin, más ionann an pointeoir ar an liosta féin, mar sin má tá mé ag tús an liosta agus chinn mé n, is gá dom a dhéanamh cúpla rudaí. Amháin, is gá dom liosta a athrú chun pointe chun an réimse seo chugainn, 50. Mar sin, is dócha go bhfuil mé ag iarraidh a bhaint 34. Mar sin, seo Guy a fuair chun dul amach i nóiméad ach. Mar sin, tá mé ag dul a rá, liosta Faigheann pointeoir romhainn. Bhuel, is é seo pointeoir. Aghaidh é ag cur in iúl thar anseo. Mar sin, tá sé seo ag athrú an ceart seo arrow anois a chur in iúl leis an Guy anseo. Anois, cuimhnigh, ní mór dúinn athróg sealadach. Mar sin, ní mór dúinn dílleachtaí ar bith nóid, toisc go bhfuil mé chomh maith an Guy i mo cur i bhfeidhm bain. Mar sin anois, ní más rud liosta féin faoin margadh saothair, Is gá dom a shocrú ar rud beag. Is gá dom a dhéanamh anois cinnte go seo arrow, a bhfuil dírithe roimhe 50-34, tá sé seo fuair chun dul amach, mar má tá mé ag iarraidh fáil réidh 34, bhí 50 níos fearr gan a choimeád ar bun ar bith de chineál ar ais tagairt dó mar an Mhol saighead. Mar sin, rinne mé díreach tar líne seo. Mar sin, ansin tá mé ag déanamh. Is é sin an cás i ndáiríre éasca go leor. Chopping amach ceann an liosta Tá sé simplí. Ar an drochuair, níl an bloc annoying eile. Mar sin anois, tá mé chun breathnú ar an gcás nuair a bhfuil rud éigin i lár. Ach nach bhfuil sé ró-uafásach, ach amháin don chomhréir mar seo. Mar sin, más rud é nach bhfuil mé ag tús an liosta, tá mé áit éigin i lár. Agus is é an líne seo anseo ag rá, tús ag cibé nód bhfuil tú ag. Téigh go dtí an nód roimhe réimse chugainn agus pointe go bhfuil ag an pointeoir. A ligean ar é seo a dhéanamh go pictiúrtha. Sin a bhí ag fáil casta. Mar sin, má tá mé anseo roimhe seo réimsí - a ligean ar é seo a dhéanamh - réimsí seo chugainn anseo. Tá mé ag dul a shimpliú mo leideanna áit ná a tharraingt a bunch iomlán de rudaí ar ais agus amach crisscrossing chéile. Agus anois, a ligean ach a rá go bhfuil seo 1, 2, 3 ar mhaithe le plé, fiú cé nach ag teacht suas le an fhadhb atá i gceist. Mar sin, tá anseo ar mo liosta nasctha. Tá mé ag iarraidh a bhaint dhá cheann i seo leagan áirithe den scéal. Mar sin, tá mé suas chun dáta pointeoir a a bheith dírithe ar an Guy. Mar sin, is é seo PTR. Tá sé ag cur in iúl anseo. Tá an liosta seo, atá ann ar fud an domhain mar atá roimhe. Agus tá sé ag cur in iúl anseo is cuma cén. Agus anois, tá mé ag iarraidh a bhaint beirt. Mar sin, má tá pointeoir dírithe anseo, tá mé ag dul a leanúint, is cosúil, an pointeoir roimhe, a chuireann dom ag 1. Tá mé ag dul ansin a rá go bhfuil an chéad cheann eile réimse, a thugann dom thar a ghabhann leis an bosca anseo, tá dul chun pointeoir comhionann seo chugainn. Mar sin, má tá an pointeoir, tá sé seo chugainn. Ciallaíonn sé sin go bhfuil an riachtanas arrow a chur in iúl leis an Guy. Mar sin, cad a bhfuil go díreach líne de chód dhéanamh le beagán de seo. Agus anois, tá sé seo ag breathnú cosúil le céim sa treo ceart. Ba mhaith linn go bunúsach a snip 2 as ar lár 1 agus 3. Mar sin, déanann sé ciall gur mhaith linn a an bealach seo pointeoir timpeall air. Mar sin, tá an chéad líne eile a sheiceáil má pointeoir seo chugainn nach bhfuil faoin margadh saothair, níl go deimhin duine éigin leis an gceart 2, ciallaíonn sin ní mór dúinn freisin a dhéanamh beag snip anseo. Mar sin, is gá dom anois a leanúint an pointeoir agus cothrom le dáta an pointeoir roimhe sin ar Guy seo a dhéanamh le beagán de workaround anseo an pointe anseo. Agus anois, tá sé seo deas amhairc. Tá sé ina messy beag sa mhéid is go níl aon duine atá dírithe ar an 2 níos mó. 2 Is é dírithe ar an taobh clé. Agus is é 2 dírithe ar an gceart. Ach is féidir leis a dhéanamh is cuma cad ba mhaith aige, mar gheall ar Tá sé ar tí a fháil saor. Agus nach ndéanann sé cuma cén Tá na luachanna sin a thuilleadh. Cad é atá tábhachtach ná go fágtha guys routing thuas agus thíos dó anois. Agus go deimhin, go bhfuil an méid a dhéanann muid seo chugainn. Táimid pointeoir saor in aisce, rud a chiallaíonn a insint dúinn an córas oibriúcháin, tá fáilte romhat a éileamh ar ais seo. Agus ansin ar deireadh, ar ais muid. Eile intuigthe, má táimid nach bhfuil ar ais go fóill, tá muid fuair a choinneáil ag lorg. Mar sin, is ionann pointeoir pointeoir seo chugainn díreach ciallaíonn bogadh an Guy anseo. Bog an Guy anseo. Bog an Guy anseo más rud é, i ndáiríre, Ní raibh muid ag teacht ar an líon táimid ag lorg go fóill. Mar sin, frankly, tá sé go hiomlán mór, I mo thuairimse, ar dtús Sracfhéachaint, go háirithe má streachailt tú leis seo le linn an tráth na gceist fheiceáil ansin rud éigin mar seo. Agus tú pat duit féin ar chúl. Bhuel, níl aon bhealach raibh mé in ann a bheith teacht suas leis gur ar an tráth na gceist. Ach ba mhaith liom a mhaíomh, is féidir leat má bhriseann tú sé síos isteach sna aonair cásanna agus díreach siúl tríd go cúramach, cé, admittedly, faoi imthosca struis. Thankfully, an pictiúr a rinneadh gach rud happier. D'fhéadfá a tharraingt seo aon roinnt bealaí. Ní gá duit a dhéanamh ar an crisscrossing Rud anseo. D'fhéadfá a dhéanamh le díreach línte mar seo. Ach an gist an fhadhb seo, i ginearálta, bhí a thuiscint go bhfuil an Ba chóir go pictiúr sa deireadh cuma beagán rud éigin mar seo, mar gheall ar amthairsigh intuigthe go gcoinníonn tú jamming agus a jamming agus jamming an nóid nua ag an tús an liosta. Ceisteanna ar bith? Is dócha an chuid is mó dúshlánaí cinnte na ceisteanna códaithe. LUCHT ÉISTEACHTA: Mar sin, tá liosta de na cosúil leis ceann i samplaí roimhe. DAVID J. MALAN: Go díreach, go díreach. Just a ainm difriúil do athróg domhanda. Ar fud an domhain cad é? ROB BOWDEN: OK. Mar sin, is é seo an ceann áit a bhfuil tú bhí a scríobh ar an mír. Roinnt daoine Scríobh aistí don cheist seo. Ach is gá duit ach úsáid a bhaint as na sé téarmaí chun cur síos ar cad a tharlaíonn nuair a iarracht tú dul i dteagmháil facebook.com. Mar sin, beidh mé ag caint díreach tríd an bpróiseas úsáid a bhaint as seo go léir téarmaí. Mar sin, in ár bhrabhsálaí, cineál muid facebook.com agus bhuail Iontráil. Mar sin, tá ár n-bhrabhsálaí ag dul a thógáil HTTP iarraidh go bhfuil sé ag dul a sheoladh trí roinnt próiseas le Facebook chun Facebook chun freagra a thabhairt dúinn leis an HTML a leathanach. Mar sin, cad é an próiseas an iarraidh HTTP Faigheann iarbhír le Facebook? Mar sin, an chéad, ní mór dúinn a aistriú Facebook.com. Mar sin, ach mar gheall ar an t-ainm Facebook.com, nuair a dhéanann i ndáiríre an t-iarratas HTTP Ní mór dul? Mar sin, ní mór dúinn a aistriú Facebook.com chuig an seoladh IP, rud uathúil aithníonn cad meaisín againn i ndáiríre ag iarraidh a t-iarratas seo a sheoladh chuig. Tá do ríomhaire glúine seoladh IP. Rud ar bith ceangailte leis an idirlíon Tá seoladh IP. Mar sin, DNS, Fearann ​​Ainm Córas, is é sin cad atá ar siúl chun déileáil leis an aistriúchán ó facebook.com chuig seoladh IP a ba mhaith leat i ndáiríre chun teagmháil a dhéanamh. Mar sin, táimid i dteagmháil leis an freastalaithe DNS agus rá, cad é facebook.com? Deir sé, ó, tá sé seoladh IP 190.212 rud éigin, rud éigin, rud éigin. Gach ceart. Anois, tá a fhios agam cad meaisín Ba mhaith liom dul i dteagmháil. Mar sin, ansin tú a sheoladh d'iarratas HTTP anonn go dtí an meaisín. Mar sin, conas a dhéanann sé a fháil chun an meaisín? Bhuel, téann an t-iarratas ó ródaire a bouncing ródaire. Cuimhnigh ar an sampla sa rang, i gcás ina chonaic muid i ndáiríre ar an mbealach go bhfuil an paicéid thóg nuair a rinne muid a chur in iúl. Chonaic muid é léim thar an Atlantaigh Aigéan ag pointe amháin nó cibé. Mar sin, an calafort téarma seo caite. Mar sin, tá sé seo anois ar do ríomhaire. Is féidir leat a bheith rudaí il láthair cumarsáid a dhéanamh leis an idirlíon. Mar sin, is féidir liom a bheith ag rith, a rá, Skype. D'fhéadfadh liom a bheith bhrabhsálaí gréasáin oscailte. D'fhéadfadh liom a bheith rud éigin go comhaid torrenting. Mar sin, tá gach ceann de na rudaí seo cumarsáid a dhéanamh leis an idirlíon ar bhealach éigin. Mar sin, nuair a fhaigheann do ríomhaire cuid de na sonraí as an idirlíon, conas a dhéanann sé Tá a fhios cén t-iarratas iarbhír Is mian na sonraí? Cén chaoi a ndéanann sé a fhios cé acu seo ar leith Tá sonraí i gceist le haghaidh an torrenting iarratas i gcomparáid leis an brabhsálaí gréasáin? Mar sin, is é seo an cuspóir calafoirt sa mhéid is go gach ceann de na hiarratais a bheith D'éiligh port ar do ríomhaire. Mar sin, deir do bhrabhsálaí gréasáin, hug, Tá mé ag éisteacht ar calafoirt 1000. Agus is é do chlár torrenting ag rá, Tá mé ag éisteacht ar calafoirt 3000. Agus deir Skype, Tá mé ag baint úsáide calafoirt 4000. Mar sin, nuair a gheobhaidh tú cuid de na sonraí a mbaineann le ceann amháin de na hiarratais seo, na sonraí marcáilte leis a port sé i ndáiríre Ba chóir a sheoladh in éineacht le. Mar sin, deir sé seo, ó, mbaineann mé a port 1000. Tá a fhios agam ansin is gá dom é a sheoladh seo chomh maith le mo bhrabhsálaí gréasáin. Mar sin, an chúis tá sé ábhartha anseo is é go bhfuil an claonadh freastalaithe gréasáin éisteacht ar chalafoirt 80. Mar sin, nuair a rachaidh mé i dteagmháil Facebook.com, tá mé cumarsáid a dhéanamh le roinnt meaisín. Ach is gá dom a rá a port sin meaisín mhaith liom cumarsáid a dhéanamh le. Agus an claonadh a bhíonn freastalaithe gréasáin a bheith éisteacht ar chalafoirt 80. Má bhí siad, d'fhéadfadh siad a leag sé suas chomh liostaí sé mar atá ar chalafoirt 7000. Agus ansin i do bhrabhsálaí gréasáin, thiocfadh liom láimh Facebook.com cineál: 7000 go dtí an t-iarratas a sheoladh chuig calafort 7000 de fhreastalaí gréasáin Facebook. DAVID J. MALAN: Agus sa chás seo, fiú cé nach raibh againn a cheangal go bhfuil daoine lua sin, sa chás seo, cén calafoirt Bheadh ​​an t-iarratas dul i ndáiríre go? Bain triail as arís. Go díreach. Nach lorg sin, ach subtlety go níl aon cheann deireanach. ROB BOWDEN: Mar sin, an HTTPS, ó tá sé éisteacht go sonrach le haghaidh na criptithe, tá sé ar calafort 4430. Tá Agus r-phoist 25, ceart: LUCHT ÉISTEACHTA? DAVID J. MALAN: Amach ríomhphoist, 25, yep. ROB BOWDEN: Níl a fhios agam fiú an chuid is mó de an - gach ceann de na cinn is ísle claonadh a bhíonn le bheith áirithe le haghaidh rudaí. I mo thuairimse, gach rud faoi 1024 in áirithe. LUCHT ÉISTEACHTA: Cén fáth go raibh tú ag rá Ba é 3 an líon mícheart? ROB BOWDEN: Mar gheall ar an seoladh IP, níl ceithre grúpálacha digití. Agus tá siad 0-255. Dá bhrí sin tá 192.168.2.1 coitianta líonra seoladh IP áitiúil. Fógra go bhfuil gach ceann de na lú ná 255. Mar sin, nuair a thosaigh mé le 300, go Ní fhéadfadh a bheith b'fhéidir ar cheann de na huimhreacha. DAVID J. MALAN: Ach go gearrthóg amaideach ó - go raibh sé CSI, áit a raibh siad líon a bhí ró-mhór le haghaidh an seoladh IP. ROB BOWDEN: Ceisteanna ar bith ar seo? An chéad cheann eile, athrú sin i gcrích i ábhar, ach ní mór dúinn an eagar PHP na tithe sa quad. Agus ní mór dúinn liosta gan ord. Agus ba mhaith linn a phriontáil amach gach mír liosta ach ina bhfuil an t-ainm tí. Mar sin, ní mór dúinn lúb foreach. Mar sin, cuimhnigh, is é an error foreach eagar mar mír sa eagar. Mar sin, trí gach atriall den lúb, Tá an teach ag dul a ghlacadh ar cheann de na Luachanna taobh istigh de na eagar. Ar an gcéad leagan, teach Beidh Teach Cabot. Ar an dara atriall, teach beidh bheith Teach Teachtaire agus mar sin de. Mar sin, le haghaidh gach quad mar theach, tá muid ach dul i gcló - d'fhéadfaí tú a bheith echoed freisin - ar an mír liosta agus ansin an t-ainm ar an teach ar agus ansin dún an mír liosta. Is iad na braces gcuach roghnach anseo. Agus ansin dúirt muid freisin ar an gceist féin, cuimhnigh a dhúnadh ar an chlib liosta gan ord. Mar sin, ní mór dúinn a scoir modh PHP chun é seo a dhéanamh. Nó d'fhéadfadh muid a bheith echoed an dhúnadh chlib liosta gan ord. DAVID J. MALAN: Chomh maith leis sin, fíneáil anseo bheadh bheith a úsáid d'aois scoile do lúb le $ i = 0 0 agus ag baint úsáide comhaireamh go dtí figiúr amach an fad an gha. Totally fíneáil ró, ach le wordier beag. LUCHT ÉISTEACHTA: Mar sin, má bhí tú ag dul chun [Inaudible] a bheadh, a dhéanann tú - Mé dearmad cad a [inaudible] Is é an lúb. Ar mhaith leat $ quad lúibín mé? DAVID J. MALAN: Go díreach. Yeah, go díreach. ROB BOWDEN: Rud ar bith eile? DAVID J. MALAN: Gach ceart. Trádáil-dícheangail. Mar sin, bhí bunches na freagraí is féidir gach ceann de na. Bhí muid i ndáiríre ag lorg ach le haghaidh rud éigin an-láidir ar bun os cionn agus downside. Agus uimhir 16 d'iarr, a bhailíochtú úsáideoirí ' ionchur cliant-taobh, mar atá le JavaScript, in ionad freastalaí-taobh, mar atá le PHP. Mar sin, cad bun os cionn ar ag déanamh cliant-taobh? Bhuel, tá sé ar cheann de na rudaí atá beartaithe againn go laghdaíonn tú latency, mar gheall tú nach bhfuil a bodhraigh i dteagmháil leis an D'fhéadfadh freastalaí, a ghlacadh cúpla milleasoicind nó fiú cúpla soicind ag seachaint go díreach agus bhailíochtú úsáideoirí 'ionchur cliant-taobh le chuireann faoi deara le láimhseálaí ar-isteach agus ach seiceáil, rinne cineál siad rud éigin i do ainm? An raibh cineál siad rud éigin i do sheoladh r-phoist? An raibh roghnaíonn siad dorm ó an roghchlár anuas? Is féidir leat aiseolas mheandarach a thabhairt dóibh ag baint úsáide as an ríomhaire gigahertz nó cibé acu go iarbhír ar a n-deasc. Mar sin, tá sé ach níos fearr don úsáideoir taithí de ghnáth. Ach downside a dhéanamh cliant-taobh bailíochtú, má dhéanann tú é gan freisin ag déanamh bailíochtú freastalaí-taobh is é sin is duine ar bith ag teacht amach as CS50 fhios gur féidir leat a sheoladh ach aon sonraí is mian leat le freastalaí aon roinnt bealaí. Frankly, sa chuid is mó aon bhrabhsálaí, is féidir leat cliceáil ar fud na suímh agus díreach mhúchadh JavaScript, a bheadh, dá bhrí sin, a dhíchumasú aon chineál bailíochtú. Ach d'fhéadfadh tú chun cuimhne freisin go fiú mé rinne roinnt rudaí arcane sa rang ag úsáid telnet agus ar ndóigh, ag ligean do a bheith ina bhrabhsálaí a sheoladh a fháil iarratais freastalaí. Agus sin cinnte nach úsáid a bhaint as aon JavaScript. Sin díreach clóscríobh dom orduithe ag méarchlár. Mar sin, i ndáiríre, aon Ríomhchláraitheoir laistigh de go leor chompord leis an ngréasán agus HTTP D'fhéadfadh a sheoladh cibé sonraí is mian sé nó sí le freastalaí gan bailíochtú. Agus más rud é nach bhfuil do fhreastalaí seiceáil freisin, raibh siad a thabhairt dom ainm, seo i ndáiríre seoladh ríomhphoist bailí, rinne roghnaíonn siad dorm, go dtiocfadh leat deireadh suas a chur isteach bréagach nó díreach sonraí bán isteach i do bhunachar sonraí, rud is dócha nach bhfuil ag dul a bheith ina rud maith má Bhí tú ag glacadh leis go raibh sé ann. Mar sin, is é seo an réaltacht annoying. Ach i gcoitinne, cliant-taobh Is é bailíochtú iontach. Ach ciallaíonn sé faoi dhó oiread oibre. Cé go bhfuil ann éagsúla leabharlanna, leabharlanna JavaScript le haghaidh Mar shampla, a dhéanann an bhfad, i bhfad níos lú a headache. Agus is féidir leat a athúsáid cuid den chód freastalaí-taobh, cliant-taobh. Ach ná a thuiscint go bhfuil sé de ghnáth obair bhreise. Yeah. LUCHT ÉISTEACHTA: Mar sin, má táimid ach Dúirt chomh daingean - DAVID J. MALAN: [gáirí] Ugh. Glacfar iad i gcónaí ar an níos deacra cinn chun breithniú a. ROB BOWDEN: bheadh ​​sin gur glacadh. DAVID J. MALAN: Cad é? ROB BOWDEN: chruthaigh mé an fhadhb seo. Bheadh ​​sé sin gur glacadh. DAVID J. MALAN: Yeah. LUCHT ÉISTEACHTA: Cool. ROB BOWDEN: Ach ní raibh muid ag glacadh le don chéad cheann - go maith, cad a bhí muid ag lorg go bhfuil rud éigin cosúil leat nach bhfuil a cumarsáid a dhéanamh leis an bhfreastalaí. Ní raibh muid glacadh ach níos tapúla. LUCHT ÉISTEACHTA: Cad mar gheall ar Ní gá an leathanach a athluchtú? ROB BOWDEN: Is ea. Ba é sin an freagra glacadh leo. DAVID J. MALAN: Rud ar bith nuair a mhothaigh muid raibh sé níos dóichí ná a mhalairt is dócha go raibh a fhios agat cad a bhí tú ag rá, a bhfuil diana líne a tharraingt uaireanta. Ag baint úsáide as liosta nasctha ionad eagar a choimeád ar bun liosta de na slánuimhreacha in eagar. Mar sin, bun os cionn linn a lua go minic le nasctha liostaí a thug spreagadh a n-iomláine tugadh isteach í bhí tú fuinneamh. Is féidir leo fás. Is féidir leo Laghdaigh. Mar sin, ní gá duit a léim tríd fonsaí a chruthú i ndáiríre níos mó cuimhne le sraith. Nó nach bhfuil tú go dtí díreach rá, tá brón orainn, úsáideora. Tá an eagar líonadh. Mar sin, le fás dinimiciúil an liosta. Tá downside cé liostaí nasctha? LUCHT ÉISTEACHTA: Tá sé líneach. Tá Cuardach ar liosta nasctha líneach in ionad an méid leat logáil isteach DAVID J. MALAN: Go díreach. Tá Cuardach ar liosta nasctha líneach, fiú má tá sé curtha in eagar, mar is féidir leat ach lean na blúiríní aráin, na leideanna, ó thús an liosta go dtí an deireadh. Ní féidir leat a ghiaráil rochtain randamach agus, dá bhrí sin, cuardaigh dénártha, fiú má tá sé curtha in eagar, go bhféadfaí tú dhéanamh le sraith. Agus níl freisin costas eile. Yeah. LUCHT ÉISTEACHTA: Cuimhne mí-éifeachtach? DAVID J. MALAN: Yeah. Bhuel, ní ba mhaith liom gá rá mí-éifeachtach. Ach a dhéanann sé costas tú níos mó cuimhne, mar is gá duit 32 giotán do gach nód le haghaidh an pointeoir breise, ag ar a laghad le haghaidh liosta nasctha ina n-aonar. Anois, má tá tú ach slánuimhreacha a stóráil agus tú ag cur an pointeoir, go i ndáiríre de chineál ar neamh-fánach. Tá sé dúbailt ar an méid chuimhne. Ach i ndáiríre, má tá tú ag a stóráil ar liosta nasctha de structs d'fhéadfadh a bheith 8 bytes, 16 bytes, fiú níos mó ná sin, b'fhéidir go bhfuil sé níos lú de chostas imeallach. Ach tá sé ar chostas mar sin féin. Mar sin, bheadh ​​ceachtar de na Tá ' curtha fíneáil mar downsides. 18. Ag baint úsáide as PHP in ionad a scríobh C clár ordú-líne. Mar sin anseo, tá sé go minic níos tapúla a úsáid teanga mar PHP nó Ruby nó Python. Tá tú díreach tar oscailt go tapa suas eagarthóir téacs. Tá tú go leor feidhmeanna níos mó ar fáil duit. PHP Tá an doirteal cistine feidhmeanna, ach i C, tú Tá an-, an-beag. Go deimhin, guys a fhios ag an mbealach crua nach mian leat go bhfuil táblaí hash. Ní gá duit a bheith nasctha liostaí. Más mian leat sin, caithfidh tú a iad a chur i bhfeidhm duit féin. Mar sin, upside amháin de PHP nó i ndáiríre aon Is teanga léirmhíniú an rapidity leis ar féidir leat scríobh cód. Ach downside, chonaic muid seo nuair mé go tapa bhuailtí suas misspeller chur i bhfeidhm i léacht baint úsáide as PHP is, go úsáid a bhaint as teanga léirmhíniú Tá de ghnáth níos moille. Agus chonaic muid go taispeántach le méadú in am ó 0.3 soicind go dtí 3 soicind, mar gheall ar an léiriú a tharlaíonn i ndáiríre. Ba upside eile go bhfuil tú nach bhfuil a thiomsú. Mar sin, luasanna sé suas freisin le forbairt teagmhasach, toisc nach bhfuil tú ag dhá chéim a reáchtáil clár. Tá tú ach amháin. Agus mar sin go bhfuil go leor láidir chomh maith. Ag baint úsáide as bunachar sonraí SQL ionad comhad CSV chun sonraí a stóráil. Tá bunachar sonraí SQL Mar sin, a úsáidtear le haghaidh pset7. Comhaid CSV nach raibh tú a úsáid i bhfad. Ach d'úsáid tú é hindíreach i pset7 mar go maith ag caint le Yahoo Airgeadais. Ach tá CSV díreach cosúil le comhad Excel, ach Super simplí, áit a bhfuil na colúin ach demarked le camóga taobh istigh de chomhad téacs a mhalairt. Agus is é ag baint úsáide as bunachar sonraí SQL beagán níos láidre. Tá sé bun os cionn, mar a gheobhaidh tú rudaí cosúil le roghnú agus cuir isteach agus a scriosadh. Agus gheobhaidh tú, is dócha, innéacsanna a MySQL agus bunachair shonraí eile, cosúil le Oracle, a thógáil ar do shon i gcuimhne, a a chiallaíonn go bhfuil do roghnú dócha nach ag dul a bheith barr líneach go dtí an bun. Tá sé ag dul iarbhír a bheith rud éigin mhaith Cuardach dénártha nó rud éigin den chineál céanna i spiorad. Mar sin, tá siad i gcoitinne níos tapúla. Ach tá downside go tá sé níos mó oibre díreach. Tá sé iarracht níos mó. Tá tú ar bhunachair sonraí a thuiscint. Tá tú a shocrú suas. Ní mór duit freastalaí a reáchtáil an mbunachar sonraí sin ar. Caithfidh tú a thuiscint conas a chumrú sé. Mar sin, is iad seo ach na cineálacha trádáil-dícheangail. De bharr an méid comhad CSV, is féidir leat a chruthú le gedit. Agus tá tú go maith chun dul. Níl aon chastacht níos faide ná sin. Ag baint úsáide as trie ionad tábla hash le shlabhrú ar leith a stóráil ar foclóir de na focail reminiscent de pset5. Mar sin iarracht upside, go teoiriciúil ar a laghad, is é, cad é? Am tairiseach, ar a laghad, má tá tú hashing ar gach ceann de an duine aonair litreacha i bhfocal eile, is mian leat D'fhéadfadh a bheith do pset5. D'fhéadfadh a bheith cúig hashes, sé hashes má níl cúig nó sé litreacha sa bhfocal. Agus sin maith go leor. Agus má tá tá cheangal uachtair ar an gcaoi a fada a d'fhéadfadh do chuid focal a bheith, go bhfuil an am go deimhin tairiseach asymptotically. De bharr an méid tábla hash le ar leithligh shlabhrú, an fhadhb ann leis an Is de chineál ar struchtúr sonraí go bhfuil an fheidhmíocht do halgartaim ghnáth ag brath ar an líon rudaí cheana féin sa struchtúr sonraí. Agus sin cinnte an cás le slabhraí, trína an stuif níos mó a chuir tú isteach i tábla hash, an níos faide iad siúd slabhraí dul, rud a chiallaíonn i measa cás, an rud a d'fhéadfadh tú a bheith ag lorg Is léir ar an mbealach ag deireadh na bliana amháin de na slabhraí, a go héifeachtach chineachós i rud éigin líneach. Anois, i gcleachtas, d'fhéadfadh sé fíor bheith an cás go tábla hash le Tá slabhraí níos tapúla ná mar a fhreagraíonn cur i bhfeidhm trie. Ach é sin le haghaidh ar chúiseanna éagsúla, i measc a bhfuil iarracht úsáid a bhaint as a lán iomlán de na go bhfuil cuimhne féidir, i ndáiríre, rudaí mall síos, toisc nach bhfuil tú deas buntáistí a bhaineann le rud ar a dtugtar caching, i gcás rudaí a bhfuil gar dá chéile Is féidir i gcuimhne a rochtain Is minic níos tapúla. Agus uaireanta is féidir leat teacht suas le feidhm hash gur maith. Fiú má tá tú le dramhaíl beagán de cuimhne, tú a d'fhéadfadh, go deimhin, a bheith in ann rudaí a fháil go tapa agus ní chomh dona is a líneach. Mar sin, i mbeagán focal, ní raibh gá le aon cheann de na amháin nó fiú dhá rudaí ar leith a bhí á lorg againn do. Tá sé an rud ar bith áititheach mar upside agus downside gafa i gcoitinne ár súl. ROB BOWDEN: Mar sin, le haghaidh an upside, rinne muid Ní glacadh ar a chuid féin "níos tapúla." Tú Bhí rud éigin faoi a rá. Fiú má dúirt tú go teoiriciúil níos tapúla, Bhí a fhios againn go bhfuil tú de chineál ar a thuiscint go bhfuil sé de 0 1. Agus tábla hais, go teoiriciúil, Ní de 0 1. Luaitear aon rud faoi runtime fuair ginearálta tú na pointí. Ach "níos tapúla," an chuid is mó de na réitigh maidir le an bord mór go raibh a bhí iarracht hoibiachtúil níos moille ná mar a réitigh go raibh táblaí hash. Mar sin, níos tapúla i agus de féin nach bhfuil fíor i ndáiríre. DAVID J. MALAN: Dom de dom dom. Tá mé is dócha an ceann amháin a réadaíonn go bhfuil an chaoi go bhfuil ceaptha a a pronounced, ceart? ROB BOWDEN: Bhí mé i ndáiríre aon smaoineamh. DAVID J. MALAN: Rinne sé ciall i mo cheann. ROB BOWDEN: Tá mé ag déanamh an ceann seo. OK. Mar sin, is é seo an ceann áit a raibh tú a tharraingt an léaráid cosúil leis leat d'fhéadfadh feicthe ar scrúduithe atá caite. Mar sin, a ligean ar breathnú díreach ag an. Mar sin, ó na nód HTML, tá muid beirt leanaí, an ceann agus an comhlacht. Mar sin, táimid brainse - ceann agus comhlacht. Tá an ceann tag teideal. Mar sin, ní mór dúinn a teideal. Anois, an rud amháin a lán de na daoine dearmad é go bhfuil na nóid téacs eilimintí laistigh den crann. Mar sin, anseo a tharlóidh muid chun iad a tharraingt mar ovals chun iad a idirdhealú ó na cineálacha nóid. Ach fógra anseo freisin ní mór dúinn barr, Beidh lár, agus bun deireadh a bheith suas nóid téacs. Mar sin, forgetting siúd a bhí beagán de botún coiteann. Tá an comhlacht triúr leanaí - na trí divs. Mar sin div, div, div agus ansin an téacs leanaí nód de na divs. Sin go leor i bhfad é don cheist. DAVID J. MALAN: Agus is fiú a thabhairt faoi deara, cé nach bhfuil muid dwell ar na mionsonraí ar an am a chaitheann muid ar JavaScript, go ndéanann an t-ordú, i Go deimhin, is cuma go teicniúil. Mar sin, má thagann cheann roimh comhlacht sa HTML, ansin ba chóir é le feiceáil ar an d'fhág de chomhlacht sa DOM iarbhír. Is é sin a, i gcoitinne, ach FYI, rud ar a dtugtar doiciméad ordú, i gcás ina a dhéanann sé ábhar. Agus má bhí tú ag cur parsálaí, clár a léann HTML i bhfoirgneamh suas an crann i gcuimhne, a bheith macánta, go intuitively cad is dócha tú dhéanamh ar aon nós - bharr go bun, chlé go deas. ROB BOWDEN: Ceisteanna ar sin? Ar cheart dom a dhéanamh ar an chéad cheann eile? DAVID J. MALAN: Cinnte. ROB BOWDEN: OK. Mar sin, is é seo an maolán overrun ionsaí cheist. Is é an rud is mó a aithint anseo, go maith, conas a d'fhéadfadh cleas adversary an clár seo i forghníomhaitheach cód treallach? Mar sin argv1, an líne ordaithe chéad argóint leis an gclár seo, is féidir a bheith fada treallach iad. Ach anseo tá muid ag baint úsáide memcpy a chóipeáil argv1, atá anseo barra. Táimid ag rith sé mar an argóint. Agus mar sin tá sé ag cur ar an mbarra ainm. Mar sin, tá muid ag memcpying barra i maolán seo c. Cé mhéad bytes chóipeáil againn? Bhuel a tharlaíonn, áfach, go leor beart chun barra bheith ag baint úsáide, an fad an argóint sin. Ach tá c ach 12 bytes leathan. Mar sin, má scríobhann muid argóint ar an líne ordaithe go bhfuil níos faide ná 12 bytes, tá muid dul thar maoil seo Maolán ar leith. Anois, conas a d'fhéadfadh adversary trick an clár i forghníomhaitheach cód treallach? Mar sin, cuimhnigh go anseo príomh-ag glaoch foo. Agus mar sin ansin is mó glaonna foo. A ligean ar a tharraingt seo. Mar sin, ní mór dúinn ár n-chairn. Agus tá príomh-fráma Stack ag bun an leathanaigh. Ag pointe éigin, foo is mó glaonna. Bhuel, láithreach, foo is mó glaonna. Agus mar sin faigheann foo a fráma chairn féin. Anois, ag pointe éigin, foo ag dul a thabhairt ar ais. Agus chuaigh tuairisceáin foo, ní mór dúinn a fhios ag cad í an líne de chód taobh istigh de phríomh againn in ord a fhios áit ba chóir dúinn a atosú i is mó. Is féidir linn a glaoch ar foo ó ina n-iomláine bunch na n-áiteanna éagsúla. Cén chaoi a bhfuil a fhios againn nuair a thabhairt ar ais? Bhuel, ní mór dúinn a stóráil go bhfuil áit éigin. Mar sin, áit éigin ar dheis thart anseo, stóráil muid nuair ba chóir dúinn ar ais go dtí aon uair amháin tuairisceáin foo. Agus is é seo an seoladh fillte. Mar sin, conas a d'fhéadfadh adversary leas a bhaint as seo é an bhfíric go Tá maolán seo c stóráil, a ligean ar rá, ar dheis anseo c. Mar sin, tá muid fuair 12 bytes le haghaidh c. Is é seo an c. Agus is é seo foo ar fáinne chairn. Mar sin, má théann an t-úsáideoir mailíseach níos mó beart ná 12 nó a tháinig siad isteach ar a dtoil argóint ar an líne go bhfuil níos faide ná 12 carachtair, ansin táimid ag dul chun thar maoil maolán seo. Is féidir linn a choinneáil ag dul. Agus ag pointe éigin, a théann muid i bhfad go leor go tús a chur orainn overwriting an seoladh fillte. Mar sin, nuair a scríobh againn ar an seoladh fillte, ciallaíonn sé seo go nuair a foo tuairisceáin, tá muid ag filleadh ar cibé áit an Tá úsáideoir mailíseach ag insint dó go dtí trí cibé luach a tháinig sé, cibé carachtair an t-úsáideoir isteach. Agus mar sin má tá an t-úsáideoir mailíseach á go háirithe cliste, is féidir leis a bhfuil an ar ais chuig áit éigin sa printDef fheidhm nó áit éigin sa malloc fheidhm, ach treallach áit ar bith. Ach fiú níos cliste cad má tá sé an t-úsáideoir ar ais go dtí ar dheis anseo. Agus ansin a thosaíonn tú ag forghníomhaitheach seo mar línte de chód. Mar sin, ag an bpointe sin, is féidir leis an úsáideoir isteach is cuma cad ba mhaith aige isteach sa réigiún seo. Agus tá sé smacht iomlán thar do chlár. Ceisteanna ar sin? Mar sin, is é an chéad cheist eile a chomhlánú ar an reimplementation den foo ar bhealach go bhfuil sé a thuilleadh i mbaol. Mar sin, níl cúpla bealaí d'fhéadfaí tú a bheith déanta. Tá muid fós c amháin a bheith ar fhad 12. D'fhéadfá a bheith athraithe seo mar chuid de do réiteach. Chuir muid freisin seiceáil a dhéanamh Ní raibh cinnte barra null. Cé nach raibh gá duit gur le haghaidh creidiúint iomlán. Mar sin, tá muid ag seiceáil ar dtús leis an fad teaghrán de barra. Má tá sé níos mó ná 12, ansin Ní gá a dhéanamh i ndáiríre an chóip. Mar sin, go bhfuil bealach amháin a shocrú é. Is bealach eile a shocrú in ionad an a bhfuil ca bheith ach amháin ar fhad 12, tá sé a bheith ar fhad strlen (barra). Is bealach eile a shocrú é a ndáiríre ar ais go díreach. Mar sin, má bhí tú díreach gotten réidh le gach ceann de seo, má bhí tú scriosadh ach go léir línte de chód, a bheadh ​​agat gotten creidiúint iomlán, ós rud é an fheidhm seo Ní accomplish iarbhír rud ar bith. Tá sé chóipeáil na n-orduithe argóint i roinnt sraith i a fráma chairn áitiúil. Agus ansin is é an rud ag filleadh. Agus is cuma cad tá sé i gcrích imithe. Mar sin, bhí ar ais chomh maith le go leor bhealach an dul creidiúint iomlán. DAVID J. MALAN: Ní leor an spiorad an cheist ach inghlactha in aghaidh an spec mar sin féin. ROB BOWDEN: Ceisteanna maidir le aon cheann de sin? An rud amháin go bhfuil tú ar a laghad is gá chun bheith thiomsú cód. Mar sin, cé go teicniúil nach bhfuil tú ag leochaileach más rud é nach ndéanann do chód thiomsú, ní raibh muid glacadh leis go. Uimh ceisteanna? OK. DAVID J. MALAN: Ar mhaith leat a rá an Teidil seo? ROB BOWDEN: Uimh DAVID J. MALAN: Mar sin, i gceann seo, seo raibh ceachtar dea-scéal nó nuacht olc. Tá sé seo literally an fhadhb chéanna mar an tráth na gceist dtús. Agus tá sé beagnach mar an gcéanna fhadhb mar pset1. Ach bhí sé simplithe d'aon ghnó a bheith pirimid simplí, ceann amháin is féidir a réiteach le beagán atriall níos simplí. Agus i ndáiríre, cad a bhí muid ag dul ag anseo nach raibh an oiread sin ar an loighic, mar gheall ar dócha, ag an bpointe seo, tá tú níos compordaí ná mar a bhí tú i seachtain amháin le haghaidh lúb nó cén fáth lúb, ach i ndáiríre a tease seachas go tá tú beagán compordach leis an nóisean nach bhfuil PHP díreach faoi cad cláir. Is féidir é a úsáid iarbhír mar theanga a scríobh ar chláir-orduithe. Agus go deimhin, go bhfuil an méid a bhí muid ag iarraidh a d'aird a tharraingt. Is clár PHP-orduithe. Mar sin, C ZIP anseo, cé go ceart i C, ní cheartú le haghaidh PHP. Ach tá an cód i ndáiríre mar an gcéanna. Má tá tú i gcomparáid leis réitigh do Tráth na gCeist 0 gcoinne Tráth na gCeist 1, beidh tú go bhfuil tá sé beagnach mar an gcéanna, ach amháin i gcás roinnt comharthaí dollar agus do na easpa de chineál sonraí. Go háirithe, má táimid le breathnú anseo, Feicfidh tú a fheiceáil go iterate againn, sa cás, ó 1 suas tríd 7. D'fhéadfadh muid a bheith déanta air 0 innéacs. Ach uaireanta, I mo thuairimse, tá sé ach meabhrach níos éasca chun smaoineamh ar rudaí ó 1 go 7. Más mian leat bloc amháin, ansin dhá bloic, ansin trí, ansin ponc, ponc, ponc seacht. Táimid tar éis j á initialized dtí 1 agus ansin comhaireamh ar suas go dtí mé. Agus tá gach rud anseo comhionann a mhalairt. Ach is fiú nóta cúpla rudaí. Muid a thabhairt duit ar na dhá líne, an chéad amháin, goofily ainmnithe mar shebang do Bang géar. Agus go sonraítear ach an cosán, an fillteán, inar féidir le clár a fuarthas amach go mian leat úsáid a bhaint as comhad seo a léirmhíniú. Agus ansin an líne tar éis sin, de Ciallaíonn ndóigh, dul isteach modh PHP. Agus an líne ag bun an- Ciallaíonn modh PHP scoir. Agus oibríonn sé seo, i gcoitinne, le léirmhíniú teangacha. Tá sé de chineál ar annoying má scríobhann tú clár comhad a dtugtar foo.php. Agus ansin tá do úsáideoirí a díreach cuimhnigh, OK, a reáchtáil an chláir seo, mé a cineál "foo.php spás php." Cineál de annoying más rud eile. Agus nochtann sé fosta gur do chlár atá scríofa i PHP, nach bhfuil gach go illuminating don úsáideoir. Mar sin, is féidir leat a bhaint as an. Php? Ar fad aisghlaoch ó léacht. Agus is féidir leat a dhéanamh i ndáiríre. / Foo má atá tú a chmodded sé trí é a dhéanamh inrite. Mar sin, bheadh ​​chmod a + x foo a leithéid a dhéanamh. Agus má tá tú a chur freisin ar an shebang anseo. Ach i ndáiríre, bhí an fhadhb ag dul ar priontáil amach rud éigin mar seo. Uimh HTML, gan aon C-cód cinnte, ach cuid PHP. Mar sin, ar ais Milo ansin i fhadhb 25. Agus i 25, tugadh duit an méid seo a leanas Cód cnámharlach, a bhí ina leathanach gréasáin simplí go leor. Agus bhí an chuid juicy HTML-ciallmhar síos anseo, áit a bhfuil muid taobh istigh de chuid an chomhlachta foirm go bhfuil le haitheantas ar leith na n-ionchur taobh istigh a bhí dhá ionchur, ceann amháin le smaoineamh ar an t-ainm, ar cheann le smaoineamh ar an gcnaipe. Ba é an chéad téacs cineál, an dara cineál a chur isteach. Agus mar sin thug muid duit, i ndáiríre, níos mó comhábhair ná mar is gá duit, ach mar sin Bhí tú guys roghanna lena chun an fhadhb seo a réiteach. Ní gá duit go docht gach ceann de na IDs. Ach is féidir leat a réiteach é ar bhealaí éagsúla. Agus suas ag an mbarr, faoi deara go an aidhm a bhí chun tús le fuinneog mar seo - Dia duit, Milo! - a pop suas sa bhrabhsálaí a úsáid an simplí Super, má Ní ghránna, feidhm airdeall. Agus mar sin, ar deireadh thiar, boils sé seo síos bhonn coincheapúil a éisteacht ar bhealach do aighneachtaí den fhoirm cliant-taobh , Nach bhfuil an freastalaí-taobh, ar bhealach freagra a thabhairt ar an aighneacht grabbing an luach a an t-úsáideoir clóscríofa i do réimse ainm, agus ansin thaispeánann sé i gcorp na foláireamh. Mar sin, tá bealach amháin is féidir leat é seo a bhfuil jQuery, a bhreathnaíonn ar beag syntactically perplexing ar dtús. Is féidir leat é seo a dhéanamh le cód DOM íon - document.getelement le ID. Ach a ligean ar ghlacadh le breathnú ar an leagan seo. Tá mé cúpla tábhachtach línte ar dtús. Mar sin, ceann amháin, ní mór dúinn an líne seo, atá comhionann leis an méid a bheadh ​​agat le feiceáil i, creidim, form2.html ó rang i seachtain 9. Agus é seo ach ag rá, a fhorghníomhú an cód seo a leanas nuair a Is é an doiciméad réidh. A bheith seo tábhachtach ach amháin mar gheall Leathanaigh HTML a léamh go barr bun, ó chlé go deas. Agus dá bhrí sin, má tá tú iarracht a dhéanamh rud éigin i gcód suas anseo le roinnt DOM eilimint, roinnt chlib HTML, tá síos anseo, tá tú ag déanamh sé ró-luath, toisc go bhfuil sé seo nach fiú léite i gcuimhne. Mar sin, ag rá seo document.ready líne, tá muid ag rá, anseo tá roinnt cód, bhrabhsálaí. Ach ná bí ag fhorghníomhú seo go dtí an t-iomlán Is doiciméad réidh, is é sin an DOM Tá crann i gcuimhne. Is é seo ceann beagán níos mó simplí, más rud é go syntactically beagán difriúil, áit a bhfuil mé ag rá, grab an eilimint HTML a bhfuil ar leith Is aitheantóir ionchuir. Sin an méid ar an chlib hash seasann, an comhartha aitheantais uathúil. Agus ansin tá mé ag glaoch. Isteach. Mar sin,. A chur isteach anseo a chomhlíonadh, ar shlí eile ar a dtugtar mar mhodh, go taobh istigh den réad ar chlé-láimh taobh ann nach raibh mé aird a tharraingt. Mar sin, má cheapann tú de ionchuir mar rud i gcuimhne - agus go deimhin go bhfuil sé. Tá sé ina nód i gcrann - . Ciallaíonn bhráid nuair a an fhoirm seo le Tá sé seo le haitheantas bhráid, a fhorghníomhú an cód seo a leanas. Ní féidir liom cúram cad ainm an Tá feidhm mé ag forghníomhaitheach. Mar sin, anseo tá mé ag baint úsáide as, mar a rinneadh cheana, cad ar a dtugtar an fheidhm lambda nó feidhm gan ainm. Níl sé ar chor ar bith go hintleachtúil suimiúil eile ná mar tá sé aon ainm, a bhfuil fíneáil má tá tú ach riamh ag dul a ghlaoch air aon uair amháin. Agus taobh istigh ann liom a láimhseáil i ndáiríre chur isteach an fhoirm. Dearbhaím dtús athróg ar a dtugtar luach. Agus ansin cad é an éifeacht an béim anseo anois chuid? Cad a dhéanann a dhéanamh ar leibhéal ard dom? LUCHT ÉISTEACHTA: Faigheann sé an luach a an Ní raibh úsáideora sa HTML thíos. Faigheann sé go ID agus ansin chinneann an luach na sé. DAVID J. MALAN: Go díreach. Grabs sé an nód, a bhfuil a uathúil Is aitheantóir ainm. Faigheann sé an luach ann, a is é, is dócha, cad é an t-úsáideoir clóscríofa dó nó í féin. Agus ansin siopaí sé go bhfuil an athróg a dtugtar luach. Mar leataobh, d'fhéadfá a bheith chomh maith seo déanta a mhalairt beag. Totally inghlactha ag déanamh rud éigin Faigheann luach bréag var document.getElementById. Agus is é sin an fáth tá sé ina beag tedious a ní a úsáid jQuery. "Ainm". Luach. Mar sin inghlactha go hiomlán. Bealaí eile chun é seo a dhéanamh. jQuery díreach claonadh a bheith beagán níos gonta agus cinnte níos mó tóir i measc na ríomhchláraitheoirí. Anois, tá mé ag déanamh beagán de sanity sheiceáil, mar gheall ar an bhfadhb ráiteas a dúirt muid go sainráite, más rud é Nach bhfuil úsáideoir clóscríofa fós aige nó aici ainm, ná a thaispeáint ar foláireamh. Ach is féidir leat a sheiceáil le haghaidh sin, ag díreach sheiceáil le haghaidh an teaghrán folamh do ceanglófar-comharthaí athfhriotail má tá rud ar bith i ndáiríre. Ach más rud é nach bhfuil sé cothrom le ceanglófar-comharthaí athfhriotail, Ba mhaith liom a ghlaoch foláirimh. Agus tá an chuid suimiúil anseo go táimid ag baint úsáide as an t-oibreoir móide, a a dhéanann céard sa JavaScript? Comhcheangail. Mar sin, tá sé cosúil le PHPs oibreoir ponc. Smaoineamh céanna, error beagán difriúil. Agus tá mé díreach tar a chruthú ar an teaghrán go Chonaic tú ar an lámhaigh scáileán - Dia duit, mar sin, agus mar sin de. Agus ansin tá na sonraí seo caite seo. Cén fáth a bhfuil mé ar ais taobh istigh bréagach an fheidhm gan ainm? LUCHT ÉISTEACHTA: Níl aon luach. É a chur ort i bhfoirm. Deir sé ach, más rud é nach bhfuil luach comhionann le bán, a dhéanamh ansin é. Bhí bán sa aighneacht. DAVID J. MALAN: OK. Cé go cúramach. Níl aon duine eile anseo. Agus is é sin tuairisceán bréagach a dhéanamh taobh amuigh an dá coinníollacha. Mar sin, chun suntais an líne, ar ais bréagach, fhorghníomhú is cuma cén nuair a Tá an fhoirm isteach. Cad a dhéanann filleadh taobh istigh bréagach seo láimhseálaí ócáid, mar tá sé ar a dtugtar, an ócáid ​​atá i gceist á aighneacht? LUCHT ÉISTEACHTA: Toisc go bhfuil sé ach a tharlaíonn aon uair amháin. DAVID J. MALAN: Ach a tharlaíonn uair amháin. Ní leor. Yeah? LUCHT ÉISTEACHTA: Cosc sé an fhoirm ó bhráid an iompar réamhshocraithe, rud a dhéanamh ar an reload leathanach. DAVID J. MALAN: Go díreach. Mar sin, tá mé ag ró-ualú an téarma a chur faoi bhráid anseo, mar go bhfuil mé ag rá, is é an fhoirm á chur faoi bhráid. Ach mar a mholadh duit, tá sé i ndáiríre nach curtha faoi bhráid an mbealach HTTP fíor. Nuair a chliceálann tú Cuir, mar gheall ar ár láimhseálaí onSubmit, tá muid ag intercepting fhoirm aighneacht sin a labhairt. Táimid ag déanamh ansin ár rud le JavaScript cód. Ach tá mé ag filleadh d'aon ghnó bréagach, mar gheall ar cad é nach bhfuil mé ag iarraidh a tharlóidh ar an dara ina dhiaidh sin é scoilte ar an bhfoirm ar fad féin a chur faoi bhráid an ngréasán freastalaí le príomh péirí luach ag athrú an URL a bheith rud éigin cosúil le q = cait nó pé rud a rinne muid, mar shampla, i rang. Níl mé ag iarraidh sin a tharlóidh, mar gheall ar níl aon éisteacht freastalaí seo foirm aighneacht. Tá sé ar a rinneadh amháin i JavaScript cód. Agus sin an fáth nach raibh mé fiú gníomh tréith ar mo bhfoirm, mar gheall mé Ní bhfuil sé ar intinn é sin a riamh téigh go dtí an bhfreastalaí. Mar sin, tá sé á chur faoi bhráid. Ach táimid ag intercepting fhoirm aighneacht agus cosc ​​a chur réamhshocraithe iompar, a bhfuil a i ndáiríre dul go léir ar an mbealach chun an bhfreastalaí. LUCHT ÉISTEACHTA: Mar sin, a choinneáil cliant-taobh. DAVID J. MALAN: Coimeád sé cliant-taobh. Go díreach ceart. Suas Aghaidh a bhí mo OH MySQL. ROB BOWDEN: OK. Mar sin, bhí an chéad cheist seo i gcoitinne garbh do dhaoine. Cé na cinn ina dhiaidh sin chuaigh níos fearr. Mar sin, bhí tú a roghnú na sonraí a cheartú cineálacha don dá cheann de na colúin. Agus tá roinnt dá de na rudaí mar gheall orthu go dhéanamh ar an rogha deacair. Mar sin, ní raibh slánuimhir bailí cineál do líon. An chúis a bheith ina cuntas 12-dhigit de Stáit Aontaithe líon, nach bhfuil ina slánuimhir mór go leor chun stóráil dhigit iomlán. Mar sin, bheadh ​​rogha bailí a bheith ina mór slánuimhir má tharlaíonn tú a fhios sin. D'fhéadfadh rogha eile a bheith réimse ruabhric d'fhad 12. Mar sin, bheadh ​​ceachtar de na a bheith ag obair. Ní bheadh ​​Int. Anois, cothromaíocht, smaoineamh ar ais go dtí pset7. Mar sin, táimid go sonrach dheachúlach úsáidtear chun stóráil an luach na scaireanna nó - DAVID J. MALAN: Airgead Tirim. ROB BOWDEN: Airgead Tirim. Úsáid againn dheachúlach a stóráil ar an méid airgead tirim go bhfuil faoi láthair an t-úsáideoir. Mar sin, is é an chúis a dhéanann muid go mar gheall ar, cuimhnigh flótaí,. Níl shnámhphointe i cruinneas. Ní féidir é a stóráil go beacht an t-airgead luachanna ar nós muid ag iarraidh anseo. Dá bhrí sin tá dheachúlach in ann a stóráil go beacht rud éigin a, a rá, dhá ionad de dheachúlacha. Sin an fáth cothromaíocht, ba mhaith linn é a bheith dheachúlach agus ní snámh. DAVID J. MALAN: Agus freisin, freisin, cé go D'fhéadfadh sé a bheith cliste i eile comhthéacsanna chun smaoineamh, b'fhéidir seo Tá seans do slánuimhir. Feicfidh mé a choinneáil ach rian de rudaí i pinginí. Toisc go raibh muid go sainráite an réamhshocraithe luach a bheith 100.00, go ciallaíonn fhéadfadh sé a bheith díreach ina slánuimhir. Agus subtlety eile freisin le líon ná nach raibh sé i gceist a bheith ina ceist trick. Ach chun cuimhne go slánuimhir i MySQL, cosúil i C, ar a laghad sa fearas, is é 32-giotán. Agus cé nach bhfuil muid ag súil agat a Tá a fhios go díreach cé mhéad digití go acmhainn, a dhéanann cuimhne go bhfuil an líon is mó Is féidir leat ionadaíocht a d'fhéadfadh a bheith le roinnt 32-giotán Tá thart ar cad? Cén uimhir féidir linn a rá i gcónaí? 2 go dtí an 32, a bhfuil cad garbh? Ní gá duit fios a bheith agat go beacht. Ach tá tuairim is cabhrach i saol. Tá sé thart ar 4 billiún. Mar sin, tá muid dúirt go cúpla uair. Tá a fhios agam a dúirt mé go bhfuil cúpla uair. Agus tá sé thart ar 4 billiún. Agus sin riail dea- ordóg a fháil amach. Má tá tú ag 8 giotán, 256 Is é an uimhir draíochta. Má tá tú 32 giotán, 4 billiún a thabhairt nó a thógáil. Mar sin, má tá tú ag scríobh díreach síos 4 billiún, Feicfidh tú a fheiceáil go bhfuil sé níos lú ná digití 12, rud a chiallaíonn go bhfuil go soiléir nach go leor expressiveness a ghabháil 12-dhigit de Stáit Aontaithe uimhir chuntais. ROB BOWDEN: OK. Mar sin, na cinn eile a chuaigh níos fearr. Mar sin, is dócha go bhfuil an banc Forchuireann $ 20 míosúil táille chothabhála ar na cuntais go léir. Leis an méid cheist SQL fhéadfadh an banc asbhaint $ 20 ó gach comhaireamh, fiú má torthaí sé i roinnt chomharduithe codarsna? Mar sin, go bunúsach, tá ceithre príomhchineálacha ceisteanna - isteach, roghnaigh, cothrom le dáta, agus a scriosadh. Mar sin, cad a cheapann muid go bhfuil muid ag dul a úsáid anseo? Nuashonraigh. Mar sin a ligean ar ghlacadh le breathnú. Mar sin anseo tá muid thabhairt cothrom le dáta. Cén tábla táimid cuntais thabhairt cothrom le dáta? Mar sin, cuntais thabhairt cothrom le dáta. Agus ansin deir an error, cad i gcuntais nuashonrú againn? Bhuel, tá muid ag leagan síos cothromaíocht comhionann leis an luach reatha de cothromaíocht lúide 20. Mar sin, beidh sé seo cothrom le dáta gach sraitheanna cuntais, a dhealú $ 20 as an t-iarmhéid. DAVID J. MALAN: A botún coitianta anseo, cé forgave muid uaireanta, bhí go bhfuil PHP cód i ndáiríre anseo ghlaoch ar an fheidhm fhiosrú nó a chur Sleachta ar fud gach rud a Ní raibh gá a bheith ann. ROB BOWDEN: Cuimhnigh go bhfuil MySQL teanga ar leith ó PHP. Tharlóidh muid a bheith scríobh MySQL i PHP. Agus is é PHP a sheoladh ansin é anonn go dtí an freastalaí a MySQL. Ach ní gá duit PHP d'fhonn a cumarsáid a dhéanamh le freastalaí MySQL. DAVID J. MALAN: Go díreach. Mar sin, níl aon comharthaí dollar athróg le Ba chóir go mbeadh sa chomhthéacs seo. Is féidir é a dhéanamh ach gach ceann de na mata laistigh den bhunachar sonraí féin. ROB BOWDEN: OK. Mar sin, an ceann eile. An é seo an chéad cheann eile? Yeah. Mar sin, leis an méid cheist SQL fhéadfadh an banc aisghabháil na uimhreacha cuntais a custaiméirí is saibhre, iad siúd a bhfuil iarmhéideanna níos mó ná 1,000? Mar sin, cé acu de na ceithre phríomhchineál táimid ag dul go dtí gur mian anseo? Roghnaigh. Mar sin, ba mhaith linn a roghnú. Cad é ba mhaith linn a roghnú? Cén colún mian linn a roghnú? Beidh muid ag iarraidh go sonrach líon a roghnú. Ach más rud a dúirt tú réalta, táimid ag chomh maith Glactar leis go. Mar sin, roghnaigh roinnt ó cad tábla? Cuntais. Agus ansin an coinníoll ba mhaith linn? I gcás cothromaíocht níos mó ná 1,000. Ghlac muid freisin níos mó mó ná nó cothrom. Ceann deireanach. Leis an méid cheist SQL fhéadfadh an banc gar, i.e., a scriosadh gach cuntas a Tá iarmhéid de $ 0? Mar sin, cé acu de na ceithre táimid dul go dtí mhaith a úsáid? Scrios. Mar sin, an chomhréir sin? Scrios ó cad tábla? Cuntais. Agus ansin an coinníoll ar ar ba mhaith linn a scriosadh - nuair is ionann iarmhéid náid. Mar sin, a scriosadh gach sraitheanna ó chuntais áit a bhfuil an t-iarmhéid náid. Ceisteanna maidir le aon cheann de na? Want a scuaine? DAVID J. MALAN: treoir Ciú. Mar sin, i gceann seo, thug muid duit beagán struchtúr eolas a iniúchadh muid giotán sa rang taobh de structs, a bhí ina sonraí a bhaineann sa spiorad struchtúr. Is é an difríocht cé go bhfuil scuaine go raibh muid a mheabhrú ar bhealach a bhí ag an os comhair an scuaine, i móra chuid ionas go bhféadfadh muid a dhéanamh níos mó úsáid éifeachtach an chuimhne, ar a laghad, má bhí ag baint úsáide as againn le sraith. Toisc cuimhne, má táimid tar éis sraith, más rud é, mar shampla, is é seo an os comhair an scuaine, má fhaigheann mé isteach ar an scuaine anseo, agus ansin faigheann duine éigin ag teacht dom, i mo dhiaidh, i mo dhiaidh, agus taobh thiar céimeanna duine amháin amach as an líne, tú D'fhéadfadh, mar a chonaic muid roinnt dár daonna oibrithe deonacha sa rang, tá gach duine athrú ar an mbealach seo. Ach i gcoitinne, tar éis gach duine a dhéanamh nach bhfuil rud éigin ar an úsáid is fearr as am i gclár, mar ciallaíonn sé do Tá algartam ag rith i cad am ag rith asymptotic? Tá sé líneach. Agus dar liom go bhfuil de chineál ar dúr. Má tá an duine eile i gcomhréir leis an chéad cheann eile duine a ceaptha chun dul isteach ar an siopa, nach bhfuil siad go léir chun bogadh le chéile. Just a ligean an duine sin a plucked amach nuair a thagann an t-am, mar shampla. Mar sin, is féidir linn a shábháil ar beagán ama ann. Agus mar sin a dhéanamh go áfach, ciallaíonn sin go ceann an scuaine nó an Tá os comhair an scuaine ag dul go dtí de réir a chéile bogadh níos doimhne agus níos doimhne isteach an eagar agus ar deireadh thiar d'fhéadfadh wrap i ndáiríre thart má táimid ag baint úsáide as eagar a stóráil ar na daoine sa scuaine. Mar sin, is féidir leat smaoineamh ar beagnach ar an sraith mar sonraí ciorclach struchtúr sa chiall sin. Mar sin, tá tú ar bhealach rian an Aontais a choimeád méid nó i ndáiríre an deireadh sé agus ansin nuair a bhíonn an tús é. Mar sin, táimid a mholadh go dhearbhú tú scuaine amháin den sórt sin, ag glaoch sé q, ach litir amháin. Ansin, a mholadh againn go bhfuil an tosaigh a bheith initialized go nialas agus go bhfuil an méid a initialized go nialas. Mar sin, ceart anois, níl aon rud taobh istigh den scuaine. Agus muid ag iarraidh ort a chur i gcrích ar an cur i bhfeidhm enqueue thíos i sórt sin ar bhealach go gcuireann an fheidhm n an deireadh q agus ansin tuairisceáin fíor. Ach má tá q iomlán nó diúltach, ar an Ba chóir feidhm ar ais in áit bréagach. Agus thug muid duit cúpla na boinn tuisceana. Ach nach bhfuil siad i ndáiríre go feidhmeach ábhartha, ann go díreach bool, mar gheall ar, go teicniúil, nach bhfuil bool ann i C mura chuireann tú comhad header áirithe. Mar sin, go raibh a dhéanamh ach cinnte go bhfuil dhearnadh aon tá sé seo le cleas chineál cheist rud. Mar sin enqueue, mhol muid sa sampla réitigh a chur i bhfeidhm mar seo a leanas. Amháin, táimid ag seiceáil ar dtús leis an éascaíocht, na torthaí íseal-crochta. Má tá an scuaine ar fad nó don líon a bhfuil tú ag iarraidh a chur isteach is lú ná náid, a dúirt muid sa sonraíocht ar an bhfadhb chóir Ní bheidh cead, mar ba mhaith linn ach Luachanna neamh-diúltach, ansin ba chóir duit ach ar ais bréagach láithreach. Mar sin, roinnt sách éasca earráid a sheiceáil. Más cé mian leat a chur go iarbhír líon, bhí tú a dhéanamh le beagán de ag smaoineamh anseo. Agus é seo i gcás ina bhfuil sé beagán annoying meabhrach, toisc go bhfuil tú a figiúr amach conas a wraparound chaitheamh a láimhseáil. Ach an miocrób an smaoineamh anseo go bhfuil na Tá spéis againn go wraparound chaitheamh Is minic le tuiscint uimhríocht modúlach agus an t-oibreoir mod, ar an taobh gcéad, áit ar féidir leat dul ó luach níos mó ar ais go dtí náid, agus ansin amháin agus dhá agus trí agus ansin ar ais ar fud a náid, amháin agus dhá agus trí agus mar sin de arís agus arís eile. Mar sin, is é an mbealach muid a mholadh seo a dhéanamh go bhfuil muid ag iarraidh a innéacs isteach eagar ar a dtugtar uimhreacha i gcásanna ina ár slánuimhreacha bréag. Ach a fháil ann, ba mhaith linn a dhéanamh i dtús báire is cuma cad é an méid de na scuaine, ach ansin cuir leis, is cuma cén Is os comhair an liosta. Agus is é an éifeacht sin a chur chugainn ag an seasamh ceart sa scuaine agus Ní glacadh leis go bhfuil an chéad duine sa líne ag an tús, a bhfuil sé nó D'fhéadfadh sí a bheith go hiomlán má táimid bhí aistriú freisin gach duine. Ach táimid ag cruthú ach obair dúinn féin má ghlac muid go cosán ar leith. Mar sin, is féidir linn a choinneáil réasúnta simplí. Déanann muid a mheabhrú go bhfuil muid díreach Chuir slánuimhir leis an scuaine. Agus ansin dúinn ar ais díreach fíor. Idir an dá linn, i Díchiúáil, d'iarr muid tú a dhéanamh ar an méid seo a leanas. A chur i bhfeidhm é sa chaoi go bhfuil sé dequeues, is é go mbainfidh agus tuairisceáin, o ag tosach na scuaine. A bhaint as an slánuimhir, suffices sé a dearmad air. Ní gá duit a shárú a ghiotán. Mar sin, tá sé fós ann i ndáiríre. Díreach cosúil le sonraí ar a thiomáint crua, táimid ag déanamh neamhaird ach ar an bhfíric go bhfuil sé anois ann. Agus má tá q folamh, ba chóir dúinn ina ionad sin ar ais diúltach 1. Mar sin, mothaíonn seo treallach. Cén fáth ar ais diúltach 1 in ionad bréagach? Yeah. LUCHT ÉISTEACHTA: Tá Q stóráil Luachanna dearfach. Ós rud é go leat a stóráil ach luachanna dearfacha sa q, is diúltach earráid. DAVID J. MALAN: OK, fíor. Mar sin, toisc go bhfuil muid a stóráil ach amháin dearfach luachanna nó náid, ansin tá sé fíneáil a luach diúltach mar fairtheora ar ais luach, siombail speisialta. Ach tá tú athscríobh stair ann, mar gheall ar an gcúis go bhfuil muid ach Luachanna neamh-diúltach ag filleadh Is mar ba mhaith linn a bhfuil luach fairtheora. Mar sin, níos mó go sonrach, cén fáth ní hamháin tuairisceán bréige i gcásanna earráidí? Yeah. LUCHT ÉISTEACHTA: Tá Theip ort a thabhairt ar ais ina slánuimhir. DAVID J. MALAN: Go díreach. Agus é seo nuair a fhaigheann C shrian go leor. Má tá tú ag rá go bhfuil tú ag dul a thabhairt ar ais ina slánuimhir, tá tú bhí a thabhairt ar ais ina slánuimhir. Ní féidir leat a fháil bhréige agus tús a filleadh le bool nó snámhphointe nó teaghrán nó rud éigin mar sin. Anois, Idir an dá linn, JavaScript agus PHP agus Is féidir roinnt teangacha eile, i ndáiríre, tá tú ag filleadh ar éagsúla cineálacha luachanna. Agus is féidir a bheith i ndáiríre úsáideach, i gcás ina d'fhéadfaí tú a thabhairt ar ais ints dearfach, nialais, ints diúltach, nó bréagach nó faoin margadh saothair fiú earráid a signify. Ach nach bhfuil againn go solúbthacht i C. Mar sin, le Díchiúáil, cad againn mholadh a dhéanamh ná - ROB BOWDEN: Is féidir leat filleadh bréagach. Tá sé ach bréagach go hash shainiú bréagach go nialas. Mar sin, má fhilleann tú bréagach, bhfuil tú ag filleadh náid. Agus is é nialas an rud bailí i ár scuaine, ach nach bhfuil diúltach 1 má bréagach a tharla a bheith diúltach 1. Ach ní ba chóir duit fiú Ní mór a fhios sin. DAVID J. MALAN: Sin cén fáth nach raibh mé a rá é. ROB BOWDEN: Ach ní raibh sé fíor nach féidir leat filleadh bréagach. DAVID J. MALAN: Cinnte. Mar sin Díchiúáil, faoi deara muid ag glacadh neamhní mar argóint. Agus sin toisc nach bhfuil muid dul isteach aon rud Ba mhaith linn ach a bhaint as an ngné ag tosach an scuaine. Mar sin, conas a d'fhéadfadh muid dul faoi seo a dhéanamh? Bhuel, ar an gcéad, a ligean ar é seo a dhéanamh seiceáil sanity tapaidh. Má tá an méid scuaine 0, níl aon obair atá le déanamh. Fill ar ais diúltach 1. Arna dhéanamh. Mar sin tá go cúpla líne de mo chlár. Mar sin, fanacht ach ceithre línte. Mar sin, cinneadh a dhéanamh liom anseo chun decrement an méid. Agus decrementing an méid go héifeachtach Ciallaíonn sé sin go bhfuil mé dearmad a dhéanamh ar Tá rud éigin i ann. Ach tá mé freisin a thabhairt cothrom le dáta i gcás ina Tá an os comhair na n-uimhreacha. Mar sin, chun é sin a dhéanamh, is gá dom a dhéanamh ar dhá rud. Gá dom an chéad cuimhneamh cad é an líon ag an os comhair an scuaine, mar is gá dom a thabhairt ar ais go bhfuil rud. Mar sin, níl mé ag iarraidh a dearmad a dhéanamh de thaisme faoi ​​agus ansin scríobh air. Tá mé ag dul ach a mheabhrú i slánuimhir. Agus anois, ba mhaith liom a thabhairt cothrom le dáta q.front a q.front 1. Mar sin, má ba é seo an chéad duine i líne, anois, ba mhaith liom móide 1 a dhéanamh chun pointe ag an duine eile i gcomhréir. Ach caithfidh mé a láimhseáil go wraparound chaitheamh. Agus má tá cumas tairiseach domhanda, go bhfuil dul chun ligean dom a dhéanamh cinnte mar phointe mé don duine an-deireanach i líne, beidh an oibríocht modulo a thabhairt mé ar ais go nialas ag an os comhair an scuaine. Agus go Láimhseálann an wraparound chaitheamh anseo. Agus ansin dul ar aghaidh liom a thabhairt ar ais n. Anois, go docht labhairt, ní raibh mé Tá n dhearbhú. Ní raibh mé ag a grab é agus é a stóráil go sealadach, toisc go bhfuil an luach fós ann. Mar sin, d'fhéadfadh mé a dhéanamh ach an uimhríochtúil ceart a thabhairt ar ais an ceann iar- an scuaine. Ach bhraith mé díreach tar éis go raibh sé seo níos soiléire a grab ndáiríre an slánuimhir, é a chur i n, agus ansin ar ais go ar mhaithe le soiléireacht ach Ní gá go docht. Psst. Tá siad go léir pronounceable i mo cheann. ROB BOWDEN: Mar sin, an chéad cheist Is é an fhadhb crann dénártha. Mar sin, an chéad cheist, tá muid Tugtar na huimhreacha. Agus ba mhaith linn a chur isteach ar bhealach iad a chur san na nóid den sórt sin go bhfuil sé crann cuardaigh bailí dénártha. Mar sin, an rud amháin a mheabhrú faoi Tá crainn cuardaigh dénártha nach bhfuil sé go díreach an rud an taobh clé Is lú agus an rud a Is é an ceart níos mó. Caithfidh sé a bheith go bhfuil an crann ar fad a Is é an chlé níos lú, agus an crann ar fad leis an gceart atá níos mó. Mar sin, má chuir mé 34 anseo ag an mbarr, agus ansin Chuir mé 20 anseo, ionas go bailí mar sin i bhfad, mar gheall ar 34 suas anseo. 20 ag dul ar an taobh clé. Mar sin tá go níos lú. Ach ní féidir liom a chur ansin 59 anseo, mar gheall ar cé go bhfuil 59 maidir le ceart 20, tá sé fós ar an taobh clé den 34. Mar sin, leis an srian i gcuimhne, an bealach is éasca is dócha a réiteach seo Tá fadhb le díreach a shórtáil de na huimhreacha seo - mar sin 20, 34, 36, 52, 59, 106. Agus ansin cuir isteach iad ó chlé go deas. Mar sin, ar 20 Téann anseo. 34 Téann anseo. 36 Téann anseo. 52, 59, 106. Agus d'fhéadfaí tú a bheith figured amach freisin le roinnt plugging i agus a bhaint amach, OH, fan, ní dóigh liom go bhfuil go leor uimhreacha a Líon an fhoirm seo thar anseo. Mar sin, is gá dom a reshift an méid mo Tá nóta bealach ag dul a bheith. Ach faoi deara go bhfuil sna trí deiridh, más rud é tú ag léamh ó chlé go deas, tá sé i ordú a mhéadú. Mar sin, anois, ba mhaith linn a dhearbhú cad é an Tá struct ag dul a bheith le haghaidh an nóid sa chrann. Mar sin, cad is gá dúinn i gcrann dénártha? Mar sin, ní mór dúinn a luach de chineál slánuimhir, mar sin roinnt luach slánuimhir. Níl a fhios agam cad a dtugtar againn sé sa tuaslagán - slánuimhir n. Ní mór dúinn pointeoir leis an leanbh ar chlé agus pointeoir leis an leanbh ceart. Mar sin, tá sé ag dul chun breathnú cosúil le seo. Agus beidh sé cuma i ndáiríre roimh nuair a raibh an doubly-nasctha liosta rudaí mar sin, mar sin fógra - Tá mé ag dul a bheith acu a scrollbharra go léir bhealach ar ais síos go dtí fhadhb 11. Mar sin, tá sé faoi deara comhionann leis sin, ach amháin a tharlóidh muid díreach a glaoch ar na ainmneacha éagsúla. Tá muid go fóill slánuimhir luach agus dhá threo. Tá sé sin go díreach in ionad cóireála an leideanna maidir dírithe ar an chéad rud eile agus an rud roimhe, tá muid ag déileáil na leideanna a chur in iúl do leanbh ar chlé agus an linbh ceart. OK. Mar sin, go bhfuil ár nód struct. Agus anois, an fheidhm amháin is gá dúinn a a chur i bhfeidhm chun é seo trasnú, a ba mhaith linn dul thar an crann, priontáil as luachanna an crann in ord. Mar sin, ag breathnú anseo, bheadh ​​muid ag iarraidh a phriontáil amach 20, 34, 36, 52, 59, agus 106. Conas is féidir linn accomplish go? Mar sin, tá sé deas den chineál céanna. Má chonaic tú sa scrúdú am atá thart ar an bhfadhb go raibh tú a phriontáil amach an crann ar fad le camóga eatarthu gach rud, bhí sé i ndáiríre fiú níos éasca ná sin. Mar sin, tá anseo an réiteach. Bhí sé seo i bhfad níos éasca má rinne tú é go hathchúrsach. Níl a fhios agam má iarracht duine ar bith a dhéanamh iteratively. Ach ar dtús, ní mór dúinn ár gcás bonn. Cad a tharlaíonn má tá an fhréamh null a úsáid? Ansin, táimid ag dul díreach a thabhairt ar ais. Nílimid ag iarraidh rud ar bith a phriontáil. Eile táimid ag dul a Traverse hathchúrsach síos. Priontáil an subtree ar fad ar chlé. Mar sin, gach rud níos lú phriontáil ná mo luach reatha. Agus ansin tá mé ag dul i gcló féin. Agus ansin mé ag dul a recurse síos mo subtree ceart ar fad, mar sin gach rud níos mó ná mo luach. Agus is é seo ag dul i gcló amach gach rud in ord. Ceisteanna maidir le conas seo i ndáiríre Gcomhlíonfaidh sin? LUCHT ÉISTEACHTA: Tá mé ceist ar an [inaudible]. ROB BOWDEN: Mar sin, bhealach amháin druidim Tá aon fhadhb athchúrsach chun smaoineamh go díreach faoi ​​mhaith tá tú chun smaoineamh faoi ​​na cásanna cúinne. Mar sin, mheas gur mhaith linn a Taispeáin an crann ar fad. Mar sin, go léir go bhfuil muid ag dul chun díriú ar Tá an nód ar leith - 36. Na glaonna recursive, ligean dúinn siúd a bhfuil ach ag obair. Mar sin, anseo, an nglao Athchúrsach le Traverse, táimid gan fiú smaoineamh faoi, ach traversing na láimhe clé trí, a shamhlú go priontaí cheana 20 agus 34 dúinn. Agus ansin nuair a muid ar deireadh thiar go hathchúrsach glaoch ar Traverse ar an ceart, beidh a phriontáil i gceart 52, 59, agus 106 le haghaidh dúinn. Mar sin, ós rud é go féidir é seo a phriontáil 20, 34, agus Is féidir an ceann eile a phriontáil 52, 59, 108, gach ní mór dúinn a bheith in ann a dhéanamh ná a phriontáil ourself i lár sin. Mar sin, a phriontáil amach gach rud roimh dúinn. Priontáil ourself, mar sin an cló nód reatha 36, printf rialta, agus ansin phriontáil gach rud inár ndiaidh. DAVID J. MALAN: Is é seo an áit a athchúrsáil Faigheann ndáiríre álainn. Tá sé seo iontach léim an chreidimh i gcás a dhéanann tú an beagán tiniest na hoibre. Agus ansin lig tú duine éigin eile a dhéanamh ar an chuid eile. Agus go bhfuil duine éigin eile is é, go híorónach, tá tú. Mar sin, le haghaidh pointí brownie tromchúiseach, má leat scrollú suas ar na ceisteanna - ROB BOWDEN: Ar na ceisteanna? DAVID J. MALAN: Agus síos beagán le na huimhreacha, ní duine ar bith a fhios áit na huimhreacha a thagann ó? ROB BOWDEN: Tá mé literally aon smaoineamh. DAVID J. MALAN: Láithreoidh siad ar fud an tráth na gceist. LUCHT ÉISTEACHTA: An bhfuil siad na huimhreacha céanna? DAVID J. MALAN: na huimhreacha. Tá ubh Cásca beag. Mar sin, dóibh siúd agaibh breathnú ar líne ag bhaile, más féidir leat insint dúinn tríd an ríomhphost chuig heads@CS50.net cad é an tábhacht de go bhfuil na sé uimhir athfhillteacha Tráth na gCeist ar fud 1, beidh muid ag tú cithfholcadh le aird iontach ag an deiridh léacht agus liathróid strus. Nice, subtle. ROB BOWDEN: Aon cheist dheireanacha faoi ​​rud ar bith ar an tráth na gceist?