1 00:00:00,000 --> 00:00:02,000 [Powered by Google Translate] [Valgrind] 2 00:00:02,000 --> 00:00:05,000 [Nate Hardison, Harvard University] 3 00:00:05,000 --> 00:00:07,000 Hoc est CS50, CS50.TV] 4 00:00:07,000 --> 00:00:10,000 Nonnullus of plurrimi difficilis bugs in C progressio 5 00:00:10,000 --> 00:00:13,000 mismanagement ex memoria. 6 00:00:13,000 --> 00:00:15,000 Sunt ingentem numerum vias ad screw res sursum, 7 00:00:15,000 --> 00:00:17,000 quos possidet dispertientes iniuriam amount of memoria, 8 00:00:17,000 --> 00:00:20,000 oblivionis initialize variabilium, 9 00:00:20,000 --> 00:00:23,000 scribens, ante vel post finis quiddam, 10 00:00:23,000 --> 00:00:25,000 liberat memoriam multiple temporibus. 11 00:00:25,000 --> 00:00:28,000 Symptoms vagarentur a intermittentium fragosus 12 00:00:28,000 --> 00:00:30,000 ad arcano overwritten valores, 13 00:00:30,000 --> 00:00:34,000 saepe locis ac temporibus longe a pristino errore. 14 00:00:34,000 --> 00:00:37,000 Repetens hunc observatorum forsit retro ad subjectam radix causa 15 00:00:37,000 --> 00:00:39,000 potest provocantes, 16 00:00:39,000 --> 00:00:42,000 sed fortunate illic 'a benevolens progressio vocavit Valgrind 17 00:00:42,000 --> 00:00:44,000 multum iuvare possunt ut. 18 00:00:44,000 --> 00:00:47,000 >> Concurrentibus vobis protracta et sub Valgrind ut enable 19 00:00:47,000 --> 00:00:50,000 rotensus tenendo de acervum memoria allocationes et aditus. 20 00:00:50,000 --> 00:00:53,000 Quando Valgrind detegit forsit, eam dat vos immediata, 21 00:00:53,000 --> 00:00:56,000 dirige notitia ut sino vos ut 22 00:00:56,000 --> 00:00:58,000 facilius statuerentque consequat. 23 00:00:58,000 --> 00:01:01,000 Valgrind etiam relationes de minus funestae memoria exitibus, 24 00:01:01,000 --> 00:01:04,000 ut memoriam effluo, dispertientes acervum memoria, 25 00:01:04,000 --> 00:01:07,000 atque obliti liberare eam. 26 00:01:07,000 --> 00:01:10,000 Noster ut compilator, CLANGO, in nostra debugger, GDB, 27 00:01:10,000 --> 00:01:14,000 Valgrind libera est software, et est installed in INSTRUMENTUM. 28 00:01:14,000 --> 00:01:16,000 Valgrind currit in vestri binariae executable, 29 00:01:16,000 --> 00:01:20,000 non tuo. c vel. h source codice lima, 30 00:01:20,000 --> 00:01:23,000 ita scilicet quod tempus quaeque res ad copiam, ut proposuisti, 31 00:01:23,000 --> 00:01:25,000 usura CLANGO aut Fac. 32 00:01:25,000 --> 00:01:28,000 Tunc, currentes vestri progressio sub Valgrind potest esse 33 00:01:28,000 --> 00:01:32,000 ut simplex ut iustus praepositione vexillum progressio imperium est, verbum Valgrind, 34 00:01:32,000 --> 00:01:35,000 quae satus sursum Valgrind et decurrit progressio inside of eam. 35 00:01:35,000 --> 00:01:38,000 Quando assumptione laboris, Valgrind facit aliqua complexu 36 00:01:38,000 --> 00:01:41,000 jiggering ad configurare executable enim memoria compescit, 37 00:01:41,000 --> 00:01:44,000 et sic potest habere amet cursus. 38 00:01:44,000 --> 00:01:48,000 Progressio mos tunc exequi normaliter, sit multo tardius, 39 00:01:48,000 --> 00:01:52,000 et quando finit Valgrind erit procer a summarium ejus memoria instructio. 40 00:01:52,000 --> 00:01:58,000 Si recte, est simile huic: 41 00:01:58,000 --> 00:02:01,000 Hic. / Clean_program 42 00:02:01,000 --> 00:02:04,000 Volo currere iter est propositum. 43 00:02:04,000 --> 00:02:06,000 Atque haec non sit aliquid, argumenta, 44 00:02:06,000 --> 00:02:09,000 sicut si esset malim more SUO imperium in finem. 45 00:02:09,000 --> 00:02:12,000 Clean progressio est iustus a imbecillam progressio creata sum 46 00:02:12,000 --> 00:02:15,000 qui allocates spatii per obstructionum de ints in acervum, 47 00:02:15,000 --> 00:02:19,000 adficient ex valores inside of eos, et liberat totum stipitem faciunt. 48 00:02:19,000 --> 00:02:23,000 Hoc est quod vestri 'sagittam dirigens, nullus errores et non diffluat. 49 00:02:23,000 --> 00:02:27,000 >> Alius maximus metric est totalis numerus bytes partita. 50 00:02:27,000 --> 00:02:32,000 Fretus consilio, si in megabytes allocationes altioris, 51 00:02:32,000 --> 00:02:34,000 vestri 'forsit facientem aliquid iniuriam. 52 00:02:34,000 --> 00:02:37,000 Es vos superflue thesaurizantes effingo? 53 00:02:37,000 --> 00:02:40,000 Es vos usura acervum repono, cum melius esset uti ACERVUS? 54 00:02:40,000 --> 00:02:43,000 Sic, memoria errores possunt esse vere malum. 55 00:02:43,000 --> 00:02:46,000 Magis exteriorem ones causa spectacular fragosus, 56 00:02:46,000 --> 00:02:49,000 tamen etiam sic difficile pinpoint 57 00:02:49,000 --> 00:02:51,000 quidnam sonus ducebatur. 58 00:02:51,000 --> 00:02:54,000 More insidiose, protracta et memoria error 59 00:02:54,000 --> 00:02:56,000 potest adhuc compilare, munde 60 00:02:56,000 --> 00:02:58,000 et potest adhuc videor laboro recte 61 00:02:58,000 --> 00:03:01,000 quia vos curo ut adepto Fortunatus, potissimum vicis. 62 00:03:01,000 --> 00:03:04,000 Post plures "prospere prouentuum," 63 00:03:04,000 --> 00:03:07,000 vos vires iustus, qui arbitretur fragore est DENS de computer, 64 00:03:07,000 --> 00:03:10,000 sed computer est nunquam iniuriam. 65 00:03:10,000 --> 00:03:13,000 >> Cursor Valgrind can succurro vos indagamus causa visibilis memoria errores 66 00:03:13,000 --> 00:03:18,000 necnon invenire latens errores te ne nondum cognoscitis circuitum. 67 00:03:18,000 --> 00:03:22,000 Sulum vicis Valgrind detegit forsit, eam procer information about quid observari. 68 00:03:22,000 --> 00:03:24,000 Singulis item est modice Adstrictior - 69 00:03:24,000 --> 00:03:27,000 causa offensionis recta doctrina, qualis sit, 70 00:03:27,000 --> 00:03:30,000 et paulo info de memoria involved - 71 00:03:30,000 --> 00:03:34,000 Satis esse magna cura saepe loco regerent. 72 00:03:34,000 --> 00:03:37,000 Hic est exemplum Valgrind cursor in a buggy progressio 73 00:03:37,000 --> 00:03:40,000 qui facit invalido legere de acervum memoria. 74 00:03:40,000 --> 00:03:49,000 Nullum videmus, errores nec admonitionibus in compilation. 75 00:03:49,000 --> 00:03:53,000 Uh-oh, errorem summary dicit quod sunt duo errores - 76 00:03:53,000 --> 00:03:56,000 duo invalidum legit molis IV - bytes, hoc est. 77 00:03:56,000 --> 00:04:01,000 Malos legit facta in pelagus functio ipsius invalid_read.c, 78 00:04:01,000 --> 00:04:04,000 primus in linea XVI et secunda in linea XIX. 79 00:04:04,000 --> 00:04:06,000 Intueamur iuris. 80 00:04:06,000 --> 00:04:11,000 Spectat, sicut prima, vocatio ad printf conatur Aliud legunt int praeteritum finis nostrae memoria stipitem faciunt. 81 00:04:11,000 --> 00:04:13,000 Si respiciamus ad Valgrind scriptor output, 82 00:04:13,000 --> 00:04:16,000 videmus quod Valgrind narraverunt nobis exigo ut. 83 00:04:16,000 --> 00:04:19,000 Oratio erant 'trying ut legere incipit, 0 bytes 84 00:04:19,000 --> 00:04:22,000 praeteritum finem obstructionum molis XVI bytes - 85 00:04:22,000 --> 00:04:25,000 quattuor XXXII frenum ints quod nos disposuit. 86 00:04:25,000 --> 00:04:29,000 Quod legitur prima oratio nostra recta cupiens impedimentum finis, 87 00:04:29,000 --> 00:04:32,000 sicut videmus in nostra malus printf invoca. 88 00:04:32,000 --> 00:04:36,000 Nunc, invalidum legit ut non videatur sicut ut magnus of a paciscor, 89 00:04:36,000 --> 00:04:39,000 si continere flumen Lorem ipsum dolor utentes - 90 00:04:39,000 --> 00:04:42,000 puta quod ponatur pars si propositione vel loop - 91 00:04:42,000 --> 00:04:45,000 tunc rebus potest silently ire malus. 92 00:04:45,000 --> 00:04:47,000 Vigilate quomodo possum currendam invalid_read progressio 93 00:04:47,000 --> 00:04:50,000 et nihil ex ordinaria contingit. 94 00:04:50,000 --> 00:04:52,000 FORMIDULOSUS, huh? 95 00:04:52,000 --> 00:04:56,000 >> Sed plura genera Intueamur ut perspiciatis error in Codice, 96 00:04:56,000 --> 00:04:59,000 quod puteus 'videre quomodo Valgrind detegit eos. 97 00:04:59,000 --> 00:05:01,000 Nos iustus vidit exemplatum invalid_read, 98 00:05:01,000 --> 00:05:04,000 ita nunc, scriptor reprehendo sicco an invalid_write. 99 00:05:04,000 --> 00:05:09,000 Rursus, nullum errores nec admonitionibus in compilation. 100 00:05:09,000 --> 00:05:12,000 Okay, Valgrind dicit quod sunt duo errores in hoc propositum - 101 00:05:12,000 --> 00:05:15,000 et invalid_write et invalid_read. 102 00:05:15,000 --> 00:05:18,000 Lorem ipsum Codicem sit amet. 103 00:05:18,000 --> 00:05:21,000 Vultus amo weve 'got instantia classic strlen, uno addito bug. 104 00:05:21,000 --> 00:05:24,000 Codicis non malloc an susicivus byte spatii 105 00:05:24,000 --> 00:05:26,000 pro / 0 character, 106 00:05:26,000 --> 00:05:30,000 ita cum str copy abiit ad scribam eam ad ssubstrlen "cs50 saxa!" 107 00:05:30,000 --> 00:05:33,000 eam scripsit I byte praeteritum finis nostrae stipitem faciunt. 108 00:05:33,000 --> 00:05:36,000 In invalid_read venit, quando tendimus vocatio ad printf. 109 00:05:36,000 --> 00:05:40,000 Printf desinens legentem invalidum memoriam, quando legit / 0 character 110 00:05:40,000 --> 00:05:43,000 ut respicit istud in fine huius E chorda suus 'excudere. 111 00:05:43,000 --> 00:05:45,000 Sed nullus de fallebat Valgrind. 112 00:05:45,000 --> 00:05:48,000 Videmus str partem caperent exemplum invalid_write 113 00:05:48,000 --> 00:05:51,000 in linea XI de main, et invalid_read est pars printf. 114 00:05:51,000 --> 00:05:54,000 Silex in, Valgrind. 115 00:05:54,000 --> 00:05:57,000 Deinde fac, ne videatur magna. 116 00:05:57,000 --> 00:06:00,000 Nos potest currere is progressio super quod super extra Valgrind 117 00:06:00,000 --> 00:06:03,000 et nullum errorem indiciis. 118 00:06:03,000 --> 00:06:06,000 >> Sed ad hanc variationem modicam Intueamur 119 00:06:06,000 --> 00:06:09,000 quomodo res can adepto permalum. 120 00:06:09,000 --> 00:06:14,000 Sic dedit nos in Codice paulum modo plus laedit. 121 00:06:14,000 --> 00:06:17,000 Sumamus solum dispertientes tractus in acervum duplici filo 122 00:06:17,000 --> 00:06:19,000 longitudo cs50 petris, 123 00:06:19,000 --> 00:06:22,000 iam memor / 0 ingenium. 124 00:06:22,000 --> 00:06:25,000 Sed tunc considerandum inicere supernationali diu chorda in memoriam obstructionum 125 00:06:25,000 --> 00:06:27,000 qui S demonstrato. 126 00:06:27,000 --> 00:06:30,000 Quae res quæ habent in memoria obstructionum: T punctis, ad? 127 00:06:30,000 --> 00:06:34,000 Bene, si T punctis ad memorie, quod suus 'iustus Confines S, 128 00:06:34,000 --> 00:06:37,000 venientem iustus post illam, 129 00:06:37,000 --> 00:06:39,000 tunc possemus vobis scripta super pars T. 130 00:06:39,000 --> 00:06:41,000 Lets run is code. 131 00:06:41,000 --> 00:06:43,000 Intuendum est, quid acciderant. 132 00:06:43,000 --> 00:06:47,000 Tangite nos repono in acervo, caudices utrumque videbatur typis ex recte. 133 00:06:47,000 --> 00:06:49,000 Nihil videtur iniuriam omnino. 134 00:06:49,000 --> 00:06:52,000 Tamen, lets vado tergum in nostram code 135 00:06:52,000 --> 00:06:55,000 commendet sicco linea, ubi nos effingo cs50 saxa 136 00:06:55,000 --> 00:06:59,000 secundum situm in memoriam, ostendit per t. 137 00:06:59,000 --> 00:07:02,000 Nunc in dolor id nos currimus 138 00:07:02,000 --> 00:07:06,000 solum vident contentis in primo memoria obstructionum procer foras. 139 00:07:06,000 --> 00:07:09,000 Whoa, licet nos non fecisse str copy 140 00:07:09,000 --> 00:07:12,000 ulla characters in secundam acervum icti, unum significata per T, 141 00:07:12,000 --> 00:07:15,000 nos adepto a print foras. 142 00:07:15,000 --> 00:07:18,000 Quidem, filum nos cumulabitur in nostram primus obstructionum 143 00:07:18,000 --> 00:07:21,000 uagae primum obstructionum et in secundam clausus, 144 00:07:21,000 --> 00:07:23,000 praeparante omnia videntur normales. 145 00:07:23,000 --> 00:07:26,000 Valgrind, quamvis, refert nobis veram fabulam. 146 00:07:26,000 --> 00:07:28,000 Ibi imus. 147 00:07:28,000 --> 00:07:32,000 Omnium illorum invalidum legit et scribit. 148 00:07:32,000 --> 00:07:36,000 >> Intueamur Aliud exemplum erroris. 149 00:07:36,000 --> 00:07:39,000 Hic facimus aliquid potius infortunatus. 150 00:07:39,000 --> 00:07:41,000 Nos carpseris spatium pro an int in acervum, 151 00:07:41,000 --> 00:07:45,000 et nos initialize an int monstratorem - p - ad designandum quod spatio. 152 00:07:45,000 --> 00:07:48,000 Tamen, nostras dum monstratorem est initialized, 153 00:07:48,000 --> 00:07:52,000 junk quae data est ut suus 'iustus partem significat cumulum. 154 00:07:52,000 --> 00:07:55,000 Ita nos, quum oneratis quod notitia in int i, 155 00:07:55,000 --> 00:07:57,000 nos technice initialize i, 156 00:07:57,000 --> 00:08:00,000 sed nos sic faceret junk notitia. 157 00:08:00,000 --> 00:08:03,000 Vocatio ad asserunt, quod est habilem debugging macro 158 00:08:03,000 --> 00:08:06,000 definitur in apte nomine asserere bibliotheca, 159 00:08:06,000 --> 00:08:09,000 voluntas APSTRAHO progressio, si eius test conditio deficit. 160 00:08:09,000 --> 00:08:11,000 Quod si non 0. 161 00:08:11,000 --> 00:08:14,000 Secundum quod erat in spatio tumulus monstrassent P 162 00:08:14,000 --> 00:08:18,000 et hoc modo non operaretur interdum elit. 163 00:08:18,000 --> 00:08:20,000 Si facit, iustus questus sumus felis. 164 00:08:20,000 --> 00:08:24,000 In compilator non excipiet huius erroris, sed Valgrind voluntatem firmam. 165 00:08:24,000 --> 00:08:28,000 Ibi videmus error et sumuntur a nostrum vsum de qui junk notitia. 166 00:08:28,000 --> 00:08:32,000 >> Cum tu collocant acervum memoriam, sed non deallocate eam vel eam gratuita, 167 00:08:32,000 --> 00:08:34,000 quod dicitur Leak. 168 00:08:34,000 --> 00:08:37,000 Pro parva, brevis progressio ut currit et statim exitusque 169 00:08:37,000 --> 00:08:39,000 effluo sunt satis innoxius, 170 00:08:39,000 --> 00:08:42,000 sed consilium maiores / vel diuturnitate vitae, 171 00:08:42,000 --> 00:08:46,000 etiam parua Leak potest composuerit in aliquid major. 172 00:08:46,000 --> 00:08:49,000 Enim CS50, nobis likkyn 173 00:08:49,000 --> 00:08:51,000 curam de solvendis omnes iuxta acervum te memoriam collocant, 174 00:08:51,000 --> 00:08:54,000 quia te volumus aedificare peritias proprie tractare manual processus 175 00:08:54,000 --> 00:08:56,000 quibus in C. 176 00:08:56,000 --> 00:08:59,000 Facere proposuisti, si exacte 177 00:08:59,000 --> 00:09:03,000 unum-ut-unum correspondentia inter malloc et liberam vocat. 178 00:09:03,000 --> 00:09:06,000 Fortunate, Valgrind can succurro vos memoria effluo quoque. 179 00:09:06,000 --> 00:09:09,000 Hic est a RIMOSUS progressio vocavit leak.c qui allocates 180 00:09:09,000 --> 00:09:13,000 in spatio tumulus scribit, sed non liberet eum. 181 00:09:13,000 --> 00:09:16,000 Nos compilare, eam cum Planto et curre eam sub Valgrind, 182 00:09:16,000 --> 00:09:18,000 videmus, dum errores non memini, 183 00:09:18,000 --> 00:09:20,000 nos dont habent unum Leak. 184 00:09:20,000 --> 00:09:23,000 Sunt XVI bytes definite perierat, 185 00:09:23,000 --> 00:09:27,000 designandum quod monstratorem quod memoria non fuit in scope quando progressio exiverit. 186 00:09:27,000 --> 00:09:30,000 Nunc, Valgrind non daret nobis ton of notitia super Leak, 187 00:09:30,000 --> 00:09:35,000 Si autem usque ad hanc basim eius incelebres dat auditui 188 00:09:35,000 --> 00:09:38,000 ad Ordine Rerun in - Leak-reprehendo = plenus 189 00:09:38,000 --> 00:09:41,000 leaked pharetra videre de memoria, 190 00:09:41,000 --> 00:09:44,000 puteus 'adepto magis notitia. 191 00:09:44,000 --> 00:09:46,000 In congerie summa 192 00:09:46,000 --> 00:09:50,000 Valgrind nobis narrat in quo memoria, quæ perierat initio fuerit partita. 193 00:09:50,000 --> 00:09:52,000 Mauris auctor ut respiciens novimus, 194 00:09:52,000 --> 00:09:55,000 Valgrind nos admonet leaked memoria 195 00:09:55,000 --> 00:09:58,000 partita cum vocatio ad malloc in linea VIII de leak.c 196 00:09:58,000 --> 00:10:00,000 in pelagus muneris. 197 00:10:00,000 --> 00:10:02,000 Pulchellus nifty. 198 00:10:02,000 --> 00:10:04,000 >> Valgrind categorizes effluo utendo terminis illis: 199 00:10:04,000 --> 00:10:07,000 Certus amisit - hoc acervum partita memoria 200 00:10:07,000 --> 00:10:10,000 ad quam progressio, iam non habebit monstratorem. 201 00:10:10,000 --> 00:10:14,000 Valgrind scit te aliquando habuit monstratorem sed quia amisit track de ea. 202 00:10:14,000 --> 00:10:17,000 Haec memoria esse certissimum leaked. 203 00:10:17,000 --> 00:10:20,000 Indirecte amisit - hoc acervum partita memoria 204 00:10:20,000 --> 00:10:24,000 Eodem modo, quo periit indicium. 205 00:10:24,000 --> 00:10:27,000 Etenim si in nodum nectit perdidisti regula primae tabulae, 206 00:10:27,000 --> 00:10:30,000 tunc prima node se esset certus perierat, 207 00:10:30,000 --> 00:10:34,000 dum ulli subsequentem nodorum esset indirecte amittitur. 208 00:10:34,000 --> 00:10:37,000 Artiore amisit - hoc acervum partita memoria 209 00:10:37,000 --> 00:10:41,000 quae est regula Valgrind sitne an non. 210 00:10:41,000 --> 00:10:44,000 Adhuc reachable est acervum partita memoria 211 00:10:44,000 --> 00:10:47,000 ad quam progressio habet tamen monstratorem ad exitus, 212 00:10:47,000 --> 00:10:50,000 quae typice intelligitur quod global variabilis puncta ad eam. 213 00:10:50,000 --> 00:10:53,000 Sisto pro his effluo, youll etiam habent ut comprehendo optionem 214 00:10:53,000 --> 00:10:55,000 - Adhuc-reachable = sic; 215 00:10:55,000 --> 00:10:58,000 in vestri invocationem Valgrind. 216 00:10:58,000 --> 00:11:01,000 >> His diversis casibus ut requirunt diversas Insidijs ad purgandum involves eos, 217 00:11:01,000 --> 00:11:05,000 sed effluo debet removeri. 218 00:11:05,000 --> 00:11:08,000 Infeliciter, statuentes effluo potest esse durum facere, 219 00:11:08,000 --> 00:11:11,000 quia incorrect vocat ad liberum potest flare vestri progressio. 220 00:11:11,000 --> 00:11:14,000 Nam si consideremus invalid_free.c, 221 00:11:14,000 --> 00:11:18,000 videmus exemplum malae memoriae deallocation. 222 00:11:18,000 --> 00:11:21,000 Quid unicum esset vocatio ad liberare totius obstructionum 223 00:11:21,000 --> 00:11:24,000 memoriae significata per int_block, 224 00:11:24,000 --> 00:11:27,000 est instead factus conatum liberare singulis int-amplitudo section 225 00:11:27,000 --> 00:11:29,000 memoriae sigillatim. 226 00:11:29,000 --> 00:11:32,000 Hoc deficiet catastrophically. 227 00:11:32,000 --> 00:11:34,000 BUTIO! Quid error. 228 00:11:34,000 --> 00:11:36,000 Is est certus non est bona. 229 00:11:36,000 --> 00:11:39,000 Si tibi in huiusmodi errorem fixam tamen et nescis unde respicere, 230 00:11:39,000 --> 00:11:41,000 amicus novus subsidii. 231 00:11:41,000 --> 00:11:44,000 Vos suspicebatur ea - Valgrind. 232 00:11:44,000 --> 00:11:47,000 Valgrind sicut semper, scit exigo quis 'sursum. 233 00:11:47,000 --> 00:11:50,000 In alloc et libera comites non equatur sursum. 234 00:11:50,000 --> 00:11:52,000 Weve 'got I alloc et IV liberat. 235 00:11:52,000 --> 00:11:55,000 Et Valgrind docet ubi primus malus liberum voca - 236 00:11:55,000 --> 00:11:58,000 unus ut Urguet blowup - venit de - 237 00:11:58,000 --> 00:12:00,000 linea XVI. 238 00:12:00,000 --> 00:12:03,000 Ut vides, malus vocat liberare sunt realiter malus, 239 00:12:03,000 --> 00:12:05,000 ita et nos Recommend inmisso vestri progressio Leak 240 00:12:05,000 --> 00:12:08,000 dum vos erant 'opus in questus functionality recta. 241 00:12:08,000 --> 00:12:12,000 Satus vultus pro effluo solum post vestri progressio est opus proprie, 242 00:12:12,000 --> 00:12:14,000 sine alia errores. 243 00:12:14,000 --> 00:12:16,000 >> Suspendisse id enim et nos teneo. 244 00:12:16,000 --> 00:12:18,000 Nunc quid moraris? 245 00:12:18,000 --> 00:12:21,000 Vade currere Valgrind in vestri progressio vox iam. 246 00:12:21,000 --> 00:12:25,000 Est nomen meum Nate Hardison. Hoc est CS50. [CS50.TV]