[Powered by Google Translate] [Semèn 5]
[David J. Malan - Inivèsite Harvard]
[Sa a se CS50. - CS50.TV]
>> Sa a se CS50, Semèn 5.
Jodi a ak semèn sa a, nou prezante yon ti kras nan mond lan nan forensics
nan kontèks pwoblèm nan Fikse 4.
Jodi a pral yon konferans abreje paske gen nan yon evènman espesyal nan isit la apre sa.
Se konsa, nou pral pran yon gade vit ak toumante toude elèv yo ak paran yo sanble jodi a
ak kèk nan bagay sa yo ke yo sou orizon an.
>> Nan mitan yo, jan nan Lendi, ou pral gen yon kèk plis kamarad klas.
èdo, Inivèsite Harvard, ak nouvo MIT a sou entènèt inisyativ pou Klas Ouvè ak plis,
ap lanse sou lakou lekòl la Harvard la nan Lendi, ki vle di vini Lendi
w ap gen, kòm nan dènye konte, 86.000 kamarad klas adisyonèl
ki pral swiv ansanm ak konferans CS50 nan ak nan seksyon
ak valktroug epi li kouche pwoblèm.
Ak kòm yon pati nan sa a, ou pral vin manm nan klas la inogirasyon nan CS50 e kounye a, CS50x.
Kòm yon pati nan sa a kounye a, reyalize ke pral gen kèk upsides kòm byen.
Pou jwenn pare pou sa, pou yon nimewo pou la masiv nan elèv yo,
sufi li vle di ke menm si nou gen 108 TFs ak sèrtifikasyon,
li nan pa byen pi bon elèv-rapò pwofesè a yon fwa nou frape 80,000 de elèv yo.
Nou pa pwal yo dwe korije pwoblèm pou anpil moun kouche manuelman,
se konsa entwodwi semèn sa a nan ansanm lan pwoblèm yo pral CS50 chèk,
ki se ale nan yon sèvis piblik bay lòd-liy nan aparèy la
ki ou pral jwenn yon fwa ou mete ajou li pita sa a wikenn.
Ou pral kapab kouri nan yon lòd, check50, sou pset pwòp ou a,
epi ou ap jwenn enstantane fidbak kòm si pwogram ou kòrèk oswa enkòrèk
dapre espesifikasyon konsepsyon divès kalite ke nou te bay la.
Plis sou sa nan spesifikasyon la ansanm pwoblèm.
Kamarad klas yo CS50x yo pral sèvi ak sa a kòm byen.
>> Set pwoblèm 4 se tout sou forensics,
ak sa a te pset vrèman enspire pa kèk bagay lavi reyèl
kote lè m 'te nan lekòl gradye mwen entèrne pou yon ti tan
avèk biwo Komisè Gouvènman Middlesex County a nan fè travay legal
avèk anketè plon yo legal.
Ki sa sa elve a, jan mwen panse ke mwen mansyone yon kèk semèn sot pase yo,
se Polis la Eta Mass oswa lòt moun t 'vle vini an,
yo ta depoze bagay sa yo tankou kondui difisil ak CD ak disk flou ak renmen an,
ak Lè sa a, objektif la nan biwo a forensics te rann kont
si te gen oswa pa t 'prèv ki montre kèk sòt.
Sa a te Espesyal Envestigasyon Inite a, se konsa li te blan-kolye krim.
Li te plis boulvèsan sòt de krim, anyen ki enplike kèk kalite medya dijital.
Li sanble ke pa ke anpil moun ekri yon imel di, "Mwen te fè li."
Se konsa, byen souvan, sa yo fouye legal pa t 'vire leve tout sa ki fwi anpil,
men pafwa moun ki ta ekri Imèl sa yo.
Se konsa, pafwa, efò yo te rekonpans.
>> Men, yo mennen jiska sa a pset legal, nou pral entwodwi nan pset4 yon ti jan nan grafik.
Ou pwobableman pran tout bagay sa yo pou yo akòde - JPEGs, jif, ak renmen an - jou sa yo.
Men, si ou reyèlman panse sou li, yon imaj, anpil tankou figi Rob a,
yo ta ka modelize kòm yon sekans pwen oswa piksèl.
Nan ka nan figi Rob a, gen nan tout kalite koulè,
epi nou te kòmanse wè pwen yo endividyèl, ki te rekonèt kòm piksèl,
yon fwa nou te kòmanse nan zoom pous
Men, si nou senplifye mond lan yon ti jan ak jis di ke sa a isit la se Rob nan nwa ak blan,
ki reprezante nwa ak blan, nou ka jis itilize binè.
Men, si nou pwal sèvi ak binè, 1 oswa 0, nou ka eksprime imaj sa a menm
nan souri figi Rob a ak modèl sa a nan miyèt moso.
11000011 reprezante blan, blan, nwa, nwa, nwa, nwa, blan, blan.
Se konsa, li pa yon bon gwo Lè sa a, yo kòmanse ap pale de foto kolore,
bagay sa yo ke ou ta wè sou Facebook oswa pran avèk yon kamera dijital.
Men, sètènman lè li rive koulè, ou bezwen plis miyèt moso.
Ak konplètman ki komen nan mond lan nan foto se sèvi ak pa 1-ti jan koulè po,
tankou sa a sijere, men 24-bit koulè, kote ou aktyèlman jwenn dè milyon de koulè.
Se konsa, tankou nan ka a lè nou agrandi nan sou je Rob a,
sa yo ki te nenpòt ki kantite dè milyon de posiblite diferan kolore.
Se konsa, nou pral prezante sa a nan Set Pwoblèm 4 osi byen ke nan solisyon an,
ki pral jounen jodi a nan 3:30 olye pou yo 2:30 a jan li konn ye paske nan konferans Vandredi a isit la.
Men, videyo yo pral sou entènèt tankou demen dabitid.
>> Nou pwal tou entwodui ou nan yon lòt fòma dosye-a.
Sa a se fè espre vle di ke yo gade entimidasyon an premye,
men sa a se sèlman kèk dokiman pou yon struct C.
Li sanble ke Microsoft ane de sa te ede popilarize fòma sa a
rele fòma a dosye bitmap, BMP, ak sa a te yon Super senp, kolore fòma grafik dosye
ki te itilize pou kèk tan e pafwa toujou pou pen sou Bureau.
Si ou panse tounen nan Windows XP ak ti mòn yo woule epi syèl la ble,
sa yo ki te tipikman yon imaj BMP oswa bitmap.
Bitmap yo plezi pou nou paske yo gen yon ti jan pi plis konpleksite.
Li pa byen kòm senp tankou gri sa a nan 0s ak 1S.
Olye de sa, ou gen bagay sa yo tankou yon header nan kòmansman an nan yon dosye.
Se konsa, nan lòt mo, andedan yon. Dosye BMP se yon pakèt antye nan 0s ak 1,
, men tou genyen kèk 0s adisyonèl ak 1S an la.
Epi li sanble ke sa nou te pwobableman pran pou yo akòde pou ane -
dosye fòma tankou. oswa doktè. xls oswa. mp3,. mp4, kèlkeswa sa fòma yo ranpli
ke ou se abitye avèk - ki sa li menm vle di yo dwe yon fòma ranpli,
paske nan fen jou a, tout moun sa yo dosye nou itilize gen jis 0s ak 1S.
E petèt sa yo 0s ak 1S reprezante ABC nan ASCII oswa tankou an,
men nan fen jou a, li la toujou jis 0s ak 1S.
Se konsa, moun detanzantan sèlman deside envante yon fòma dosye nouvo
kote yo estandadize sa ki modèl nan Bits pral aktyèlman vle di.
Ak nan ka sa a isit la, jan yo ki fèt fòma a dosye bitmap
te di ke nan multiple la nan yon dosye bitmap trè premye, kòm deziye pa konpanse 0 a,
gen a pwal kèk cryptically te rele varyab bfType rele,
ki jis kanpe pou di ki kalite dosye bitmap, ki kalite dosye bitmap se sa a.
Ou ka dégager petèt nan dezyèm ranje a, ki konpanse 2, nimewo multiple 2,
gen yon modèl nan 0s ak 1S ki reprezante ki sa? Gwosè a nan yon bagay.
Epi li ale sou apati de la.
Se konsa, nan Set Pwoblèm 4, ou pral te mache nan tout kèk nan bagay sa yo.
Nou pa pral fini pran swen sou tout nan yo.
Men, remake li kòmanse jwenn enteresan alantou multiple 54: rgbtBlue, vèt, ak Wouj yo.
Si ou te janm tande akwonim nan rgb - wouj, vèt, koulè ble - sa a se yon referans ak sa yo ki
paske li vire soti ou ka penti tout koulè yo nan lakansyèl la va
ak kèk konbinezon de wouj ak ble ak vèt.
Ak an reyalite, paran yo nan sal la ta ka sonje kèk nan projèkteur yo pi bonè.
Jou sa yo, ou jis wè youn klere limyè t'ap soti nan yon lantiy,
men li tounen nan jou a, ou te gen lantiy la wouj, lantiy la ble, ak lantiy la vèt,
ak ansanm yo ki vize a yon ekran ak fòme yon foto kolore.
Ak byen souvan, lekòl presegondè ak lekòl segondè ta gen sa yo lantiy
janm konsa yon ti kras krochi, se konsa ou te sòt de wè foto doub oswa trip.
Men, sa ki te lide la. Ou te gen limyè wouj ak vèt ak ble pentire yon foto.
Epi li se ki prensip menm yo itilize nan òdinatè.
>> Se konsa, nan mitan defi yo Lè sa a, pou ou nan Pwoblèm Set 4 pwal gen yon bagay kèk.
Youn nan se aktyèlman Rdimansyone yon imaj, yo pran nan yon seri 0s ak 1,
konnen ki sègman nan 0s ak 1S reprezante sa ki nan yon estrikti tankou sa a,
ak Lè sa a, figi l kòman répliquer piksèl yo - wouj yo, blues yo, vèt yo -
andedan an pou ke lè yon foto sanble tankou sa a okòmansman,
li ta ka gade tankou sa a olye apre sa.
Pami defi lòt yo tou a pwal ke ou pral lage yon imaj legal
nan yon dosye aktyèl soti nan yon kamera dijital.
Yo, epi sou ki kamera, yon fwa sou yon tan, te yon pakèt antye nan foto yo.
Pwoblèm nan se nou aksidantèlman efase oswa ou te gen imaj la pèvèti yon jan kanmenm.
Move bagay rive ak kamera dijital.
Se konsa, nou byen vit kopye tout nan sa a nan kat 0s ak 1S pou ou,
sove yo tout nan yon sèl dosye gwo, ak Lè sa a, nou pral lage yo jwenn ou nan Pwoblèm Fikse 4
pou ke ou ka ekri yon pwogram nan C ak ki refè tout moun ki JPEGs, depreferans.
Epi li sanble ke JPEGs, menm si yo ap yon ti jan nan yon fòma dosye konplèks -
yo ap pi plis konplèks pase sa a figi souri isit la -
li vire soti ke chak JPEG kòmanse ak modèl yo menm nan 0s ak 1S.
Se konsa, lè l sèvi avèk, finalman, yon riban pandan y ap oswa yon pou riban oswa ki similè yo,
ou ka rèspèté sou tout 0s la ak 1S nan imaj sa a legal,
ak tout tan ou wè modèl la espesyal ki nan sa defini nan spesifikasyon la ansanm pwoblèm,
ou ka asime isit la se, ak pwobabilite wo anpil, nan kòmansman an nan yon JPEG.
Ak le pli vit ke ou jwenn modèl la menm kèk nimewo nan bytes
oswa kilookte oswa megabit pita, ou ka asime isit la se yon JPEG dezyèm fwa,
foto a mwen te pran apre premye a.
Kite m 'sispann li ki dosye premye, kòmanse ekri yon sèl sa a nouvo,
ak pwodiksyon an nan pwogram ou an pou pset4 a pwal kòm anpil 50 JPEGs.
Men, si li pa 50 JPEGs, ou gen yon ti jan nan yon riban.
Si ou gen yon nonb infini nan JPEGs, ou gen yon riban enfini.
Se konsa, ki twò yo pral byen yon ka komen.
Se konsa, sa a, se sa ki la sou orizon an.
>> Kwiz 0 dèyè nou, reyalize pou chak imel mwen ki toujours gen jan ki tou de se kè kontan,
sòt de tan net, ak tris alantou egzamen 0.
Ak tanpri rive jwenn soti nan m ', tèt tf Zamyla a, tf pwòp ou a,
oswa nan yonn nan sèrtifikasyon la ke ou konnen si ou ta renmen diskite ki jan bagay yo te ale.
>> Se konsa, enpresyone paran yo isit la nan sal la, ki nan bibliyotèk la CS50?
[Ri] Bon travay.
Ki sa ki nan bibliyotèk la CS50? Yeah. >> [Elèv] Li se yon seri ki ekri davans nan kòd [fèbl]
Okay, bon.
Li se yon seri ki ekri davans nan kòd ke nou anplwaye a te ekri a, nou bay nou la a,
ki bay kèk fonctionnalités komen,
bagay tankou jwenn m 'yon fisèl, jwenn m' yon int - tout nan fonksyon yo ke yo lis isit la.
>> Kòmanse kounye a, nou kòmanse reyèlman pran sa yo wou fòmasyon an.
Nou pwal kòmanse retire nan men yo yon fisèl nan men ou,
ki rantre te jis yon sinonim pou sa ki reyèl ki kalite done? >> [Elèv yo miltip] Char *.
Char *. Pou paran yo, sa ki te pwobableman [fè whooshing son]. Sa a se bon.
Char * nou pral kòmanse wè sou ekran an tout plis an kòm nou retire fisèl soti nan vokabilè nou an,
omwen lè li rive aktyèlman ekri kòd.
Menm jan tou, nou pral sispann lè l sèvi avèk kèk nan sa yo fonksyon kòm anpil
paske pwogram nou yo ale nan jwenn pi plis sofistike.
Olye ke sèlman ekri pwogram ki chita la ansanm ak yon kliyote rapid,
ap tann pou itilizatè a pou tape yon bagay nan, ou pral jwenn entrain ou soti nan yon lòt kote.
Pou egzanp, ou pral jwenn yo soti nan yon seri de Bits sou kondwi a lokal difisil.
Ou ap olye jwenn yo nan tan kap vini an nan yon koneksyon rezo a,
kèk sit entènèt kèk kote.
>> Se konsa, kite a kale tounen kouch sa a la pou premye fwa e ki rale moute Aparèy la CS50
ak sa a ranpli rele cs50.h, ki ou ve yo te # enkli pou semèn,
Men, kite a aktyèlman wè sa ki sa ki andedan sa a.
Tèt la nan dosye a nan twal ble se jis yon pakèt antye nan kòmantè:
enfòmasyon garanti ak lisans.
Sa a se sòt de yon paradigm komen nan lojisyèl
paske yon anpil nan lojisyèl jou sa yo se sa ki yo rele louvri sous,
ki vle di ke yon moun te ekri kòd la e li te fè se gratis tou ki disponib
pa sèlman nan kouri li sèvi ak men yo aktyèlman li ak chanje ak entegre nan travay pwòp ou yo.
Se konsa, se sa ki ou ve yo te lè l sèvi avèk, louvri sous lojisyèl, kwake nan yon fòm ki piti anpil.
Si m 'desann sot pase kòmantè yo, menm si, nou pral kòmanse wè kèk bagay pi plis yo konnen yo.
Avi nan tèt la isit la ke dosye a cs50.h gen ladan yon pakèt antye nan dosye header.
Pifò nan sa yo, nou pa t 'wè anvan, men se yon sèl yo konnen yo.
Kilès nan sa yo te wè nou, byen yon ti tan, konsa byen lwen? >> [Elèv] Creole bibliyotèk la.
Yeah, estanda bibliyotèk la. stdlib.h gen malok.
Yon fwa nou kòmanse te kòmanse pale sou alokasyon memwa dinamik,
ki nou pral tounen vin jwenn semèn pwochèn kòm byen, nou te kòmanse ki gen ladan ki dosye.
Li sanble ke bouleen ak vrè ak fo pa aktyèlman egziste nan C se pou chak
sof si ou gen ladan yo sa a ranpli isit la.
Nou te pou semèn yo te ki gen ladan stdbool.h
pou ke ou ka sèvi ak nosyon a nan yon. bouleen, vre oubyen fo
San yo pa sa, ou ta gen yo sòt de fo li epi sèvi ak yon int
ak jis abitrèman asime ke 0 se fo ak 1 a se verite.
Si nou desann pi lwen, isit la se definisyon nou an yon kòd.
Li sanble soti, kòm nou te di anvan, sa ki kote sa a zetwal se pa reyèlman gen pwoblèm.
Ou ka menm gen espas tout alantou.
Nou sa a semès yo te fè pwomosyon li kòm sa a fè klè
ki zetwal la te fè avèk kalite a,
men mwen reyalize menm jan komen, si pa yon ti kras plis komen,
se mete l 'la, men fonksyonèl li nan menm bagay la.
Men koulye a, si nou li desann pi lwen, kite a pran yon gade nan GetInt
paske nou te itilize ke petèt premye anvan tout bagay sa a semès la.
Isit la se GetInt. Sa a se ki sa? >> [Elèv] Yon pwototip. >> Sa a se jis yon pwototip.
Souvan, nou te mete prototip nan tèt yo nan nou an. Dosye c,
men ou ka mete tou prototip nan dosye header,. h dosye, tankou sa a yon sèl isit la
konsa, lè w ekri kèk fonksyon ke ou vle lòt moun pou kapab itilize,
ki se ekzakteman ka a ak bibliyotèk la CS50,
ou pa sèlman aplike fonksyon ou a nan yon bagay tankou cs50.c,
nou menm tou nou mete prototip yo pa nan tèt la nan ke dosye men nan tèt la nan yon dosye header.
Lè sa a, ki dosye header se sa ki zanmi ak kòlèg gen ladan yo
ak # enkli nan kòd pwòp yo.
Se konsa, tout tan tout tan sa a, ou ve yo te ki gen ladan tout moun sa yo prototip,
efektivman nan tèt la nan dosye ou, men pa fason pou sa a gen ladan # mekanis,
ki esansyèlman kopi ak kole sa a ranpli nan pwòp ou yo.
Isit la se kèk dokiman san patipri detaye.
Nou te bèl anpil pran pou yo akòde ki GetInt vin yon int,
men li vire soti, gen kèk ka kwen.
E si itilizatè a kalite nan yon chif ki nan wout twò gwo, yon quintillion,
ki jis pa ka anfòm andedan nan yon int? Ki sa ki se yon konpòtman ki a prévu?
Idealman, li nan previzib.
Se konsa, nan ka sa a, si ou aktyèlman li enprime la amann,
ou pral aktyèlman wè ke si liy la pa kapab li, sa a INT_MAX retounen.
Nou pa janm te te pale osijè de sa a, men ki baze sou majiskil li yo, ki sa li pwobableman?
[Elèv] Yon konstan. >> Li se yon konstan.
Li nan kèk konstan espesyal ke sa ka petèt te deklare nan youn nan moun ki dosye header
sa a, se moute pi wo nan dosye a, ak INT_MAX se pwobableman yon bagay tankou apeprè 2 milya dola,
lide a ke yo te sa paske nou bezwen yon jan kanmenm siyifi ke yon bagay ale mal,
nou menm, se wi, gen 4 milya dola nimewo a jete nou an: -2 milya dola sou jiska 2 milya dola, bay oswa pran.
Oke, sa se komen nan pwogramasyon se ou vòlè jis youn nan moun ki nimewo,
petèt 0, petèt 2 milya dola, petèt -2 milya dola,
konsa ou depanse youn nan valè posib ou pou sa ou kapab komèt nan mond lan
ke si yon bagay ale mal, m'ap tounen sa a super valè gwo.
Men, ou pa vle itilizatè a sezisman yon bagay skre tankou 234 ..., yon nimewo reyèlman gwo.
Ou jeneralizasyon li olye kòm yon konstan.
Se konsa, reyèlman, si ou te ke yo te nan dèyè sot pase semèn yo kèk, nenpòt ki lè ou rele GetInt,
ou ta dwe yo te tcheke avèk yon si kondisyon te fè kalite nan itilizatè nan INT_MAX,
oswa, plis espesyalman, te fè GetInt INT_MAX retou, paske si li te fè,
ki aktyèlman vle di yo pa t 'tape li. Yon bagay ale mal nan ka sa a.
Se konsa, sa a se sa ki jeneralman li te ye tankou yon valè Sentinel, ki jis vle di espesyal.
>> Se pou nou kounye a vire nan. Dosye a c.
Te dosye a C te egziste nan aparèy la pou kèk tan.
Ak an reyalite, aparèy la gen li pre-konpile pou nou antre nan ke bagay nou te rele kòd objè,
men li jis pa enpòtan ba ou kote li se paske sistèm nan konnen
nan ka sa a kote li se: aparèy la.
Se pou nou desann kounye a nan GetInt ak wè kòman GetInt ki te travay tout tan sa a.
Isit la nou gen kòmantè similè nan anvan.
Kite m 'rale nan sou jis pòsyon nan kòd.
Ak sa nou genyen pou GetInt se sa ki annapre yo.
Li pa pran opinyon.
Li retounen yon int, pandan y ap (vrè), konsa nou gen yon ekspre riban enfini,
men prezimableman nou pral kraze soti nan sa a yon jan kanmenm oswa retounen soti nan sa a.
>> Ann gade pou wè ki jan sa a travay.
Nou yo sanble yo dwe lè l sèvi avèk GetString nan liy sa a premye andedan riban a, 166.
Sa a se kounye a bon pratik paske anba ki sikonstans te kapab GetString retounen
nil nan mo kle espesyal? >> [Elèv] Si gen yon bagay ale mal.
Si gen yon bagay ale mal. Ak ki sa ki kapab ale mal lè w rele yon bagay tankou GetString?
Yeah. >> [Elèv] malok echwe bay li antye yo.
Yeah. Petèt malok echwe.
Yon kote anba kapo machin lan, GetString ap rele malok, ki repati memwa,
ki pèmèt magazen an òdinatè tout nan karaktè yo ki
ki itilizatè a kalite nan klavye la.
Ak ta kwè itilizatè a te gen yon anpil tout tan lib ak tape plis, pou egzanp,
pase 2 milya dola karaktè nan, plis karaktè pase òdinatè a menm gen RAM.
GetString gen pou kapab siyifi ke ou yo.
Menm si sa a se yon Super, ka super estraòdinè kwen,
li te yon jan kanmenm kapab okipe sa a,
ak sa GetString, si nou te ale retounen lakay yo epi li dokiman li yo, fè sa ki nan nil retounen reyalite.
Se konsa, kounye a si GetString echwe ki te retounen nil, GetInt ki pral fail ki te retounen INT_MAX
jis kòm yon Sentinel. Sa yo se sèlman konvansyon imen.
Sèl fason pou nou ta konnen sa a se ka a se nan li dokiman an.
>> Se pou nou woulo liv desann nan ki kote int a aktyèlman resevwa yo.
Si m 'desann yon ti jan pi lwen, nan liy 170, nou gen yon kòmantè pi wo a liy sa yo.
Nou deklare nan 172 yon int, n, ak yon Char, C, ak Lè sa a, sa a fonksyon nouvo,
ki kèk nan nou te bite sou anvan, sskanf.
Sa a kanpe pou skanf fisèl.
Nan lòt mo, ban m 'yon kòd epi mwen pral analysis li pou pyès enfòmasyon nan enterè yo.
Kisa sa vle di?
Sipoze ke mwen tape nan, literalman, 123 nan klavye a ak Lè sa a, frape Mete.
Ki sa ki kalite nan done a 123 lè tounen pa GetString? >> [Elèv] chèn.
Li nan evidamman yon fisèl, dwa? Mwen te resevwa yon fisèl.
Se konsa, 123 se reyèlman, quote-unquote, 123 ak 0 a \ nan fen li.
Sa se pa yon int. Sa se pa yon nimewo. Li sanble ke yon nimewo men li la pa aktyèlman.
Se konsa, sa GetInt dwe fè?
Li te gen analysis ki fisèl gòch a dwat - 123 \ 0 - ak yon jan kanmenm konvèti nan yon nonb antye relatif vrè.
Ou te kapab konnen ki jan fè sa.
Si ou panse tounen nan pset2, ou prezimableman te yon ti konfòtab ak Seza tande kòz
oswa Vigenere, pou ou kapab repekte sou yon fisèl, ou ka konvèti charaktèr antye.
Men, èk, li nan yon anpil tout travay.
Poukisa nou pa rele yon fonksyon tankou sskanf ki fè ke pou ou?
Se konsa, sskanf espere gen yon diskisyon - nan ka sa a yo rele liy, ki se yon fisèl.
Ou Lè sa a, presize nan quotes, anpil menm jan ak printf, ki sa ou espere wè nan sa a fisèl.
Ak sa m ap di isit la se mwen espere wè yon nonb desimal ak petèt karaktè yon.
Epitou, n ap wè poukisa sa a se ka a nan jis moman yon.
Epi li vire soti ke sa a notasyon se kounye a okoumansman de bagay nou te kòmanse pale sou
jis pase yon semèn de sa.
Ki sa ki se & n ak & c ap fè pou nou isit la? >> [Elèv] Adrès moun ki n ak adrès c.
Yeah. Li nan bay m 'adrès ki nan n ak adrès c. Poukisa se sa enpòtan?
Ou konnen ak fonksyon nan C, ou ka toujou retounen yon valè oswa valè pa gen okenn nan tout.
Ou ka retounen yon int, fisèl yon, flote yon, yon Char, kèlkeswa sa, oswa ou ka retounen san valè,
men ou ka sèlman retounen yon sèl bagay omaksimòm.
Men, isit la nou vle sskanf retounen m 'petèt yon int, yon nonb desimal,
epi tou li yon Char, epi mwen pral eksplike poukisa Char la nan yon moman.
Ou efektivman vle sskanf retounen de bagay sa yo, men sa a jis pa posib nan C.
Ou ka travay alantou ki pa pase nan de adrès
paske le pli vit ke ou lage yon fonksyon de adrès,
sa ki kapab ki fonksyon fè avèk yo? >> [Elèv] Ekri bay moun adrès.
Li ka ekri nou nan sa yo adrès.
Ou kapab sèvi ak operasyon an zetwal yo ak ale la, nan chak nan moun ki adrès.
Li nan sòt de sa a mekanis tounen-pòt men trè komen pou chanje valè yo nan varyab
pi plis pase jis yon sèl kote - nan ka sa a, de.
Koulye a, remake mwen tcheke pou == 1 ak Lè sa a, retounen n si sa, an reyalite, evalye vre.
Se konsa, sa k ap pase sou? Teknikman, tout sa nou reyèlman vle rive nan GetInt se sa a.
Nou vle analizan, se konsa pale, nou vle li fisèl la - quote-unquote 123 -
epi si li sanble gen yon nimewo a, sa n ap di sskanf fè
yo mete nimewo sa a - 123 - nan sa a varyab n pou mwen.
Se konsa, poukisa Lè sa a, mwen te gen aktyèlman sa a kòm byen?
Ki wòl la nan sskanf li di ou ta ka jwenn tou yon karaktè isit la?
[Fèbl repons elèv] >> Yon pwen desimal aktyèlman te kapab travay.
Se pou nou kenbe ki te panse pou yon moman. Ki lòt bagay?
[Elèv] Li ta ka nil. >> Bon panse. Li ta ka pèsonaj la nil.
Li nan aktyèlman pa nan ka sa a. Yeah. >> [Elèv] ASCII.
ASCII. Oswa kite m 'jeneralizasyon menm pi lwen.
C la% gen jis pou w tcheke erè.
Nou pa vle gen yo dwe yon karaktè apre nimewo a,
men ki sa sa a pèmèt m 'fè a se sa ki annapre yo.
Li sanble ke sskanf, san konte estoke valè nan n ak c nan egzanp sa a isit la,
ki sa li tou se li retounen nimewo a nan varyab li mete valè pous
Se konsa, si ou sèlman tape nan 123, lè sa a sèlman d la% ki pral matche ak,
ak sèlman n vin estoke ki gen yon valè tankou 123,
e pa gen anyen vin mete nan c.
C rete yon valè fatra, se konsa pale -
fatra paske li pa janm te konn mete inisyalizèd nan kèk valè.
Se konsa, nan ka sa a, sskanf retounen 1 paske mwen peple 1 nan tout sa yo endikasyon,
nan ka sa a gwo, mwen gen yon int Se konsa, mwen libere dwat la rive nan libere moute memwa a
ki GetString aktyèlman resevwa lajan, ak Lè sa a, m'a tounen n,
lòt bagay si ou janm mande ki kote rekoumanse deklarasyon soti nan, li vini soti nan dwa isit la.
Se konsa, si, pa kontra, mwen tape nan 123foo - jis kèk sekans o aza nan tèks -
sskanf ki pral gade nan nimewo, nimewo, nimewo, f,
epi li pral mete 123 la nan n; li a pral mete f a nan c ak Lè sa a, retounen 2.
Se konsa, nou gen, jis lè l sèvi avèk definisyon an debaz ki nan konpòtman sskanf a, yon fason trè senp -
byen, konplèks nan zye premye, men nan fen jou-la avèk jistis senp mekanis -
nan di la a se gen yon int e si se konsa, se ke bagay la sèlman ke mwen te jwenn?
Ak blan a isit la se ekspre.
Si ou li dokiman an pou sskanf, li di ou ke si ou gen ladan yo yon moso nan blan
nan kòmansman an oswa nan fen a, sskanf twò pral pèmèt itilizatè a yo, pou kèlkeswa rezon,
frape 123 espas bar ak ki pral lejitim.
Ou pa pral rele nan itilizatè a jis paske yo frape bar nan espas
nan kòmansman an oswa nan fen a, ki se jis yon ti kras pi plis user-zanmitay.
>> Nenpòt kesyon Lè sa a, sou GetInt? Yeah. >> [Elèv] Ki sa ki si ou jis mete nan yon Char?
Bon kesyon.
E si ou jis tape nan yon Char tankou f ak frape Antre nan san yo pa janm sezisman 123?
Ki sa ou panse konpòtman an nan liy sa a nan kòd ta Lè sa a, ta dwe ye?
[Fèbl repons elèv]
Yeah, se konsa sskanf ka kouvri ki twò paske nan ka sa a, li pa pral ranpli n oswa c.
Li nan ale nan olye retounen 0, nan ka sa a mwen tou pwan ki senaryo
paske valè a prévu sa mwen vle se 1.
Mwen sèlman vle yon sèl ak nan yon sèl bagay ka plen. Bon kesyon.
>> Lòt moun? Tout dwa.
>> Se pou nou pa ale nan tout nan fonksyon yo nan isit la,
men se yon sèl la ki sanble ap petèt nan enterè rete a se GetString
paske li sanble ke GetFloat, GetInt, GetDouble, GetLongLong
tout bote yon bann fonksyonalite yo nan GetString.
Se konsa, kite a pran yon gade nan ki jan se li ki aplike isit la.
Sa a yon sèl sanble yon konplèks ti kras, men li sèvi ak eleman fondamantal yo menm
ke nou kòmanse te kòmanse pale sou semèn dènye a.
Nan GetString, ki te pran pa gen okenn agiman tankou pou chak anile a moute isit la
ak li retounen yon kòd, mwen aparamman mwen deklare yon kòd yo rele zòn de defans.
Mwen pa vrèman konnen ki sa ki nan yo pral itilize pou deja, men nou pral wè.
Li sanble ke kapasite se pa default 0.
Pa byen asire ki kote sa a ki pral, pa asire ki sa n ki pral gen pou itilize pou ankò,
Men, koulye a li nan ap resevwa yon ti kras plis enteresan.
Nan liy 243, nou deklare yon int, c.
Sa a se sòt de yon detay estipid.
Yon Char se 8 Bits, ak 8 Bits ka magazen ki jan anpil valè diferan? >> [Elèv] 256. >> 256.
Pwoblèm lan se si ou vle gen 256 diferan karaktè ASCII, ki gen
si ou panse tounen - ak sa a se pa yon bagay yo memorize.
Men, si ou panse tounen nan tablo gwo ASCII nou te gen semèn de sa,
te gen nan ka sa a 128 oswa 256 karaktè ASCII.
Nou itilize tout modèl yo nan moute 0s ak 1S.
Sa a se yon pwoblèm si ou vle pou kapab detekte yon erè
paske si w ap deja lè l sèvi avèk 256 valè pou karaktè ou a,
nou pa t 'reyèlman planifye davans paske koulye a ou pa gen okenn fason pou li di:
sa a se pa yon karaktè legi, sa a se kèk mesaj inègza.
Se konsa, sa mond lan fè se yo itilize pwochen valè nan pi gwo, yon bagay tankou yon int,
pou ke ou gen yon nimewo fou nan 32 Bits,, pou 4 milya de dola valè posib
pou ke ou ka tou senpleman fini lè l sèvi avèk esansyèlman 257 nan yo,
1 nan ki te gen kèk sans espesyal kòm yon erè.
>> Se konsa, kite a wè ki jan sa a travay.
Nan liy 246, mwen gen sa a pandan y ap riban gwo ki ap rele fgetc,
f siyifikasyon dosye, se konsa getc, ak Lè sa a, stden.
Li vire soti sa a se jis fason an plis egzak pou fè li di li enfòmasyon nan men gwoup klavye la.
Klavye Creole vle di D ', randman estanda vle di ekran,
ak erè estanda, ki nou pral wè nan pset4, vle di ekran an
men yon pati espesyal nan ekran an pou ke li pa nan conflated ak pwodiksyon aktyèl
ke ou gen entansyon enprime. Men, plis sou sa nan tan kap vini an.
Se konsa, fgetc jis vle di li yon karaktè soti nan klavye a, epi estoke yo ki kote?
Estoke li nan c.
Lè sa a, tcheke - se konsa mwen jis lè l sèvi avèk kèk konjonksyon Boolean isit la -
tcheke sa pa egal - \ n, se konsa si itilizatè a frape Antre, nou ta vle sispann nan pwen sa a,
fini nan riban an - ak nou menm tou nou vle tcheke pou èof la espesyal konstan,
ki si ou konnen oswa ou devine, ki sa li kanpe pou? >> [Elèv] Fen dosye-a. Fen >> nan dosye-a.
Sa a se kalite idyo paske si mwen sezisman nan klavye a,
gen nan reyèlman pa gen okenn dosye ki enplike nan sa a,
men sa a se jis sòt de tèm nan jenerik itilize vle di
ki pa gen anyen lòt ap vini soti nan dwèt imen an.
Èof - nan fen dosye-a.
Kòm yon sou kote, si ou te janm frape kontwòl D nan klavye ou, pa ke ou ta gen ankò -
ou te frape kontwòl C - Kontwòl D voye sa a konstan espesyal ki rele èof.
Se konsa, kounye a nou jis gen kèk alokasyon memwa dinamik.
>> Se konsa, si (n + 1> kapasite). Koulye a, mwen pral eksplike n.
N se jis ki jan anpil bytes yo se kounye a nan zòn de defans la,
fisèl la ke w ap kounye a bati moute soti nan itilizatè lan.
Si ou gen plis karaktè nan zòn de defans ou a pase ou gen kapasite nan zòn de defans la,
entwitivman ki sa nou bezwen fè Lè sa a, se asiyen plis kapasite.
Se konsa, mwen pral koudèy sou kèk nan aritmetik a isit la epi konsantre sèlman sou sa a fonksyon isit la.
Ou konnen ki sa malok se oswa gen omwen jeneralman yo konnen yo.
Pran yon devine kisa realloc fè. >> [Elèv] ajoute memwa.
Li pa nan byen ajoute memwa. Li reafèkt memwa jan sa a.
Si gen nan plas toujou nan fen fisèl la ba ou plis nan ki memwa
pase sa li orijinal ba ou, lè sa a ou pral jwenn ke memwa adisyonèl.
Se konsa, ou ka jis kenbe mete karaktè fisèl la tounen nan fè bak nan do nan do.
Men, si sa a, se pa ka a paske ou tann twò lontan
ak yon bagay o aza te resevwa plopped nan memwa gen
, men tou genyen memwa siplemantè desann isit la, ki nan oke.
Realloc ki pral fè tout ekzistan la lou pou ou,
deplase fisèl la ou te li nan konsa byen lwen soti isit la, mete l 'desann la,
ak Lè sa a, ba ou kèk plis pist nan pwen sa a.
>> Se konsa, avèk yon vag nan men l ', kite m' di ke sa GetString ap fè
se li nan kòmanse avèk yon zòn de defans piti, petèt yon sèl karaktè,
epi si itilizatè a kalite nan de karaktè, GetString fini moute rele realloc e li di
yon karaktè pa t 'ase; ban m' de karaktè.
Lè sa a, si w li nan lojik nan riban an, li te pral di
itilizatè a tape nan 3 karaktè; ban m 'koulye a pa 2, men 4 karaktè,
Lè sa a, ban m '8, Lè sa a, ban m' 16 ak 32.
Reyalite a ke mwen double pwensip kapasite a chak fwa
vle di ke zòn de defans nan a pa pral grandi tou dousman, li te ale nan grandi Super vit.
Ak sa ki ta kapab avantaj nan sa?
Poukisa mwen double pwensip gwosè a nan zòn de defans la
menm si itilizatè a ta ka jis bezwen yon siplemantè karaktè soti nan klavye a?
[Repons fèbl elèv] >> Ki sa ki nan sa? >> [Elèv] Ou pa bezwen grandi li kòm souvan.
Egzakteman. Ou pa oblije grandi li kòm souvan.
Ak sa a se jis kalite w ap couverture parye ou isit la,
lide a ke yo te ke ou pa vle yo rele realloc yon anpil paske li gen tandans ka ralanti.
Nenpòt ki lè w mande sistèm nan fonksyone pou memwa,
kòm ou pral byento wè nan yon seri pwoblèm nan lavni, li gen tandans pran kèk tan.
Se konsa, minimize ki kantite lajan yo nan tan, menm si w ap gaspiye kèk espas,
gen tandans ka yon bon bagay.
>> Men, si nou li nan yon pati final la nan GetString isit la -
epi ankò konprann chak sèl liy isit la se pa konsa pou sa enpòtan jodi a -
avi ke li evantyèlman rele malok ankò
epi li repati egzakteman jan bytes anpil jan li bezwen pou fisèl la
ak Lè sa a, lanse lwen lè w rele gratis tanpon la twò gwo
si li tout bon te resevwa double fwa twòp.
Se konsa, nan kout, lè sa a jan GetString ki te travay tout tan sa a.
Tout li se li yon karaktè nan yon tan ankò e ankò e ankò,
ak tout tan li bezwen kèk memwa adisyonèl, li mande sistèm nan fonksyone pou li
lè w rele realloc.
>> Nenpòt kesyon? Tout dwa.
>> Yon atak.
Kounye a ke nou konprann endikasyon oswa omwen yo se de pli zan pli ki abitye avèk endikasyon,
kite a konsidere kijan lemonn antye kòmanse tonbe plat atè
si ou pa byen defann kont itilizatè konfwontasyon,
moun ki ap eseye Hack nan sistèm ou a,
moun ki ap eseye vòlè lojisyèl ou pa kontourn kèk kòd enskripsyon
yo ke yo ta ka otreman gen tape pous
>> Pran yon gade nan egzanp sa a isit la, ki se jis C kòd ki te gen yon fonksyon prensipal nan pati anba a
ki mande yon foo fonksyon. Ak ki sa ki li pase foo?
[Elèv] Yon rezònman sèl. >> [Malan] Yon rezònman sèl.
Se konsa, argv [1], ki vle di premye mo ki ki itilizatè a tape nan liy lan bay lòd
apre a.out oswa kèlkeswa sa ki pwogram lan te rele.
Se konsa, foo nan tèt la pran nan yon * Char. Men, * Char se jis ki sa? >> [Elèv] Yon fil.
[Malan] Yon fil, se konsa pa gen anyen nouvo isit la.
Sa fisèl la abitrèman yo te rele ba.
Nan liy sa a isit la, Char c [12]; nan sòt de semi-teknik lang angle, ki sa ki liy sa a ap fè?
[Elèv] Yon etalaj la - >> etalaj la? >> [Elèv] karaktè. >> Karaktè.
Ban m 'yon etalaj de 12 karaktè. Se konsa, nou ta ka rele sa yon zòn de defans.
Li nan teknikman rele c, men yon zòn de defans nan pwogram jis vle di yon pakèt moun sou espas
ke ou ka mete kèk bagay pous
Lè sa a, alafen, manki nou pa te itilize anvan, men ou ka pwobableman devine ki sa li fè.
Li kopi memwa. Ki sa sa fè?
Li aparamman kopi ba, D 'li yo, nan c men se sèlman jiska longè nan ba.
Men, gen nan yon ensèk isit la. >> [Elèv] Ou bezwen pèsonaj la sizof. >> Okay.
Teknikman, nou ta dwe reyèlman fè strlèn (bar) * sizof (Char)). Sa a kòrèk.
Men, nan ka ki pi mal la isit la, se pou yo asime ke that's -
Oke. Lè sa a, gen nan de bug.
Se konsa, sizof (Char));
Se pou nou fè sa-a yon ti kras pi laj.
Se konsa, kounye a gen nan toujou yon ensèk, ki se ki sa? >> [Fèbl repons elèv]
Tcheke pou ki sa? >> [Elèv] Tcheke pou nil.
Nou ta dwe jeneralman mete tcheke pou nil paske move bagay rive
lè konsèy ou a se nil paske ou ta ka fini pral la,
ak ou pa ta dwe janm pral nan nil pa dereferencing l 'ak operatè a zetwal.
Se konsa, sa a, se bon. Ak ki lòt bagay n'ap fè? Lojikman, a gen yon defo isit la tou.
[Elèv] Tcheke si arg se> = a 2.
Se konsa, tcheke si arg se> = 2. Oke, kidonk gen nan twa pinèz nan pwogram sa a isit la.
Nou ap kounye a tcheke si itilizatè a aktyèlman tape nan anyen nan argv [1]. Bon.
Se konsa, sa ki nan pinèz la twazyèm? Yeah. >> [Elèv] C pa ka gwo ase.
Bon. Nou tcheke yon sèl senaryo.
Nou chal tcheke pa kopye plis memwa pase ta depase longè nan ba.
Se konsa, si fisèl la itilizatè a tape nan se 10 karaktè long,
sa a ap di sèlman yon kopi 10 karaktè. Epi sa a, oke.
Men, sa ki si itilizatè a tape nan yon mo nan èd memwa a tankou yon mo 20-karaktè?
Sa a se li di kopi 20 karaktè nan bar nan ki sa?
C, ki te rekonèt kòm tanpon nou an, ki vle di ou jis te ekri done
8 lokal multiple ke ou pa fè sa pwòp,
epi ou pa posede yo nan sans ke ou pa janm resevwa lajan yo.
Se konsa, sa a se sa ki jeneralman li te ye tankou atak la debòde tanpon oswa atak anvahi tanpon.
Epitou, se yon atak nan sans ke si itilizatè a oswa pwogram la ki nan rele fonksyon ou
ap fè sa a kare, sa ki aktyèlman k ap pase answit te kapab aktyèlman dwe byen move.
>> Se konsa, kite a pran yon gade nan foto sa a isit la.
Pòtre sa a reprezante chemine ou nan memwa.
Sonje byen, chak fwa ou rele yon fonksyon ou jwenn sa a ankadreman ti kras sou chemine a
ak Lè sa a, yon lòt ak Lè sa a, yon lòt ak yon lòt.
Ak konsa byen lwen, nou te jis kalite distrè sa yo kòm rektang
swa sou tablo a oswa sou ekran an isit la.
Men, si nou rale nan sou yon sèl nan tout sa yo rektang, lè w rele yon foo fonksyon,
Li sanble ke gen nan plis sou andedan an pil nan ki ankadreman an ki rektang
pase jis x ak y ak a ak b, tankou nou t 'ap pale de swap.
Li sanble ke gen nan kèk detay pi ba-nivo, nan mitan yo Return Address.
Se konsa, li vire soti lè prensipal rele foo, prensipal la gen enfòme foo
sa ki adrès prensipal la se nan memwa òdinatè a nan
paske otreman, le pli vit ke foo se fè pwomenad, tankou nan ka sa a isit la,
yon fwa ou rive nan sa a fèmen atèl Curly nan fen foo,
ki jan èk an foo konnen ki kote kontwòl la nan pwogram nan sipoze ale?
Li sanble ke repons lan nan kesyon se nan rektang sa a wouj isit la.
Sa a reprezante yon konsèy, ak li a jiska òdinatè a nan magazen tanporèman
sou chemine a sa yo rele adrès la nan prensipal pou ke le pli vit ke foo fè pwomenad,
òdinatè a konnen ki kote ak ki sa liy nan prensipal pou tounen nan.
Konsèy sove Frame gen rapò menm bagay ak sa a.
Char bar * isit la reprezante ki sa?
Koulye a, segman sa a ble isit la se ankadreman foo la. Ki sa ki ba?
Bar se jis agiman nan fonksyon an foo.
Se konsa, kounye a nou ap tounen nan sòt de foto a yo konnen yo.
Genyen nan bagay pi plis ak distraksyon plis sou ekran an,
men segman sa a limyè ble jis se ki sa nou ve yo te fè desen sou tablo a
pou yon bagay tankou swap. Sa a se ankadreman an pou foo.
Epi bagay la sèlman nan li kounye a se ba, ki se sa a paramèt.
Men, ki lòt bagay yo ta dwe nan chemine a dapre sa a kòd isit la?
[Elèv] Char c [12]. >> [Malan] Char c [12].
Nou ta dwe wè tou 12 kare nan memwa afekte nan yon varyab rele c,
ak tout bon nou gen ki sou ekran an.
Trè tèt la gen c [0], ak Lè sa a, otè a nan dyagram sa a
pa t 'bezwen deranje desen tout kare yo, men gen yo tout bon 12 gen
paske si ou gade nan dwa anba a, c [11] si ou konte ki ant 0 a se multiple nan 12yèm sa yo.
Men, isit la nan pwoblèm nan.
Nan ki direksyon an c k ap grandi?
Triye nan tèt anba si li kòmanse nan tèt la ak ap grandi jouk anba a.
Li pa sanble nou te kite tèt nou anpil pist isit la nan tout.
Nou te kalite pentire tèt nou nan yon kwen,
e ke c [11] se dwa atake bar, ki se dwa atake sove konsèy Frame,
ki se dwa atake Return Address. Gen nan pa gen chanm plis.
Se konsa, sa ki nan enplikasyon la Lè sa a, si ou vis moute nan
epi ou eseye lekti 20 bytes nan yon zòn de defans 12-multiple?
Kote moun yo 8 bytes plis pwal ale? >> [Elèv] Anndan -
Anndan tout lòt bagay, kèk nan yo ki se super enpòtan.
Ak bagay ki pi enpòtan, potansyèlman, se ti bwat la wouj la, Adrès Tounen non,
paske sipoze ke ou swa aksidantèlman oswa adversarially recouvrir sa yo bytes 4,
ki konsèy adrès, pa sèlman ak fatra, men ak yon kantite
ki k ap pase nan reprezante yon adrès aktyèl nan memwa.
Ki sa ki nan enplikasyon la, lojikman? >> [Elèv] Fonksyon ki pral retounen nan yon kote diferan.
Egzakteman.
Lè retounen foo ak frape ki atèl Curly, pwogram nan se pral kontinye
pa pou retounen nan prensipal yo, li pral pou retounen nan kèlkeswa adrès se nan ki bwat wouj.
>> Nan ka kontourn enskripsyon lojisyèl,
ki sa si adrès la ki k ap tounen tounen l 'se fonksyon an ki nòmalman vin rele
apre ou te peye pou lojisyèl an ak antre kòd enskripsyon ou a?
Ou kapab klase nan Trick òdinatè a nan pa pral isit la, men olye moute isit la.
Oswa si w ap reyèlman entelijan, yon lènmi ka aktyèlman tape nan nan klavye a, pou egzanp,
pa yon mo reyèl, pa 20 karaktè, men ta kwè li oswa li aktyèlman kalite nan
kèk karaktè ki reprezante kòd.
E li pa k ap pase yo dwe C kòd, li la aktyèlman pral fè karaktè yo
ki reprezante binè kòd machin, 0s ak 1S.
Men, si yo ap entelijan ase fè sa,
yon jan kanmenm keratin nan yon bagay nan GetString èd memwa ki se kòd esansyèlman konpile,
ak 4 dènye bytes yo recouvrir ki adrès retou.
Ak sa ki adrès ki D 'fè?
Li aktyèlman estoke nan rektang sa a wouj adrès ki nan multiple an premye nan zòn de defans la.
Se konsa, ou gen yo dwe reyèlman entelijan, e sa se yon anpil nan esè ak erè pou moun ki move yo deyò,
Men, si ou kapab konnen ki jan gwo sa a tanpon se
sa yo ki dènye bytes yo kèk moun nan opinyon ou bay nan pwogram lan
rive yo ekivalan nan adrès ki nan kòmansman an nan zòn de defans ou a, ou ka fè sa.
Si nou di nòmalman alo ak \ 0, se sa ki fini moute nan zòn de defans la.
Men, si nou ap plis entelijan e nou ranpli ke zòn de defans ak sa nou pral generic rele kòd atak -
AAA, atak, atak, atak - kote sa a se jis yon bagay ki fè yon bagay mal,
kisa k ap rive si ou se vrèman entelijan, ou ta ka fè sa.
Nan ti bwat la wouj isit la se yon sekans nan nimewo - 80, C0, 35, 08.
Remake ke matche ak nimewo a ki la moute isit la.
Li nan yo nan lòd do, men li plis sou tan sa a kèk lòt.
Remake sa a te adrès retou te fè espre chanje
egal adrès la moute isit la, pa adrès ki nan prensipal la.
Se konsa, si nèg la move se super entelijan, li te oswa li pral gen ladan yo nan ke kòd atak
yon bagay tankou efase tout dosye itilizatè a oswa kopi modpas yo
oubyen kreye yon kont itilizatè ke mwen ka Lè sa a, konekte nan - anyen nan tout.
>> Ak sa a se tou de danje a ak pouvwa a nan C.
Paske ou gen aksè a memwa via endikasyon
epi ou ka Se poutèt sa ekri anyen ou vle nan memwa yon òdinatè a,
ou ka fè yon òdinatè fè anyen ou vle
tou senpleman pa gen li sote alantou nan espas pwòp memwa li yo.
Se konsa, nan jou sa a pou anpil moun pwogram epi sou sit entènèt anpil ki konpwomèt
bouyi desann nan moun k ap pran avantaj de sa a.
Ak sa a ta ka sanble tankou yon atak super sofistike, men li pa toujou kòmanse fason sa.
Reyalite a se ke sa moun move ap anjeneral fè se,
si li nan yon pwogram nan yon liy lòd oswa nan yon pwogram grafik oswa sit entènèt yon,
ou jis kòmanse bay istwa san sans.
Ou tape nan yon mo nan jaden yo rechèch ak frape Antre reyèlman gwo,
ak ou rete tann yo wè si sit entènèt la kolizyon
oswa ou rete tann yo wè si pwogram lan manifeste kèk mesaj erè
paske si w jwenn chans kòm nèg la move, epi ou bay kèk D 'fou
ki kolizyon pwogram nan, sa vle di pwogramè a pa t 'antisipe move konpòtman ou a,
ki vle di ou kapab pwobableman ak ase efò, jijman ase ak erè,
konnen ki jan salè yon atak plis presi.
Se konsa, kòm anpil yon pati nan sekirite se pa sèlman evite atak sa yo tout ansanm
men detekte yo ak aktyèlman gade nan mòso bwa
ak wè sa entrées fou gen moun tape nan sit entènèt ou an,
ki sa tèm rechèch yo te moun tape nan sit entènèt ou a
yo nan espwa pou debòde kèk zòn de defans.
Lè sa a tout klou desann nan Basics yo senp nan sa ki nan yon etalaj
epi ki sa sa vle di asiyen epi sèvi ak memwa.
>> Ki gen rapò ak Lè sa a, tou se sa a.
Se pou nou jis gade andedan nan yon kondwi difisil ankò.
Ou sonje soti nan yon semèn oswa de Anons sa pibliye depi ke lè ou trennen dosye bin resiklaj ou a oswa fatra kapab,
ki sa k ap pase? >> [Elèv] Pa gen anyen. >> Absoliman anyen, dwa?
Evantyèlman si ou kouri ba sou espas ki gen kapasite,
Fenèt yo oswa ou Mac OS pral kòmanse efase dosye pou ou.
Men, si w glise yon bagay nan la, ki se pa nan tout ki an sekirite.
Tout chanm ou oswa yon zanmi oswa yon manm fanmi gen fè se doub klike sou, epi, vwala,
gen nan tout dosye yo preliminè ke ou te eseye efase.
Pifò nan nou omwen konnen ki di ou gen dwa klike sou oswa kontwole klike sou
ak vid fatra a oswa yon bagay tankou sa.
Men, menm Lè sa a, ki pa byen fè jwe fent la
paske sa ki pase lè ou gen yon dosye sou kondwi difisil ou
ki reprezante kèk dokiman Pawòl oswa kèk JPEG, ak sa a reprezante kondwi difisil ou a,
epi kite pou nou di sa a tranch isit la reprezante ki ranpli,
ak li a ki konpoze de yon pakèt antye nan 0s ak 1S.
Kisa k ap pase lè ou pa sèlman trennen ki dosye fatra a kapab oswa resikle bin
men tou vide l '? Triye nan pa gen anyen.
Li pa absoliman anyen kounye a.
Kounye a li nan jis pa gen anyen paske yon ti kras yon bagay k ap pase nan fòm lan nan tablo sa a.
Se konsa, gen nan kèk kalite baz done oswa tablo andedan nan memwa yon òdinatè a
ki esansyèlman gen yon kolòn pou dosye 'non ak yon kolòn pou dosye' kote,
kote sa a ta kapab kote 123, jis yon nimewo o aza.
Se konsa, nou ta ka gen yon bagay tankou x.jpeg ak kote 123.
Kisa k ap pase Lè sa a, lè ou aktyèlman vide fatra ou a?
Ki ale.
Men, sa ki pa ale se 0s la ak 1S.
>> Se konsa, sa ki nan Lè sa a, koneksyon a pset4?
Oke, ak pset4, jis paske nou te aksidantèlman efase kat la flash kontra enfòmèl ant
ki te gen tout foto sa yo oswa jis paske li pa move chans te vin pèvèti
pa vle di ke 0s la ak 1S yo pa toujou la.
Petèt kèk nan yo yo pèdi paske yon bagay te resevwa pèvèti
nan sans ke kèk 0s te vin 1S ak 1S te vin 0s.
Move bagay ka rive paske nan buggy lojisyèl oswa kenkayri ki defektye.
Men, anpil nan moun ki Bits, petèt menm 100% nan yo, toujou la.
Se jis ke òdinatè a oswa kamera a pa konnen ki kote JPEG1 te kòmanse
ak ki kote JPEG2 te kòmanse.
Men, si ou, pwogramè a, konnen ki gen yon ti jan nan konprandr kote sa yo JPEGs yo
oswa ki sa yo gade tankou konsa ou ka analize JPEG a 0s ak 1S ak di, JPEG,
ou ka ekri yon pwogram ak esansyèlman jis yon pou oswa pandan y ap riban
ki restaure chak youn nan moun ki dosye.
Se konsa, leson an Lè sa a, se kòmanse byen efase dosye ou
si ou ta renmen pou fè pou evite sa a tout ansanm. Wi.
>> [Elèv] Ki jan vini li di sou òdinatè ou
ki di ou gen plis memwa pase ou te fè anvan?
Gen plis memwa pase ou te fè anvan - >> [elèv] Plis disponib memwa.
Oh. Bon kesyon.
Se konsa, poukisa Lè sa a, apre vidanj fatra a òdinatè w lan di w
ki di ou gen plis gratis espas pase ou te fè anvan?
Nan yon Nutshell, paske li nan bay manti.
Plis teknikman, ou gen plis espas paske kounye a ou te di
ou ka mete lòt bagay kote ki dosye te yon fwa.
Men, sa pa vle di Bits yo yo pral lwen,
ak sa pa vle di Bits yo yo te chanje nan tout 0s, pou egzanp,
pou pwoteksyon ou.
Se konsa, pa kontra, si ou byen efase dosye oswa fizikman detwi aparèy la,
ki vrèman se yon fason a sèlman pafwa alantou sa.
>> Se konsa, poukisa pa nou kite sou ki note semi-pè, ak nou pral wè ou nan Lendi.
[Aplodisman]
>> [CS50.TV]