>> [Musika jotzen]
>> ZAMYLA Chan: Dezagun aurre berreskuratzeko.
Berreskuratzeko nire pset gogokoena da ziurrenik, eta batez ere, uste dut, da delako
benetan, benetan cool.
Funtsean, memoria bat eman zu txartela fitxategia zein
irudiak ezabatu dira.
Baina zer ari zaren joan egin da horiek guztiak berreskuratzeko.
>> Ados.
Beraz, benetan zirraragarria da, baina agian bat Apur beldurra, Oraindik delako
baten C fitxategia hutsik eta eman bete sartu behar duzu
Ados, beraz dezagun apurtu hau Lasén zatitan.
Ireki nahi duzu memoria-txartela fitxategia.
Badirudi simple nahikoa.
Ondoren, aurkituko hasieran JPG irudi bat.
Memoria honetako fitxategi guztiak txartel daude JPGs izango.
Ondoren, behin hasieran aurkituko duzu, JPG berri bat irekitzen joan zaren, horrek
da, bezala, sortu JPG bat, eta idatzi 512 aldi JPG berri bat da arte at byte
aurkitu, eta programa amaitzeko, behin lerro amaierara atzeman duzu.
>> Beraz, lehen urratsak lehenengoa da ireki memoria-txartela fitxategia.
Baina hau ezagutzen duzu dagoeneko, eta ez dago hori joan fitxategia / irteerako funtzio bat
Oso baliagarria.
Ados.
Beraz, zer dira JPGs?
Hasierara behar dugulako.
Beno, JPGs, besterik ez bit mapak bezala, byte sekuentziak besterik ez dira.
Zorionez, JPG behin bai batekin hasten 0xFF, 0xd8, 0xFF, 0xe0, sekuentzia bat
byte, edo beste byte-sekuentzia.
>> Beraz, lau byte horiek adierazteko JPG baten hasiera.
Inor bi konbinazioak direnak besterik lau byte.
Eta zorionez guretzat, hain zuzen, beste bat dugula abantaila hartu ahal izango da, behin
JPG gordetzen den albo-alboko memoria txartelean.
Baten egitura irudikatzen dut Memoria txartel eskematikoki honetan
irristatu hemen.
Hemen, karratu bakoitzean, laukizuzen behin, 512 byte adierazten du, eta bertan hasten da
horretan grisa ez dugu honekin JPG bat benetan izan.
>> Baina, ondoren, azkenik hit dugu Izar batekin bloke bat.
Horrek esan nahi du lehen lau byte itzazu horietako 512 bi horietako bat dira
JPG bat sekuentziak hasita.
Eta hortik joan ginen, eta, ondoren, behin JPG bat amaitzen da, hurrengo bat hasten da.
Ez inoiz ez dugu edozein gehiago -arteko espazioa grisa.
>> Baina, nola egin benetan irakurri dugu hau, eta irakurri 512 byte horrela egin ahal izango dugu
konparazioa lehenik?
Beno, goazen fread atzera, eta horrek struct izango diren eduki hartzen
byte hori irakurtzen ari zaren.
Beraz zu jarri joan bertan daudenen -
tamaina, kopurua, eta, ondoren inpointer etik duzula irakurtzen ari.
Orain, 512 irakurtzeko denbora bat nahi dugu, eta hau gordetzeko buffer batean nahi dugu,
Deitu noa.
>> Funtsean, eduki goaz 512 byte horiek kalera eta egin
berarekin gauzak, ezta?
Bai ari gara lehen konparatzeko joan lau byte, edo goaz
irakurri dugu beraz, OK?
Beraz, ondoren datuen erakuslea izango da, ondoren, Zure buffer gisa balioko du, eta,
inpointer, ondo, hori besterik ez da joan Memoria txarteleko izan.
>> Gure memoria txartela eskematiko itzuli.
512 byte irakurri aldi berean goaz, 512 byteko bloke bakoitzean gordetzeko
buffer batean, eskuan kalera horiek bufferrerako, 512 byte horiek, dakigu arte
zehazki zer egin behar den.
Beraz, hasieran ez da ezer, beraz, buffer irakurri dugu, konparatu, eta
ez dugu ezer egin behar berarekin.
Eta, ondoren, hit azkenik dugu izar bat blokeatu, ditudan dugu zentzua
gure lehen JPG aurkitu.
Beraz bufferraren orain eutsi JPG hartatik bytes.
>> Hurrengo aldian izango dute Oraindik 512 byte, zeren Ez izar bloke bat, ez dira ere
JPG horren zati.
Eta JPGs hortik jarraiak dira on, in hurrengo JPG hit arte.
Eta gero bufferraren orduan dauka 512 byte JPG horretarako, eta
abar, eta abar.
Ados.
>> Beraz, behin lehen izardun hit duzu blokea, lehen JPG, nola egiten duzu
egia esan, ondo, zabalduko da?
Egin dezagun JPG berria.
JPG bat fitxategi-izenak ez dira joan formatua izan, zenbakia, zenbakia,
number.jpg, horretan ari dira izendatzen ordena zein ere aurkitu dira,
0 hasita.
>> Beraz, lehen JPG duzula aurkituko 000.jpg egingo da.
Beraz, ziurrenik ideia ona segimendua egiteko Nik, orain arte, zenbat JPGs aurkitu duzu.
Beraz, fitxategi-izena da.
Baina nola ez benetan egin duzula?
Beno, erabili goaz bat sprintf izeneko funtzioa.
Printf antzeko pixka bat, non leku-markak erabil ditzakezu kateak,
kasu honetan ordea, egingo inprimatu sprintf fitxategian daudelarik egungo sartu
gida, ez terminalean sartu.
>> Ados.
Beraz, hemen izenburu dugula ikusiko dugu, char array bat egingo gordetzeko
emaitzak katea, eta pasatzen dugu batekin benetako katearen izenburua
leku-marka, besterik gustatzen dugu ikasi nahi printf egin.
Baina kode hori hemen daukat 2.jpg, ez 002.jpg emango.
Beraz, zuk nahi dut utzi jakiteko nola leku-marka aldatzeko egin du
izen zuzena.
>> Ados.
Beraz, behin, ondoren sprintf'd duzun ahal duzun ireki fitxategia dela, existitzen delako
zure gida, fopen batera, erabiliz izenburua, eta, ondoren, nahi duzuna modua
fitxategi hori irekitzeko sartu
Beraz, orain dela JPG fitxategi berri bat ireki dugu, orain 512 byte idatzi ahal izango dugu batean
denbora, JPG berri bat aurkitu arte.
Beraz, dezagun beste begirada fwrite sintaxia at.
>> Duten diapositiba bat hau erakutsiz naiz ezagutzen dut asko, baina, besterik gabe, nahi dut ziur
you guys ez naiz gehiegi nahasi, zeren Badakit oso erraza dela
nahastu lehena eta azkena argumentua, bereziki.
Baina gogoratu zarela idazten Zure bufferraren daudelarik fitxategia irudiak sartu.
>> Orain badakiela nola idazteko 512 Zure JPG fitxategia zuk dudan dituzten sartu bytes
sortu, bai, hori gelditu nahi dugu prozesua behin bukaerara iritsi gara
gure txartela, egongo ez delako izan aurki daitezke irudi gehiago edozein.
Beraz, goazen atzera fread izateko beste behin ere, agintzen dut.
fread tamaina elementuak zenbat itzultzen, tamaina, arrakastaz prest ziren.
Haien, hau izango da, edozein dela ere pasatzen duzu kopurua, ezta?
Zenbakia irakurri saiatzen ari zaren delako tamaina, tamaina elementuak.
Baina fread ez dela irakurri ahal bada elementu kopurua, gero itzultzeko izango da
edozein dela ere zenbakia arrakastaz hura irakurtzeko.
>> Orain, kontuan izan datu garrantzitsu bat duen beste fitxategi bat S / I erabiltzen baduzu
fgetc bezalako funtzio, ere izango da itzultzeko zenbat gauza behar bezala irakurri.
Zer da funtzio honi buruz erabilgarria da duen baten barruan funtzioak erabiltzen baduzu
baldintza, bera exekutatu izango da berriz baldintza hori, eta hori da erabakigarria
besterik gabe, benetan erabilgarria.
Beraz, baldintza hau baldin baduzu, esan, bada fread buffer, sizeof DOG, 2,
erakuslea, berdin berdin 1, hori esan nahi du, irakurtzeko nahiko nuke
2 txakurrak garai hartan.
Baina fread 1 ematen balitz bezala 2tik ordez Espero zen, horrek esan nahi du ez direla 2
txakurrak nire fitxategia utzi, baizik eta 1.
Baina 2 itzultzen bada, orduan oraindik I nire buffer barruan 2 txakur horiek.
>> Beraz, gaur egun nola zentzu bat ematen dizu fitxategia amaieran egiaztatu, baina
goazen orain logikaren bidez.
Nola ez benetan pieza dugu guztiak elementu horiek elkarrekin?
Behin gure lehen JPG hit dugu, geroztik badakigu JPGs horretan gordetzen dira
contiguously egingo dugu idazten, arte txartel lerro amaierara iritsiko gara.
Baina ez dugu idatzi nahi ezer ordura arte.
Beraz, garrantzitsua da ez bakarrik dugun Oraindik at JPG berri baten hasiera, baina ala
Jadanik JPG edo ez dugu aurkitu.
>> JPG berri baten hasiera da, bada, egingo dugu gure egungo JPG fitxategia bada itxi nahi
open bat, eta irekia dugu berri bat sartu idazten.
Ez da JPG berria hasi bada, nahiz eta, JPG fitxategi berean jarraituko dugu
ireki eta horretan idazten.
Gure buffer idatziko dugu edozein sartu JPG fitxategia ireki dugu, emandako
open bat dugu, jakina.
Dugu ez bada aurkitzen gure lehen JPG oraindik, ez dugu ezer idatzi.
Eta prozesu hau arte jarraitzen txartel lerro amaierara iristeko.
>> Eta, azkenik, nahi egin dituzu Ziurtatu edozein fclose duzula
duten fopened dituzun fitxategiak.
Behin Oraindik eroso kontzeptuak, hartu batzuk begirada bat
pseudocode, hemen sartzen dut.
Lehenengo, txartela fitxategia ireki nahi duzun, eta, ondoren, honako prozesua errepikatu
duzun iritsi arte txartelaren amaieran.
512 byte irakurri nahi duzun buffer batean.
Buffer hori erabiliz, begiratu nahi duzu Oraindik ala baten hasieran
JPG berriak edo ez.
Eta galdera horri erantzuna izango eraginik zure fitxategi-kudeaketa -
irekitzen dituzun fitxategiak, eta horrek direnak daukazu itxi.
>> Ondoren, jadanik aurkitu duzu JPG bat?
Nola mantentzen dira duzun horren arrastoa?
Gero, horren arabera, bai dituzu egungo JPG sartu idatzi duzula
irekita, edo ez idatzi batere izan, ez duzu JPG Oraindik aurkitu ez duelako.
Azkenik, behin bukaerara iritsi zara fitxategia, edozein itxi nahi duzu
dituzun irekita fitxategiak geratzen.
Txukuna izan nahi dugu hemen.
>> Eta hori, guztia berreskuratu dituzun falta diren fitxategiak memoria horretatik aurrera
txartelak, balentria nahiko harrigarria da.
Beraz Pat zaitez atzeko aldean.
Baina, ez dago elementu bat gehiago da pset, hau lehiaketa da.
Aurkituko dituzu: irudi guztien berreskuratu duzula, egia esan,
CS50 langileen pictures.
Beraz Oraindik campus edo nonbait bada gertu, eta gero irudiak hartu ahal izango duzu
langileek, eta atala duela taldekideak pictures gehienetan
Beren berreskuratutako fitxategiak izango awesome sari bat lortzeko.
Horrekin, ondoren dituzun amaitu berreskuratu pset.
Nire izena Zamyla da, eta hau da CS50.