1 00:00:00,000 --> 00:00:00,494 2 00:00:00,494 --> 00:00:13,350 >> [Mūzikas atskaņošanai] 3 00:00:13,350 --> 00:00:14,080 >> ROB BOWDEN: Hi. 4 00:00:14,080 --> 00:00:17,550 Es esmu Rob, un pieņemsim ceram, ka šis risinājums palīdz likt jums 5 00:00:17,550 --> 00:00:19,600 ceļā uz atveseļošanos. 6 00:00:19,600 --> 00:00:22,700 Tātad, pieņemsim sāktu. 7 00:00:22,700 --> 00:00:25,660 >> Mēs redzam, ka tieši mēs esam tikai, lai pārliecinātos, ka mēs esam 8 00:00:25,660 --> 00:00:27,170 izmantojot atgūt pareizi. 9 00:00:27,170 --> 00:00:31,490 Tā lietošana ir vienkārši kaut kas piemēram, dot slash atgūt. 10 00:00:31,490 --> 00:00:35,500 >> Tagad mēs esam gatavojas atvērt gaidāms card dot neapstrādātu failu. 11 00:00:35,500 --> 00:00:39,740 Mēs redzam šeit, ka mēs izmantojam pastāvīga neapstrādāts pasvītrojums faila nosaukumu, 12 00:00:39,740 --> 00:00:44,200 kas šeit mums ir hash definēta kā card dot izejvielas. 13 00:00:44,200 --> 00:00:45,030 OK. 14 00:00:45,030 --> 00:00:48,210 >> Tāpēc mums ir nepieciešams, lai pārliecinātos, ka tas sekmīgi uzsākta, jo, ja tas 15 00:00:48,210 --> 00:00:51,150 nav, tad mums būtu jābrīdina lietotājs. 16 00:00:51,150 --> 00:00:56,770 Bet, pieņemot, ka tas bija, mēs esam tagad gatavojas atzīt buferi izmēra JPEG 17 00:00:56,770 --> 00:00:58,170 faila nosaukuma garums. 18 00:00:58,170 --> 00:01:02,060 Tātad šis būs buferis, ka Mēs ejam, lai sprintf into. 19 00:01:02,060 --> 00:01:04,360 >> Tātad, kas ir JPEG faila nosaukuma garums? 20 00:01:04,360 --> 00:01:08,490 Šeit mēs redzam, ka tas ir hash definēta kā astoņi. 21 00:01:08,490 --> 00:01:10,670 Tātad, kāpēc astoņi? 22 00:01:10,670 --> 00:01:15,150 Nu ņemot vērā, fails tiks nosaukts kaut kā nulle nulle nulle. 23 00:01:15,150 --> 00:01:19,460 JPG, un tad mums ir nepieciešams slīpsvītru nulles. 24 00:01:19,460 --> 00:01:22,720 Tāpēc mums ir nepieciešams buferis, kas var saglabāt astoņas rakstzīmes. 25 00:01:22,720 --> 00:01:25,190 Tagad mēs esam nāksies counter, kas ir gatavojas sekot 26 00:01:25,190 --> 00:01:27,780 numurs JPEG mēs atradām. 27 00:01:27,780 --> 00:01:31,590 >> Un visbeidzot, mēs esam nāksies JPEG failu, kas sākotnēji null 28 00:01:31,590 --> 00:01:35,920 kas būs pašlaik atvērt failu, ka mēs esam rakstiski. 29 00:01:35,920 --> 00:01:37,540 Tagad mēs esam nāksies papildus buferis. 30 00:01:37,540 --> 00:01:41,350 Tas ir tas pats kā mūsu sprintf buferis, ja tas buferis ir viens 31 00:01:41,350 --> 00:01:45,020 ka mēs lasāt datos No karti dot izejvielas. 32 00:01:45,020 --> 00:01:48,900 >> Tāpēc buferis būs par neparakstīts simboli, ko jūs varat 33 00:01:48,900 --> 00:01:53,560 būtībā tikai pret mums baiti, un tas ir būs no izmēra bloka izmērs 34 00:01:53,560 --> 00:01:57,950 kur, kā mēs jums pastāstīt, bloka izmērs ir 512. 35 00:01:57,950 --> 00:02:03,070 Tātad, JPEG jūs varat ārstēt visu kā blokiem 512 baitu. 36 00:02:03,070 --> 00:02:05,890 >> Tagad mēs ejam uz cilpas visā failā. 37 00:02:05,890 --> 00:02:12,980 Mēs ejam, lai f lasīt mūsu bufera vienu baitu bloka izmērs reizes no 38 00:02:12,980 --> 00:02:14,710 card dot neapstrādātu failu. 39 00:02:14,710 --> 00:02:16,630 Tagad Kāda f lasīt atgriezties? 40 00:02:16,630 --> 00:02:20,050 Tā atgriež vienību skaitu ka tā veiksmīgi lasīt. 41 00:02:20,050 --> 00:02:27,310 Tātad, ja tas ir izdevies izlasīt 512 baiti, tad Mēs gribam, lai redzētu, vai tas bija 42 00:02:27,310 --> 00:02:29,700 JPEG vai rakstīt to JPEG failā. 43 00:02:29,700 --> 00:02:34,450 Un, ja tas neatgriezās 512 baiti, Tad nu fails ir beidzies 44 00:02:34,450 --> 00:02:37,870 un tādā gadījumā mēs izkļūt no y cilpa, vai ir daži no kļūdas veida 45 00:02:37,870 --> 00:02:40,300 tādā gadījumā mēs arī izkļūt no y cilpa, bet mēs gribam, lai ziņotu 46 00:02:40,300 --> 00:02:41,990 ka kaut kas nogāja greizi. 47 00:02:41,990 --> 00:02:42,290 >> OK. 48 00:02:42,290 --> 00:02:47,630 Tātad, pieņemot, ka mēs veiksmīgi nolasīt 512 baiti, mēs vēlamies, lai pirmo pārbaudi 49 00:02:47,630 --> 00:02:53,070 lai šie baiti, ka mēs tikai lasīt sākt JPEG. 50 00:02:53,070 --> 00:02:56,430 Tātad, ja ir JPEG header mūsu bufera. 51 00:02:56,430 --> 00:02:58,460 Tagad Kas tas ir JPEG header dara? 52 00:02:58,460 --> 00:03:00,120 Apskatīsim. 53 00:03:00,120 --> 00:03:05,270 >> Šeit mēs redzam, ka šī funkcija ir atgriežoties bullis, un ka bullis - 54 00:03:05,270 --> 00:03:08,820 arī šeit, mēs esam pārbaudi, lai noskaidrotu, vai header nulles vienāds ar šo konstanti un 55 00:03:08,820 --> 00:03:11,880 header viens ir vienāds ar šo konstanti un header divi ir šo konstanti, 56 00:03:11,880 --> 00:03:15,640 header trīs vienāds ar to vai šo nemainīgs, ja visi šie konstantes ir 57 00:03:15,640 --> 00:03:20,340 tikai hash noteikts tieši šeit, un ir tieši tas, ko mēs teicām jums spec 58 00:03:20,340 --> 00:03:22,700 ka JPEG sākas ar. 59 00:03:22,700 --> 00:03:27,300 Un tāpēc šī funkcija ir tikai gatavojas atgriezties true, ja tas buferis ir 60 00:03:27,300 --> 00:03:31,750 sākums jaunai JPEG un viltus citādi. 61 00:03:31,750 --> 00:03:32,520 >> OK. 62 00:03:32,520 --> 00:03:38,490 Tātad, ja tas nav veido jaunu JPEG, tad mēs vispirms vēlamies pārbaudīt, lai redzētu, vai 63 00:03:38,490 --> 00:03:42,030 JPEG fails nav vienāds ar nulli, un tādā gadījumā mēs to aizvērtu. 64 00:03:42,030 --> 00:03:44,940 Un tad kāpēc mums ir nepieciešams, lai pārbaudītu lai redzētu, vai tas nav null? 65 00:03:44,940 --> 00:03:48,980 Nu pats pirmais JPEG, ka mēs atrast mums jau nav 66 00:03:48,980 --> 00:03:50,440 atvērt JPEG failu. 67 00:03:50,440 --> 00:03:55,580 Un tā, ja mēs cenšamies slēgt, ka pēc tam mēs nedarām kaut ko gluži labi. 68 00:03:55,580 --> 00:03:59,090 >> Bet katrs nākamais JPEG ka mēs atveram, mēs vēlamies, lai aizvērtu 69 00:03:59,090 --> 00:04:00,710 Iepriekšējais attēls. 70 00:04:00,710 --> 00:04:04,630 Tāpēc tagad mēs esam gatavojas izmantot sprintf kā mēs teicu, ja mēs izmantojam 71 00:04:04,630 --> 00:04:06,280 bufera JPEG faila nosaukumu. 72 00:04:06,280 --> 00:04:09,870 Un mēs esam gatavojas izmantot JPEG failu nosaukt formātā kā mūsu formātā. 73 00:04:09,870 --> 00:04:12,030 Un kas tas ir? 74 00:04:12,030 --> 00:04:18,450 Šeit mēs redzam, ka tas ir procenti nulle 3D.JPEG kur nulles trīs tikko 75 00:04:18,450 --> 00:04:22,089 saka, ka mēs izmantosim trīs skaitļu par to polsterētām ar nullēm. 76 00:04:22,089 --> 00:04:27,470 Tātad, tas ir, kā mēs iegūtu nulle nulle one.JPEG un nulle 10.JPEG un tā tālāk. 77 00:04:27,470 --> 00:04:29,060 >> Mēs ejam, lai izmantotu sprintf. 78 00:04:29,060 --> 00:04:33,760 Un skaitlis, ko mēs esam ievietojot vērā virkne ir sastindzis JPEG 79 00:04:33,760 --> 00:04:36,380 atgūti, kas sākotnēji nulli. 80 00:04:36,380 --> 00:04:39,950 Tātad pirmais datne būs ir nulle nulle nulle dot JPEG. 81 00:04:39,950 --> 00:04:43,330 Un tad mēs esam palielināšanai tā, lai Nākamais attēls mēs atveram būs nulle nulle 82 00:04:43,330 --> 00:04:46,830 viens dot JPEG un mēs pieauguma to atkal tā tas būs nulle nulle divi dot 83 00:04:46,830 --> 00:04:49,100 JPEG un tā tālāk. 84 00:04:49,100 --> 00:04:49,850 >> Labi. 85 00:04:49,850 --> 00:04:53,210 Tāpēc tagad iekšpusē JPEG failu nosaukums, mēs esam nosaukumu 86 00:04:53,210 --> 00:04:54,990 fails, ko mēs gribam. 87 00:04:54,990 --> 00:04:58,640 Mēs varam f atvērt šo failu rakstīšanai. 88 00:04:58,640 --> 00:04:59,170 OK. 89 00:04:59,170 --> 00:05:02,820 Un atkal, mums ir nepieciešams pārbaudīt, lai padarītu pārliecināts, ka fails veiksmīgi 90 00:05:02,820 --> 00:05:08,460 atvērts, jo, ja tā nav, tad tur bija dažas kļūdas. 91 00:05:08,460 --> 00:05:13,100 >> Tāpēc tagad mēs esam gotten pagātnē tas JPEG daļa. 92 00:05:13,100 --> 00:05:16,390 Un šeit mēs redzam, mēs ejam rakstīt uz JPEG. 93 00:05:16,390 --> 00:05:20,980 Bet mums vispirms ir šo pārbaudi, kas saka ja JPEG failā nav vienāda null. 94 00:05:20,980 --> 00:05:22,490 Kāpēc mums ir nepieciešams, ka? 95 00:05:22,490 --> 00:05:28,020 Nu JPEG failu vienāda null kad mēs pašlaik ir atvērts JPEG. 96 00:05:28,020 --> 00:05:31,870 >> Ko darīt, ja karte dot izejvielas sākas ar ķekars baitu, kas 97 00:05:31,870 --> 00:05:33,510 nerada JPEG? 98 00:05:33,510 --> 00:05:36,240 Tad mēs esam gatavojas vēlaties izlaist pār šo baitu. 99 00:05:36,240 --> 00:05:39,600 Ja mums nav šo pārbaudi, tad mēs esam gatavojas rakstīt neatvērts 100 00:05:39,600 --> 00:05:45,540 failu pirmos 512 baitu karte, kas nav labi. 101 00:05:45,540 --> 00:05:46,030 OK. 102 00:05:46,030 --> 00:05:51,330 >> Tātad pieņemot, ka mums ir atvērt failu, tad mēs esam gatavojas rakstīt šo failu 103 00:05:51,330 --> 00:05:53,290 512 baiti, kas mums ir mūsu buferis. 104 00:05:53,290 --> 00:05:57,390 Un mēs atkal pārbaudes, lai pārliecināts, ka 512 baiti veiksmīgi 105 00:05:57,390 --> 00:06:01,140 bija rakstīts, jo, ja tie nav veiksmīgi rakstīts, tad kaut 106 00:06:01,140 --> 00:06:02,080 nogāja greizi. 107 00:06:02,080 --> 00:06:06,540 Mēs aizvērt mūsu failus, drukāt, ka kaut kas nogāja greizi, un atgriešanās. 108 00:06:06,540 --> 00:06:10,940 Pieņemot, ka viss iet pareizi, tad mēs turpinām looping slēgšanu 109 00:06:10,940 --> 00:06:15,060 vecais fails, atverot jaunu failu, rakstot datus uz jaunu failu, un tā 110 00:06:15,060 --> 00:06:20,990 gada līdz beidzot tas f lasīt atgriež nulli, kas nozīmē 111 00:06:20,990 --> 00:06:23,280 ka fails tiek darīts. 112 00:06:23,280 --> 00:06:28,490 >> Tāpēc tagad, ka karšu lasīšanas ir beidzies, mēs redzēt, ka mēs ejam, lai f slēgt 113 00:06:28,490 --> 00:06:33,250 pēdējā faila, ka mums bija atvērts, bet mēs pārbaudīt, ja JPEG fails 114 00:06:33,250 --> 00:06:34,900 nav vienāds null. 115 00:06:34,900 --> 00:06:39,520 Nu f tuvu jēga, jo, mēs atvērt failus, mēs slēdzot 116 00:06:39,520 --> 00:06:43,870 Iepriekšējais attēls, bet ļoti pēdējā failu, ka mēs atvērām nekad izpaužas slēgts. 117 00:06:43,870 --> 00:06:45,580 Tātad tas, ko tas dara. 118 00:06:45,580 --> 00:06:47,720 >> Bet kāpēc mums ir nepieciešams, lai pārbaudītu null? 119 00:06:47,720 --> 00:06:53,130 Nu ko, ja karte dot jēlas nebija ir viens JPEG iekšpusē no tā? 120 00:06:53,130 --> 00:06:56,640 Tādā gadījumā mums būtu nekad nav atvēris failu. 121 00:06:56,640 --> 00:07:00,230 Un, ja mēs nekad atvērt failu, mums vajadzētu nav mēģināt slēgt šo failu. 122 00:07:00,230 --> 00:07:03,000 Tātad tas, ko šī pārbaude dara. 123 00:07:03,000 --> 00:07:07,880 >> Tagad šeit, kā es teicu iepriekš, mēs varētu ir izcēlies, ka y cilpu nu ja 124 00:07:07,880 --> 00:07:13,520 karte ir beigusies, vai, ja ir dažas kļūdas lasot no kartes. 125 00:07:13,520 --> 00:07:16,680 Tātad šis ir pārbaudīt, lai redzētu, vai tur bija lasīšanas kļūda no kartes, kas 126 00:07:16,680 --> 00:07:19,400 tādā gadījumā, mēs sakām, ka bija kļūda lasījumā. 127 00:07:19,400 --> 00:07:22,130 Mēs nevēlamies, lai lietotājs varētu domāt viss gāja veiksmīgi. 128 00:07:22,130 --> 00:07:24,750 Un mēs atgrieztos viena kļūda. 129 00:07:24,750 --> 00:07:29,580 >> Visbeidzot, mēs f slēgt mūsu neapstrādātu failu, Mūsu card dot izejvielas, lai norādītu, ka 130 00:07:29,580 --> 00:07:34,070 viss gāja labi, un atgriešanās nulle, un tas arī viss. 131 00:07:34,070 --> 00:07:36,130 >> Mans vārds ir Rob, un tas bija atgūt. 132 00:07:36,130 --> 00:07:42,102 >> [Mūzikas atskaņošanai]