DAVID J. MALAN: Ondo da. Beraz, lehen inoiz ongi etorri CS50 galdetegi bezala postmortem. Litzaidake inauguratuko dugu pentsatu genuen Tradizio hau aurten. Eta honek aukera bat izango da hemen ibiltzeko galdetegia irtenbideak. Eta bizkortu egingo dugu gora edo mantsotu oinarritutako Hemen horietako interes da. Beraz Ziurrenera hemen zauden delako nola izan dezakezu interesa edo batzuei erantzun behar arazo horiek. Beraz, zergatik ez dute begirada bat hartuko dugu Lehenengo tarte honetan? Beraz kateak lortzean. Honek hiru bertsio ezberdin eman zenuen hori izan zen programa bat, azken finean, ekarri kate bat lortzeko erabiltzaileari batetik. Zela egin zuen ala ez Zuri utzi nahi zehazteko. Eta eskatu dugu 0 Galdera batean, Suposatzen 1 bertsioa dela konpilatu eta exekutatu. Zergatik segfault liteke programa? Lehen begiratuan, edozein iradokizun zergatik? Bai. AUDIENCE: Beraz, hau ikusten dut gogoan in aurreko begira adibide bat char * s eta z du eskaneatu ikusten eta ikusten da erakuslea, nola delako ez zer eskaneatu duzu eragina izan du? Da s edo z helbidea? DAVID J. MALAN: Ados. Ona. Beraz, azken finean, edozein arazo-iturri da zentzuzkoa, murriztea joan aldagai s hori. Eta halaxe da, aldagai bat. Datuak aldagai hori mota da char *, eta horrek esan nahi du joan den eduki pertsonaia baten helbidea. Eta bertan ezagutzeko datza. Honez helbide elektronikoak dituzten joan pertsonaia bat edo, oro har, eta lehen pertsonaia helbide karaktere bloke oso bat. Baina harrapatzen da eskaneatu s, helburua in Bizitza, helbide batekin jartzen da eta emandako formatu-kode bat,% s bezala, irakurri zatia sartu katea Helbide horretan memoria. Baina ez dago berdin ikurra delako aurretik Lehenengo orrian koma duten kode-lerro, ez dugulako benetan edozein memoria esleitu malloc, ez duelako benetan tamaina batzuk array bat, guztiak esleitu egiten ari zaren irakurtzen da erabiltzaile-en teklatuaren sarrera osoa batzuk sartu zabor-balioa, eta horrek s lehenetsita. Beraz, odds dira zu segfault gertatzen bada Helbide hori ez da besterik gabe, hala gertatuko ahal duzun balio bat izan nahi du, hain zuzen ere, idatzi. Hain txarra ez den esleitu Zure memoria han. Beraz, galdera 1 urtean, eskatu dugu, Suposatzen 2 bertsioa dela konpilatu eta exekutatu. Zergatik segfault liteke programa hau? Beraz, hau buggy gutxiago. Eta ez da benetan bakarra bistako bidea ahal duzun non segfault eragin hemen. Eta hau tematikoa da. C erabiltzen ari gara memoria edozein momentutan, zer ezin segfault bultzatu egiten duzu 2 bertsioarekin? AUDIENCE: sarrera hori zehazten baduzu kate bat hori da, 49 baino luzeagoa pertsonaiak. DAVID J. MALAN: Zehazki. Ikusten duzu zerbait finko luzera edozein momentutan orduan array bat da, zure radar off joan behar hori izan daiteke problematikoa ari bazara ez du egiaztapena array baten mugetan. Eta hori da hemen arazoa. Oraindik ere scanf ari gara erabiltzen. Oraindik% s ari gara erabiltzen, eta horrek esan nahi saiatu kate bat irakurtzeko erabiltzaileari from. Hori z irakurri behar horrek joan,, puntu honetan, ez da modu eraginkorrean memoria zatia baten helbidea edo baliokidea da. Array baten izena da oroimenaren karaktere. Baina zehazki, hori kate bat irakurri baduzu hori da 49 karaktere, 49 baino luzeagoa gela behar duzulako backslash egiteko 0, ari gainezkatzea zoazen buffer duten. Eta zortea duzu agian eta izan gai 51 pertsonaia bat, 52, 53 idatzi. Baina uneren batean, sistema eragilea dagoela esan du, ez. Hau ez da memoria ukitu bazaizu onartzen. Eta programa da segfault joan. Beraz, ez dago, heuristikoak edozein izan beharko luke lortu duzun luzera finkoa denbora, duzu ziur luzera zaren egiaztatzen egiteko edozein dela ere saiatzen ari da eremu sartu irakurri. AUDIENCE: Beraz, hori konpontzeko, zuk ezin dute adierazpen bat egiaztapena benetan izan luzera handiagoa da edo baino baino gutxiago? DAVID J. MALAN: Absolutely. Aski izango duzu baldintza bat dioen, bada - edo, hobeto esanda, ez dute zertan badakizu aldez aurretik zenbat pertsonaiak Erabiltzaileak dokumentu hau idatzi du, zeren oilasko eta arrautza duzu. Irakurtzen duzun bertan ez arte scanf rekin daiteke irudikatu duzu zenbat denbora da. Baina puntu horretan, beranduegi da, duzun dagoeneko irakurri delako sartu memoria bloke batzuk. Beraz, bat alde batera utzita, CS50 liburutegia eragozteak gisa Arazo hau guztiz, abisuaren fgetc erabiliz. Eta pertsonaia bat irakurtzen du aldi berean, punta-toeing zehar, jakinda duzun ezin bada pertsonaia bat gainezkatzea bat irakurri duzu aldi berean. Harrapatzen GetString abisuaren dituena da etengabe berriro tamaina dugula memoria zatia dela, eta horrek mina bat besterik ez da. Ildo asko da horretarako kodea. Beraz, agindu ahal izango litzateke benetan lehengusu bat erabili, beraz, , hitz egiteko scanf neurtzen. Daude horiek asko aldaera funtzio benetan egiaztatu diren luzera zenbat karaktere Gehienez irakurri dezakezu. Eta zehaztu ahal izango duzu, ez irakurri 50 karaktere baino gehiago. Beraz, agindu izango litzateke, baina Sarrerek handiagoa hartzen gutxiago. Beraz, zalantzan 2 galdetzen du, demagun bertsio hori 3 konpilatu eta exekutatu. Zergatik segfault agian programa hori? Beraz, hau da, benetan bera erantzun, nahiz eta itxura apur bat fancier. Malloc, bezala sentitzen erabiltzen ari gara ari geure buruari aukera gehiago ematen dugu. Eta gero esaten ari gara libratzen amaierako memoria. 50 byteko memoria Oraindik da. Beraz dugu oraindik, agian, irakurtzen saiatu 51, 52, 1.000 byte. Honez for segfault joan zehazki arrazoi bera. Baina han ere beste arrazoi bat da. Zer gehiago bueltan malloc gain memoria zatia helbidea? Null itzuliko zitekeen. Delako eta ez gabiltza egiaztapena duten, behar zerbait egiten dugu agian beste arrazoi bat, hau da, horren ergelak dugu behar scanf kontatzea agian, irakurri erabiltzaileak duen teklatuaren sarrera 0 kokapena sartu, AKA nulua. Eta hori, ere, behin betiko segfault bat eragin. Beraz, galdetegi horrek helburu lortzeko, genuke dute gisa horiek bai onartu baliozko arrazoirik. Bat-berdina da. Apur bat ñabardura gehiago da. Azkenik, programa-ren aldean memoriaren erabilera, nola egin 2 bertsioa eta 3 bertsio datoz? Beraz, zer merezi du, eta ikusi genuen bat itxuraz amaigabeak posible hornikuntza honek erantzun. Eta jendearen erantzun artean, zer izan ginen mesederako, baina beste onartuko dugu gauzak, aipamen batzuk Izan ere 2 bertsio hori erabiltzen ari da pila deiturikoak. 3 bertsio zeure erabiltzen ari da. Eta funtzionalki, horrek ez du benetan egiteko diferentzia asko duten guztiak. Egunaren amaieran, oraindik gaude besterik 50 byteko memoria lortzean. Baina hori izan zen, ahalik eta erantzun bat dugun begira ziren. Baina ikusiko duzu, zure galdetegiak lortu duzun bezala TFS atzera, ez dugu beste eztabaidak onartzen dute beren memoriaren erabilera desberdina baita. Baina pila eta zeure zatekeen erantzun erraz bat joan. Zalantzaren bat? Duzu Rob ematen dut. ROB BOWDEN: Beraz, arazo 4. Hau da, non bete behar izan duzu byte kopurua guztiak daudelarik erabilitako mota ezberdinak hauek. Beraz, lehenengo gauza ikusten dugu. 32-bit arkitektura bat hartzeko, CS50 tresnaren hau atsegin dute. Beraz buruzko funtsezko gauza bat 32-bit arkitekturen, kontatzen digu zehazki nola big erakuslea va den arkitektura izango da. Beraz, berehala, ezagutzen dugun erakusle motako 32-bit edo 4 byte da. Beraz, taula hau begira, bat nodo * erakuslea mota bat da. Hori 4 byte izango. Egitura nodo *, hori da, hitzez hitz nodo izar berdina. Eta beraz, hori da, 4 byte izango. Katea, beraz, ez du itxurarik erakuslea oraindik, baina typedef, bat kate besterik char * bat da, eta horrek erakuslea mota bat da. Beraz, 4 byte izango. Beraz, hiru horiek 4 byte guztiak dira. Orain, nodo eta ikasleak dira pixka bat zailagoa. Beraz, nodo eta ikasleari begira, ikusiko dugu nodo zenbaki oso bat eta erakuslea gisa. Eta ikasleen bi erakusle da barruan. Beraz, gutxienez, gure kasuan hemen, bide amaituko dugu tamaina kalkulatzeko duten struct hau besterik gehitu da guztia duten struct barruan. Beraz nodoa da, zenbaki oso bat daukagu, horietatik 4 byte da. Erakuslea, zein 4 byte da behar dugu. Eta beraz, nodo bat va hartu 8 byte. Eta, era berean, ikaslea, bat dugu erakuslea duten 4 byte eta beste erakuslea duten 4 byte da. Beraz Amaierara joan gehienez 8 byte izanik. Beraz, nodo eta ikaslearen 8 byte dira. Eta hiru hauek 4 byte guztiak dira. Horri buruzko galderak? Bai. AUDIENCE: Is 64-bit bat izan zen arkitektura, zela denak bikoiztu? ROB BOWDEN: Ez litzateke denak bikoiztu. Beraz, 64 bit-arkitektura, da, berriz ere, aldaketak funtsezko gauza bat erakuslea da orain 64 bit. Bai. Beraz erakuslea 8 byte da. Beraz, hauek 4 byte zirela dira 8 byte izango. Ikasle batek, eta horrek bi erakusle izan zen, baita, gaur egun gertatzen den 8 byte, 8 byte izan. Honez 16 byte egingo. Baina nodo batek 4 byte da oraindik. Beraz erakuslea da joan 8 byte izan. Hau 4 byte da. Beraz nodo bat da bakarrik joan 12 byte izan. Alde horretatik, beste edozein galdera? Beraz, hurrengo bat, horiek dira HTTP egoera kode. Eta egoera deskribatzeko behar izan duzu zein egoeratan agian horiek izango duzu itzuli. arazoren bat duten ikasle batzuk entzun nuen izan da egin saiatu dutela akatsak bezeroaren amaieran izango da. Beraz, eskaera egiten saiatzen gara zerbitzariari, zerbait doa gure amaieran gaizki. Baina, oro har, kode hauek dira ari zerbitzariak itzuli. Beraz irudikatu zer joan nahi dugun oker edo eskuinera zerbitzarian duten gauza horiek itzuli beharreko eragiten. Zergatik alda daiteke zerbitzari bat itzultzen egoera kode 200? Edozein pentsamenduak? Bai. Beraz, zerbait arrakastaz buruz eskatuta joan bidez. Eta itzultzeko gai ari dira galdetu duzuna da. Beraz, dena ondo legoke. Zer 302 inguru aurkitu? Bai. AUDIENCE: Zerbitzariak bila nenbilen zer da, zuk eskatu da. Baina ezin izan dugu aurkitu. Beraz, ez dago errore bat da. ROB BOWDEN: Beraz zerbitzariari zen zer nahi duzun bila. Beraz, besterik ez da hemen bilatzen, 302 aurkitu, gai aurkitu zen. IKUSLEEN: Sentitzen dut. Aurkitu nahi du aurkitu zutela adierazi zuten. Barkatu. ROB BOWDEN: Beraz, 302 aurkitu. Zerbitzariari aurkitzeko gai da zer nahi duzu. AUDIENCE: Baina ez da erakusteak? ROB BOWDEN: arteko aldea honen 302 eta 200 dela nahi duzuna daki. Baina ez da zehazki non Eskatu nahi duzun. Beraz, 302 redirect tipikoa da. Beraz orri bat eskatu duzu. Daki, oh, nahi dut duzu itzultzeko honetarako. Baina honen URL ezberdin bat da. Beraz, beno, egia esan, hau nahi duzun. DAVID J. MALAN: duela esan zuen pieza bat da eman dugu you guys redirect bat duten goiburua funtzioa erabiltzen funtzioa horretan, aldi berean, inprimatutako kokapena, bi puntu, eta gero, URLa zein erabiltzaileari baztertu nahi dituzun. Nahiz eta ez duzu ikusi 302 esplizituki han, zer PHP da litzateke magikoki txertatu goiburua gisa esanez Rob zehazki zer esan han - aurkitu. Baina hemen ordez. ROB BOWDEN: Ados. Beraz, zein 403 inguru debekatuta? AUDIENCE: uste dut dela zerbitzariari funtsean esaten duten bezeroak ezin hasiera orrian sartzeko. ROB BOWDEN: Beraz, bai. Beno, erantzun tipikoa ginen espero bezala, zerbait fitxategiak da ez dira era egokian chmodded. Hori da ziurrenik azpian zer egoera horiek ikusi duzu. Baina bada arrazoia da, bezeroak errua izan liteke hemen. Ez da benetan egoera kode beste - 401. Beraz, horiek oso antzekoak dira. 401 baimenik gabe da. Eta 403 debekatuta dago. Eta, beraz, baimenik gabe duzu esklusiboki lortuko ez zaude erregistratuta badago oraindik sartu Baina saioa hasten Beharbada duten baimena duzu. Baina zu dagoeneko erregistratuta badago eta zuk oraindik ez dute eskumenik, ondoren halaber, debekatuta lor dezakezu. Beraz ari zaren saioa hasita badago, eta ez dute baimena, debekatuta dago, halaber, zerbait lor dezakezu. DAVID J. MALAN: Eta by mekanismoa eta horrek arazo horiek izan ohi dira zerbitzarian konpondu da zer komandoaren bidez? Chmod, egiten bada, hain zuzen ere, baimen bat fitxategia edo gidan emateko. ROB BOWDEN: Ondoren, 404 ez da aurkitu. Bai. Beraz 302 ez bezala non ez zen zehazki non galdetuz baina zu zer daki nahi baduzu, hau, besterik ez da ez daki zer nahi duzun. Eta ez duzu hau eskatzeko zerbait baliozko. 418 teapot bat naiz eta, ondoren, 500 Barneko zerbitzari. Beraz, zergatik nahi duzu? Beraz segfault - Egia esan, ez dakit kalifikatzeko hau estandar. Baina zure PHP kodea zerbait izan bada bertan gaizki, teorian, izan liteke benetan segfault, eta kasu horretan, hau 500 Barneko zerbitzari error, zerbait da zure zerbitzari gaizki konfigurazioa. Edo han sintaxi errore bat da Zure PHP kodean. Edo zerbait txarra gertatzen da. DAVID J. MALAN: ikusi genuen segfault Batzuk jendearen erantzun artean. Eta teknikoki, gerta zitekeela. Baina horrek PHP bat, programa izango litzateke beste pertsona idatzitako, benetan segfaulted, zein bada bakarrik pertsona horiek izorratu eta idatzi buggy kodean haien interprete litzateke PHP berak segfault. Beraz, nahiz eta 500 segfault bat bezalakoa da espirituz, ia beti da konfigurazio fitxategia alean baten emaitza zure web zerbitzari batera edo, Rob esan bezala, syntax error bat, zu bezalako ez zuen aurrekontua ixteko. Edo puntu eta koma bat galdu duzu nonbait. IKUSLEEN: Anezka pset du, I Uste noiz egin nuen behin klik egindakoan dut nabigatzaileak, baina ezer ez zen sortu, zer deitu dute orri zuriak. Baina baita kodearen izan zen. Uste dut JavaScript zen, ezta? ROB BOWDEN: Bai. AUDIENCE: akats horrek oraindik etorri? ROB BOWDEN: Beraz, ez litzateke ahaztuak Akats hau delako dena web zerbitzari ikuspegitik guztiz fina izan zen. Baina index.html eskatu duzu. Shuttle.js Eskatutako eta service.js. Eta arrakastaz itzultzeko gai izan zen duzu gauza horiek guztiak egiteko - 200. Ados. Hori besterik ez da bakarrik zure nabigatzailean saiatu JavaScript kodea interpretatzen duen nik bezala, itxaron, hau ez da baliozko JavaScript error. Beste edozein galdera? Ondo da. DAVID J. MALAN: Beraz, hurrengo up kopurua 11 izan zen. Eta 11 scariest zen jende asko da. Beraz, hemen, kontuan izan, garrantzitsuena izan zen hori izan zen, hain zuzen ere, inguru bi aldiz lotuta zerrenda. Baina hori ez zen iazko berdina bi aldiz lotuta zerrenda arazoa, eta ez dute Oharra eman duzula Zerrendako zitekeen, hain zuzen ere, izango ordenatu gabe. Beraz, hain zuzen ere, zerrenda hori Unsorted zen eta hain zuzen, hitz hori zela azpimarratu du han zen ekarri transmititzea hau da, benetan sinplifikazio bat bestela zer izan zen duen gehiago Challenging arazo bat eta luzeagoa da. Beraz, akatsa hemen komun bat jarri zen Iazko irtenbide zure bat on pager eta gero besterik ez blindly kopiatu duten erantzuna, eta horrek eskubidea da gisa behera desberdinak galdera bati erantzun espiritua antzekoak. Baina ñabardurak hemen honakoak izan dira. Beraz, bat, dute nodo bat izendatu dugu, eta modurik ohikoena hemen definitutako. Ondoren zehaztutako dugu zerrenda izan globala erakuslea hasieratu null. Ondoren, itxuraz, bi funtzio ez dago Hemen prototipoak dugu, txertatze eta kendu. Eta ondoren lagina kode batzuk ditugu hemen insertions mordo bat egiten. Eta, ondoren, amaitzeko eskatzen dizugu du txertatze ezartzeko azpitik horietan modu batean txertatzen dela n zerrendan sartu konstante denboran, halaber, azpimarratu, lehendik ere badago ere. Beraz, txertatu ahal izatearen edertasuna konstante denboran da esan nahi Txertatu duzula nodo berria non? Aurrealdean sartu. Beraz kanporatzea da, zorionez, gutxienez Kasu hori eskatzen erabilitako bat kode lerro are gehiago, bezala egin iaz eta nahiz klasean dugunean Gauza mota honen bidez hitz egin gizakiak eta batzuekin hitzezko sasi kodea. Beraz, konponbidea hemen, egin dezagun gorako hori besterik bisuala on bat izateko pantaila. Ohartu, honako hau egiten ari gara. Eta, gainera, beste sinplifikazio nabarituko zela da, nahiz dagoeneko presente, beraz, horrek esan nahi du, nahiz zenbakia da dagoeneko, ahal duzun besterik blindly txertatzeko beste kopia. Eta hori, ere, zen ekarri izan nahi du sinplifikazioa, ezin izan duzu beraz zentratu da, benetan, gehiago batzuk parte intelektualki interesgarri eta Akats batzuk osagarriak ez soilik egiaztapena emandako denbora mugatua. Beraz lagin irtenbide honetan, esleitu dugu ezkerreko eskuko on erakuslea alboko hemen nodo bat. Orain, konturatzen erakuslea, gisa Rob esan, bit 32 bakarrik da. Eta ez du benetan eduki Helbide bat arte esleitu helbide. Eta hori egiten dugu eskuineko on malloc bidez alboko. Herritar on bat bezala, begiratu dugu malloc ez da, hain zuzen ere, baliogabea da, beraz, ez ustekabean sortzen dugu segfault hemen. Eta edonoiz bizitzan malloc erabiliz gero, zuk nulua behar egiaztatuz, kausituko sotil akatsen bat duzu. Ondoren nulua duten abiarazi dugu arabera n eta aurreko eta hurrengo esleitzea. Eta kasu honetan hemen, I hasieratu Internet aurreko, berri hau, zeren nodoa da berria izango da nire zerrenda hasieran. Beraz, ez da joan aurretik ezer ez. Eta funtsean, erantsi nahi dut existitzen den nodoaren arabera zerrendako bera zerrendara hurrengo berdinak ezarriz. Baina ez dut besterik egin oraindik. Zerrenda bera bazegoen, hala bada, eta ez dago nodo gutxienez bat izan zen dagoeneko leku, hau zerrendan badago Hemen eta nodo berri bat txertatu dut hemen, I ziurtatu egin behar nire ohia nodo atzeraka puntuak nire nodo berria, hau da, izan ere, berriro ere, bi aldiz lotuta zerrenda. Beraz behatu kontrol bat egiten dugu. Zerrenda ez da nulua bada, ez da dagoeneko nodo bat edo gehiago badaude, orduan gehitzen duten atzera erreferentzia nolabait esateko. Eta gero oso azken gauza behar dugu egin benetan eguneratu da globala zerrenda aldakorra bera seinalatu nodo berri horretara. Bai. AUDIENCE: erakuslea gezi batean [INAUDIBLE] berdinen null, ez dela Zerrendako aurre delako Zerrendako nulua da? DAVID J. MALAN: Laguia. Besterik ez da, niretzat proaktiboan izateaz ibili, horretan hau da nire bada agian, nodo batzuk gehiago jatorrizko zerrenda hemen baino gehiago eta txertatu dut nire hemen baino gehiago nodo berria, ez da joan hemen ez da ezer izan. Eta ideia hori harrapatu nahi dut Lotura aurreko ezarriz nodo berria on nulua. Eta, ustez, nire kodea zuzena bada eta ez dago beste txertatzeko modu funtzio hori baino beste nodo, ustez, zerrenda nahiz eta dagoeneko bertan nodo bat edo gehiago, zentzuzkoa zerrenda, lehen nodoa, izan litzateke bat aurreko null beraren erakuslea. AUDIENCE: Eta jarraipen-a besterik ez. Arrazoia erakuslea jarri duzu hurrengo berdinen zerrenda erakuslea da egiten ari zaren zerrendan duten seinalatuz aurretik hurrengo, asmatzen dut - I don't - besterik zerrendatzen? DAVID J. MALAN: Zehazki. Eta, beraz, utzi bi kasuetan kontuan hartu benetan en hemen benetan, nahiz eta ordena horiek kontuan hartu beharko dugu ez dela kodearen berdina nahiko. Baina maila altu batean, honetan adierazten bada zerrendatu eta hau 32-bit bat da erakuslea, eszenatokia errazena da hau lehenetsita nulua dela. Eta demagun Txertatu nahi dut kopurua 50 lehen zenbakia izan zen. Beraz, ez dut aurretik joan eta esleitu joan nodo bat, hau da, eduki joan Hiru eremuak - n, aurreko eta hurrengo. 50 zenbakia jarri nahi dut hemen, hau delako n izango da. Hurrengo hau izango da. Eta hau aurreko izango dira. Eta beraz, zer egin behar dut kasu honetan? Beno, besterik ez dut egin lerro 1 hemen. Erakuslea n lortzen n. Orduan nuen, esaten aurreko null jaso behar. Beraz, hau da nulua izango. Ondoren, naiz hurrengoa esan nahi du joan da zerrenda lortu du. Eta hau besterik lanak eta. Hau nulua da. Eta, beraz, esaten dut berria nodo hurrengo eremuan lortu behar da, edozein dela ere, hau da. Beraz, null beste jartzen badira. Eta, ondoren, azken gauza Dut check dago hemen. Zerrenda ez da nulua berdina bada, baina null berdina da, beraz, saltatzen dugu guztiz. Eta beraz, ez dut zerrenda hurrengoa da lortzen erakuslea, zein pictorially emaitzak Horrelako irudi bat. Beraz, eszenatoki bat da. Eta horri buruz galdezka ziren duzuna zehazki, hau bezalako egoera bat da, non dagoeneko jaso dugu bat-listak bat. Eta atzera gora joaten naiz jatorrizko bada Arazoa comunicado, hurrengo dugu txertatzeko adibidez, 34 da, besterik eztabaidak eztabaida. Beraz, naiz besterik erosoan joan ahal marraztu duten hemen baino gehiago. Besterik ez dut malloced. Demagun I egiaztapena naiz nulua da. Orain, nik nahi hasieratu noa n 34 izan. Eta honen n izango da. Hurrengo hau izango da. Eta hau aurreko izango dira. Dezagun ziur ez nuen get honetan atzeraka. Aurreko dator lehen definizioan. Utzi hau konpondu zidan. Hau aurreko da. Hau da hurrengoa. Hauek berdinak dira, nahiz eta, dezagun koherentea mantentzeko. Aurreko. Hau da hurrengoa. Beraz, besterik ez dut malloced nire ohar, egiaztaturik nulua da, esleitutako 34 nodo sartu. Aurreko lortzen nulua. Beraz, horrek ematen dit horrek. Hurrengoa lortzen zerrenda. Beraz zerrenda hau dago. Beraz, hau, orain bera da honen marrazketa gisa arrow, beraz, puntu bat behar dute berean. Eta ondoren dut egiaztapena bada zerrenda ez da nulua berdina. Eta ez da oraingo honetan. Ondoren, naiz zerrenda egin da joan Aurreko erakuslea lortzen. Beraz zerrendatu aurreko lortzen PTR. Beraz, hau jarriz eragina du gezi grafiko bat hemen. Eta hori pixka bat lortzean Wavy, lerroak. Eta gero, azkenik, I egunera zerrendara erakuslea seinalatu. Beraz, gaur egun hau tipo hau seinalatzen. Eta orain, egin dezagun azkar bat utzi behatu egiaztatzeko. Hauek dira, hau da, aldagai globala. Lehen nodoa da, hain zuzen ere, 34, delako Gezi duten honako naiz. Eta hori zuzena da nahi dudalako zerrendaren hasieran txertatzeko nodo berri guztiak. Bere hurrengo eremua niri eramaten tipo honi. Jarraitzea badut, sakatu dut hurrengo nulua da. Beraz, ez dago gehiago zerrenda ez da. Aurreko hit badut, ez dut lortzen atzera non espero dut. Beraz, ez dago erakusle bat gutxi daude oraindik, jakina, manipulatzeko. Baina, hain zuzen, esan zinen egin hau konstante denboran bakarrik esan nahi duzu gauza-kopuru mugatu bat dute egin bazaizu onartzen. Eta zer da zenbaki hori? Urrats bat izango da agian. Agian bi, izango da. 1.000 urrats izan liteke. Baina finitua da, eta horrek esan nahi ezin duzu dute edozein begizta moduko den gertatzen Hemen, errekurtsibitate gabe, begiztak gabe. Besterik ez da lortu hard-lerroen izateko lagin honetan dugun kode gisa. Beraz, hurrengo arazoa 12 eskatu digu remove ezartzeko osatzeko modu bat da kentzen hemen behean n denbora lineala zerrendan. Beraz, apur bat gehiago duzu wiggle gela orain. N dela suposatuko dezakezu, bada gaur zerrendan, gaur izango da gabe, behin baino gehiagotan. Eta hori ere ekarri bat galdetegi oinarritutako izateko errazte hipotesi, beraz, duten zenbakia 50 nonbait aurkitu ezkero zerrendan, ez duzu ere arte jarraitu kezkatu batetik bestera joateko, posible guztietan bila 50 kopia, besterik devolve litzateke Denbora mugatu batean minutia batzuk sartu. Beraz remove-rekin, hau izan zen behin betiko gehiago Challenging eta gehiago idatzi kodea. Baina hasiera batean, Egia da, agian jasanezinak eta antzeko zerbait bilatzeko ez da ez izan dezakezu modu etorri galdetegi baten gainean. Baina banakako urratsak ardatz badugu, zorionez, bat-batean geratuko da greba banakako horietako bakoitzean urrats bistako zentzuzkoa atzera begirako. Beraz dezagun begirada bat. Beraz, lehenengo, erakuslea abiarazi dugu izan zerrendatu bera. Denbora lineala nahi dudalako, baliabide Begizta batzuk izan dut. Eta hemen zehar batetik bestera joateko modu komun bat zerrenda egitura baten edo edozein motatako nodo egituraren iteratively da hartu datuen aurrean erakuslea egitura eta orduan besterik hasteko eguneratzeari da eta oinez zure bidea Datu-egitura bidez. Beraz, ez dut zehazki hori egin. Erakuslea, berriz, aldi baterako nire aldakorra, ez da nulua berdina, dezagun joan aurretik eta egiaztatzeko. Ba zortea lortu dut? N eremua da nodoaren ari naiz une batean berdina begira zenbakia bilatzen ari naiz? Eta hala bada, egin dezagun zerbait utzi. Orain, nabarituko hau bada baldintza inguratzen osoa kode lerro jarraituz. Honi buruzko zaintzen dut gauza bakarra da - galdera zenbaki bat aurkitzeko. Beraz, ez da beste inor ez, eta horrek errazten du gauza kontzeptualki pixka bat. Baina orain, konturatu nintzen, eta agian duzu bakarrik konturatu hau pentsatzen ondoren pixka bat bidez, ez da egia esan, bi kasuetan hemen. Da bat non nodo at da zerrendan, hau da, baten hasieratik txiki gogaikarriak, hori delako bat Kasu berezietan, eta aurre egin behar duzulako gauza honekin, zein anomalia bakarra. Nonahi bestela zerrendan, Gauza bera da. Badira aurreko nodo bat eta hurrengo bat da Nodo, aurreko nodoa, hurrengo nodoa. Baina tipo hau berezia txiki bat da zuen hasieran bada. Beraz erakuslea zerrendan berdin bada bera, hain naiz hasieran bada zerrenda eta aurkitu dut n, behar dut gauza pare bat egiteko. Bat-zerrenda aldatzeko behar dut hurrengo eremuan, 50 seinalatu. Beraz suposatzen duten saiatzen ari naiz 34 kentzeko. Beraz, tipo hau en got joan kanpoan une bat besterik ez. Beraz, ez dut esango, zerrendan lortzen erakuslea hurrengo. Beno, hau erakuslea da. Hurrengoa da hemen seinalatuz. Beraz, hau gezi eskubide hori aldatzen Orain lasaia honetan seinalatu hemen. Orain, gogoratu, daukagun tenporala aldagai bat. Beraz, ez dugu edozein nodo umezurtz, dudalako ere tipo hau izan nire remove ezartzeko. Beraz, orain, zerrenda bera ez da nulua, Zerbait apur bat konpondu behar dut. Orain ziurtatu gezi hori behar dut, hau da, aldez aurretik seinalatuz 50 eta 34 bitartekoa, hau lortu urrun joan, delako kentzeko saiatzen naiz bada 34, 50 izan hobeto ez mantentzeko edozein motatako itzuli da erreferentzia gisa gezi iradoki. Beraz, lerro hau, egin dut. Beraz, ondoren egin dut. Kasu horretan, benetan nahiko erraza. Zerrenda-burua moztu nahiko erraza da. Tamalez, ez da hau gogaikarriak bestela blokea. Beraz, gaur egun, kasuan kontuan hartu behar dut han erdian zerbait. Baina ez da gehiegi terrible, salbu honen antzeko sintaxia da. Beraz, ez naiz hasieran bada zerrenda, erdian nonbait naiz. Eta lerro hau hemen esaten da, hasieratik edozein dela ere, nodo egiten ari zaren at. Aurreko nodoa hurrengo eremura joan eta seinalatzen duen erakuslea at. Egin pictorially utzi. Zela konplikatuak lortzean. Beraz, aurreko eremuak hemen daukat bada - egin dezagun hau - hurrengo eremuak hemen. Nire erakusleak errazteko baizik noa sorta oso bat marraztu baino gauzak atzera eta aurrera crisscrossing elkarrengandik. Eta orain, utzi, besterik gabe esan hau da, 1, 2, 3 eztabaidak eztabaida, nahiz nahiz eta horrek ez du lerro batera galdera arazoa. Beraz, hemen nire zerrenda lotuta dago. Bi kentzeko honetan saiatzen ari naiz ipuinaren bertsio bereziki. Beraz eguneratu dut erakuslea be tipo hau seinalatuz. Beraz, hau PTR da. Hemen apuntatzen zuen. Hau zerrenda da, eta horrek existitzen orokorrean bezala aurretik. Eta hemen ez du axola zer apuntatzen zuen. Eta orain, bi kendu saiatzen ari naiz. Hala bada erakuslea hemen apuntatzen da, naiz , jarraitu itxuraz, joan den Aurreko erakuslea, eta horrek jartzen nau, 1. Naiz gero esango duten hurrengo eremua, eta horrek ekartzen dit baino gehiago honetarako kutxa hemen, joan den erakuslea berdina hurrengo. Beraz erakuslea hau bada, hau da hurrengoa. Horrek esan nahi du honek gezi beharrak tipo hau seinalatu. Beraz, zer kode lerro bat besterik ez du, egin hau pixka bat da. Eta, gaur egun, hau da, antza norabide egokian zapaldu. Funtsean 2 out snip nahi dugu 1 eta 3 erdian dagoen. Beraz, zentzuzkoa da hori nahi dugu Ibilbidea erakuslea honen inguruan. Beraz, hurrengo lerro hau markatuta badago erakuslea hurrengoa ez da nulua, ez da hain zuzen ere, 2-eskuin norbait, horrek esan nahi du ere egin behar dugu apur bat snip hemen. Beraz, gaur egun erakuslea hau jarraitu behar dut eta eguneratzeko on aurreko erakuslea tipo hau pixka bat egin sahiesteko hona hemen puntua. Eta orain, ikusmen hori da polita. Apur bat narratsa da hori, ez da inork ez 2 seinalatuz jada. 2 da ezkerrera seinalatuz. Eta 2 da eskuin seinalatuz. Baina nahi duena, edozein dela ere egin ahal izango zuen, zeren buruzko libratuko ezagutu nahi zuen. Eta ez du axola zer balio horiek gehiago dira. Zer da garrantzitsua da hori, gainerako guys gainetik routing dira eta orain haren azpitik. Eta hain zuzen ere, hori da, zer egin dugu. Dugu free erakuslea, eta horrek esan nahi esango dugu sistema eragilea, ongi etorria zara hau aldarrikatu. Eta gero, azkenik, itzuliko gara. Bestela inplizituki, badugu oraindik ez dute itzuliko, lortu dugu bila mantentzeko. Beraz erakuslea berdin hurrengo erakuslea besterik esan nahi du mugitu tipo hau hemen. Mugitu tipo hau hemen. Mugitu tipo hau hemen bada, hain zuzen ere, ez genuen zenbakia aurkitu Oraindik bilatzen ari gara. Beraz, Egia, erabat garbi ikusten da , jasanezinak, uste dut lehen begiratuan, batez ere borrokatu baduzu honekin galdetegi zehar, ondoren ikusiko honen antzeko zerbait. Eta zeure burua pat duzu atzeko aldean. Beno, ez da izan nezakeen modu zatoz gora duten galdetegi on batera. Baina esango nuke, ahal duzun apurtu duzu bada behera banakako horiek sartu kasu eta besterik ez ibiltzeko arretaz,, nahiz admittedly, bajo estres egoeratan. Zorionez, argazkia egin guztia zoriontsuago. Hau marraztu izan zugan Edozein modutan kopurua. Ez duzu nahasketa egin Gauza hemen. Egin ahal izango duzu zuzen honen antzeko lerro. Baina arazo hau gist, in orokorrean, ez zen konturatzen diren azkenean, irudi apur bat begiratu behar honen antzeko zerbait, zeren etengabeko denbora inplizituki mantentzen baduzu jamming eta jamming eta jamming du hasieran nodo berria zerrendaren. Zalantzaren bat? Ziurrenik gehien Challenging zalantzarik kodetze galderak. IKUSLEEN: da antzekoa zerrenda aurreko adibideetako buru. DAVID J. MALAN: Zehazki, zehazki. Just ezberdinetan izen bat aldagai global bat. Mundu zabalean zer? ROB BOWDEN: Ados. Beraz, hau bat non da paragrafoa idatzi behar izan zuen. Batzuek idatzi zuen saiakera Galdera honetarako. Baina besterik sei termino horiek erabili behar duzu zer gertatzen den deskribatzeko facebook.com harremanetan saiatzen zara. Beraz, besterik ez dut prozesuan zehar hitz egin baldintza hauek guztiak erabiliz. Beraz, gure nabigatzailean, idatzi dugu facebook.com eta sakatu Sartu. Beraz, gure nabigatzaileak zer bat eraikitzeko joan HTTP eskaera dela bidaliko duten Facebook-prozesu batzuen bidez Facebook digu erantzuteko duen Bere orriaren HTML. Beraz, zer prozesua da egilea horrek HTTP eskaera benetan Facebook lortzen? Beraz, lehenik eta behin, itzuli behar dugu Facebook.com. Beraz, besterik gabe, emandako Facebook.com izenarekin, non benetan HTTP eskaera egiten du joan behar? Beraz itzultzeko Facebook.com behar dugu IP helbide bati, bakarrean identifikatzen makina zer dugu benetan eskaera hau bidali nahi. Eramangarria IP helbide bat dauka. Internetera konektatutako ezer IP helbide bat dauka. Beraz, DNS, Domain Name System, hau da zer itzulpena kudeatzeko joan etik facebook.com IP helbide bat behar duten benetan nahi duzun harremanetan jarri. Beraz, DNS zerbitzarien abisatzen dira eta esan, zer da facebook.com? Dio, oh, IP helbide 190,212 da zerbait, zerbait, zerbait. Ondo da. Orain, badakit zer makina Kontaktuari nahi dut. Orduan, zure HTTP eskaera bidaltzen dituzunean Makina hori baino gehiago. Beraz, nola lortu duen makina da? Beno, eskaera aurrera doa router itzulerako router. Gogoratu adibidea klasean, non benetan ibilbidea ikusi genuen hori paketetan hartu denean saiatu ginen komunikatzeko. Salto Atlantikoaren gainean ikusi genuen Ocean puntu bat edo dena delakoa ere. Beraz, epe azken portu. Beraz, hau da gaur egun ordenagailuan. Gauza anitz unean izan dezakezu Interneten komunikatzeko. Beraz exekutatzen I daiteke, adibidez, Skype. Baliteke web nabigatzailea irekita daukat. Agian zerbait izan dut fitxategiak torrenting. Beraz, gauza horiek guztiak dira komunikatzeko nolabait internet. Beraz, zure ordenagailuaren datu batzuk jasotzen denean Internetetik, nola egiten du dakit zer aplikazio benetan Datuak nahi? Nola ez dakit zehatz honetan ote den datuak ekarri torrenting aplikazioaren aurka Web nabigatzaileak? Beraz, hori portu helburua da aplikazio horiek guztiak izan portu bat aldarrikatu ordenagailuan. Beraz, zure web nabigatzailea dio, beno, 1000 atakan entzuten ari naiz. Eta zure torrenting programa, esaten da 3000 atakan entzuten ari naiz. Eta Skype dio, 4000 ataka erabiltzen dut. Beraz, datu batzuk lortu duzu pertenece Aplikazio horietako bat, datuen Zein ataka markatzen da benetan batera bidali behar dira. Beraz, hau dio, oh, I belong 1000 portura. Badakit gero honek birbidali behar dut nire web nabigatzaile batera. Beraz, arrazoia garrantzitsua da hemen da web zerbitzarietan duten joera 80 atakan entzun. Beraz, harremanetan dut Facebook.com, naiz makina batzuk komunikatzeko. Baina zein portutik esan behar dut makina, komunikatu nahi dut. Eta web zerbitzarien ohi dira 80 atakan entzuten. Nahi badute, ezarri ahal izango dute beraz 7000 atakan gisa zerrendatzen da. Eta, ondoren, web arakatzaile batean, I Could Facebook.com eskuz idatzi: 7000 arte eskaera bidali 7000 portura Facebook-en web zerbitzaria. DAVID J. MALAN: Eta kasu honetan, are nahiz eta ez genuen eskatzen duten pertsonen aipatu hau, kasu honetan, zer ataka eskaera benetan joan litzateke? Saiatu berriro. Zehazki. Ez hori bilatzen, baina sotiltasun bat hori da, han ere ez azkena. ROB BOWDEN: Beraz HTTPS du, geroztik, zehazki entzuten du enkriptatuta, 4430 atakan da. AUDIENCE: Eta emailak 25 dira, ezta? DAVID J. MALAN: igorlea emailak, 25, bai. ROB BOWDEN: ez dakite dut gehienetan du - Beheko direnak guztiak ohi dira Gauza gordeak. Nik uste dut dena pean 1024 erreserbatuta dago. AUDIENCE: Zergatik esan duzu 3 Zenbaki okerra izan zen? ROB BOWDEN: Zeren IP helbide bat ere, lau zifrako multzoak dago. Eta 0 eta 255 ari dira. Beraz 192.168.2.1 da komun bat sare lokaleko IP helbidea. Iragarki horiek guztiak ez dira 255 baino gutxiago. Beraz, hasi 300 dut, hori ezinezkoa izan Zenbaki bat izan da. DAVID J. MALAN: Baina hori silly clip tik - CSI, non izan dute zen zenbaki hori handiegia zen IP helbidea. ROB BOWDEN: honi buruzko zalantzaren bat? Hurrengoa, aldaketa hain osoa gaia, baina PHP array hau dugu quad-etxe. Eta orden gabeko zerrenda bat dugu. Eta zerrendako elementu bakoitza inprimatu nahi dugu besterik etxe izen dauzkan. Beraz foreach begizta bat dugu. Beraz, gogoratu, sintaxia foreach da array elementu gisa array. Beraz begizta-iterazio bakoitzean zehar, etxea da bat hartzera joaten array-barrutik balioak. Lehen iterazio, etxe on Cabot Etxea izango da. Bat bigarren iterazio, etxe on egingo izan Courier Etxea eta abar. Beraz quad bakoitzaren etxea bezala, gaude besterik argitaratzeko - ere oihartzuna izan ahal izango duzu - Zerrendako elementua eta, ondoren, etxearen izena eta ondoren itxi zerrendako elementua. Giltza kizkur aukerakoak dira hemen. Eta gero ere galdera batean esan genuen berez, gogoratzeko itxi orden gabeko zerrenda etiketa. Beraz PHP modutik irteteko behar dugu Horretarako urtean. Edo oihartzuna izan dugu dute itxi orden gabeko zerrenda etiketa. DAVID J. MALAN: hemen Gainera isuna litzateke izan dira, eskola zahar bat erabili ahal izateko $ i a = 0 0 loop eta zenbatzen erabiliz irudikatu izpien luzera. Too guztiz fina, besterik wordier apur bat. AUDIENCE: Beraz zinen joan bada [INAUDIBLE], egingo zenuke - Ahaztu dut zer begizta [INAUDIBLE] da. Litzateke $ duzun quad parentesi i? DAVID J. MALAN: Zehazki. Bai, hain zuzen. ROB BOWDEN: Beste ezer? DAVID J. MALAN: Ondo da. Merkataritza-off. Beraz, ez dago erantzun sortak ziren horietako bakoitzaren posible. Ginen benetan besterik bila zerbait sinesgarria bat goitik eta arazotxo bat. Eta zenbaki 16 eskatu, erabiltzaileen balioztatzeko sarrera bezero-aldeko, Javascript bezala, ordez zerbitzariaren aldeko of, PHP bezala. Beraz, zein da eremu bat goitik egiteko bezero-aldeko? Beno, proposatu ditugun gauzetako bat da latentzia gutxitzeko duzula, duzulako ez dute harremanetan traba hemen zerbitzaria, eta horrek gutxi iraun dezake milisegundotan edo are segundo pare bat dela saihestuz eta besterik erabiltzaileen sarrera Bezeroaren aldeko arabera balioztatzeko on-submit handler eragiteko eta besterik, egiaztapena zuten idatzi izena eman zerbait? Ba zerbait idazten dute helbide elektronikoen in? Ba gela bat aukeratzen dute Goitibeherako menu? Horiek berehalako iritzia eman ahal izango duzu gigahertzetan ordenagailua erabiliz edo dena hori izan dute benetan dute mahaian. Beraz, besterik ez da erabiltzaileen hobea esperimentatu normalean. Baina bezero-aldeko egiten arazotxo bat baliozkotzea, egin bada ere gabe duzu zerbitzariaren aldeko baliozkotzea egiten ari dela edonork gehienetan CS50 irteten daki Besterik nahi duzun edozein datu bidali ahal duten zerbitzari batera edozein modutan kopurua. Egia, gehienetan Edozein nabigatzailean, ahal duzun Ezkutatu inguruan ezarpenetan eta besterik itzali JavaScript, biltzeko eta, beraz, edozein forma ezgaitu baliozkotzea. Baina ere gogoratzen dezakezu, nahiz eta I klasean urrutira gauza batzuk erabiliz egin telnet eta benetan itxurak get bidaliz nabigatzaileak bat izan zerbitzari batera eskaerak. Eta hori da, zalantzarik gabe, ez Edozein JavaScript erabiliz. Hori besterik ez niri komandoak idazten teklatu bat. Beraz, benetan, nahikoa barruan edozein programatzaile web eta HTTP batera erosotasuna edozein dela ere, datu berak nahi bidali izan balidazio gabe zerbitzari batera. Eta zure zerbitzaria ez dago, gainera, egiaztatzen bada ba niri eman dute izena, ez da benetan baliozko helbide elektroniko honetan, zuen aukeratuko dute gela bat, agian amaituko duzu sortu akastunak edo besterik gabe datuak hutsik txertatzeak Zure datu-basean sartu, eta horrek, ziurrenik, gauza on bat izan nahi, ez da joan bada suposatuz zinen zegoen han. Beraz, hau gogaikarriak errealitatea da. Baina, bezero-aldeko orokorrean balidazio handia da. Baina bi aldiz ere lana esan nahi du. Han egin arren existitzen hainbat liburutegiak, Javascript liburutegiak Esate baterako, askoz hau osatzen duten, askoz ere buruhauste bat gutxiago. Eta kodearen batzuk berrerabiltzeko dezakezu zerbitzariaren aldeko, bezero-aldeko. Baina konturatzen normalean dela lan osagarriak. Bai. AUDIENCE: Beraz, bada besterik ez dugu esan bezain segurua - DAVID J. MALAN: [Barreak] Ugh. Horiek dira beti gogorragoa ere bai esleitzea. ROB BOWDEN: Hori litzateke onartu egin dituela. DAVID J. MALAN: Zer? ROB BOWDEN: arazo hau sortu dut. Onartu izan litzateke. DAVID J. MALAN: Bai. AUDIENCE: Cool. ROB BOWDEN: Baina ez dugu onartuko lehenengoa izan - ondo, zer ginen eta bilatzen da Zu bezalako zerbait ez dute behar zerbitzariarekin komunikatzeko. Ez genuen besterik azkarrago onartu. AUDIENCE: What about ez dute orri freskatuz? ROB BOWDEN: Bai. Duela onartuko erantzun bat izan zen. DAVID J. MALAN: Ezer non sentitu dugu Ez litekeena baino gehiago egongo zen zer zinen bazekien duzula , esanez eta hori gogorra linea batzuetan marrazteko. Ordez lotuta zerrenda bat erabiliz array bat mantentzeko of a ordenatuko osoko zenbakien zerrendan. Beraz, bat goitik askotan aipatuko dugu lotuta bere osotasunean motibatuta duten zerrendak sarrera dinamismoa lortuko duzu zen. Hazi daitezen. Txikitu ahal izango dute. Beraz, ez duzu uztai bidez salto egin behar memoria gehiago benetan sortzeko array bat. Edo zuk ez dute besterik esatea, barkatu, erabiltzaileak. Array betetako. Zerrendaren hazkundea, beraz, dinamikoa. Arazotxo bat zerrendak lotuta nahiz eta? AUDIENCE: lineala da. Bilatzen lotutako zerrenda on lineala ordez zer hasi oraindik sartu zuetako DAVID J. MALAN: Zehazki. Bilatzen lotutako zerrenda bat lineala da, du horrela antolatu bada ere, ahal duzun delako ogi apurrak horiek bakarrik jarraitu, horiek erakusleak, zerrendaren hasiera-hasieratik amaieran. Ezin duzu ausazko sarbidea eta leverage, beraz, bilaketa bitarra, hau da, nahiz ordenatuta, ezin izan duzu array bat egin. Han eta kostu bat da, gainera. Bai. AUDIENCE: Memoria eraginkorra? DAVID J. MALAN: Bai. Beno, ez nuke zertan esan eraginkorra. Baina balio du memoria gehiago, 32 bit bakoitzean behar duzulako erakuslea osagarriak nodo, at banaka lotuta zerrenda bat gutxienez. Orain, Osoko zenbaki bakarra da gordetzeko bazabiltza eta erakuslea gehitzen ari zaren, hori da benetan mota ez hutsala. Honez memoria kopurua bikoiztu da. Baina errealitatean, zuk gordetzeko bazabiltza bat lotuta agian izan structs zerrenda 8 byte, 16 byte, are gehiago Hori baino, agian, gutxiago da kostu marjinala baten. Baina hala ere, kostu bat da. Beraz, horiek bai Pentsamendu downsides gisa fina izan. 18. PHP C ordez erabiliz idatzi komando-line programa bat. Beraz, hemen, askotan, azkarragoa da erabiltzea PHP edo Ruby edo Python bezalako hizkuntza. Besterik azkar irekitzean testu editore bat sortu. Funtzio askoz gehiago duzu zure eskura. PHP sukaldea funtzioen konketa ditu, C, zuk berriz Oso, oso gutxi. Izan ere, mutilak ezagutzeko modu gogorrean ez duzula izan hash taulak. Ez ekin erabiltzen duzun zerrendak. Horiek nahi baduzu, izan nahi duzu horiek ezartzeko yourself. Beraz PHP goitik bat edo benetan inongo interpretatu hizkuntza azkar egiten horrekin kodea idatz dezakezu. Baina arazotxo bat, hau ikusi genuen naizenean azkar harrotua sortu misspeller bat hitzaldia ezartzeko PHP erabiliz, da duten lengoaia interpretatu bat erabiliz da normalean motelagoa. Eta hori ikusi genuen froga bat denboran handitzeko 0,3 segundo eta 3 segundo, delako interpretazioa benetan hori gertatzen. Goitik beste izan zen duzun ez dute konpilatu. Beraz ere bizkortzen da sortu garapena bide batez, ez duzu delako programa bat martxan bi urrats. Besterik ez duzu bat. Eta beraz, nahiko sinesgarria baita. Ordez SQL datu-base bat erabiliz CSV fitxategi batean datuak gordetzeko. Beraz SQL datu pset7 erabiltzen. CSV fitxategiak ez duzu askoz erabili. Baina zeharka erabiltzen duzun pset7 gisa ongi Yahoo Ogasun hitz eginez. Baina CSV besterik ez da Excel fitxategi bat bezala, baizik eta super simple, non zutabeak dira besterik barrutik komaz demarked bestela testu fitxategi baten berri. Eta SQL datu-base bat erabiliz apur bat gehiago sinesgarria. Goitik bat da, gauzak lortuko duzu delako bezala hautatu eta txertatu eta ezabatu. Eta, lortu duzu, ustez, indizeak duen MySQL eta beste datu-base, bezalako Oracle, zuretzat eraikitzeko memoria, eta horrek esan nahi du zure hautatu Seguru asko ez da goitik behera lineala izango. Benetan zerbait izango da bilaketa bitarra edo antzeko zerbait espiritua antzekoak. Beraz, oro har, azkarrago ari dira. Baina arazotxo bat dago besterik lan gehiago da. Ahalegin gehiago da. Datu-base ulertu behar duzu. Ezarri sortu behar duzu. Exekutatu zerbitzari bat behar duzu buruzko datu-base horrek. Ulertu behar duzu nola konfiguratzeko. Beraz hemen hauek besterik merkataritza-offs mota. CSV fitxategi batera, egin dezakezu berriz sortu ezazu gedit batera. Eta zauden onak joan. Dagoela haratago konplexutasuna ez da. Ordez hash taula baten trie bat erabiliz kateatzea bereizi gordetzeko rekin bat hitzak gogorarazten hiztegia Pset5 neurtzen. Beraz, bat saiatzen goitik, teorian gutxienez, zer? Etengabeko denbora, gutxienez bazaude gizabanakoaren bakoitzean osatzerakoan hitz batean letrak, zuk bezala baliteke Pset5 dute. Duten bost egiaztapenekin, sei izan liteke hash-ak ez da bospasei bada hitzaren letrak. Eta hori da nahiko ona. Eta ez da on goi-muga bada nola Luze zure hitzak izan liteke, hori da hain zuzen ere asymptotically etengabeko denbora. Berriz bereizi hash taula bat , kateatzea arazoa ez dagoela batera datuen egitura mota da, Zure algoritmoak errendimendua normalean Gauzak kopuruaren araberakoa Dagoeneko datu-egituran. Eta hori da, zalantzarik kasua kateak, zeinaren gehiago stuff jarri duzu hash taula bat sartu, luzeagoa dutenen kateak joan, zein txarrena esan nahi kasuan, gauza izango duzu bilatzen agian modu guztiak banan amaieran da kateak horiek, eta eraginkortasunez zerbait lineal devolves. Orain, praktikan, ezin izan erabat da kasuan duen hash taula bat izango kateak dagokion egitea azkarragoa da trie ezartzeko. Baina hori hainbat arrazoirengatik da, besteak diren saio eta asko erabili memoria hori, ahal, izan ere, gauza geldoa , behera ez duzulako lortu polit katxeak zerbait izeneko onurak, non elkarren ondoan daudela gauzak memorian sar daitezke sarritan azkarrago. Eta batzuetan etorri dezakezu rekin hash funtzioa benetan ona. Apur bat alferrik galdu dute, nahiz eta memoria, baliteke, hain zuzen ere, izan gai gauzak azkar eta ez aurkitu txarra bezain linealki. Beraz, azken finean, ez zen nahitaez Alde horiek edo baita bi edozein Gauzak zehatzak bilatzen dugu. Benetan ezer limurtzaile goitik bat eta arazotxo gisa oro har, gure begi harrapatu. ROB BOWDEN: Beraz, goitik egiteko, egin genuen ez bere kabuz onartzeko "azkarrago". Duzu horri buruz zerbait esan behar izan zuen. Teorikoki azkarrago esan baduzu ere, bagenekien motatako ulertzen duzula 1 0 dela. Eta hash taula, teorian, Ez da 1 0. Exekuzio buruz ezer aipatu oro har, lortu dituzun puntuak. Baina "azkarragoa," irtenbideak gehienak on taula handiak ziren saiatzen ziren Objektiboki konponbideak baino motelagoa duen hash taulak ziren. Beraz, azkarrago eta bera ez da benetan egia. DAVID J. MALAN: Dom de dom dom. Ziurrenik naiz dela konturatuko bakarra hori nola hori ustezko nabarmenagoa izango da, ezta? ROB BOWDEN: benetan izan nuen ideia ez. DAVID J. MALAN: egindako nire buruan zentzua. ROB BOWDEN: hau egiten ari naiz. Ados. Beraz, hau dena non marraztu izan duzu da zaren antzeko diagrama agian iraganean azterketak ikusi. Hargatik begiratu besterik. Beraz HTML nodo batetik, ditugun bi haurrak, burua eta gorputza. Beraz koka dugu - buru eta gorputz. Buruan izenburu etiketa dauka. Beraz, izenburu bat behar dugu. Orain, gauza bat, jende asko ahazten da testu nodo horiek Zuhaitz honen barruan elementu. Hortaz, hona hemen horietako ovals gisa marraztu gertatuko dugu haiek bereizten hauetatik nodes-mota. Baina oharra ere hemen goian dugu, erdian, eta beheko aldean amaituko da izatea testu nodoak. Beraz, horiek ahantzi samarra zegoen akats komun bat. Gorputzaren hiru seme-alaba ditu - Hiru eta DIV horiek. Beraz div, div, div eta ondoren testua nodo eta DIV horietako haurrak. Hori nahiko askoz galdera horrentzat. DAVID J. MALAN: Eta Aipagarria da, ez dugu, nahiz eta horiek dwell denbora pasatzen dugun xehetasun JavaScript, duten ordena ez, in Izan ere, materia teknikoki. Beraz, burua gorputza baino lehenago badator batean HTML, orduan agertu beharko luke gorputza utzi benetako DOM en. Bere da, oro har, aski FYI, dokumentu ordena izeneko zerbait, non Gaia ez da. Eta zuk parser bat ezartzeko balira, HTML irakurtzen duen eraikin batean programa bat oroimenez zuhaitz gora, egia esateko, hori da senez seguruenik duzuna egin hala ere - goitik behera, ezkerretik eskuinera. ROB BOWDEN: Horri buruzko galderak? Beharko luke hurrengo bat egin? DAVID J. MALAN: Noski. ROB BOWDEN: Ados. Beraz, hau inbaditu bufferraren da Eraso galdera. Hemen aitortu gauza nagusia da, ondo, nola gerta daiteke aurkariarekiko trikimailu bat programa hau exekutatzean sartu kode arbitrarioa? Beraz argv1, lehen komando lerroan Programa honen argumentua, izan daiteke arbitrarioki luze. Baina hemen kopiatu memcpy erabiltzen ari gara argv1, hemen barra da. Pasatuz ari gara argudio gisa. Eta beraz, izen-barrako hartuz. Beraz bar memcpying ari gara buffer c honetan sartu. Zenbat byte dugu kopiatzen dira? Beno hala ere asko byte bar gertatzen erabili, argumentu hori luzera. Baina c da byte 12 bakarrik zabal. Beraz, komando lerroko argumentu bat idazten badugu hori da 12 byte baino luzeagoa, gaude hau gainezkatzea joan buffer bereziki. Orain, nola liteke aurkariarekiko bat engainatu du kode arbitrarioa exekutatzen sartu programatzen? Beraz, gogoratu hemen nagusia foo deituz. Eta beraz, ondoren, nagusia deiak foo. Dezagun marraztu honetan. Beraz, gure pila ditugu. Eta pila-markoa du nagusiak behealdean. Uneren batean, nagusia deiak foo. Beno, berehala, nagusia deiak foo. Eta beraz foo bere pila-markoa lortzen. Orain, uneren batean, foo itzuli egingo. Eta Foo itzultzen joan zen, aldi jakin behar dugu zer lerro kode dugu nagusien barruan ordena jakin izan ziren bertan nagusian berrekiteko behar dugu. Foo deitu dezakegu osotasunean aurrera leku desberdinetan sorta. Nola dakigu non itzultzeko? Beno, nonbait gorde behar dugu. Beraz, nonbait, hementxe inguruan, gordetzen dugu non behin itzuli behar dugu Foo itzultzen. Eta honen bueltan helbidea da. Beraz, nola aurkariarekiko bat aprobetxatu dezake honen kontua da, buffer c honetan gordetzen da, dezagun esan, hementxe c da. Beraz, lortu dugu 12 byte c. Hau da c. Eta hau foo en pila eraztuna da. Maltzurren erabiltzaile gehiago sartzen da, hala bada 12 baino byte edo komando bat sartu dute lerroko argumentu hori da 12 baino luzeagoa pertsonaiak, gero goazela Buffer honek gainezka. Jarraitzeko aukera izango dugu. Eta uneren batean, urrun joan gara nahikoa hasiko garela bueltan helbide hau gainidatziz. Beraz, behin itzulera helbidea gainidatzi dugu, honek esan nahi du, lelo itzulerak, ari lekuan itzuli dugu erabiltzaile maltzur hura kontatzea da egindako edozein dela ere, balioa, sartu da edozein dela egindako pertsonaiak erabiltzaileak sartu. Eta hala bada maltzurren erabiltzaile izatea da bereziki azkarra, hau izan zuen printDef nonbait itzuli funtzio edo malloc nonbait funtzioa, edozein lekutan arbitrarioa. Baina are gehiago clever da dauka zer bada Erabiltzaileak itzultzeko hemen. Eta, ondoren, exekutatzen hasten zara hauek kode lerro gisa. Beraz, puntu horretan, erabiltzaileak sartu ahal edozein dela ere nahi du eskualde honetan sartu zuen. Eta kontrol osoa du Zure programa baino gehiago. Horri buruzko galderak? Beraz, hurrengo galdera da osoa izan foo reimplementation horrela jada ez dela zaurgarria. Beraz, ez dago modu pare bat da duzu hau egin izan da. Oraindik ere c besterik ez dugu luzera 12 izanik. Zuk aldatu egin liteke hau zure irtenbidea barruan. Halaber, txeke bat egiteko gehitu ditugu ziur barra ez zela nulua. Nahiz eta zuk ez duzu behar kreditu osoa duten. Beraz, lehenik eta egiaztatzen ari gara katea bar luzera. 12 baino handiagoa da, eta gero, bada ez benetan egiten kopia. Beraz, hura konpontzeko modu bat da. Hura konpontzeko beste modu bat da ordez c beharrik bakarrik luzera izango 12, izan da luzera strlen (bar) izan. Hura konpontzeko beste modu bat da benetan besterik ez itzultzeko. Beraz, zuk izan besterik ahaztuak guztia deusezten bada hau, besterik ez duzu guztia ezabatu izan balu kode lerro, you ahaztuak zukeen kreditu osoa, funtzio hori geroztik ez benetan betetzeko ezer. Honez agindu lerroan kopiatzen da argumentu in array batzuk sartu bere tokiko pila markoa. Eta gero, gauza itzuli da. Eta edozein dela ere lortzen desagertuko da. Beraz, bueltan nahikoa ere izan zen kreditu osoa lortzeko modu. DAVID J. MALAN: Not espiritua nahiko du galderari baina per onargarria zehaztapenak, hala ere. ROB BOWDEN: horretako edozein galderak? Gauza bat duzu gutxienez Beharko den kode konpilatzean dute. Beraz, nahiz eta teknikoki ez zara zaurgarria zure kodea ez bada konpilatu, ez genuen onartzea. No galdera? Ados. DAVID J. MALAN: nahi duzun Ez titulu hori esateko? ROB BOWDEN: N º DAVID J. MALAN: Beraz, oraingo honetan, hau bai albiste ona edo albiste txarra izan zen. Hau da, hitzez hitz, arazo bera lehen galdetegi gisa. Eta ia ez da berdina pset1 gisa arazoa. Baina nahita sinplifikatu zen izan piramide sinpleago bat, hori izan daiteke apur batekin konpondu iterazio errazagoa. Eta benetan, zer dugu at lortzean ziren Hemen ez zen hainbeste logika, Ziurrenik, une honetan, zauden delako erosoagoa izan ziren baino astebete begiztak edo zergatik loops batera, baina benetan gain tease duten Oraindik batera pixka bat eroso Nozio horrek PHP ez da bakarrik zeri buruz programazioa. Da benetan hizkuntza gisa erabiltzen komando lerroko programak idazteko. Eta, hain zuzen, hori da saiatzen ari ginen zure atentzioa emateko. Hau komando lerroan PHP programa bat da. Beraz, C kodea hemen, zuzena berriz C, ez PHP zuzendu. Baina benetan kodearen berdina da. Quiz konponbideak alderatu ezkero 0 Quiz 1 aurka, aurkituko dituzu duen ia berdina da, salbu batzuk dolarraren seinaleak eta egiteko datu mota bat eza. Hain zuzen ere, begirada bat hartu dugu hemen, ikusiko duzu batetik bestera joateko dugula, honetan kasuan, 1etik 7 bidez sortu. Dugu egin izan du, 0 indizea. Baina batzuetan, uste dut besterik ez da adimen errazago gauzak pentsatzen 1etik 7ra. Bloke bat nahi baduzu, ondoren, bi blokeak, gero hiru, gero dot, dot, dot zazpi. Dugu j ari 1 hasieratu eta ondoren kontatuta i iritsi arte. Eta dena da hemen bestela berdin-berdina. Baina nabarmendu behar dira gauza pare bat. Dituzu bi lerro hauek, lehenengo hau ematen diogu bata, goofily shebang gisa izendatzen bang zorrotz. Eta hori besterik bidea zehazten da, karpeta, eta bertan programa bat izan daiteke aurkitu eta erabili nahi duzun fitxategi hau interpretatzeko. Eta, ondoren, horren ondoren lerroan, of Jakina, esan nahi sartu PHP modua. Eta oso behean lerroan irteera PHP modua esan nahi du. Eta obra hau, orokorrean, ekin interpretatu hizkuntzak. Mota da gogaikarriak idazten baduzu bat izeneko foo.php fitxategi batean programa. Eta gero, zure erabiltzaile izatea besterik gogoratu, OK, programa hau exekutatu, I idatzi behar "php espazio foo.php." Nolako gogaikarriak besterik ez bada ere. Eta agerian uzten du ere, zure programa da PHP, eta hori ez da guztia idatzita duten erabiltzailearentzat argitzen. Beraz. Php guztiz kendu ditzakezu hitzaldia gogoratzen. Eta benetan egin dezakezu. / Foo bada Nik chmodded duzun eginez exekutagarria. Beraz chmod a + x foo egin zukeen. Eta, gainera shebang gehitu baduzu hemen. Baina, benetan, arazoa at zen lortzean honen antzeko zerbait inprimatzeko. No HTML, ez C-kodea, zalantzarik gabe, besterik PHP batzuk. Beraz Milo gero arazoa 25 urtean itzuli. Eta 25 in, you ziren honako hauek eman hezurdura kodea; zen bat Web orri, nahiko erraza. Eta parte mamitsuena HTML-jakintsua jaitsi zen Hemen, non gorputzaren barruan dugu duten sarrera-identifikazio berezia du formulario bat horren barruan bi sarrera, bat izan zen izena, batek ideia bat botoia ideia batekin. Lehenengoak testu mota zen, mota bigarren submit. Eta horrela eman dugu zuk, egia esan, gehiago , behar duzuna baino besterik ez, beraz, osagai you guys aukerak izan dituen arazo hau konpontzeko. Ez zorrozki behar duzun identifikazioak horiek guztiak. Baina konpontzeko aukera ematen du modutan da. Eta goialdean, nabarituko helburuari eragin zen Honelako leiho bat - Kaixo, Milo - gora pop nabigatzailea erabiliz super simple, bada Ez itsusi, alerta funtzioa. Eta, beraz, azken finean, hau irakiten behera kontzeptualki nolabait entzuten inprimaki bezero-aldeko-bidalketak , Ez du zerbitzariaren aldeko, nolabait aurkezteko duten erantzuna duten erabiltzaileak idatzitako balioa grabbing izenaren eremuan hautatu, eta ondoren hura erakusteak alerta bat gorputzean. Beraz, hau egin dezakezu modu bat da jQuery, zein itxura apur bat sintaktikoki perplexing lehen. Hau egin ahal izango duzu puru DOM kodea ekin - izena by document.getelement. Baina dezagun bertsio honetan begirada bat. Garrantzitsu pare bat daukat lerroak lehen. Beraz, bat, lerro hau dugu, hau da, zer ikusi duzu agian berdina , in dut uste, form2.html klase aste 9. Eta hau da, besterik gabe, esaten exekutatu Ondorengo kodea denean Dokumentuaren prest dago. Hau garrantzitsua izateaz bakarra delako HTML orrien top irakurtzen ari den behean, ezkerretik eskuinera. Eta, beraz, saiatu egin baduzu hemen kode DOM batzuk zerbait elementu, HTML etiketa batzuk, hori behera Hemen, goizegi egiten ari zarenean, hau ez baita delako Izan memorian irakurtzen. Beraz document.ready hau esanez line, ari, esaten dugu Hemen batzuen kodea, nabigatzaileak da. Baina ez exekutatu honetan guztian arte dokumentu prest dago, hori DOM da Zuhaitz memorian existitzen. Hau da, apur bat gehiago erraza, sintaktikoki bat bada bit desberdinak, non esaten dut, grab HTML elementu baten berezia Identifikatzaile Sarrerek da. Hori da, zer hash etiketa denotatzen, ID bakarra. Eta gero deitzen naiz. Aurkezteko. Beraz. Submit hemen funtzio bat da, bestela metodo gisa ezagutzen da, hori da ezkerreko eskuko on objektuaren barruan albo han, baina ez dut nabarmendu. Uste duzu sarrera-hala bada objektu bat gisa oroimenean - eta halaxe izan da. Zuhaitz bat lotune bat da - . Aurkezteko bide denean inprimaki honekin identifikazio hori aurkeztu, exekutatu Ondorengo kodea. Berdin zait zer-izena funtzioa da exekutatzen ari naiz. Beraz, hemen, erabiltzen dut lehen bezala, zer the lambda funtzio edo bat deitu Funtzio anonimoak. Ez da batere intelektualki izena ez du bestea baino interesgarria da, hau da, fina Oraindik duzun bakarra bada inoiz behin deituko da joan. Eta barrutik han benetan kudeatzeko dut Inprimakia aurkezteko. Lehenengo aldagai bat deklaratzen dut balioa deritzo. Eta gero, zer honek eragina da nabarmendutako zatia hemen orain? Zer duten batean egiten du niretzat maila handia? AUDIENCE: balioa lortzen duen Erabiltzaileak ez du aurkitu HTML beheko. ID hori lortzen da eta, ondoren, duen balioa aurkitzen. DAVID J. MALAN: Zehazki. Nodo hartuko du, zeinen berezia Identifikatzaile izena da. Balioa lortzen da bertan, eta horrek da, ustez, zer erabiltzailea idatzi bere burua. Eta, ondoren, gordetzen duen in Balio izeneko aldagai. Bat alde batera utzita, ere izan dezakezu egin hau apur bat ezberdina. Erabat zerbait egiten onargarria gezur var balioa lortzen document.getElementById. Eta, horregatik, apur bat da lapurtera den jQuery ez erabiltzea. "Izena". Balioa. Beraz, erabat onargarria. Modu ezberdinetan horretarako. jQuery besterik apur bat gehiago laburra eta izan ohi zalantzarik gehiago popular programatzaile artean. Orain, behatu bat pixka bat egiten ari naiz egiaztatzeko, arazoa delako adierazpen esplizituki esan dugu, bada, Erabiltzaileak ez du oraindik idatzitako bere izendatzeko, ez alertak bat erakusteko. Baina horretarako zuk egiaztatu ahal izango, besterik arabera kate hutsa baten egiaztapena aurrekontu-unquote badago ezer ez benetan. Baina ez da aurrekontu-unquote berdina bada, Alertak deitu nahi dut. Eta zati interesgarri hemen dela plus operadorea erabiltzen ari gara, eta horrek zer JavaScript? Kateatu. Beraz PHPs dot operadorea bezala. Ideia bera, sintaxia apur bat desberdinak. Eta besterik ez dut katea sortzeko naiz duten ikusi duzu pantaila jaurtiketa on - Kaixo, beraz, eta abar. Eta, ondoren, azken xehetasuna da hau. Zergatik barruan faltsua itzuliko dut Funtzio anonimoak honen? AUDIENCE: Inolako baliorik ez. Jarri duzu inprimakia. Besterik ez dio, balioa ez bada hutsik berdina, eta gero egin du. Han aurkezteko horretan huts bat zen. DAVID J. MALAN: Ados. Kontuz ibili arren. Ba al dago beste inor hemen. Eta bueltan faltsua duten kanpo dago baldintza bada ere. Beraz, hau nabarmendutako lerroa, itzultzeko faltsua, exekutatzen axola zer denean Inprimakia aurkeztu da. Zer esan honen barruan faltsua itzuli Gertaera kudeatzailea da, deitzen baita, galdera gertaera aurkezteko izateaz? AUDIENCE: delako behin bakarrik gertatzen da. DAVID J. MALAN: behin bakarrik gertatzen da. Ez da nahiko. Bai? AUDIENCE: formularioa eragozten aurrera portaera lehenetsia aurkezteko, zein orri berritu egingo luke. DAVID J. MALAN: Zehazki. Beraz, gainkarga naiz epe aurkeztu hemen, dut esaten delako, formularioan da aurkeztu diren. Baina iradokitzen duzun bezala, benetan ez dira benetako HTTP modu batera aurkeztu. Noiz Aurkeztu, delako sakatu duzu gure onSubmit handler, atzematen ari gara forman aurkezteko, beraz, hitz egiten. Ondoren, gure gauza ari gara egiten Javascript kodearekin. Baina nik nahita faltsu itzuli nintzen, zer ez dut gertatuko nahi duelako bat split bigarren geroago inprimaki osorako da berez weba aurkeztu behar Kode-balio bikoteetan zerbitzari aldatuz URL antzeko zerbait izan nahi du q = katuak edo dena delakoa egin genuen, esate baterako, klasean. Ez dut nahi hori gertatuko, zeren han zerbitzari no honen entzutea da aurkezteko inprimakia. Honez hutsa JavaScript kodea egin. Eta horregatik ez ere daukat bat Ekintza nire orrian aitortu, dudalako ez honen asmoa inoiz zerbitzari joan. Beraz, aurkeztu diren. Baina forma atzematen ari gara aurkezteko eta lehenetsia saihestuz jokabidea, hau da, benetan modu guztiak joan zerbitzariari. AUDIENCE: Beraz mantenduz bezero-aldeko. DAVID J. MALAN: mantentzea horri esker, bezeroak. Zehazki eskubidea. Next up my oh MySQL zen. ROB BOWDEN: Ados. Beraz, lehen galdera hau izan zen, oro har, pertsonentzat zakarra. Geroago, batzuk joan arren hobeto. Beraz, datuak zuzenak hautatu behar izan duzu zutabe horietako bi mota. Eta horietako bi izan batzuk haiei buruz gauzak aukera zaila egin. Beraz, int ez zen baliozko zenbakian idatzi. Arrazoia, 12 digituko kontu bat izateaz zenbakia, int bat ez da nahikoa handira digituak guztira gordetzeko. Beraz, baliozko aukera bat izan litzateke handi bat int duten jakin gertatuko baduzu. Beste aukera, izan zitekeen char luzera 12 eremu bat. Beraz, horiek bai aritu zen. Ez litzateke int. Orain, oreka, uste pset7 itzuli. Beraz, berariaz erabili dugu hamartarrekin akzioak edo balioa gordetzeko - DAVID J. MALAN: Cash. ROB BOWDEN: Cash. Zenbatekoa gordetzeko hamartar erabiltzen dugu cash erabiltzaileari ditu gaur egun duten. Beraz, arrazoia ez da egin duguna , izan ere, gogoratu, karroza. Han doitasun puntu mugikorreko da. Ezin hain zuzen gordetzeko dirua da dugun bezalako baloreak hemen nahi. Beraz hamartar ahal izateko, hain zuzen denda da zerbait, esan, bi hamartarrekin. Horregatik, oreka, nahi dugu hamartar eta ez flotatzen izan. DAVID J. MALAN: Eta, gainera, ere, nahiz hura izan zitekeen argia beste in testuinguru pentsatzeko, agian hau int aukera bat da. Besterik ez dut pista pennies gauzak. Esplizituki erakutsi dugu lehenetsia delako izateaz 100.00, balioa duten esan nahi du, besterik ez zitekeela int bat izan. Eta sotiltasun beste too zenbakiarekin zen zen, ez dela ekarri trikimailu galdera bat izan. Baina gogoratzen MySQL int bat dela, bezalako C, gutxienez dagoen tresnaren, 32-bit dira. Eta ez dugun arren, espero duzu dakit zehazki zenbat digituak duen bitartez, ez gogoratzen duten kopuru handiena potentzialki irudikatzeko dezakezu 32 biteko zenbaki batekin gutxi gorabehera zer den? Zer zenbaki ez beti esaten dugu? 2 eta 32, hau da, gutxi gorabehera, zer? Ez duzu, hain zuzen ere jakin nahi. Baina gutxi gorabehera bizitzan lagungarria da. Gutxi gorabehera 4 milioi da. Beraz, hainbat aldiz esan dugu. Dakit esan dut hori hainbat aldiz. Eta gutxi gorabehera 4 milioi da. Eta hori arau ona da Thumb jakin. 8 bit, 256 badaukazu zenbaki magikoa da. 32 bit, 4 badaukazu milioi eman edo hartu. Beraz, zuk idatzi besterik ez bada behera 4 mila milioi, ikusiko duzu baino zifra gutxiago dela 12, horrek esan nahi du, hori argi eta garbi ez nahikoa adierazkortasuna artera bat 12 digituko kontu zenbakia. ROB BOWDEN: Ados. Beraz, beste batzuk joan hobeto. Beraz suposatzen duten banku $ 20 hileko inposatzen mantentze kontu guztietan kuota. Zer SQL kontsulta banku Could rekin kendu $ 20 Aldaketa guztietatik, nahiz emaitza da saldo negatiboak batzuetan? Beraz, funtsean, lau dira kontsultak mota nagusiak - txertatzeko, hautatu, eguneratu eta ezabatu. Beraz, zer gaude uste dugu Hemen erabili behar da? Eguneratzeko. Beraz dezagun begirada bat. Beraz eguneratzen ari gara hemen. Zer mahai daude kontuak eguneratzeko dugu? Beraz kontuak eguneratzeko. Eta, ondoren sintaxia dio, zer kontuetan ari gara eguneratzen? Beno, saldoaren berdina ezartzeko ari gara egungo oreka ken 20 balioa. Beraz, hau errenkada guztiak eguneratu egingo kontuak, kenduz $ 20 oreka from. DAVID J. MALAN: akats arrunt bat hemen, batzuetan barkatu dugu, nahiz eta, izan zen benetan PHP kodea hemen kontsulta funtzioa deituz edo jarriz guztia inguruan komatxo duten ez zuen behar han egon. ROB BOWDEN: Gogoratu MySQL dela PHP lengoaia bereizi bat. Da idazteko MySQL PHP gertatuko dugu. Eta PHP gero bidaltzea MySQL zerbitzariarekin baino gehiago. Baina ez duzu PHP behar izateko MySQL zerbitzari batekin komunikatzen. DAVID J. MALAN: Zehazki. Beraz dolarraren seinaleak aldagai ez behar testuinguru honetan be. Besterik ez da egin ahal izango matematika guztia datu-base barruan. ROB BOWDEN: Ados. Hurrengo bat beraz. Hau al da hurrengo bat? Bai. Beraz, zer SQL kontsulta banku Could rekin Kontu bere zenbakiak berreskuratu aberatsena bezeroek, duzuenok saldoak 1.000 baino handiagoa? Beraz, lau mota nagusi zein daude hemen nahi dugu? Hautatu. Beraz hautatu nahi dugu. Zer hautatu nahi dugu? Zer zutabean zuk hautatu nahi dugu? Egingo zehazki nahi dugu kopurua hautatzeko. Baina esan duzu izarra, badugu ere onartu. Beraz hautatu zenbaki zer mahaitik? Kontuak. Eta gero, baldintza nahi dugu? Non oreka 1.000 baino handiagoa. Ere handiagoa onartu dugu baino edo berdina. Ko bat. Zer SQL kontsulta banku Could rekin hurbil, hau da, Kontu guztietan ezabatu duten $ 0 oreka bat du? Beraz, lau zein garen erabili nahi dugu? Ezabatzeko. Beraz, sintaxia? Zer taula ezabatu? Kontuak. Eta ondoren, baldintza horien gainean ezabatu nahi dugu - non oreka berdin zero. Beraz, lerro guztiak ezabatu kontuetatik non balantza zero da. Horietako batean galdera? Ilara nahi duzu? DAVID J. MALAN: Ilara gida. Ko honetan, zuk eman dugu pixka bat egitura ezagutzen duen bat aztertu dugu klasean pixka structs ondoan, zein datu bat izan zen egitura espirituz zerikusia. Nahiz eta aldea ilara batekin nolabait gogoan izan dugun nor ilaran aurrean zen, handietan zati da, beraz, gehiago egin ahal izan genuen memoriaren erabilera eraginkorra, gutxienez, dugu array bat erabiliz gero. Delako abisuaren, array bat izan badugu, bada, esate baterako, honen aurrean dago ilaran, lortu dut ilaran sartu bada hemen, eta ondoren, norbaitek lortzen lerroan Niretzat, nire atzean, nire atzean, eta atzean pertsona bat lerro kanpo egoteagatik, zuk Could, gure giza batzuk ikusi dugun bezala klasean boluntarioak, denek dute mugitzeko modu honetan. Baina, oro har, ondoren denek egin Zerbait ez da denbora erabilera onena programa batean, esan nahi duelako zure algoritmoa zer abian dagoenean asintotikoak entzierro denbora? Da lineala da. Eta sentitzen dudan bezala, hori da mota ergelak. Ildotik hurrengo pertsonaren da ondoan bada nor ustezko sartu pertsona denda, ez dute denek dute batera mugitu. Besterik gabe utzi pertsona hori izango hari pultsatuzko off Unea iritsita, esate baterako. Beraz, denbora pixka bat aurreztu ahal izango dugu han. Eta horrela egin duten arren, bide horretan duten ilaran buru edo ilaran aurrean joan den pixkanaka gero eta sakonago mugitu array sartu eta azkenean agian benetan inguruan biltzea dugu bat erabiltzen ari bazara array jendea gordetzeko Ilara honetan. Beraz, ezin duzu ia uste array datuak zirkular baten ondorioz zentzu horretan egitura. Beraz, nolabait duzu segimendua egiteko haren tamaina edo benetan amaieran eta, ondoren, bertan hasten da. Beraz, aldarrikatu duzula proposatzen dugu besteak beste, ilara bat, deituz q, eskutitz bat besterik ez. Ondoren aurrealdean izango proposatzen dugu zeron, eta hasieratu tamaina egon zero hasieratu. Beraz, oraintxe bertan, ez dago ezer ilara horren barruan. Eta duzu osatzeko eskatu dugu enqueue ezartzeko azpitik halako eran funtzioa gehitzen n q bukaeran eta ondoren, egia itzultzen. Baina q osoa edo negatiboa bada, funtzioaren ordez itzuli behar faltsuak. Eta pare bat eman dugu duzu hipotesi. Baina ez dira benetan funtzionalki garrantzitsuak, bool hori bakarrik existitzen da, teknikoki, boolearra ez du, zeren C existitzen barne hartzen baduzu behintzat bat zenbait goiburu fitxategiak. Beraz, besterik gabe, egin zen ziur ez ziren ez da hau trick Galdera gauza mota. Beraz enqueue, proposatzen dugu lagineko honela ezartzeko konponbideak. Bata, lehen egiaztatu dugu erraztasuna, zintzilik txikiko fruituak. Ilara osoa edo kopurua da bada Txertatu saiatzen ari zaren ez da hain zero, eta horrek esan genuen baino arazoaren zehaztapen egin beharko lukete ez da onartuko, ezin dugu nahi duelako balioak ez negatiboa, orduan, behar duzu return berehala faltsua. Beraz, batzuk nahiko erraz error egiaztapena. Nahiz izanez gero benetako duten gehitu nahi duzun zenbakia, pixka bat egin behar izan duzu Hemen pentsatzen. Eta hau da, non pixka bat izorratu egiten da adimen, izan delako duzu irudikatu wraparound nola kudeatu. Baina ideia ernamuina hemen hori da guretzat interes wraparound dela sarritan aritmetika modularra dakar eta mod eragilea, ehuneko aldean, non duzun balioa handiago batetik joan daiteke zero itzuli eta, ondoren, bat eta bi eta Hiru eta gero itzuli zero inguruan, Bat eta bi eta hiru eta abar behin eta berriro. Beraz, modu hau egiteko proposatzen duguna da ez dugu indize nahi sartu array zenbakiak non deitzen gure osokoak gezurra. Baina iritsi, lehen egin nahi dugun ilaran tamaina da edozein izanda ere, baina gero gehitu duen edozein zerrendaren aurrean da. Eta horrek eragina da gurekin jarri ziren eskuineko ilaran posizioa eta ez du bere gain hartzen duen lerro lehen pertsonan hasieran da, zuen edo zuen erabat ezin izan badugu zituzten ere denek aldatzearen. Baina besterik lana sortzeko ari gara geure burua hartu genuen bada bide jakin horretan. Beraz, nahiko erraza mantendu ahal izango dugu. Izan ez ginen gogoratu besterik ez dugu int erantsia ilaran. Eta gero itzuli besterik ez dugu egia. Bien bitartean, adierazten du, dugun galdetu honako hau egin behar duzu. Ezartzea da horrela dela dequeues, hori kentzen du eta itzultzen da, ilara aurrean int. Int kentzeko, nahikoa da da ahaztu. Ez duzu behar bere pixka gainidazteko. Beraz, oraindik ez da benetan. Just disko gogorrean datuak bezala, Izan ere ari gara jaramonik orain dela han. Eta q hutsik badago, hori behar dugu ordez itzultzeko 1 negatiboak. Beraz, hau arbitrarioa sentitzen. Zergatik itzuli 1 negatiboak faltsua ordez? Bai. AUDIENCE: Q jasoko duen balio positiboak. Geroztik balio positiboak bakarrik gordetzen q batean, negatiboa akats bat dela. DAVID J. MALAN: Ados, egia. Positibo bakarra ari gara gordetzeko beraz delako balioak edo zero, gero fina da balio negatiboa Sentinel gisa itzultzeko balioa, ikur berezi bat. Baina historia berridazten ari zarela han, delako arrazoia bakarra gara balioak ez negatiboa itzultzen da nahi dugulako Sentinel balio bat eduki. Beraz, zehazki, zergatik ez bakarrik itzultzeko faltsua akatsen kasuetan? Bai. AUDIENCE: huts egin duzu osoko bat itzuli. DAVID J. MALAN: Zehazki. Eta hau da, non C lortzen nahiko mugatzen. Zoaz zu esaten ari bazara int bat itzuli, baina dituzun int bat itzuli. Ezin duzu gauza ederrak lor eta hasteko itzuli bool edo mugikor bat edo bat katea edo horrelako zerbait. Orain, bere aldetik, JavaScript eta PHP eta beste hizkuntzetan ezin, hain zuzen ere, dituzun ezberdinak itzuli balio-mota. Eta hori benetan baliagarria izan daiteke, non positiboa ints, zero itzuli ahal izango duzu, ints negatiboa, edo gezurra edo hutsa are error adierazteko. Baina ez dugu horretan C. aldakortasun Beraz, adierazten dituzten, zer egiten dugun proposatu egiten da - ROB BOWDEN: faltsua itzuliko dezakezu. Besterik ez da faltsua hash da definitzeko zero faltsua. Beraz, faltsua itzuliko baduzu, zero itzultzen ari zaren. Eta zero baliozko gauza bat da gure ilaran, 1 negatiboak, berriz, ez da bada faltsua gertatu 1 negatiboa da. Baina ez behar duzu, nahiz eta duten jakin behar. DAVID J. MALAN: Hori zergatik ez nuen esan. ROB BOWDEN: Baina ez zen egia ezin duzula itzultzeko faltsua. DAVID J. MALAN: Noski. Beraz, adierazten du, konturatu onartzen dugu bere argudio gisa gal. Eta hori da, ez gara delako ezer pasatzen sartu Besterik osagaia ezabatu nahi dugu ilaran aurrean. Beraz, nola liteke hau egiten al dugu? Beno, lehenik eta behin, egin dezagun hau behatu check azkar. Ilara tamaina 0 bada, ez da gabe lan egin behar da. Itzultzeko negatiboak 1. Egin. Beraz, nire programaren lerro gutxitan da. Beraz, lerro lau bakarrik geratzen dira. Beraz hemen decrement erabakitzen dut tamaina. Eta tamaina eraginkortasunez decrementing esan nahi du, ahaztu gabe nago Zerbait ez da. Baina nik ere eguneratu non zenbakiak, aurrean daude. Beraz, hori egin ahal izateko, behar dut bi gauza egin. Lehen zer zenbakia gogoratu behar dut ilaran aurrean dago, gauza hori itzuli behar dudalako. Beraz, ez dut nahi nahi gabe ahaztu horri buruz eta, ondoren, gainidatziko da. Besterik ez dut int bat gogoratu du. Eta orain, eguneratu nahi dut q.front q.front beharreko +1. Honetako lehen pertsona izan zen, hala bada lerroa, orain, plus 1 egin nahi dut lerroa hurrengo pertsona seinalatu. Baina wraparound kudeatzeko behar dut. Eta ahalmen etengabea global bat bada, hori ziur me ahalbidetuko joan seinalatu gisa oso ko pertsonari dut line, modulo operazioa ekarriko ditu me back zero at ilaran aurrean. Eta hori hemen wraparound maneiatzen. Eta gero itzuli n jarraitu dut. Orain, zorrozki har, ez nuen deklaratzeko n behar. Ez nuen hura hartzen eta gorde aldi batez, zeren balioa da oraindik ere ez dago. Beraz, besterik gabe, egin izan dut eskuineko aritmetika lehengo burua itzultzeko ilara. Baina sentitu dut hori izan zela argi benetan hartu, int, jarri n, eta ondoren itzultzeko duen argitasuna mesedetan baina ez ezinbestekoak. Psst. Guztiak nire buruan ahozkagarri ari dira. ROB BOWDEN: Beraz, lehen galdera bitar zuhaitz arazoa da. Beraz, lehen galdera da, gara Emandako zenbaki horiek. Eta nolabait txertatu horretan sartu nahi dugun nodo horiek, hala nola egiten duten bat baliozko bitar bilaketa zuhaitza. Beraz, gauza bat nahi buruz gogoratu binary bilaketa zuhaitz da ez dela Hori besterik ez ezkerrera gauza da gutxiago eta gauza eskuinetik handiagoa da. Izan behar du hori zuhaitz osoa ezkerretik gutxiago da, eta zuhaitz osoa eskuinera handiagoa da. Jarri beraz badut 34 hemen goialdean, eta, ondoren, Jarri dut 20 hemen, beraz, hori da baliozko beraz orain arte, izan ere, 34 hemen sortu. 20 da ezkerretara joan. Beraz, gutxiago. Baina ezin dut orduan jarri 59 hemen, zeren nahiz eta 20 eskuinaldean 59 da, oraindik da 34 ezkerraldean. Beraz, kontuan murriztapen hori, izan Ziurrenik hau konpontzeko modurik errazena Arazoa da, besterik moduko zenbaki horiek - beraz, 20, 34, 36, 52, 59, 106. Eta gero sartu direnen eskuinetik ezkerrera. Beraz, hemen 20 doa. 34 hemen doa. 36 hemen doa. 52, 59, 106. Eta, gainera, hurrena duzula ezin bazterturik non batzuk plugging eta konturatu, Oh, itxaron, ez dut zenbakiak nahikoa hori bete ahal izateko, hemen baino gehiago. Beraz reshift behar dut zein den nire Ibilbidea nota izango da. Baina nabarituko azken hiru dela, bada irakurri duzu ezkerretik eskuinera, ezarriko dio ordena handituz. Beraz, gaur egun, nahi aldarrikatu nahi dugu zer egiturari dago hemen izango joan Zuhaitz honetako nodoak. Beraz, zer zuhaitz bitar bat behar dugu? Beraz, mota balioa bat dugu int, beraz, int balio batzuk. Ez dakit zer deitzen dugun irtenbidearen da - int n. Ezkerreko seme erakuslea behar dugu eta eskuineko seme erakuslea. Beraz, itxura hau du. Eta benetan izango aurretik begiratu denean, bi aldiz-lotuta zuen zerrenda stuff, beraz oharra - Korrituko dute noa guztiak Modu atzera arazoa 11 behera. Beraz nabarituko honen berdina ikusten da, ezik gertatuko dugu besterik horiek deitu izen desberdinak. Oraindik ere, zenbaki oso bat daukagu balioa eta bi erakusleak. Besterik ordez tratatzeko da erakusleak hurrengo gauza seinalatuz bezala eta aurreko gauza, tratatzeko ari gara erakusleak Gure etxeko haur bat seinalatu eta eskuineko ume. Ados. Beraz, gure egitura nodo da. Eta, orain, funtzio bakarra behar dugu ezartzeko, hau da ibilbidea, eta horrek hemen zuhaitza, argitalpena baino gehiago joan nahi dugu Zuhaitzaren balioak ordena itzazu. Beraz, hemen begira, inprimatu nahi genuke daudelarik 20, 34, 36, 52, 59, eta 106. Nola egiten dugu? Beraz, nahiko antzekoa da. , Azken azterketa-en ikusi baduzu arazoa inprimatu nahi duzula koma bitartez zuhaitz osoa tartean dena, izan zen benetan, nahiz Hori baino errazagoa. Hortaz, hona hemen konponbidea da. Hau izan zen nabarmen errazagoa Errekurtsiboki zenuen bada. Ez dakit inor saiatu bada iteratively egin. Baina lehen, gure kasuan ez dugu. Zer erro null bada? Orduan ari gara itzuli egingo. Ez dugu nahi ezer inprimatu. Bestela gabiltza zeharkatuko joan errekurtsiboki behera. Inprimatu ezkerreko Azpizuhaitza osoa. Beraz, dena gutxiago inprimatu nire uneko balioa baino. Eta gero, ez dut neure burua inprimatu dute. Eta ondoren, naiz behera bitarra joan nire eskubidea Azpizuhaitza osoa, beraz, dena nire balioa baino handiagoa. Eta hori argitaratzeko ordena guztia daudelarik. Hau nola benetan galdera accomplishes hori? AUDIENCE: galdera bat daukat [INAUDIBLE] on. ROB BOWDEN: Beraz hurbiltzeko modu bat Edozein recursive arazoa da, besterik uste buruzko Gustukoa uste duzu izkina kasu guztiei buruz. Beraz, kontuan hartu nahi dugun zuhaitz osoa hau inprimatu. Beraz, guztiak zentratu gara nodo jakin hau da - 36. Dei errekurtsiboak ere, asmoa dugu horiek besterik ez du funtzionatzen. Beraz, hemen, dei errekurtsiboa honetan ibilbidea, nahiz eta pentsatu gabe dugu Horri buruz, besterik ezkerretik traversing hiru, pentsa dagoeneko bistaratzen 20 eta 34 guretzat. Eta orduan, azkenean errekurtsiboki dugu deitu ibilbidea da eskubidea, hori izango da behar bezala inprimatu 52, 59, eta 106 guretzat. Beraz, horiek lehendik ere 20, 34, inprimatu ahal izango da, eta 52, 59, 108 bestelako inprima daiteke, egiteko gai izan behar dugu guztia inprimatu da duten erdian ourself. Beraz, dena inprimatu gure aurrean. Inprimatu ourself, beraz, uneko nodoaren inprimatu 36, erregular printf, eta, ondoren, guztia inprimatu digu ondoren. DAVID J. MALAN: Hau non errekurtsibitate da benetan ederra lortzen. Fede-jauzi harrigarria hau da, non lan pixka txikienen egin duzu. Eta gero utzi duzu norbait bestela ez gainerakoak. Eta beste norbaitek da, ironikoki, duzu. Beraz brownie puntu larriak, bada gora joan galdera da - ROB BOWDEN: galderak On? DAVID J. MALAN: Eta pixka bat behera zenbakiak, jakingo du inor non zenbaki horiek nondik datozen? ROB BOWDEN: literalki ideia ez daukat. DAVID J. MALAN: Agertzen dira Galdetegi osoan zehar. AUDIENCE: Ba al dute zenbakiek berdinak? DAVID J. MALAN: Zenbaki horiek. Apur bat Pazko arrautza. Beraz Duten online behaketa at etxean, zuk kontatu ahal bada posta bidez emateko heads@CS50.net zer garrantzia horietan errepikatutako sei zenbakiak dira Quiz 1 zehar, dutxa izango dugu final at arreta harrigarria hitzaldia eta estresa baloi bat. Nice, sotila. ROB BOWDEN: Edozein azken galdera ezer galdetegiaren buruz?