[MIZIK jwe] ZAMYLA Chan: Se pou nou atake geri. Refè se pwobableman PSET pi renmen m ', ak sitou paske mwen panse ke li nan reyèlman, reyèlman fre. Fondamantalman, w ap ba yo yon memwa dosye kat nan ki foto yo te efase. Men, sa ki w ap ale nan fè se refè yo tout. OK. Se konsa, li vrèman enteresan, men petèt yon ti kras entimidasyon, paske w ap bay yon dosye C vid ak , ou oblije ranpli li pous OK, se konsa se pou yo kraze sa a nan pati jere. Ou pral vle louvri nan dosye kat memwa. Ki sanble senp ase. Lè sa a, jwenn nan konmansman an nan yon imaj JPG. Tout dosye yo sou sa a memwa kat yo ale nan dwe jpg. Lè sa a, yon fwa ou jwenn nan konmansman an, w ap ale nan louvri yon nouvo JPG, ki se, tankou, kreye yon JPG, epi ekri 512 multiple nan yon tan jiskaske yon nouvo JPG se jwenn, epi ki fini pwogram nan, yon fwa ou detekte nan fen dosye a. Se konsa, premye etap premye se yo louvri dosye a kat memwa. Men ou konnen sa a deja, epi gen nan yon dosye mwen / O fonksyon ki nan ale nan pwouve trè itil. OK. Se konsa, sa yo se jpg? Paske nou bezwen nan konmansman an li. Oke, jpg, jis tankou ti jan kat, yo se jis sekans nan bytes. Chans pou, chak JPG kòmanse ak swa 0xff, 0xd8, 0xff, 0xe0, yon sèl sekans nan bytes, oswa yon lòt sekans bytes. Se konsa, kat bytes sa yo endike kòmanse nan yon JPG. Okenn lòt pase de konbinezon sa yo nan kat bytes. Apre sa, Chans pou pou nou, yon lòt reyalite ke nou kapab pran avantaj de se ke chak JPG ki estoke bò-a-kòt sou kat la memwa. Mwen te reprezante estrikti a nan yon kat memwa Schematics sa a sou glise isit la. Isit la, chak kare, chak rektang, reprezante 512 bytes, epi li kòmanse ak yon gri nan ke nou pa fè sa vrèman gen yon JPG. Men, Lè sa a, nou finalman frape yon blòk ki gen yon zetwal. Sa vle di ke kat premye bytes yo soti nan tout sa yo 512 yo se youn nan moun ki de kòmanse sekans nan yon JPG. Apre sa, nou ale nan la, ak Lè sa a, yon fwa yon sèl JPG fini, youn nan pwochen an kòmanse. Nou pa janm gen nenpòt plis espas gri nan-ant. Men, ki jan nou aktyèlman li sa a, epi li 512 bytes yo pou ke nou ka fè konparezon an plas an premye? Oke, kite la tounen nan frèd, ki pran nan konstri la ki pral genyen bytes sa yo ke ou ap li. Se konsa, w ap ale nan mete moun ki nan gen - gwosè a, ki kantite, ak Lè sa a, inpointer ke w ap lekti nan. Koulye a, nou vle li 512 nan yon moman, ak nou vle nan magazen sa a nan yon zòn de defans, Mwen pral rele li. Fondamantalman, nou pral kenbe sou sa yo 512 bytes ak fè bagay sa yo avèk li, dwa? Nou ap swa ale nan konpare premye a kat bytes, oswa nou pral li li l 'nan, OK? Se konsa, Lè sa a, konsèy la done pral Lè sa a, sèvi kòm tanpon ou a, ak nan inpointer, byen, sa se sèlman pral yo dwe kat memwa ou. Retounen nan schematic kat memwa nou an. Nou pral li 512 bytes nan yon moman, estoke chak blòk 512-multiple nan yon zòn de defans, kenbe sou sa yo pezib, moun 512 bytes, jouk nou konnen egzakteman sa yo dwe fè yo. Se konsa, nan konmansman an se pa anyen, se konsa nou pral li tanpon a, konpare l ', li nou pa pral bezwen fè anyen ak li. Lè sa a,, nou finalman frape yon etwal bloke, sa vle di nou te yo te jwenn premye JPG nou an. Se konsa, tanpon a kounye a kenbe bytes de sa JPG. Tan nan pwochen 512 bytes, paske yo ap pa yon blòk etwal, yo tou yon pati nan ki JPG. Apre sa, jpg yo se kontinyèl soti nan gen sou an, jouk nou frape JPG nan pwochen an. Lè sa a, tanpon la Lè sa a, kenbe 512 bytes pou sa JPG, ak sou sa, ak pou fè. OK. Se konsa, yon fwa ou frape premye joue nan blòk, premye JPG a, ki jan ou fè aktyèlman, byen, louvri l? Se pou yo fè yon nouvo JPG. Non yo pou yon JPG yo ale nan dwe nan fòma a, nimewo, nimewo, number.jpg, nan yo ke yo ap rele nan nan ki lòd yo jwenn yo deja, kòmanse nan 0. Se konsa, JPG nan premye ke ou jwenn yo pral 000.jpg. Se konsa, pwobableman yon bon lide yo kenbe tras nan ki jan anpil jpg ou te jwenn twò lwen. Se konsa, sa a, se non an dosye-a. Men, ki jan ou aktyèlman fè sa? Oke, nou ap ale nan sèvi ak yon fonksyon rele sprintf. Yon ti kras menm jan ak printf, kote ou ka sèvi ak placeholders pou strings, eksepte nan ka sa a, sprintf pral enprime dosye a deyò nan aktyèl la anyè, pa nan tèminal la. OK. Se konsa, isit la nou wè ke nou gen tit, yon etalaj Char ki pral magazen an resultant fisèl, epi nou pase nan la tit nan fil aktyèl la ak yon kontneur, jis tankou nou te aprann fè ak printf. Men, sa a kòd ki mwen gen isit la ap ba 2.jpg, pa 002.jpg. Se konsa, mwen pral kite ou jwenn konnen kouman ou kapab modifye kontneur la fè a kòrèk Non. OK. Se konsa, yon fwa ou te sprintf'd Lè sa a, ou kapab louvri ke dosye, paske li egziste nan anyè ou, ak fopen, lè l sèvi avèk la tit, ak Lè sa a, tou sa mòd ou vle yo louvri ke dosye pous Se konsa, kounye a ke nou te louvri yon nouvo dosye JPG, kounye a nou ka ekri 512 bytes nan yon tan, jiskaske yo jwenn yon nouvo JPG. Se konsa, kite a pran yon lòt gade nan sentaks la nan fwrite. Mwen konnen ke mwen ki montre glise sa a yon anpil, men mwen jis vle asire w ke ou nèg Pa vin twò mele, paske Mwen konnen ke li trè fasil a melanje moute premye a ak dènye a agiman yo, an patikilye. Men, sonje ke w ap ekri ki soti nan tanpon ou nan imaj sa yo dosye deyò. Kounye a ke ou konnen ki jan ekri nan 512 bytes nan dosye JPG ou ke ou te kreye, byen, nou vle yo sispann ki pwosesis yon fwa nou te rive nan nan fen kat nou an, paske se la pa pral nenpòt ki imaj plis yo dwe jwenn. Se konsa, kite a tounen nan frèd yon fwa plis, mwen te pwomèt. frèd retounen konbyen atik nan gwosè, gwosè, te pare nan avèk siksè. Idealman, sa a se pral fè tou sa ou pase nan pou yon nimewo pou, dwa? Paske w ap eseye li nimewo nan eleman ki gen yon gwosè, gwosè. Men, si frèd a pa kapab li sa kantite eleman, Lè sa a, li pral retounen tou sa nimewo li li avèk siksè. Koulye a, se yon sèl bagay enpòtan sonje se ke si ou sèvi ak yon lòt dosye mwen / O fonksyon tankou fgetc, li pral retounen tou ki jan plizyè atik li li avèk siksè. Ki sa ki nan itil sou fonksyon sa a se ke si ou itilize fonksyon andedan nan yon kondisyon, li pral egzekite tèt li pandan y ap pou detèmine si ke kondisyon, ki se jis reyèlman itil. Se konsa, si ou gen sa a kondisyon, di, si frèd tanpon, sizof DOG, 2, konsèy, egal egal 1, ki vle di ke mwen ta renmen li 2 chen nan moman an. Men, si frèd retounen 1 olye pou yo 2 kòm yo espere a, sa vle di ke gen 2 chen kite nan dosye mwen, men pito 1. Men, si li retounen 2, Lè sa a, mwen toujou gen sa yo 2 chen andedan nan zòn de defans mwen. Se konsa, kounye a ke ba ou yon sans pou konnen kijan pou tcheke pou fen a nan dosye a, men kite yo ale la a kounye a lojik la. Ki jan nou fè aktyèlman moso tout nan eleman sa yo ansanm? Yon fwa nou frape premye JPG nou an, depi nou konnen ke jpg yo estoke kontigu, nou pral ekri jouk nou rive nan fen an nan dosye a kat. Men, nou pa vle ekri anyen jouk lè sa a. Se konsa, li enpòtan, se pa sèlman ke nou ap nan kòmanse nan yon nouvo JPG, men si wi ou non nou te deja jwenn yon JPG oswa ou pa. Si Li nan kòmansman an nan yon nouvo JPG, nou pral vle fèmen dosye JPG kounye a nou an si Nou gen yon sèl louvri, epi yo louvri yon nouvo yo ekri nan. Si li pa kòmanse nan JPG nan nouvo, menm si, nou pral kenbe dosye a JPG menm louvri ak ekri nan sa. Nou pral ekri tanpon nou an, nan kèlkeswa sa ki Dosye JPG nou gen louvri, bay ki Nou gen yon sèl louvri, nan kou. Si nou pa jwenn premye JPG nou ankò, nou pa ekri anyen. Apre sa, pwosesis sa a ap kontinye jiskaske ou rive nan fen an nan dosye a kat. E finalman, ou pral vle fè asire w ke ou fkloz nenpòt ki dosye ke ou te fopened. Yon fwa w ap konfòtab ak nan konsèp, pran yon gade nan kèk pseudocode, ki mwen te enkli isit la. Premyèman, ou vle ouvri dosye a kat, ak Lè sa a, repete pwosesis sa a jouk ou te rive nan nan nan fen kat la. Ou vle li 512 bytes nan yon zòn de defans. Lè l sèvi avèk ki pezib, ou pral vle tcheke si wi ou non ou se nan kòmansman an nan yon nouvo JPG oswa ou pa. Apre sa, repons lan nan kesyon an pral afekte jesyon dosye ou - ki dosye ou louvri, ki moun ou fèmen. Lè sa a, ou deja jwenn yon JPG? Ki jan ou te kenbe tras nan sa? Lè sa a, tou depann de sa, ou pral swa ekri nan JPG aktyèl la ke ou gen ou ouvè, oubyen pa ekri li nan tout, paske ou pa yo te jwenn yon JPG ankò. Finalman, yon fwa ou te rive nan nan fen dosye a, ou pral vle yo fèmen nenpòt ki rete dosye ke ou gen louvri. Nou vle pwòp isit la. Apre sa, ak sa, ou te refè tout dosye yo ki manke nan ki memwa kat, ki se yon feat trè dwòl. Se konsa, PAT tèt ou sou do an. Men, gen nan yon eleman plis PSET a, ki se konpetisyon an. Ou ap jwenn ke tout nan foto yo ke ou te refè yo aktyèlman foto nan anplwaye CS50 la. Se konsa, si w ap sou lakou lekòl la oubyen yon kote bò kote yo, Lè sa a, ou ka pran foto ak anplwaye a, ak seksyon ki gen nan pi foto ak manm pèsonèl soti nan dosye refè yo pral jwenn yon pwi pè. Ak sa, Lè sa a, ou te fini refè an PSET. Non mwen se Zamyla, e sa se CS50.