[Powered by Google Translate] [ASTE 5] [David J. Malan, Harvard Unibertsitatea] [Hau da CS50.] [CS50.TV] [Woman] zuen etzanda; buruz, ez dakit. [Man] Beraz, zer dakigu? [Woman] 9:15 That, Ray Santoya ATM, izan zen. [Man] Beraz, galdera da, zer zen egiten 9:16 al du? [Woman] 9 mm Shooting zerbait. Agian, sniper ikusi zuen. [Man] Edo berarekin zuen lan. [Woman] Itxaron. Joan atzera. [Man] Zer duzu ikusi? [♫ Suspenseful music ♫] [Woman] Ekarri bere aurpegia gora. Full screen. [Man] Bere betaurrekoak. >> Hausnarketa bat da. [♫ Suspenseful music ♫] [Man] That Nuevita beisbol taldea. Beren logo. [Woman] Eta duenarentzat jaka hori janzten zuen hitz egiten. [David Malan] Beraz, aste honetan CS50 5 da, eta, gaur egun, telebista eta film pixka bat hondatu dizugu. Beraz, betiere, ikuskizun bat ikusten ari zaren hau hemen bezala, eta polizia esaten "Ezin hori garbitu duzu?" edo "Hobetu," ez dago mundu errealean hobetzeko. Izan ere, zer lortu duzula antzeko zerbait txiki bat da. Bota dut orritik argazki langile bat. Photoshop izeneko programa bat da. 1 2 Bowdens da, 1 3 Bowdens benetan, gaur egun, andrea Bowden direlako, hemen ere, Rob eta Paul. Baina hemen Rob da pantailan, eta zoom glint horretan dugu, baina beti bere begi izan bada, zer ikusi benetan zer ikusten duzun duzuna lortzen da. Hau da "hobetuak", beraz, "CSI" oker pixka bat. Beste clip, "CSI" pixka bat luzeagoa bada jaso ahal izango dugu. Polit bat Esaldi aurrerantzean utter nahi izanez gero soinu duenean, benetan, ez du deus esaten ari zara zure lagunekin teknikoa. [Man] aste izan dut Killer Cabby hilketa ikertzen bat morbid zenbait lilura. [Woman # 1] Hau da denbora errealean. [Woman # 2] Visual Basic erabiliz GUI interfaze bat sortu dut, IP helbide bat ikusi dut jarraipena bada. [Malan] Beraz, audio out of sync alde batera utzita, GUI interfaze bat sortzeko Visual Basic erabiliz IP helbide bat jarraitzeko erabateko zentzugabekeria da. Egun horiek ez dira erabili nahi duzun Visual Basic, GUI bat beharrik gabe, eta IP helbidea, epe teknikoki zehatzak izan zen. Beraz, begi bat mantentzeko hauetan, eta nire gogokoenetako bat: Hau apur bat gehiago urrutira, beste hizkuntza bat jakin behar duzu delako. Objective-C izeneko hizkuntza bat, C. superset bat da. Horrek esan nahi du bere C gehi beste ezaugarri batzuk, objektuetara bideratutako programazioaren artean. Eta hizkuntza honetan Apple iOS programazio ezagun da. Eta, beraz, hemen beste ikuskizun bat guztiz klip bat, "Zenbakiak," benetan begiratuz gero, zure mugikorrak eta eteteko une estuki, ikusiko duzu zer bilatzen ari dira, ez da nahiko zer ari da deskribatzen. Eta utzi hainbat audio konektore bat saiatu me hemen ikusi eta ezin badugu mantendu sync audio denbora hau. Ematen dizut "Zenbakiak". [Man # 1] 32-bit IPv4 helbidea da. [Man # 2] IP, Internet da. >> Sare pribatua. Anita sare pribatua da. [Malan] Larreina. Objective-C da,, eta kid batzuk kolorazioa programa, dezakezu, agian, infer aldagaia bertan izena. Beraz, ondoren, izan zen "Zenbakiak". Horregatik, gaur eta aste honetan aurkeztu Kernet eta, beraz, arazoak testuinguruan mundua pixka bat. Gaur egun, abbreviated hitzaldi bat izango da, ez dago hemen ekitaldi berezi bat delako gero, eta, beraz, peek bat hartu dugu, eta tease bai ikasle eta guraso alike gaur egun horizonte buruzko gauza batzuk. Horien artean, astelehenetik, batzuk gehiago ikaskideekin izango duzu. , EdX, Harvard eta ekimena MITs online, Open Courseware eta gehiago, Harvard-en campus astelehena, abian jartzeko. Horrek esan nahi du, etorri astelehena izango duzu - azken kopuruan, 86.000 osagarriak ikaskideekin jarraituz egingo batera CS50-en hitzaldiak eta atal eta walkthroughs eta arazo multzo. Eta honen barruan, inaugurazio klase kide bihurtu ahal izango duzu CS50 eta orain CS50x. Horren barruan, gaur egun, konturatzen ez dagoela upsides batzuk izango baita. Hau egiteko prest, ikasle gehiegizko kopurua, nahikoa da esan nahi, nahiz eta 108 TFS eta CAk dugu, ez da nahiko onena ikasle / irakasle ratioa 80.000 ikasle beste behin hit dugu. Beraz, ez dugu hainbeste arazo kalifikatzean eskuz ezartzen. Beraz, aste honetan sartu arazoa multzoa CS50 Check izango da, den, komando-lerroko tresna izango aparatuaren barruan eguneratu ondoren, geroago, asteburu honetan jasoko duzu, eta komando bat exekutatu ahal izango duzu, begiratu 50, zure pset propioa, eta feedback batzuk jasoko duzu zure programa den ala ez zuzena edo okerra diseinu hainbat zehaztapen dugun emandako datuen arabera. Beraz, gero eta arazo multzo zehaztapena eta ikaskideekin CS50x da hau izango baita. Beraz, arazo multzo 4 Kernet buruzko informazio guztia. Eta pieza hau izan zen real-bizitza stuff batzuk inspiratuta, Horren bidez, eskola graduondoko I, interned pixka bat dut Middlesex County District Fiskala Office auzitegi-lana egiten ari beren auzitegiko ikertzailea markagailuan, eta hori zer zenbatekoa da, eta aste gutxi batzuk iragan aipatu uste dut, Mass Estatuko polizia edo beste litzateke etorriko, jaregin off zuten disko gogorretan eta CDak eta disketeak bezala gauzak eta antzekoak, eta ondoren Kernet bulegoan helburua izan zen zertan den ala ez adierazten du ez zen, edo ez zen nolabaiteko frogak. Berezia Investigations Unitateak izan zen, beraz,, zuri-lepoko delitua izan da, troubling delituak sort zen, ezer euskarri digitala nolabaiteko hartzen; bihurtzen da, eta ez hori jende askok idatzi email bat esaten "egin nuen." Beraz, sarritan Kernet bilaketak horiek ez aktibatu askoz fruta hori guztia, baina batzuetan, pertsona horiek e-posta idatzi litzateke. Beraz, batzuetan, ahaleginak saritu ziren. Baina auzitegi pset hau eramango, 4 pset grafikoak pixka bat dugu sartuz. Beraz, hartu seguruenik, eman JPEGs, GIFs eta egun hauetan bezala, gauza horiek, baina benetan horri buruz uste izanez gero, irudi bat, askoz Rob aurpegia bezala, puntu sekuentzia bat, edo pixel modelatu daiteke. Orain, Rob aurpegia kasuan, ez da kolore-mota guztiak, eta banakako puntuak, otherwide pixel bezala ezagutzen hasi ginen, behin sartu txikiagotzeko hasi ginen Baina pixka bat errazteko mundu bada, eta besterik gabe esan hau hemen dagoela Rob , zuri-beltza eta, ordezkatzen beltza eta zuria bakarrik erabili ahal izango dugu bitarrik. Bitarra erabili behar badugu, 1 edo 0, irudi hori bera adierazi ahal izango dugu Rob bit patroi hau irribarrez aurpegia: 11000011 adierazten du zuria, zuria, beltza, beltza, beltza, beltza, zuri-zuri. Eta, beraz, ez da jauzi bat erraldoia, eta, ondoren, argazki koloretsua buruz hitz egiten hasteko. Things zela Facebook ikusi edo kamera digital bat hartu, baina, zalantzarik gabe, orduan, kolore, bit gehiago behar duzu. Eta argazkiak munduan oso ohikoa da, ez 1-bit kolorea erabiltzeko, hau iradokitzen du, baina 24-bit kolorea, non lortu benetan milioika kolore. Beraz, kasua denean handitutako Rob begi, koloretsua aukera desberdinak milioika edozein zenbaki izan zen. Beraz, hau aurkezten dugu arazo multzo 4 Bisita gidatua, eta baita, gaur izango da, 3:30 ohiko 2:30 ordez delako Ostirala hitzaldia hemen. Baina bideo online izango da, ohikoa den bezala, bihar. Ere dugu sartzeko beste fitxategi-formatua. Beraz, hau da nahita ekarri beldurra bilatzeko lehen, baina C struct dokumentazioa batzuk. Bihurtzen da, Microsoft-ek, urte batzuk lehenago, formatu hau lagundu zabaltzea, izeneko bitmap file formatua, BMP, eta hori izan da super-simple, koloretsua grafiko fitxategi-formatua izan zen denbora luzez erabiltzen eta, batzuetan, oraindik mahaigain on wallpapers. Behar dela uste duzu bada, Windows XP eta gogor mendiak eta zeru urdina, izan zen, normalean BMP, edo bitmap image, eta bitmap Gurekin fun dute pixka bat, konplexutasun delako. Ez da nahiko 0 eta 1-en sare hau bezain erraza; ordez, fitxategi baten Irteeran goiburu bat bezala gauzak duzu. Beraz, beste era batera esanda, bmp fitxategia barruan sorta oso bat da, 0 eta 1-en baina ez batzuek 0 eta 1 hor. Eta bihurtzen da zer esan ziurrenik urte hartu dugu ematen, fitxategia. doc edo. xls edo. mp3 edo. mp4 bezalako formatu, edozein izanda ere ezagutzen ari zaren fitxategi-formatu. Beno, zer esan nahi du, nahiz eta fitxategi formatu bat izan? Egunaren amaieran delako, fitxategi horiek guztiak erabili behar dugun besterik ez dute 0 eta 1 eta, agian, horiek 0 eta 1 ordezkatzen a, b, c, ASCII edo antzeko baten bidez, baina egunaren amaieran bitartez, besterik ez da 0 eta 1-en. Beraz, gizakiak besterik ez, noizean behin, erabaki berri bat fitxategi-formatua asmatu non zer bit ereduak benetan esan nahi homologatuko dute. Eta hemen, kasu honetan, folks duten bitmap fitxategi-formatua diseinatu esan zuen, eta bitmap file byte lehen, desplazamendu 0 karakterearen bidez adierazten da, ez dago, batzuk cryptically izeneko aldagaia izeneko bfType ez da izango, file bitmap mota nabarmentzen da; file bitmap mota da. Infer dezakezu, agian, errenkadan bigarren desplazamendu 2, 2 byte kopurua, 0 eta 1 adierazten duen zer eredu bat dauka? Zerbait tamaina, eta hortik doa. Beraz, arazo multzo 4, gauza horiek batzuetan zehar egingo ibili. Ez dugu, azkenean, horiek guztiak buruz zaintzen, baina konturatu interesgarria hasten da lerroan edo 54 byte, rgbtBlue, Green eta Red inguruan. Akronimoa RGB, gorria berdea urdina entzun dituzun inoiz bada, hau erreferentzia bat da. Bihurtzen da delako ostadarraren kolore guztiak margotzen dezakezu gorria eta urdina eta berdea konbinazio batzuk. Eta, hain zuzen ere, lehen proiektoreak batzuk gelan gurasoak gogoratzen dezake. Gaur egun, ikusi besterik ez duzu 1 bright argia lente bat irteten. Baina eguneko, lens gorria, urdina lentearen, eta lente berdea izan duzu eta elkarrekin zuzendutako pantaila dute eta koloretsua irudi bat osatu du. Eta sarritan erdiko eskola eta goi eskola lente horiek izango litzateke , eta, beraz, gero eta, beraz, apur bat askew bikoitzak edo hirukoitzak irudiak ikusteko moduko zinen, baina ideia izan zen. Gorria eta berdea eta argi urdina irudi bat pintura izan duzu. Eta printzipio hori bera da ordenagailuak erabiltzen da. Beraz, erronka artean, eta, ondoren, arazo ezarri 4 zenbait gauza bat izango da; benetan irudi bat tamainaz aldatu. 0 eta 1-en eredu bat hartu, irudikatu 0 eta 1 zatien egitura bat zer hau atsegin dute. eta, ondoren, irudikatu nola pixel errepikatzeko: gorri, blues, berde beraz, barruan irudi bat itxura hau hasiera batean, baliteke itxura hau ondoren ordez. Beste erronka artean, ere, duzula banatu egingo da izango uneko fitxategiaren irudi bat auzitegi-kamera digital bat eta kamera bat da, Bazen behin, izan ziren argazki sorta osoa. Arazoa da, ezabatu ustekabean edo irudia hondatuta dago nolabait. Bad kamera digital gauza da, eta, beraz, azkar kopiatu dugu, 0 eta 1 off txartela, gorde horiek guztiak 1 fitxategi handi batean, eta gero entregatu ahal izango dizugu arazoa ezarri 4 horrela C programa berreskuratu idatz dezakezu. JPEGs horiek guztiak, haien. Eta JPEGs hori bihurtzen da, nahiz eta fitxategi formatu konplexu samarra ari dira, aurpegia irribarretsu hemen baino askoz ere konplexuagoak dira. Bihurtzen da JPEG bakoitza 0 eta 1-en berdina eredu batekin hasten da. Bitartean loop bat edo begizta edo antzekoak erabiliz, beraz, 0 eta 1 guztiak, auzitegiko irudi batetik bestera joateko dezakezu eta arazo multzo zehaztapen definitzen berezia eredu hori ikusten duzun aldi bakoitzean, bere gain hartuko, 'Oh, hemen da, dezakezu probabilitatea oso altua, JPEG baten hasiera, eta ahalik eta azkarren aurkitzen duzun bezala ereduarekin berean, byte edo kilobyteko edo megabyte kopuru bat geroago, demagun dezakezu 'Ooh! Hemen da bigarren JPEG, photo lehen bat ondoren hartu dut. Fitxategi hori irakurtzeko stop me, hasi berri bat hau idazten. Eta zure programa pset 4 irteera adina 50 JPEGs izango da. Eta ez bada 50 JPEGs, begizta apur bat behar duzu. JPEGs kopurua infinitua bat izanez gero, begizta infinitu bat behar duzu. Beraz, oso kasu bat nahiko arrunta, izango da. Hori zer horizonte. Quiz 0, atzean. Konturatzen, nire e-posta bakoitzeko, beti dago folks diren bi neutral, pozik, ordenatu, eta inguruan triste quiz 0 denbora. Eta mesedez ez iristea, me, burua TFS, Zamyla, zure TF edo Eus-ko badakizula gauzak nola joan eztabaidatu nahi izanez gero. Beraz, gurasoek txunditzea hemen, gelan, CS50 liburutegia zer da? Good job. Zer da CS50 liburutegia? Bai? [Student erantzun, ulertezina] >> Ongi, ona da. Beraz, kodea multzo prewritten bat da, langileak, idatzi, ematen dizugu, komun funtzionalitate batzuk eman. Stuff nahi kate bat lortzeko me get me int bat, hemen azaltzen diren funtzio guztiak. Gaur egun aurrera, prestakuntza-gurpil hauek benetan hartu off hasten gara. Beraz duzu "katea" kentzeko hasiko dugu, sinonimo besterik ez den, oroitzapen, zer benetako datu-mota izan zen? char *. Beraz, guraso, izan zen ziurrenik ona, eta, beraz, char * ikusi dugu pantailan gehiago ezabatu dugu "katea" gure hiztegia, gutxienez, benetan kodea idatziz dator. Era berean, funtzio hauetako batzuk erabiliz askoz uzteko dugu, gure programa sofistikatuagoa lortzeko delako baino besterik ez idazteko gonbita keinukariak bertan eseri duten programak, Erabiltzaileak zerbait idatzi sartu zain Inputak jasoko duzu beste nonbait from. Esate baterako, lortuko duzu, disko gogor lokalean bit serie bat. Ordez duzu etorkizunean sare konexio bat, web batzuk nonbait. Hargatik geruza hau lehen aldiz zuritu, eta tira CS50 tresnaren eta izeneko fitxategi hau CS50.h, izan zara zorrotz asteak barne. Baina benetan ikusi honen barruan. Beraz, blue fitxategia goiko iruzkinak sorta osoa besterik ez da, bermerik informazioa eta lizentzien. Hau da paradigma komun bat sort software, software egun hauetan asko dagoelako zer deitzen "open source", Horrek esan nahi du norbaitek kodea idatzi du eta libreki eskuragarri egin da, eta ez bakarrik erabiltzeko, eta exekutatu, baina, benetan, irakurri eta aldatu, eta zure lana integratzeko. Beraz, zer egin duzun, open source software, oso txikia bada ere. Azken iruzkinak behera joan I bada, baina, hasteko, gauza batzuk gehiago ezagutzen ikusteko dugu. Beraz, hemen goian nabarituko, CS50.h fitxategia goiburu fitxategiak sorta osoa. Orain, horietako gehienak ez dugu ikusi aurretik, baina bat da ezagutzen; horietako zein, ikusi dugu, labur-labur bada ere, eta, beraz, orain arte? Bai, liburutegi estandarra. Stdlib.h malloc, beraz, behin memoria dinamiko esleipena buruz hitz egiten hasi ginen, itzuli gara datorren astean ere, hasi fitxategi hori barne. Bihurtzen da boolearra eta egia eta gezurra ez benetan C existitzen, per se, besteak beste, fitxategi hau ez dago hemen. Beraz, dugu, asteak, standard bool.h barne bool, egia edo gezurra. nozioa erabili ahal izango duzu Hau gabe, faltsua da ordenatzeko eta int bat erabili nahi duzun eta arbitrarioki bere gain hartzen 0 faltsua da, eta 1, egia da. Orain, joan badugu behera gehiago nahi izanez gero, hemen gure kate baten definizioa da. Bihurtzen da, Nik esan baino lehen, non * hau da, ez du benetan axola. Espazioa ere izan dezakezu inguruan. Dugu, seihileko honetan izan dira, hau sustatzen du, halaber, argi utzi * mota egin du. Baina konturatzen bezala, ohikoa da, ez apur bat gehiago komuna bada, jarri baina funtzionalki, gauza bera da. Baina orain, irakurri dugu behera gehiago nahi izanez gero, dezagun hitza begirada, GetInt erabili dugu, hori delako, agian, beste ezer seihilekoa hau baino lehen. Eta hemen da GetInt. Hau zer da? Prototipoa da. Beraz, askotan, jarri dugu prototipoak gure gailurretan c fitxategiak baina ere egin dezakezu goiburu-fitxategiak, h fitxategiak, jarri prototipoak hau hemen bezala, eta, beraz, orduan funtzio batzuk idatzi nahi duzun beste pertsona batzuk erabili ahal izateko, eta hori da hain zuzen ere kasuan CS50 liburutegia, ezartzea, ez bakarrik zure funtzioak CS50.c antzeko zerbait, ere jarri prototipoen ez fitxategi goialdean, baina Goiburu-fitxategi baten goialdean, header file ondoren hori da, bere lagun eta lankideen artean, besteak beste, zorrotzak, besteak beste, beren kodea propioa. Beraz, izan duzun denbora hori guztia prototipoak horiek guztiak barne eraginkorrean zure koadernoan goialdean, baina zorrotz honen bidez, besteak beste, mekanismo funtsean kopiak eta pastak zeure fitxategi hau. Orain, hemen dokumentazio nahiko zehatza da. Pretty askoz ere dugu hartu eman GetInt int bat lortzen, baina ez izkina kasu batzuetan izarrekin bihurtzen da, ezta? Zer da, erabiltzaileak zenbaki bat bide handiegia mota bada? A quintillion, besterik ezin int baten barruan sartzen? Zer espero den portaera da? Beno, haien, aurreikus da. Beraz, kasu honetan, benetan irakurri fina inprimatu lerroa ezin bada irakurri, itzultzen INT_MAX honetan ikusiko duzu. Inoiz ez dugu honi buruz hitz egin zuen, baina bere kapitalizazioa oinarritzen da, zer da seguruenik,? Konstante bat da, beraz, etengabeko berezi batzuk ziurrenik deklaratu horiek goragotik fitxategia goiburu fitxategiak batean, eta INT_MAX da ziurrenik, gutxi gorabehera, hala nola 2 milioi zerbait. Behar dugu, nolabait, zerbait adierazten duelako ideia izatea oker joan da, bai, gu, 4 milioi zenbakiak gure eskura, negatiboa 2 milioi 2 milioi, eman edo hartu. Beno, zer da programazio ohikoa besterik ez da zenbaki horiek lapurtu duzu. Agian 0, agian 2 milioi, agian negatibo 2 milioi. Beraz, zure balio posible bat gastatzen duzu, beraz, mundu dezakezu konprometitzea zerbait oker joaten bada, super-big balio hau itzuli egingo dut. Baina nahi ez dituzun erabiltzaileak zerbait críptica idazten du: "2, 3, 4 ..." kopurua benetan handia, non ordez, oro har, konstante gisa. Beraz, benetan, zinen anal bada aste batzuk iraganeko, GetInt deitu anytime, izan behar duzu baldintza bat izanez gero, egiaztatzeko. Ba al erabiltzaile motaren INT_MAX, edo zehatzago esanda, GetInt bueltan egin INT_MAX? Egin delako, benetan esan nahi du, ez dute idatzi, zerbait gaizki joan da kasu honetan. Beraz, hau da, zer ari den, oro har, "Sentinel" balioa, besterik gabe, esan nahi berezi gisa ezagutzen da. Beno, dezagun. C fitxategiak aktibatzeko. C fitxategia aparatuaren existitu denbora pixka bat, eta, hain zuzen ere, tresnak Zenbait ditu zuretzat gauza horretan "objektu-kodean," deitzen dugun baina ez bakarrik ez dizu axola non sistema ezagutzen duelako da, Kasu honetan, non da, tresnari. Baina dezagun scroll down to GetInt, eta ikusi nola GetInt izan da denbora honetan guztian lanean. Beraz, hemen aurretik antzeko iruzkinak egin behar dugu. Gerturatzeko me kodea zati, eta zer GetInt dugu honako hau da. Sarrera ez du, eta int bat itzultzen du, (egia), eta, beraz, berriz, nahita begizta infinitua dugu baina, ustez, break out dugu hau, nolabait, edo honen barruan itzultzeko. Beraz, ikus dezagun nola obra honetan. Beno, erabiliz GetString badirudi loop, 166 barruan lehen lerroan honetan. Hau da, gaur egun zer egoera pean delako praktika onak berezi hau keyword, NULL izan GetString itzultzeko? Zerbait oker badago. Zer gaizki joan izan GetString antzeko zerbait deitzen? Bai? [Ikasleentzako erantzuna, ulertezina] >> Bai. Beraz, agian malloc huts egin. Somewhere kanpaia GetString azpian malloc deituz, esleitzen memoria, ordenagailua dendan esker pertsonaia guztiak, erabiltzaileak sartu teklatu mota. Eta demagun erabiltzaileak izan denbora librea asko eta idatzi, adibidez, 2 milioi karaktere baino. Ordenagailua baino gehiago karaktere are RAM ditu. Beno, GetString hori adierazteko gai izan behar du, nahiz eta hau super, super arraroa izkinan kasua. Nolabait hau kudeatzeko gai izango ditu, eta hain GetString, gara eta irakurri bere dokumentazioa, ez, hain zuzen ere, itzuli NULL. Orain bada GetString NULL itzuli huts egiten badu, GetInt huts egin du INT_MAX itzuliz, Sentinel gisa. Hauek dira giza konbentzioak besterik ez dira. Kasu honetan jakin nahi duzu modu bakarra da dokumentazioa irakurtzen da. Hargatik joan non int da benetan GotInt. Beraz korritu dut behera bada, apur bat gehiago, line 170 lerro hauen gainean iruzkin bat egin behar dugu. Beraz, aldarrikatzen dugu, 172, int n eta char c, eta, ondoren, funtzio berri hau batzuk aurretik zehar estropezuka, baina sscanf. Katea eskaneatu f dago. Beste era batera esanda, emaidazu kate bat eta informazio interesgarria piezak eskaneatu egingo dut. Beraz, zer esan nahi du horrek? Beno, demagun, literalki, 1 2 3 teklatua idazten dut, eta, ondoren, hit sartu. Zer da 1 2 3 datu mota GetString itzultzen da? Jakina, kate bat da, ezta? Kate bat lortu nuen, eta, beraz, 1 2 3 da benetan "1 2 3" horren amaieran 0 \. Int bat ez dela. Hau ez da zenbaki bat. Itxura zenbaki bat bezalakoa da, baina ez da benetan. Beraz, zer ez GetInt izan nahi duzu? Ezkerretik eskuinera kate hori eskaneatu ditu, 1 2 3 \ 0, eta, nolabait, benetako zenbaki oso bat bihurtu da. Orain, irudikatu izan da hau nola egin. Dela uste duzu back pset 2 bada, ustez lortu duzun apur bat eroso Caesar edo vigenere, beraz, batetik bestera joateko dezakezu kate bat, pick duten ints karakteretan bihur ditzakezu. Hori da lan asko. Zergatik ez deitu sscanf bezala, funtzio hori ez duzu? Beraz sscanf argumentu bat espero du, izeneko kasu honetan lerroa, kate bat da. Zehaztu ondoren, komatxo artean, oso antzeko printf zer kate honetan ikus espero duzu? Zer da hemen esaten dut, zenbaki hamartar bat da eta, agian, pertsonaia bat izatea espero dut. Eta hori zergatik gertatzen da momentu bat besterik ez dugu. Bihurtzen da izendapen hori dela stuff gogorarazten just Duela aste bat baino gehiago buruz hitz egiten hasi ginen. Zer da eta n eta c Gurekin hemen egiten? [Student erantzun, ulertezina] >> Bai. Me It emanez helbidea c n eta helbidea. Orain, zergatik da garrantzitsua? Beno, badakizu C funtzioak itzuli ahal izango duzu beti balio bat edo ez du balio. Int, kate bat, mugikor bat, char bat, edozein itzuli ahal izango duzu. Edo void itzuli ahal izango duzu, baina bakarrik egin ahal izango duzu 1 Gehienez itzultzeko gauza. Baina hemen sscanf me agian int, zenbaki hamartar bat itzuli nahi dugu, eta, gainera, karakterra, eta zergatik dagoen karakterra une batean azaldu dut. Beraz, nahi eraginkortasunez f 2 gauza itzultzeko, hori ez da posible C. Beraz, inguruan lan egin dezakezu 2 helbideak pasatuz, bezain laster, funtzio bat entregatu 2 helbideak, zer daitekeelako funtzio hori egiten? Helbide horiek idatz dezake. * Eragiketa erabili ahal izango duzu, eta "Hara joan" helbide horietako bakoitzean. Sort mekanismo backdoor hau da, egia da, baina oso aldagaien balioak aldatu 1 leku baino ez, kasu honetan 2 baino gehiago. Orain, konturatu == to1 egiaztatzen dut, eta ondoren, n itzuli hori ez bada, hain zuzen ere, egia ebaluatzeko. Beraz, zer gertatzen da? Beno, teknikoki, nahi dugu GetInt gertatuko da. Analizatu, beraz, hitz egiten nahi dugu; kate irakurri nahi dugu "1 2 3" eta zenbaki bat dago han dirudienez, sscanf ari gara kontaketa egin da kopuru hori, 1, 2, 3, jarri me aldagai n honetan. Zergatik, eta, ondoren, ez daukat baita? Zein da, gainera, esaten sscanf ere, baliteke duzu pertsonaia bat hemen rola da. [Student hitz egitea, ulertezinak] >> Ez - hamartar puntu bat izan lan egiteko. Dezagun eutsi sakatuta une batez pentsatu. Zer gehiago? [Ikaslea, ulertezina] >> Beraz, pentsamendu ona, NULL karaktere izan zitekeen. Egia esan, ez da, kasu honetan. Bai? [Ikaslea, ulertezina] >> ASCII. Edo, are gehiago orokortu me utzi. % C ez du errore-egiaztapena da. Ez dugu nahi pertsonaia zenbaki ondoren, baina honekin egin me honako hau da: Bihurtzen da sscanf, n eta c balioak gordetzeko, hemen adibide honetan, gainera, zer ere ez da aldagai kopurua itzultzen du balioak sartu sartu Beraz, besterik ez duzu 1 2 3 bada, idatzi, eta soilik% d etor eta bakarrik n lortzen 1 2 3 bezala balio bat gordetzen, eta ez da ezer lortzen c jartzen da; c zabor balioa izaten jarraitzen du, eta, beraz, hitz egiten. Garbage delako inoiz balio batzuk hasieratu. Beraz, kasu horretan, sscanf, 1 ematen du, erakusle horien biztanle I bat delako, Kasu horretan, great. Int dut, beraz, linea libre I memoria libratzeko duten GetString benetan esleitu, eta, ondoren, n itzuliko dut. Bestela, inoiz galdetu duzu bada non horretan saiatu da berriro adierazpena dator, hemen dator. Bada, ordea, idatzi 1 2 3 foo I, testu ausazko sekuentzia batzuk, sscanf ikusi ooh, zenbakia, ooh, zenbaki, ooh zenbakia, ooh - f. Eta n 1 2 3 jarri da. C f jarri, eta ondoren, 2 itzuli da. Beraz, dugu scanf portaera oinarrizko definizioa erabiliz, Oso modu erraz bat - ondo, hasiera batean konplexua, baina egunaren amaieran, esaten mekanismoa nahiko sinplea da, ez int bat, eta beraz, bada, gauza bakarra aurkitu dut? Eta espazio zuria nahita. Irakurri sscanf dokumentazioa bada, kontatzen da, besteak beste, espazio zuria pieza bat hasieran edo amaieran, sscanf ere, erabiltzaileak aukera emango du, edozein arrazoigatik, sakatu zuriunea 1 2 3, eta legezko izango da. Erabiltzaileak ez du Yell baizik Zuriunea hit dute hasieran edo amaieran, just a little more user-friendly da esan nahi du horrek. Edozein galdera, ondoren, GetInts on? Bai? [Student galdera, ulertezina] >> Ona galdera. Zer besterik ez duzu char batean idatzitako bada, f, eta hit bezala sartu inoiz 1 2 3 idatzi gabe; zer kode lerro honen portaera izan duela uste al duzu? Beraz sscanf estaltzen duten ere, izan ere, kasu horretan, ez da n edo c bete ordez, itzultzeko 0 da. Gainera, kasu horretan, naiz eszenatoki hori harrapatzeko, balio espero dut nahi 1 delako. Nahi dut soilik 1, eta gauza 1 bakarrik bete behar da. Ona galdera. Beste batzuk? Guztiak eskubidea, beraz, ez da hemen funtzio guztietan barrena joan, baina badirudi, agian, interes gainerako bihurtzen da delako GetString GetFloat, GetInt, Egin GetDouble, punt guztiak GetLongLong beren GetString funtzionalitatea asko. Beraz, dezagun nola inplementatu hemen zuen begirada bat. Ko txiki hau konplexu baten itxura du, baina oinarriak berberak erabiltzen hasi gara astetik buruz hitz egiten. Beraz GetString argumentua ez du hutsunea bakoitzeko hemen eta kate bat itzultzen du; izeneko buffer kate bat naiz geratuko. Egia esan, ez dakit zer den oraindik erabili ahal izateko, baina ikusiko dugu. Edukiera bezala Looks, Lehenespenez, 0; nahiko ziur non honetan egingo da. Ez dakizu zer da n gabe erabili ahal izateko. Baina orain, apur bat gehiago interesgarria da lortzean, eta, beraz, line 243, int c, hau da ergelak xehetasun sort aldarrikatzen dugu. Karaktereen A 8 bit da, eta 8 bit zenbat balio ezberdinak gordetzeko? 256. Arazoa da, nahi duzun 256 ASCII karaktere desberdinak izan nahi izanez gero, daude, uste itzuliz gero, eta hau ez da zerbait buruz ikasi. Baina uste itzuliz gero ASCII taula handi weeks ago izan genuen, ez ziren, kasu horretan, 128 edo 256 ASCII karaktereak. 0-en ereduak eta 1 da erabiltzen dugu. Hori arazo bat da nahi duzun errore bat detektatzeko gai izan bada. Ari zaren dagoeneko 256 balioak erabiliz zure karaktere delako, ez duzu benetan planifikatu aurretik, esaten ez duzulako, "Hau ez da pertsonaia bat egiaztatzeko; honetan okerrak mezu batzuk." Beraz, zer munduan ez da, hurrengo balio handiena erabiltzen dituzte, int bat antzeko zerbait da, beraz, eta bit kopurua crazy duzu, 32, 4 milioi balio posible da, beraz, besterik gabe, ahal izango duzu, azkenean, erabiliz, funtsean, horietako 257, 1 errore bat gisa esanahi berezia du. Beraz, ikus dezagun nola obra honetan. 246 line, handiak, berriz, loop daukat hori fgetc deituz; f esanahia fitxategia, getc, eta, ondoren, stdin. Turns esatea besterik ez da modu zehatzago "teklatua sarrera irakurri." Standard sarrerako bide teklatua, irteera estandarrean esan nahi du pantaila, eta errore estandarra, pset 4 ikusi dugu, pantaila esan nahi du, baina pantailaren zati berezi bat da, beraz, ez da conflated irteera benetako inprimatzeko asmoa duzun, baina hori etorkizunean. Beraz fgetc besterik ez karaktere bat irakurri teklatua, eta gorde non esan nahi du? C gordetzeko da, eta, ondoren, egiaztatu, beraz, besterik ez dut boolearra juntagailuak batzuk erabiliz, egiaztatu du ez dela berdina \ n, eta, beraz, erabiltzaileak hit sartu du. Puntu horretan, begizta-amaiera at gelditu nahi dugu, eta nahi dugu egiaztatu berezia konstantea, EOF, badakizu edo asmatzeko zer nabarmentzen da? Fitxategi amaiera. Zentzugabeko mota, beraz, hau da, bada, teklatua naiz dudalako idazten, dago, honetan parte hartzen duten fitxategi hori ez da benetan, baina hori bakarrik erabiltzen du esan nahi epe generikoa ordenatzeko ezer ez bestela giza behatzak etorritakoak. EOF. Fitxategi amaiera. Bat alde batera utzita, hit duzun inoiz bada control d zure teklatua, oraindik ez duzu izango du; hit duzun control c. Baina kontrol d berezi hau etengabe deitzen EOF bidaltzen du. Beraz, gaur egun besterik ez dugu batzuk memoria esleipena dinamiko. Beraz, bada n + 1> edukiera, gaur egun n azaldu dut. n besterik ez da, zenbat byte dira Bufferreko uneko kate ari zaren gaur egun eraikitzeko erabiltzaileak. Duzu zure buffer pertsonaiak bada baino bufferraren edukiera, senez, zer ondoren egin behar dugu esleitu edukiera gehiago. Aritmetikoa baino gehiago gaingabetuak batzuk hemen noa eta funtzio honetan bakarrik zentratu hemen. Badakizu zer malloc da, edo, gutxienez, oro har, ezagutzen. Hartu idazketa ez asmatzeko. [Ikasleentzako erantzuna, ulertezina] >> Bai. Eta ez da nahiko memoria gehituz; memoria reallocates honela: Katearen amaieran gela dizu memoria hori baino gehiago da oraindik bada jatorriz ematen du, baino gero, memoria hori gehiago lortuko duzu. Beraz, besterik gabe kateak pertsonaiak jarriz back Itzuli atzera. Baina hori ez bada kasua, itxaron duzulako luzeegia eta ausazko zerbait memorian plopped lortu, baina ez da aparteko Hemen behera memoria, ados. Idazketa heavy jasotzaileen guztiak egiteko, mugitu katea irakurri duzula, beraz, urrun hemendik, hor behera jarri, eta, ondoren, zenbait puntu horretan pista gehiago emango dizu. Beraz, eskua olatu bat, utzi zer GetString egiten ari da esaten me buffer txiki bat, agian 1 karaktere hasita, eta erabiltzaileari 2 karaktere motak, GetString eta ondorioz sortu idazketa deituz eta dio, 'Ooh, 1 karaktere ez zen nahikoa izan. Emadazu 2 karaktereak. ' Gero, begizta-logika bidez irakurri baduzu, , esan 'Ooh, 3 karaktere idatzitako erabiltzaile da. Emadazu orain ez 2 baina 4 karaktere, ondoren, emadazu 8, ondoren, emadazu, 16 eta 32. ' Izan ere, naiz dela I aldi bakoitzean edukiera bikoiztu Horregatik, buffer hori ez da, poliki-poliki hazten joan da. Super azkar hazten da, eta hori abantaila izan daiteke? Zergatik bikoiztu bufferraren tamaina am I, nahiz eta erabiltzaileak 1 agian nahikoa teklatua izaera estra? [Ikasleentzako erantzuna, ulertezina]. >> Zer da hori? Hain zuzen ere. Ez daukazu hazten bezala maiz. Eta hori besterik ez mota - you're zure apustuak estaldura hemen. Ideia ez duzula nahi idazketa asko deitu ohi da, motela izan delako. Edonoiz memoria sistema eragilearen galdetzen dituzu, ahalik eta ikus etorkizuneko arazo multzo bat, denbora pixka bat hartu ohi da. Zenbateko hori denbora murriztuz, nahiz eta espazioa alferrik galtzen ari zaren Beraz, gauza ona izan ohi da. Baina GetString azken zatia bidez irakurriz gero, hemen, eta, berriro ere, lerro bakoitzean bakarra ulertzeko hemen ez da hain garrantzitsua gaur egun. Baina azkenean konturatu dela deiak malloc berriro, eta bideratzen zehazki asko byte katea behar bezala eta, ondoren, botatzen free telefonora deituz, gehiegi handi buffer, hain zuzen ere, got bada bikoiztu gehiegi aldiz. Azken finean, hori nola GetString izan da denbora honetan guztian lanean. Guztiak egiten du karaktere bat irakurri aldi berean, behin eta berriro, eta berriro eta bere esku dagoen guztia egiten du bere memoria pixka bat gehiago behar da, sistema eragilearen eskatu du idazketa telefonora deituz. Edozein galdera? Guztiak eskubidea. Erasoa. Orain dela erakusleak ulertzen dugu, edo, gutxienez, dira, gero eta gehiago ezagutzen erakusleak, kontuan hartu dezagun nola hasten da mundu osoan eta tolesteko nahiko ez baduzu erabiltzaile adversarial aurka defendatzeko, jendea zure sistema sartu hack saiatzen ari da. Pertsonak erregistroa kodea batzuk circumventing zure software lapurtzen saiatzen ari dira bestela izan liteke dutela sartu idatzi Adibide honetan begirada bat hartu hemen, eta besterik ez C kodea funtzio nagusi bat, behealdean, deiak funtzioa foo, eta zer ari da pasatzen foo? [Student] argumentu soil bat. >> Single argumentua. Beraz, argv [1], erabiltzaileari idatzitako lehen hitza esan nahi du a.out edo dena delakoa ondoren komando lerro programa deitzen da. Foo Beraz, goialdean, char * hartzen du, baina char * besterik ez da zer? Katea. Hemen ez da ezer berria, eta kate hori arbitrarioki izeneko bar. Lerro hau hemen, char c [12], erdi-tekniko English sailkatu, zer lerro hau egiten ari da? Array -? Pertsonaiak. Give me 12 karaktere array bat. Beraz, dei hau buffer bat izatea. Teknikoki izeneko c, baina programazioan buffer espazioaren sorta stuff batzuk sartu jarri ahal izango duzula esan nahi du Gero, azkenik, memcpy, ez dugu erabili baino lehen. Baina, ziurrenik, hauek dituzu: asmatzea zer egiten. Memorian kopiatzen da. Zer egiten du? Beno, kopiatzen itxuraz da bar, bere sarrera, c sartu baina soilik bar luzera. Baina bug bat dago hemen. Ongi da, eta, beraz, teknikoki benetan behar dugu strlen (bar) x sizeof (char), hori da zuzena. Baina kasu txarrenean hemen, dezagun arduratuko that's hori beraz, ados. Ondoren, 2 bugs. Beraz, sizeof (char), eskubidea, dezagun apur bat zabalagoa. Beraz, gaur egun oraindik bug bat, hau da, zer? [Ikasleentzako erantzuna, ulertezina] zer Check >>? Ongi da, eta, beraz, egiaztapena behar dugu NULL, gauza txarrak gertatuko dira zure erakuslea da NULL delako, Amaitutakoan leza Hara joan, eta ez duzu inoiz NULL joan * operadorea dereferencing. Beraz, hori da ona, eta zer gehiago ari gara egiten? Logikoa denez akats bat da hemen ere. [Ikasleentzako erantzuna, ulertezina] >> Beraz, egiaztatu bada argc ≥ 2? Ongi da, eta, beraz, ez da programa honetan 3 bugs hemen, beraz. Ez ari gara erabiltzaileak benetan argv [1], ona sartu ezer idatzi egiaztapena. Beraz, zer da hirugarren bug? Bai? [Ikasleentzako erantzuna, ulertezina] >> Good. Beraz, eszenatoki checked dugu. Inplizituki egiaztaturik ez kopiatu memoria gehiago bar luzera baino gaindituko luke. Beraz, katea idatzi erabiltzaile 10 karaktere luzea, hau da, esaten 'bakarrik kopiatu 10 pertsonaiak.' Eta hori da ados, baina zer bada hitz bat idatzi gonbitan erabiltzaile 20 karaktere hitza bezala, hau da, kopia 20 karaktere esaten bar zer sartu? c, bestela gure buffer bezala ezagutzen da, horrek esan nahi du, idatzi besterik ez duzu datuak 8 byte kokapenak zuk ez propioa, eta ez duzu jabea zentzua inoiz ez esleituko horiek. Beraz, hau da, oro har, buffer-gainezkatzea erasoa jo ezagutzen, edo buffer inbaditu erasoa, eta bere erasoa zentzu izanez gero, erabiltzaileak edo zure funtzioa deituz programa hau egiten maliciously benetan gertatzen da hurrengo nahiko txarra izan daiteke. Ikus dezagun begirada bat argazki hau hemen. Argazki hau zure memoria pila adierazten du. Eta gogoratzen aldi bakoitzean funtzio bat deitzen duzu, pilaketan markoa txiki hau eta gero beste bat eta gero beste bat eta, ondoren, beste. Eta horrela, orain arte besterik ez mota dugu abstracted horiek urruntzen laukizuzenak gisa bai bertan, taula gainean edo pantaila hemen. Baina mapan handiago bada laukizuzen horietako batean, funtzioa foo bat deitzen duzunean, bihurtzen da, ez dagoela gehiago pilaketan marko eta laukizuzenaren barruan besterik ez x eta y eta a eta b, ez zuen bezala swap buruz hitz egitea baino. Bihurtzen da, behe-mailako xehetasun batzuk daudela, horien artean itzuli helbidea. Beraz, izarrekin bihurtzen da foo nagusia deiak, nagusiak jakinarazi du foo nagusia helbidea ordenagailuaren memoria. Bestela denez, ahalik eta azkarren foo exekutatzean, hemen kasu honetan bezala egiten da, behin hau itxi kizkur giltza iristen foo amaieran, nola demontre ez foo daki non programaren kontrola suposatzen da joan? Bihurtzen da galdera horri erantzuna laukizuzenaren gorria hemen da. Erakuslea adierazten du, eta sortu da ordenagailua, aldi baterako gordetzeko, deiturikoak pila nagusiaren helbidea, beraz, ahalik eta azkarren foo gisa exekutatzean egin da, ordenagailua daki non eta zer ildo nagusia itzuli. Gordetako marko erakuslea erlazionatzen antzera. Char * bar hemen adierazten du zer? Beno, gaur egun segmentu honen urdina hemen foo en markoa da, zer da bar? Ongi da, eta, beraz, bar foo funtzioa argumentu da. Beraz, gaur egun ezagutzen argazki gara berriro. Gehiago stuff eta oharkabetasunak gehiago pantaila baina urdin argia segmentu hau da, zer egin dugu Edukien gainean swap antzeko zerbait marrazten. Hau foo marko eta gauza bakarra da oraintxe bar, Parametro hau da. Baina zer gehiago behar pila, hau hemen kodea arabera? Char c [12]. Beraz, ikus 12 plazak memoria ere egin beharko dugu, c izeneko aldagai bat esleitu. Eta, hain zuzen ere, hori izan ez dugu pantailan. Oso goian dago c [0], eta, ondoren, diagrama honen egileak ez da traba laukiak marrazten, baina ez dira, hain zuzen ere, 12 bertan beheko eskuineko begiratzen baduzu, c [11], 0-tik zenbatzen badituzu, hala nola, 12 byte. Baina hemen arazoa: zein norabide c gero eta handiagoa da? Ordena top behera, ezta? Goialdean hasten bada eta beheraino hazten da, ez dirudi utzi dugu geure burua bezala pista guztietan. Mota margotu dugu geure burua, izkinan, eta c [11] bar, hau da, pila marko erakuslea aurka aurka eskubidea sortu den itzulera helbidea aurka; gehiago ez gela. Beraz, zer inplikazioa da, eta, ondoren, torlojua baduzu, eta 20 byte 12 byte buffer batean irakurtzen saiatu behar baduzu? Non dira osagarriak 8 byte joango gara? Beste guztia barruan, eta horietatik batzuk super garrantzitsua da. Eta garrantzitsuena, potentzialki, koadro gorri dago, itzulera helbidea. Suposatzen delako bai zarela ustekabean edo adversarially gainidatzi duten 4 bytes, erakusle helbide hori, ez bakarrik zabor, baina kopuru hori gertatzen da benetako memoria-helbide bat irudikatzeko? Zer implicaiton, logikoki? [Student erantzun, ulertezina] >> Zehazki. Noiz foo itzultzen eta kizkur giltza duten hits, programa ez nagusira itzultzeko jarraitu du, edozein izanda ere helbidea koadro gorri horretan itzultzeko. Orain, erregistratzeko software circumventing kasuan, zer ari den itzuli helbidea da funtzioa ohi duzun softwarea ordaindu ondoren lortzen deitu eta zure izen-emate-kodea sartu? Trikimailu ordenagailua ordenatzeko izan duzu hemen ez joan sartu, baina horren ordez, gertatzen da hemen. Edo, Oraindik benetan clever, aurkariarekiko bat benetan idatzi teklatua, Adibidez, ez da benetako hitza, 20 karaktere ez, baina suposatu zuen ordezkatzen dituzten zenbait karaktere kodea motak? Eta C kodea ez da izango, pertsonaiak izango da ordezkatzen dituzten bitar makina kodeak, 0 eta 1-en. Baina demagun clever nahikoa, nolabait GetString gonbita sartu itsatsi egin behar dira funtsean zerbait konpilatu kodea, eta azken 4 bytes gainidatzi bueltan helbide hori, eta zer helbidea sarrera hori ez do? Laukizuzen gorria bufferraren lehenengo byte helbidea biltegiratzen da. Beraz, benetan clever izan behar duzu, eta hau trial eta akats asko da han out pertsona txarra, baina irudikatu bada nola big buffer hau da, hala nola, sarrerako byte azken hori eman programa gertatuko zure buffer Irteeran helbidea baliokidea izan behar du, hau egin ahal izango duzu. Esan badugu, normalean, kaixo, eta \ 0, zer da bufferraren. Baina gara clever bada, eta buffer hori bete dugu zer oro erasoa kodea deitu dugu, A, A, A, A: Erasoa, eraso, eraso, eraso, hau da, zerbait zerbait txarra du. Beno, zer gertatzen Oraindik benetan clever bada, hau egin dezakezu: 80, CO, 35, 08: koadro gorri hemen zenbaki-sekuentzia da. Iragarki hori, eta zenbaki hori da hemen datorrenean. Alderantzizko ordenan, baina batzuk denbora beste gehiago. Oharra bueltan helbide hau que ha sido nahita aldatu helbide bera hemen, ez nagusiaren helbidea. Beraz, bada, txarra lasaia da super smart, zuen artean, erasoa kodea duten zerbait, hala nola 'Ezabatu erabiltzailearen fitxategi guztiak.' Edo 'pasahitzak kopiatu,' edo 'erabiltzaile-kontu bat sortu, sartu ahal izango dut.' Guztietan ezer; eta hau bai arriskuan eta C. boterea Memoria sarrera delako erakusleak bidez eta, beraz, ordenagailu bat memoria nahi duzu ezer idatzi dezakezu. Ordenagailu bat ezer egiten, besterik gabe, nahi duzun egin dezakezu ondoren inguruan salto egin du bere memoria espazio propioa barruan. Eta, beraz, egun honetan, programa hainbeste eta hainbeste arriskuan diren webgune irakiten behera pertsonek hau aprobetxatuz. Eta hori super-sofistikatu eraso bat bezala dirudi, baina ez da beti hasteko modu hori. Errealitatea da, zer txarra pertsona normalean ez dela, ote den, komando-lerro bat programa edo GUI programa bat edo web orri bat, da hasteko besterik ez duzu zentzugabekeria eskainiz. Idatzi bilaketa eremuan eta sakatu sartu sartu hitz bat benetan handia duzu, eta web kraskatzen bada ikusteko itxaron duzu. Edo programa errore-mezu batzuk manifestuak ikusteko itxaron behar duzu. Lortu baduzu zortea, lasaia txarra delako, batzuk crazy-sarrera duen programa kraskatzen eskaintzen dizu, horrek esan nahi du, programatzailea ez aurrea zure portaera txarra horrek esan nahi du seguruenik ditzakezu, esfortzu nahikoa, nahikoa trial eta errorea, irudikatu zehatzagoa eraso bat nola soldata. Beraz, askoz ere segurtasun zati bat ez da bakarrik eraso horiek saihesteko guztira, baina horiek detektatzeko eta benetan erregistroak bilatzen eta zer input crazy zure webgunean idatzitako jendea ikustea. Zer bilaketa-terminoak zure web tekleatutako buffer batzuk gainezka itxaropenak? Eta hau irakiten hasten guztiak array bat da oinarriak simple, eta zer ez memoria esleitu eta erabili esan nahi du? Eta zerikusia ere, hau da. Hargatik, besterik gabe begirada disko gogor baten barruan berriro ere. Beraz, gogorarazten Duela aste bat edo bi fitxategiak arrastatu recycle bin edo trash, zer gertatzen da? [Student] Ezer ez. >> Bai, ez du deus. Azkenean, bada baxua exekutatzen duzun disko espazioa, Windows edo Mac OS zuretzat fitxategiak ezabatuz hasiko da. Baina arrastatu hor zerbait bada, orduan ez da segurua guztietan. Guztiak zure roomate, lagun edo familiako kide egin klik bikoitza egin, eta voila. Ez da sketchy fitxategi guztiak ezabatu saiatu duzula. Gurekin gehienak, beraz, gutxienez, jakin behar duzula eskuineko botoia edo kontrolatzeko click eta hutsik trash, edo horrelako zerbait. Baina orduan ere, ez da nahiko egin trikimailu. Zer gertatzen den fitxategia zure disko gogorrean duzulako word dokumentu batzuk edo JPEG batzuk adierazten du? Eta hau zure disko gogorrean adierazten du, eta demagun hau hemen sliver fitxategi hori adierazten du, eta 0 eta 1-en osoa sorta bat osatzen dute. Zer gertatzen da soilik ez, arrastatu fitxategi hori trashcan edo recycle bin baina ere hustu? Ezer agintzea. Ez da deus. Orain besterik ez da ezer, taula hau forma apur zerbait gertatzen delako. Beraz, ordenagailu bat memoria mota batzuk datu-basea edo taulak barruan funtsean 1 fitxategiak izenak zutabea, eta 1 zutabea fitxategiaren kokalekua hau kokapena 123, ausazko zenbaki bat izan daiteke. Beraz, x.jpg antzeko zerbait, eta kokapena 123 izan genezake. Eta zer gertatzen da orduan, zure zakarrontzi hustu? Doan kanpoan. Baina, zer ez irteteko 0 eta 1-en. Beraz, zer da, eta, ondoren, konexioa 4 pset nahi al duzu? Beno, pset 4, baizik ustekabean dugu ezabatu compact flash txartela izan argazki hauek guztiak, edo, besterik gabe, zorte txarra izan zen hondatuta delako, ez du esan nahi, 0 eta 1 ez dira oraindik ez. Agian horietako batzuk galdu egiten dira zerbait got hondatuta dagoelako Zentzu 0 batzuk izan zen 1 eta 1-en izan zen 0-en. Bad gauza,, buggy software edo hardware akastuna delako gerta daiteke. Baina bit horietako askok, agian, nahiz eta horien% 100 dira oraindik ere hor dago, besterik ez da ordenagailua edo kamera ez daki non JPEG 1 hasi eta non JPEG 2 hasi zen, baina izanez gero, programatzailea, jakin, adituentzat apur bat, non JPEGs diren edo zer itxura dute, 0 eta 1-en aztertu ahal izango duzu, eta esan, 'Ooh. JPEG. Ooh, JPEG. ' Programa bat idatzi ditzakezu funtsean bat besterik ez edo begizta bitartean bakoitzean fitxategi horiek berreskuratzen. Ikasgai eta, ondoren, eta, beraz, hasteko "segurtasunez" zure fitxategiak ezabatu hau saihesteko guztira nahi izanez gero. Bai? [Student galdera, ulertezina] >> Have memoria gehiago baino egin - Oh! Ona galdera. Beraz, zergatik, eta gero, trash hustu ondoren, esango dizu zure ordenagailuan ez duzula leku libre baino zenuen? Hitz batean, etzanda delako. Gehiago teknikoki, leku gehiago daukazu. Esan duzulako, beste gauza batzuk jarri dezakezu fitxategi hori behin izan zen, baina horrek ez du esan nahi bit kanpoan egingo dira, eta horrek ez du esan nahi bit dira aldatu guztiak 0, esate baterako, zure babeserako. Aitzitik, "seguru" ezabatze fitxategiak, edo fisikoki suntsitu telefonoa bada, benetan modu bakarra da, eta beste batzuetan, inguruan. , Beraz, zergatik ez scary erdi-ohar horretan utzi dugu, eta astelehena, ikusiko dugu. CS50.TV