1 00:00:00,000 --> 00:00:02,860 [Powered by Google Translate] [সপ্তাহ 5] 2 00:00:02,860 --> 00:00:04,860 [ডেভিড জে Malan - হার্ভার্ড বিশ্ববিদ্যালয়] 3 00:00:04,860 --> 00:00:07,260 [এটি CS50. - CS50.TV] 4 00:00:07,260 --> 00:00:09,740 >> এটি CS50, সপ্তাহ 5. 5 00:00:09,740 --> 00:00:12,900 আজকে এই সপ্তাহে এবং, আমরা একটি ফরেনসিক বিশ্বের অল্প ঘটে! 6 00:00:12,900 --> 00:00:14,850 সমস্যা প্রেক্ষিতে 4 সেট করুন. 7 00:00:14,850 --> 00:00:18,480 আজ একটি সংক্ষিপ্ত বক্তৃতা কারণ পরে আছে এখানে একটি বিশেষ ঘটনা হবে. 8 00:00:18,480 --> 00:00:21,940 সুতরাং আমরা একটি উঁকি গ্রহণ এবং উভয় ছাত্র এবং অভিভাবকদের একইভাবে আজ জ্বালাতন করা হবে 9 00:00:21,940 --> 00:00:24,600 সঙ্গে জিনিষ দিগন্ত উপর যা কিছু. 10 00:00:24,600 --> 00:00:29,050 >> সারাংশ সোমবার হিসাবে তাদের মধ্যে,, আপনি আরো কয়েকটি সহপাঠীদের থাকবে. 11 00:00:29,050 --> 00:00:32,980 edX, হার্ভার্ড এবং MIT-এর নতুন OpenCourseWare এবং আরো অনলাইন উদ্যোগের জন্য, 12 00:00:32,980 --> 00:00:36,730 হার্ভার্ড এর ক্যাম্পাসে সোমবার, যা সোমবার আসা মানে হয় চালু 13 00:00:36,730 --> 00:00:40,930 আপনি শেষ গণনা হিসাবে আছে, 86.000 অতিরিক্ত সহপাঠীদের, হবে 14 00:00:40,930 --> 00:00:43,680 CS50 এর বক্তৃতা ও বিভাগে সঙ্গে যারা বরাবর অনুসরণ করা হবে 15 00:00:43,680 --> 00:00:45,890 এবং এগিয়ে যান এবং সমস্যা সেট. 16 00:00:45,890 --> 00:00:51,870 এবং এই অংশ হিসাবে, আপনি CS50 এবং এখন CS50x উদ্বোধনী বর্গ সদস্য হতে হবে. 17 00:00:51,870 --> 00:00:56,150 এই অংশ হিসাবে, এখন বুঝতে পারি যে হিসাবে ভাল কিছু upsides হতে হবে. 18 00:00:56,150 --> 00:01:00,620 ছাত্রদের জন্য এ বিশাল নম্বর পেতে এই জন্য প্রস্তুত,, 19 00:01:00,620 --> 00:01:03,820 এটা বলার জন্য যথেষ্ট যে যদিও আমরা 108 টিএফএস এবং সি এ এস আছে, 20 00:01:03,820 --> 00:01:07,560 এটা একবার আমরা ছাত্রদের 80,000 আঘাত বেশ ভাল ছাত্র, শিক্ষক অনুপাত না. 21 00:01:07,560 --> 00:01:09,830 আমরা অনেক সমস্যা ম্যানুয়ালি সেট করে শূন্য করা যাচ্ছে না করছি, 22 00:01:09,830 --> 00:01:13,050 তাই সমস্যা সেট চালু এই সপ্তাহে CS50 চেক করা হবে, 23 00:01:13,050 --> 00:01:15,410 যা প্রয়োগ মধ্যে একটি কমান্ড লাইন থেকে ব্যবহারযোগ্য হবে 24 00:01:15,410 --> 00:01:17,880 যে আপনি একবার আপনি পরে এটা আপডেট এই সপ্তাহান্তে পাবেন. 25 00:01:17,880 --> 00:01:21,030 আপনি আপনার নিজের pset একটি কমান্ড, check50, সঞ্চালন করতে সক্ষম হবেন, 26 00:01:21,030 --> 00:01:24,770 এবং আপনি হিসাবে তাত্ক্ষণিক প্রতিক্রিয়া কিনা আপনার প্রোগ্রামের সঠিক বা ভুল পাবেন 27 00:01:24,770 --> 00:01:27,980 নকশা অনুযায়ী বিভিন্ন স্পেসিফিকেশনের যে আমরা প্রদান করে থাকেন. 28 00:01:27,980 --> 00:01:30,310 সমস্যা সেট নির্দেশের মধ্যে যে আরো. 29 00:01:30,310 --> 00:01:34,220 CS50x সহপাঠীদের এই হিসাবে ভাল ব্যবহার করা হবে. 30 00:01:34,220 --> 00:01:36,170 >> সমস্যা সেট 4 সমস্ত ফরেনসিক সম্পর্কে হয়, 31 00:01:36,170 --> 00:01:38,630 এবং এই pset সত্যিই কিছু বাস্তব জীবনের উপাদান ছিল দ্বারা অনুপ্রাণিত 32 00:01:38,630 --> 00:01:41,210 তদ্দ্বারা আমি যখন গ্র্যাজুয়েট স্কুলে ছিল আমি যখন জন্য অন্তরীণ 33 00:01:41,210 --> 00:01:45,270 সঙ্গে MIDDLESEX কাউন্টি এর জেলা অ্যাটর্নি এর ফরেনসিক অফিসে কাজ করছেন 34 00:01:45,270 --> 00:01:47,660 সঙ্গে তাদের সীসা ফরেনসিক তদন্তকারী. 35 00:01:47,660 --> 00:01:50,280 কি এই amounted, হিসাবে আমি মনে করি আমি উল্লেখ করেছে গত কয়েক সপ্তাহ, 36 00:01:50,280 --> 00:01:52,720 হয় গণ রাজ্য পুলিশ বা অন্যদের লাভ করবে, 37 00:01:52,720 --> 00:01:56,150 তারা হার্ড ড্রাইভ এবং সিডি এবং ফ্লপি ডিস্ক এবং ভালো ভালো জিনিস ঘুমাইয়া পড়া হবে, 38 00:01:56,150 --> 00:01:58,770 এবং তারপর ফরেনসিক অফিসে লক্ষ্য নিরূপণ ছিল 39 00:01:58,770 --> 00:02:01,470 কিনা বা ছিল কিছু ধরণের প্রমাণ ছিল না. 40 00:02:01,470 --> 00:02:04,730 এই বিশেষ অনুসন্ধানের ইউনিট, তাই এটি ছিল বাবু অপরাধ. 41 00:02:04,730 --> 00:02:10,949 এটা ছিল অপরাধের আরো সমস্যাগ্রস্থ সাজানোর, ডিজিটাল মিডিয়ার কিছু কিছু জড়িত. 42 00:02:10,949 --> 00:02:16,450 এটি সক্রিয় আউট না যে অনেক মানুষ একটি ইমেল লিখুন বলছে, "আমি তা." 43 00:02:16,450 --> 00:02:20,490 সেজন্য প্রায়ই, এইসব ফরেনসিক অনুসন্ধান সব যে অনেক ফলের আপ না করেন, 44 00:02:20,490 --> 00:02:22,820 তবে কখনও কখনও মানুষ যেমন ইমেল লিখতে হবে. 45 00:02:22,820 --> 00:02:25,240 তাই কখনও কখনও, প্রচেষ্টা পুরস্কৃত হয়েছে. 46 00:02:25,240 --> 00:02:31,210 >> কিন্তু আপ হতে এই ফরেনসিক pset যাও, আমরা pset4 হবে গ্রাফিক্স একটি বিট পরিচায়ক. 47 00:02:31,210 --> 00:02:35,410 আপনি সম্ভবত মঞ্জুর জন্য এই জিনিস নিতে - JPEGs, gifs, এবং মত - এইসব দিন. 48 00:02:35,410 --> 00:02:38,320 তবে আপনি যদি সত্যিই এটা আমার মনে হয়, একটি চিত্র, অনেক ভালো রব এর মুখ, 49 00:02:38,320 --> 00:02:41,270 বিন্দু বা পিক্সেল একটা ক্রম হিসাবে স্থাপিত হতে পারে. 50 00:02:41,270 --> 00:02:43,380 Rob এর মুখ ক্ষেত্রে, রং সমস্ত প্রকারের আছে, 51 00:02:43,380 --> 00:02:46,760 এবং আমরা পৃথক বিন্দু, পিক্সেল হিসাবে পরিচিত অন্যথায় দেখতে শুরু করে, 52 00:02:46,760 --> 00:02:48,610 একবার আমরা ইন জুম শুরু 53 00:02:48,610 --> 00:02:54,660 কিন্তু আমরা যদি একটু অজটিল দুনিয়া এবং সেটা যে এখানে এই কালো এবং সাদা হয় রব, 54 00:02:54,660 --> 00:02:57,490 কালো এবং সাদা প্রতিনিধিত্ব করেন, আমরা শুধু বাইনারি ব্যবহার করতে পারেন. 55 00:02:57,490 --> 00:03:01,660 এবং যদি আমরা বাইনারি ব্যবহার করতে যাচ্ছেন, 1 অথবা 0, আমরা এই একই চিত্র প্রকাশ করতে পারেন 56 00:03:01,660 --> 00:03:06,140 র রব এর বিট এই প্যাটার্ন সঙ্গে হাস্যমুখের. 57 00:03:06,140 --> 00:03:12,100 11000011 উপস্থাপন সাদা, সাদা, কালো, কালো, কালো, কালো, সাদা, সাদা. 58 00:03:12,100 --> 00:03:16,150 এবং তাই তারপর এর রঙিন ফটোগ্রাফ সম্পর্কে কথা শুরু একটি বিশাল লাফ হইনি, 59 00:03:16,150 --> 00:03:18,600 যে আপনি ফেসবুকে অথবা একটি ডিজিটাল ক্যামেরা সঙ্গে নিতে দেখতে চাই. 60 00:03:18,600 --> 00:03:21,410 কিন্তু অবশ্যই যখন এটি রং আসে, আপনি আরো বিট প্রয়োজন. 61 00:03:21,410 --> 00:03:25,690 ফটোগ্রাফ এবং বিশ্বের বেশ সাধারণ রং 1 বিট ব্যবহার না হয়, 62 00:03:25,690 --> 00:03:29,560 হিসাবে এই প্রস্তাব দেওয়া হয়, কিন্তু 24 বিট রঙ, যেখানে আসলে আপনি রং লক্ষ লক্ষ পেতে. 63 00:03:29,560 --> 00:03:32,250 সুতরাং হিসাবে ক্ষেত্রে যখন আমরা রব এর চোখে জুম, 64 00:03:32,250 --> 00:03:36,370 যে ছিল বিভিন্ন রঙিন সম্ভাবনার লক্ষ লক্ষ কোনো নম্বর. 65 00:03:36,370 --> 00:03:39,040 সুতরাং আমরা সমস্যা সেট 4 হিসাবে পাশাপাশি walkthrough এই পরিচয় করিয়ে দেব, 66 00:03:39,040 --> 00:03:43,370 যা স্বাভাবিকের 2:30 পরিবর্তে 3:30 হতে কারণ শুক্রবার এর এখানে বক্তৃতা আজকের হবে. 67 00:03:43,370 --> 00:03:46,620 কিন্তু ভিডিও চলিত আগামীকাল হিসাবে অনলাইন হতে হবে. 68 00:03:46,620 --> 00:03:48,820 >> আমরা অন্য ফাইল ফরম্যাট আপনাকে পরিচয় করিয়ে দেব. 69 00:03:48,820 --> 00:03:51,270 এই ইচ্ছা হয় প্রথমে ভয় চেহারা বোঝানো, 70 00:03:51,270 --> 00:03:55,670 কিন্তু এটি শুধু একটি সি struct জন্য কিছু ডকুমেন্টেশন. 71 00:03:55,670 --> 00:03:58,940 এটি সক্রিয় যে মাইক্রোসফট বছর আগে এই বিন্যাসে লোকায়ত সাহায্য 72 00:03:58,940 --> 00:04:05,150 বিটম্যাপ নামক ফাইল ফরম্যাট, bmp, এবং এই ছিল একটি সুপার সহজ, আনন্দময় গ্রাফিক্যাল ফাইল ফরম্যাট 73 00:04:05,150 --> 00:04:10,150 যে বেশ কিছু সময়ের জন্য ব্যবহার করা হয় এবং ডেস্কটপের উপর ওয়ালপেপার জন্য কখনও কখনও দেখা হত. 74 00:04:10,150 --> 00:04:14,760 আপনি যদি উইন্ডোজ এক্সপি এবং ঘূর্ণায়মান পাহাড় এবং নীল আকাশ ফিরে মনে, 75 00:04:14,760 --> 00:04:17,170 সাধারণত যে ছিল একটি bmp অথবা বিটম্যাপ ইমেজ. 76 00:04:17,170 --> 00:04:19,959 বিটম্যাপ আমাদের জন্য মজা কারণ তারা কিছুটা জটিলতা আছে. 77 00:04:19,959 --> 00:04:22,610 এটা পুরোপুরি হিসাবে 0 সেঃ এবং 1s এই গ্রিড হিসাবে সহজ. 78 00:04:22,610 --> 00:04:27,510 পরিবর্তে, আপনি একটি ফাইল শুরু করার একটি হেডার মত জিনিষ আছে. 79 00:04:27,510 --> 00:04:31,990 সুতরাং অন্যান্য ভিতরে একটি. Bmp ফাইল শব্দ, একটি 0 সেঃ এবং 1s আভা, 80 00:04:31,990 --> 00:04:34,910 কিন্তু কিছু অতিরিক্ত সেখানে 0 সেঃ এবং 1s আছে. 81 00:04:34,910 --> 00:04:38,220 এবং এটি সক্রিয় যে কি সম্ভবত আমরা গ্রহণ করেছি বছর জন্য জন্য দেয়া হয় - 82 00:04:38,220 --> 00:04:45,170 . doc বা. xls বা. mp3, ভালো ফাইল ফরম্যাটের. mp4, যাহা - কিছু ফাইল ফরম্যাটের 83 00:04:45,170 --> 00:04:48,480 আপনি পরিচিত - কি এমনকি এটা একটি ফাইল ফরম্যাট করা মানে, 84 00:04:48,480 --> 00:04:52,480 কারণ দিনের শেষে এই ফাইলের সব ঠিক 0 সেঃ এবং 1s আছে আমরা ব্যবহার করি. 85 00:04:52,480 --> 00:04:56,810 এবং হয়ত ঐ 0 সেঃ এবং 1s এবিসি বা মত হওয়া ASCII মাধ্যমে চিত্রিত করা, 86 00:04:56,810 --> 00:04:58,820 কিন্তু দিনের শেষে, এটি এখনও ঠিক 0 সেঃ এবং 1s. 87 00:04:58,820 --> 00:05:02,100 তাই শুধু মানুষের মাঝে একটি নতুন ফাইল ফরম্যাট উদ্ভাবিত সিদ্ধান্ত 88 00:05:02,100 --> 00:05:06,420 যেখানে তারা কি আসলে বিট প্যাটার্নের অর্থ হবে প্রমিত. 89 00:05:06,420 --> 00:05:09,220 এবং এখানে এই ক্ষেত্রে, লোকেরা যারা বিটম্যাপ ফাইল ফরম্যাট পরিকল্পিত 90 00:05:09,220 --> 00:05:15,620 তিনি আরো বলেন যে একটি বিটম্যাপ ফাইলের মধ্যে প্রথম বাইট এ, অফসেট হিসাবে সেখানে 0 দ্বারা denoted, 91 00:05:15,620 --> 00:05:18,940 গিয়ে কিছু cryptically নামে পরিবর্তনশীল নামক bfType করা আছে, 92 00:05:18,940 --> 00:05:23,080 যা শুধু বিটম্যাপ ফাইল টাইপ জন্য ঘোরা, কি বিটম্যাপ ফাইল প্রকার হল এই. 93 00:05:23,080 --> 00:05:27,700 আপনি দ্বিতীয় যে সারি 2 অফসেট, বাইট 2 নম্বর থেকে সম্ভবত আবিষ্কার করতে পারেন, 94 00:05:27,700 --> 00:05:33,740 0 সেঃ এবং 1s একটি প্যাটার্ন যে কি উপস্থাপন করা হয়েছে? কিছু মাপ. 95 00:05:33,740 --> 00:05:35,310 এবং এটি থেকে সেখানে যায়. 96 00:05:35,310 --> 00:05:37,410 সুতরাং সমস্যা সেট 4, আপনি এইসব জিনিস কিছু মাধ্যমে পাবেন করা পদচারণা. 97 00:05:37,410 --> 00:05:39,520 আমরা শেষ পর্যন্ত তাদের সব বিষয়ে চিন্তা করা হবে না. 98 00:05:39,520 --> 00:05:47,510 কিন্তু এটি 54 বাইট প্রায় আকর্ষণীয় পেতে আরম্ভ বিজ্ঞপ্তি: rgbtBlue, সবুজ, ও Red. 99 00:05:47,510 --> 00:05:52,110 আপনি যদি কখনও শুনেছেন করেছি আদ্যক্ষরা আরজিবি - লাল, সবুজ, নীল - এই যে একটি রেফারেন্স 100 00:05:52,110 --> 00:05:54,610 কারণ এটি সক্রিয় আউট আপনি সব রামধনু রঙ আঁকা যাবে 101 00:05:54,610 --> 00:05:58,180 সঙ্গে লাল এবং নীল এবং সবুজ কিছু সংমিশ্রণ. 102 00:05:58,180 --> 00:06:03,320 এবং সত্য, রুমে বাবা নিকটতম প্রজেক্টর কিছু প্রত্যাহার হতে পারে. 103 00:06:03,320 --> 00:06:05,890 এই দিন, আপনি এক উজ্জ্বল আলো লেন্সের আসছে আউট দেখতে, 104 00:06:05,890 --> 00:06:09,800 কিন্তু ফিরে দিন আপনাকে লাল লেন্স, লেন্স নীল, সবুজ এবং লেন্স ছিল, 105 00:06:09,800 --> 00:06:13,380 এবং তারা একসাথে একটি পর্দা যার লক্ষ্য এবং একটি রঙিন ছবি গঠিত. 106 00:06:13,380 --> 00:06:16,270 এবং বেশ প্রায়ই, মধ্যম এবং উচ্চ বিদ্যালয় স্কুলের যারা লেন্স আছে 107 00:06:16,270 --> 00:06:19,720 কখনও সামান্য তাই বাঁকাভাবে, তাই আপনি ছিল ডবল অথবা ট্রিপল চিত্র বাছাই করা. 108 00:06:19,720 --> 00:06:24,100 কিন্তু যে ধারণা ছিল. আপনি লাল এবং সবুজ এবং নীল আলো একটি ছবি অলঙ্কার ছিল. 109 00:06:24,100 --> 00:06:26,590 এবং যে একই নীতি কম্পিউটারে ব্যবহৃত হয়. 110 00:06:26,590 --> 00:06:30,230 >> তাই আপনার জন্য চ্যালেঞ্জ তারপর সমস্যা মধ্যে মধ্যে সেট 4 কয়েকটি বিষয় হতে যাচ্ছে. 111 00:06:30,230 --> 00:06:34,800 একজন আসলে একটি চিত্র মাপ পরিবর্তন হয়, 0 সেঃ এবং 1s একটি প্যাটার্ন নিয়ে, 112 00:06:34,800 --> 00:06:40,200 জিনিসটা যা 0 সেঃ এবং 1s এর একটি অংশ গঠন কি ভালো প্রতিনিধিত্ব করেন, 113 00:06:40,200 --> 00:06:43,630 এবং তারপর চিন্তা করা কিভাবে পিক্সেল প্রতিলিপি নির্মাণ - reds, ব্লুজ, সবুজ শাক - 114 00:06:43,630 --> 00:06:46,660 ভিতরে যাতে যখন একটি ছবি ভালো প্রথমে দেখাচ্ছে, 115 00:06:46,660 --> 00:06:49,210 এটি পরিবর্তে ভালো যে দেখাশোনা হতে পারে. 116 00:06:49,210 --> 00:06:53,640 অন্যান্য চ্যালেঞ্জের মধ্যে খুব যে আপনি একটি ইমেজ ফরেনসিক হস্তান্তর করা হবে হবে 117 00:06:53,640 --> 00:06:56,030 একটি ডিজিটাল ক্যামেরা থেকে আসল ফাইল. 118 00:06:56,030 --> 00:06:58,960 এবং যে ক্যামেরা সময় উপর একবার,, ছিল একটি ফটো আভা. 119 00:06:58,960 --> 00:07:03,760 সমস্যা আমরা ঘটনাক্রমে হয় বা মুছে ফেলা হয়েছিল ছবিটি একরকম দূষিত. 120 00:07:03,760 --> 00:07:05,750 খারাপ জিনিষ ডিজিটাল ক্যামেরার সঙ্গে ঘটেছে. 121 00:07:05,750 --> 00:07:09,150 এবং এত দ্রুত আমরা যে কার্ড 0 সেঃ এবং 1s আপনার জন্য বন্ধ সমস্ত কপি, 122 00:07:09,150 --> 00:07:13,610 এক বড় ফাইলের মধ্যে তাদের সব সঞ্চয়, এবং তারপর আমরা তাদের কাছে আপনার সমস্যা যাও মধ্যে হাতে পাবেন 4 সেট করুন 123 00:07:13,610 --> 00:07:19,320 যাতে আপনি সি একটি প্রোগ্রাম যা তাদের সঙ্গে JPEGs সমস্ত পুনরুদ্ধার লিখুন আদর্শভাবে, করতে পারেন. 124 00:07:19,320 --> 00:07:23,330 এবং এটি সক্রিয় যে JPEGs আউট, যদিও তারা একটি জটিল ফাইল ফরম্যাট কিছুটা করছি - 125 00:07:23,330 --> 00:07:26,360 তারা অনেক এই স্মিত এখানে মুখ চেয়ে আরো জটিল - 126 00:07:26,360 --> 00:07:31,160 এটি সক্রিয় যে প্রতি কোন JPEG 0 সেঃ এবং 1s একই প্যাটার্নের সঙ্গে শুরু হয়. 127 00:07:31,160 --> 00:07:35,630 তাই ব্যবহার করে, পরিণামে, যখন একটি লুপ বা অনুরূপ জন্য একটি লুপ বা, 128 00:07:35,630 --> 00:07:38,880 আপনি সমস্ত 0 সেঃ এবং 1s উপর এই ফরেনসিক চিত্রে পুনরুক্তি করতে পারেন, 129 00:07:38,880 --> 00:07:43,150 এবং প্রত্যেক সময় আপনি বিশেষ প্যাটার্ন যে সমস্যা সেট স্পেসিফিকেশন সংজ্ঞায়িত হয়েছে তা দেখতে, 130 00:07:43,150 --> 00:07:47,880 আপনি এখানে খুব উচ্চ সম্ভাবনা হয়,, কোন JPEG শুরু ধারনা করতে পারি. 131 00:07:47,880 --> 00:07:51,230 এবং যত তাড়াতাড়ি আপনি খুঁজে বাইট কিছু নম্বর একই প্যাটার্ন 132 00:07:51,230 --> 00:07:55,430 বা কিলোবাইট বা মেগাবাইট পরে, এখানে আপনি অনুমান করতে পারেন একটি দ্বিতীয় কোন JPEG, 133 00:07:55,430 --> 00:07:57,380 আমি প্রথম ছবির পরে একটি নেন. 134 00:07:57,380 --> 00:08:01,370 সম্পর্কে যে প্রথম ফাইলটি পড়া থামাতে যাক, এই নতুন লেখা শুরু, 135 00:08:01,370 --> 00:08:06,310 এবং আপনার প্রোগ্রামের pset4 জন্য আউটপুট হিসাবে অনেক হিসাবে 50 JPEGs হবে. 136 00:08:06,310 --> 00:08:09,270 এবং এটি যদি 50 JPEGs না, আপনি একটি লুপ একটি বিট আছে. 137 00:08:09,270 --> 00:08:12,490 আপনি যদি একটি JPEGs সীমাহীন নম্বর আছে, আপনি একটি অসীম লুপ আছে. 138 00:08:12,490 --> 00:08:14,910 যাতে খুব খুব সাধারণ একটি মামলা করা হবে. 139 00:08:14,910 --> 00:08:16,600 সুতরাং যে দিগন্ত কি লেখা আছে তা. 140 00:08:16,600 --> 00:08:21,310 >> আমাদের পিছনে 0 ক্যুইজ আমার ইমেল প্রতি, বুঝতে পারি যে invariably আছে লোকেরা যারা উভয় খুশি, 141 00:08:21,310 --> 00:08:23,640 নিরপেক্ষ, এবং প্রায় দু: খিত ব্যঙ্গ 0 সময় সাজান. 142 00:08:23,640 --> 00:08:26,800 এবং আমার কাছে পৌঁছান, মাথা TF Zamyla, আপনার নিজের TF দয়া করে না, 143 00:08:26,800 --> 00:08:31,180 সি এ এস বা এক যে আপনি কি জানেন যদি আপনি কিভাবে যে চলে গেলেন আলোচনা করতে চাই. 144 00:08:31,180 --> 00:08:35,539 >> সুতরাং বাবা ছাপ এখানে রুমে, কি CS50 গ্রন্থাগারের? 145 00:08:36,429 --> 00:08:40,390 [হাস্য] গুড জব. 146 00:08:40,390 --> 00:08:48,340 CS50 লাইব্রেরি কি? হাঁ. >> [ছাত্রদের] এটি একটি কোড প্রাক লিখিত সেট [শ্রবণাতীত] 147 00:08:48,340 --> 00:08:49,750 ঠিক আছে, ভাল. 148 00:08:49,750 --> 00:08:53,240 এটি একটি কোড প্রাক লিখিত সেট যে আমরা কর্মীরা লিখেছে, আমরা আপনাকে প্রদান, 149 00:08:53,240 --> 00:08:55,030 যে কয়েকটি সাধারণ উপলব্ধকারীর, 150 00:08:55,030 --> 00:08:59,020 সম্পর্কে একটি স্ট্রিং পেতে ভালো সামগ্রী, সম্পর্কে পেতে কোন int - ফাংশন যে এখানে তালিকাভুক্ত করা হয় সব. 151 00:08:59,020 --> 00:09:02,260 >> এখন শুরু হচ্ছে, আমরা সত্যিই এই প্রশিক্ষণের চাকার অপসৃত করা শুরু. 152 00:09:02,260 --> 00:09:05,050 আমরা আপনার কাছ থেকে নিতে একটি স্ট্রিং শুরু করে যাচ্ছেন, 153 00:09:05,050 --> 00:09:08,870 যা রিকল কি প্রকৃত তথ্য টাইপ জন্য ছিল মাত্র একটি প্রতিশব্দ? >> [একাধিক ছাত্র] চর *. 154 00:09:08,870 --> 00:09:12,730 চর *. পিতামাতাদের জন্য, যে সম্ভবত ছিল [তোলে whooshing শব্দ]. এটা ভাল. 155 00:09:12,730 --> 00:09:17,550 চর * আমরা পর্দায় সমস্ত আরো উপর আমরা আমাদের শব্দভান্ডার থেকে স্ট্রিং অপসারণ দেখতে শুরু করবেন, 156 00:09:17,550 --> 00:09:19,730 অন্তত যখন এটি আসলে কোড লেখা আসে. 157 00:09:19,730 --> 00:09:22,840 একইভাবে, আমরা এই ফাংশন ব্যবহার হিসাবে অনেক কিছু বন্ধ হবে 158 00:09:22,840 --> 00:09:25,280 কারণ আমাদের প্রোগ্রাম আরো পরিশীলিত পেতে যাচ্ছি. 159 00:09:25,280 --> 00:09:28,480 বরং শুধুমাত্র প্রোগ্রামগুলি যে প্রম্পট জ্বলজ্বলে সঙ্গে সেখানে বসতে লিখুন, 160 00:09:28,480 --> 00:09:31,870 অপেক্ষা ব্যবহারকারীর জন্য কিছু একটা টাইপ করুন, আপনি অন্য কোথাও থেকে আপনার ইনপুট পাবেন. 161 00:09:31,870 --> 00:09:35,490 উদাহরণস্বরূপ, আপনার স্থানীয় হার্ড ডিস্ক বিট সিরিজ থেকে তাদের পাবেন. 162 00:09:35,490 --> 00:09:38,580 আপনি পরিবর্তে ভবিষ্যতে তাদের একটি নেটওয়ার্ক সংযোগ থেকে পাবেন, 163 00:09:38,580 --> 00:09:40,230 কোথাও কিছু ওয়েবসাইট. 164 00:09:40,230 --> 00:09:44,110 >> সুতরাং এই স্তর ছুলা প্রথম সময় এর জন্য দেওয়া এবং CS50 অ্যাপ্লায়েন্স বৈঠাচালনা আপ 165 00:09:44,110 --> 00:09:49,010 এবং এই ফাইল নামক cs50.h, যা আপনি হয়েছি # সপ্তাহের জন্য সহ, 166 00:09:49,010 --> 00:09:51,140 কিন্তু আমি কি আসলে এই ভিতরে কি দেখতে. 167 00:09:51,140 --> 00:09:54,430 নীল ফাইল উপরের মাত্র একটি মন্তব্য আভা: 168 00:09:54,430 --> 00:09:57,050 পাটা তথ্য এবং লাইসেন্সিং. 169 00:09:57,050 --> 00:09:59,050 এটি একটি সফ্টওয়্যার সাধারণ দৃষ্টান্ত কতকাংশে 170 00:09:59,050 --> 00:10:01,580 কারণ সফ্টওয়্যার অনেক দিন এইসব কি ওপেন সোর্স এর নামে, 171 00:10:01,580 --> 00:10:05,220 যার অর্থ হল যে কেউ কোড করা হয়েছে এবং এটি সহজলভ্য 172 00:10:05,220 --> 00:10:10,470 না এবং চালানোর ব্যবহার করলেও প্রকৃতপক্ষে এবং পড়তে পরিবর্তন এবং আপনার নিজের কাজে সংহত. 173 00:10:10,470 --> 00:10:14,660 তাই কি আপনি, ব্যবহার করছি একটি খুব ছোট ফর্ম যদ্যপি ওপেন সোর্স সফ্টওয়্যার,. 174 00:10:14,660 --> 00:10:18,560 যদি আমি মন্তব্য গত নিচে স্ক্রল যদিও,, আমরা আরো কিছু পরিচিত জিনিস দেখতে শুরু করব. 175 00:10:18,560 --> 00:10:25,010 এখানে উপরের যে cs50.h ফাইলটি একটি হেডার ফাইল আভা অন্তর্ভুক্ত এ বিজ্ঞপ্তি. 176 00:10:25,010 --> 00:10:28,560 এর মধ্যে সর্বাধিক, আমরা আগে, আছে দেখা যায় না কিন্তু এক পরিচিত. 177 00:10:28,560 --> 00:10:32,270 এই যা আমরা আছে দেখা যায়, যদিও সংক্ষেপে, দূর পর্যন্ত? >> [ছাত্রদের] স্ট্যান্ডার্ড লাইব্রেরি. 178 00:10:32,270 --> 00:10:35,810 হাঁ, আদর্শ লাইব্রেরি. stdlib.h malloc আছে. 179 00:10:35,810 --> 00:10:38,320 একবার আমরা শুরু ডাইনামিক মেমরি বরাদ্দকরণের বিষয়ে কথা বলছি, 180 00:10:38,320 --> 00:10:41,650 যা আমরা পরের সপ্তাহে ফিরে আসবে হিসাবে পাবেন, আমরা যে ফাইল সহ শুরু. 181 00:10:41,650 --> 00:10:46,640 এটা পরিনত হয় যে আসলে bool এবং সত্য এবং মিথ্যা সি অপরিহার্যভাবে মধ্যে উপস্থিত না থাকার 182 00:10:46,640 --> 00:10:49,440 যদি আপনি এই ফাইলটি এখানে অন্তর্ভুক্ত. 183 00:10:49,440 --> 00:10:52,710 সপ্তাহের জন্য আমরা হয়েছে stdbool.h সহ 184 00:10:52,710 --> 00:10:55,620 যাতে আপনি একটি bool, সত্য বা মিথ্যা. ধারণা ব্যবহার করতে পারেন 185 00:10:55,620 --> 00:10:58,620 এই ছাড়া, আপনি জাল তা বাছাই এবং কোন int ব্যবহার করতে হবে 186 00:10:58,620 --> 00:11:02,610 এবং ইচ্ছামত ঠিক অনুমান যে মিথ্যা 0 এবং 1 সত্য হয়. 187 00:11:02,610 --> 00:11:07,150 যদি আমরা নিচে স্ক্রল আরও এখানে, একটি স্ট্রিং আমাদের সংজ্ঞা. 188 00:11:07,150 --> 00:11:11,390 এটি সক্রিয় আউট, হিসাবে আমরা আগে বলেন করেছি, যে যেখানে এই তারকা হয় কোন ব্যাপার না. 189 00:11:11,390 --> 00:11:13,720 এমনকি আপনি স্থান সব থাকতেই পারে. 190 00:11:13,720 --> 00:11:16,740 আমরা এই সেমিস্টারে ভর্তি করা এই হিসাবে হয়েছে তা স্পষ্ট করতে প্রচার 191 00:11:16,740 --> 00:11:18,620 যে তারকা টাইপ করতে হয়েছে, 192 00:11:18,620 --> 00:11:21,700 কিন্তু শুধু সাধারণ হিসাবে বুঝতে, যদি সামান্য আরো একটি সাধারণ ঘটনা নয় 193 00:11:21,700 --> 00:11:24,430 সেখানে এটা করা হয়, কিন্তু এই বৈশিষ্ট্যগুলি এটা একই জিনিস. 194 00:11:24,430 --> 00:11:27,720 কিন্তু এখন যদি আমরা আরও নিচে, যাক এর GetInt কটাক্ষপাত করা 195 00:11:27,720 --> 00:11:32,190 কারণ আমরা অন্যথায় এই সেমিস্টারে আগে যে সম্ভবত প্রথম ব্যবহৃত. 196 00:11:32,190 --> 00:11:37,440 এখানে GetInt. এটা কি? >> [ছাত্রদের] একটি প্রোটোটাইপ. >> এটি শুধু একটি প্রোটোটাইপ. 197 00:11:37,440 --> 00:11:41,410 প্রায়ই, আমরা আমাদের সমাজের সারাংশ এগুলির নমুনা রাখেননি. গ ফাইল, 198 00:11:41,410 --> 00:11:46,690 কিন্তু আপনার হেডার ফাইল,. জ ফাইল, এগুলির নমুনা মধ্যে এই এখানে এক ভালো লাগাতে পারেন 199 00:11:46,690 --> 00:11:50,840 যাতে যখন আপনি কিছু ফাংশন লিখুন যে আপনি অন্য ব্যক্তিদের ব্যবহার করতে সক্ষম হতে চান, 200 00:11:50,840 --> 00:11:53,550 যা ঠিক CS50 গ্রন্থাগারের সঙ্গে মামলা, 201 00:11:53,550 --> 00:11:57,040 আপনি না কেবল cs50.c মত আপনার ফাংশন বাস্তবায়ন, 202 00:11:57,040 --> 00:12:02,790 এছাড়াও আপনি যে ফাইলটি শীর্ষে কিন্তু এ একটি হেডার ফাইলটি উপরে এগুলির নমুনা করা. 203 00:12:02,790 --> 00:12:07,170 তারপর যে হেডার ফাইলটি কি বন্ধু এবং সহকর্মীদের অন্তর্ভুক্ত 204 00:12:07,170 --> 00:12:09,760 # সঙ্গে তাদের নিজস্ব কোড অন্তর্ভুক্ত. 205 00:12:09,760 --> 00:12:12,210 এই সব সময় তাই, আপনি হয়েছি এইসব এগুলির নমুনা সব সহ, 206 00:12:12,210 --> 00:12:16,580 কার্যকরীভাবে # আপনার ফাইল উপরে কিন্তু এই পথে পদ্ধতিও অন্তর্ভুক্ত, 207 00:12:16,580 --> 00:12:20,070 আপনার নিজের মধ্যে যা মূলত কপি এবং pastes এই ফাইলটি. 208 00:12:20,070 --> 00:12:23,070 এখানে কিছু মোটামুটি বিস্তারিত ডকুমেন্টেশন. 209 00:12:23,070 --> 00:12:25,640 আমরা প্রায় কাছাকাছি নিয়েছেন জন্য দেওয়া যে GetInt পায় কোন int, 210 00:12:25,640 --> 00:12:27,640 কিন্তু এটি সক্রিয় আউট কিছু কোণার মামলা আছে. 211 00:12:27,640 --> 00:12:31,810 যদি ব্যবহারকারী একটি সংখ্যা যে খুব বড় ধরনের উপায়, একটি দশ লক্ষের পঞ্চঘাত, 212 00:12:31,810 --> 00:12:35,490 যে শুধুমাত্র একটি int-ভিতরে উপযুক্ত নয় পারেন? প্রত্যাশিত আচরণ কি? 213 00:12:35,490 --> 00:12:38,020 আদর্শভাবে, এটা আঁচ. 214 00:12:38,020 --> 00:12:40,280 তাই এই ক্ষেত্রে, যদি আপনি এমন সূক্ষ্ম মুদ্রণ পড়া, 215 00:12:40,280 --> 00:12:44,500 আসলে আপনি যে যদি লাইন পড়া যাবে না, এই আয় INT_MAX দেখতে পাবেন. 216 00:12:44,500 --> 00:12:48,320 আমরা এই সম্পর্কে করেছি, কিন্তু কথা বলত না তার ছাঁদের উপর ভিত্তি করে, কি এটা সম্ভবত? 217 00:12:48,320 --> 00:12:50,640 [ছাত্রদের] একটি ধ্রুবক. >> এটা একটা ধ্রুবক. 218 00:12:50,640 --> 00:12:54,770 এটা বিশেষ কিছু ধ্রুবক যে যারা হেডার ফাইল এক সম্ভবত এর ঘোষণা 219 00:12:54,770 --> 00:13:00,090 যে ফাইলে উপর বেশী, এবং INT_MAX সম্ভবত প্রায় 2 বিলিয়ন মত, 220 00:13:00,090 --> 00:13:04,990 ধারণা করা হচ্ছে যে, কারণ আমরা একরকম যে কিছু বোঝান প্রয়োজন ভুল হয়েছে, 221 00:13:04,990 --> 00:13:10,700 আমরা, হ্যাঁ, আমাদের নিষ্পত্তি 4 বিলিয়ন নম্বর আছে: আপ 2 বিলিয়ানের -2 বিলিয়ন, বা দিতে নিতে. 222 00:13:10,700 --> 00:13:14,710 ভাল, কি প্রোগ্রামিং সাধারণ হল আপনি চুরি করা মাত্র ঐ সংখ্যার এক, 223 00:13:14,710 --> 00:13:18,920 হয়তো 0 হয়তো, 2 বিলিয়ন বিলিয়ন হয়তো -2, 224 00:13:18,920 --> 00:13:23,280 যাতে আপনি আপনার সম্ভাব্য মান ব্যয় যাতে আপনি বিশ্বের কমিট করতে পারেন 225 00:13:23,280 --> 00:13:26,820 যে যদি কিছু গোলমাল হয়, আমি এই সুপার বড় মান প্রত্যাবর্তন করা. 226 00:13:26,820 --> 00:13:31,030 কিন্তু আপনি কিছু ব্যবহারকারী 234 ভালো রহস্যপূর্ণ টাইপ করছে ... করতে না চান একটি বড় সংখ্যা,. 227 00:13:31,030 --> 00:13:34,060 আপনি এটি সর্বজনীন পরিবর্তে একটি ধ্রুবক হিসাবে. 228 00:13:34,060 --> 00:13:38,060 সত্যিই তাই, যদি আপনি মলদ্বারে হচ্ছে গত কয়েক সপ্তাহ ছিল, যে কোনো সময় আপনি নামক GetInt, 229 00:13:38,060 --> 00:13:42,900 আপনি যদি একটি সঙ্গে INT_MAX শারীরিকভাবে ব্যবহারকারী টাইপ করেছেন তাদের উচিত চেক করা হয়েছে, 230 00:13:42,900 --> 00:13:46,590 অথবা, আরো নির্দিষ্টভাবে, GetInt রিটার্ন INT_MAX করেছেন, কারণ যদি তা, 231 00:13:46,590 --> 00:13:51,830 আসলে মানে হল তারা এটা টাইপ না. এই ক্ষেত্রে কিছু ভুল হয়েছে. 232 00:13:51,830 --> 00:13:56,080 তাই এটি কি একটি প্রহরী মান, যা শুধু অর্থ বিশেষ হিসাবে সাধারণত এর পরিচিত. 233 00:13:56,080 --> 00:13:58,120 >> এর এখন যাক. গ ফাইল পরিণত হবে. 234 00:13:58,120 --> 00:14:01,340 সি ফাইল প্রয়োগ কিছু সময় অস্তিত্ত্বকে করেনি. 235 00:14:01,340 --> 00:14:06,840 এবং সত্য, যন্ত্র এটি প্রাক কম্পাইল যে জিনিস আমরা অবজেক্ট কোড নামক করানোর জন্য, আছে 236 00:14:06,840 --> 00:14:09,540 কিন্তু এটা আপনি যেখানে তার কারণ হল, সিস্টেমের জানে না ব্যাপার 237 00:14:09,540 --> 00:14:11,730 এই ক্ষেত্রে যেখানে এটা: যন্ত্রপাতি. 238 00:14:11,730 --> 00:14:17,400 নিচে স্ক্রল এখন যাও এবং GetInt সব এই সময় কিভাবে GetInt হয়েছে কাজ দেখতে চলুন শুরু করা যাক. 239 00:14:17,400 --> 00:14:19,460 এখানে আমরা আগে থেকে অনুরূপ মন্তব্য আছে. 240 00:14:19,460 --> 00:14:21,660 আমাকে শুধু কোড অংশের মধ্যে জুম. 241 00:14:21,660 --> 00:14:23,900 এবং কি আমরা GetInt জন্য নিম্নলিখিত আছে. 242 00:14:23,900 --> 00:14:25,700 এটি কোনো ইনপুট নেয়. 243 00:14:25,700 --> 00:14:29,510 এটা প্রত্যাবর্তন (সত্য) যখন কোন int,, যাতে আমরা একটি ইচ্ছাকৃত অসীম লুপ আছে, 244 00:14:29,510 --> 00:14:33,180 কিন্তু সম্ভবতঃ আমরা এই বিরতি একরকম আউট বা করব মধ্যে এই থেকে ফিরে. 245 00:14:33,180 --> 00:14:34,870 >> যাক কিভাবে এই কাজ করে দেখুন. 246 00:14:34,870 --> 00:14:39,240 আমরা মনে হচ্ছে এই লুপ এর ভিতরে প্রথম পংক্তির মধ্যে GetString ব্যবহার করা হবে, 166. 247 00:14:39,240 --> 00:14:43,780 এটি এখন ভাল অভ্যাস কারণ কি পরিস্থিতির অধীন GetString ফেরত যায়নি 248 00:14:43,780 --> 00:14:47,660 বিশেষ অভিব্যক্তি শূন্য? >> [ছাত্রদের] যদি কিছু গোলমাল হয়. 249 00:14:47,660 --> 00:14:51,630 যদি কিছু গোলমাল হয়. এবং কি কি ভুল যখন আপনি GetString মত কল যেতে পারে? 250 00:14:54,960 --> 00:14:57,640 হাঁ. >> [ছাত্রদের] Malloc এটি ints দিতে ব্যর্থ হয়. 251 00:14:57,640 --> 00:14:59,150 হাঁ. হয়তো malloc ব্যর্থ. 252 00:14:59,150 --> 00:15:03,190 কোথাও নীচে ফণা, GetString কলিং malloc, যা মেমরি বরাদ্দ করা হয়, 253 00:15:03,190 --> 00:15:06,020 যা কম্পিউটার দোকান দেয় অক্ষরের সব 254 00:15:06,020 --> 00:15:07,750 ব্যবহারকারী যে ধরনের কীবোর্ড মধ্যে. 255 00:15:07,750 --> 00:15:11,590 অনুমান এবং ব্যবহারকারী একটি বিনামূল্যে সময় পুরো অনেক ছিল এবং টাইপ উদাহরণস্বরূপ আরো,, 256 00:15:11,590 --> 00:15:16,160 , কম্পিউটার বেশী অক্ষরের চেয়ে 2 বিলিয়ন অক্ষর এমনকি RAM উপস্থিত রয়েছে. 257 00:15:16,160 --> 00:15:19,250 GetString যাও যাও যাও আপনি যে বোঝান সক্ষম করা আছে. 258 00:15:19,250 --> 00:15:22,560 যদি এই একটি সুপার, সুপার অসাধারণ কোণার কেস, 259 00:15:22,560 --> 00:15:24,340 এটা একরকম এই হ্যান্ডেল করতে পারবে আছে, 260 00:15:24,340 --> 00:15:28,750 এবং তাই GetString, যদি আমরা ফিরে যান এবং তার ডকুমেন্টেশন পড়ুন, আসলে ফিরতি শূন্য মধ্যে আছে. 261 00:15:28,750 --> 00:15:34,460 তাই এখন যদি GetString NULL ফেরত দ্বারা করা সম্ভব না হলে, GetInt INT_MAX ফিরে দ্বারা কর্ম বিফল হবে 262 00:15:34,460 --> 00:15:37,690 ঠিক যেমন একটি পাহারা. এগুলি হল শুধু মানুষের নিয়মাবলী. 263 00:15:37,690 --> 00:15:41,450 একমাত্র উপায় আপনি এই ক্ষেত্রে জানতে চাই ডকুমেন্টেশন পড়া হয়. 264 00:15:41,450 --> 00:15:45,040 >> চলুন শুরু করা যাক যেখানে আসলে int-অর্জিত হয় স্ক্রোল ডাউন. 265 00:15:45,040 --> 00:15:51,160 লাইন 170 সালে যদি আমি স্ক্রল ডাউন একটি বিট, আরো, আমরা এই লাইন উপরে একটি মন্তব্য আছে. 266 00:15:51,160 --> 00:15:55,100 172 আমরা কোন int, n, এবং একটি গৃহস্থালি, গ, এবং তারপর এই নতুন ফাংশন ঘোষণা, 267 00:15:55,100 --> 00:15:58,930 আপনি যা কিছু আগে, sscanf জুড়ে স্খলিতচরণ আছে. 268 00:15:58,930 --> 00:16:00,870 এই পংক্তি scanf ঘোরা. 269 00:16:00,870 --> 00:16:05,700 অন্য কথায়, সম্পর্কে একটি স্ট্রিং দিন এবং আমি আগ্রহের তথ্য টুকরোগুলি জন্য এটি স্ক্যান করবে. 270 00:16:05,700 --> 00:16:07,360 এর অর্থ কি? 271 00:16:07,360 --> 00:16:11,800 ধরুন আমি যে, আক্ষরিক অর্থ, 123 টাইপ করুন কীবোর্ড তারপর লিখুন এবং আঘাত. 272 00:16:11,800 --> 00:16:16,470 123 ডাটা টাইপ GetString দ্বারা যখন ফিরে কি? >> [ছাত্রদের] স্ট্রিং. 273 00:16:16,470 --> 00:16:18,380 এটা সম্ভবত এর একটি স্ট্রিং, ডান? আমি একটি স্ট্রিং পেয়েছিলাম. 274 00:16:18,380 --> 00:16:23,220 সুতরাং 123 সত্যিই হয়, মূল্যউদ্ধৃতি-উদ্ধতি, এটা শেষে \ 0 সাথে 123. 275 00:16:23,220 --> 00:16:27,110 যে কোন int হয় না. যে একটি সংখ্যা না. এটি একটি নম্বর মনে হচ্ছে কিন্তু এটি আসলে না. 276 00:16:27,110 --> 00:16:29,080 তাই GetInt কি আছে? 277 00:16:29,080 --> 00:16:35,750 123 \ 0 - - এবং একটি প্রকৃত পূর্ণসংখ্যা যাও একরকম রূপান্তর এটা পংক্তি বাম থেকে স্ক্যান হয়েছে. 278 00:16:35,750 --> 00:16:37,850 আপনি কিভাবে এই জিনিসটা না পারে. 279 00:16:37,850 --> 00:16:41,450 আপনি যদি pset2 ফিরে মনে করেন, সম্ভবতঃ আপনি না একটু সিজার করতে স্বাচ্ছন্দ্য 280 00:16:41,450 --> 00:16:44,820 অথবা Vigenere তাই, আপনি একটি স্ট্রিং উপর পুনরুক্তি করতে পারেন, আপনি অক্ষর ints রূপান্তর করতে পারেন. 281 00:16:44,820 --> 00:16:46,710 কিন্তু নরক, এটা একটা কাজ সমগ্র অনেক. 282 00:16:46,710 --> 00:16:49,860 কেন sscanf মত একটি ফাংশন যা আপনাকে যে জন্য ফোন আছে না? 283 00:16:49,860 --> 00:16:54,230 সুতরাং sscanf প্রত্যাবর্তনের একটি যুক্তি - এই ক্ষেত্রে বলা লাইন, যা একটি স্ট্রিং. 284 00:16:54,230 --> 00:17:01,840 তারপর আপনি কোট মধ্যে, নির্দিষ্ট খুব অনুরূপ printf, আপনি কি এই স্ট্রিং দেখতে আশা. 285 00:17:01,840 --> 00:17:09,000 এবং কি আমি এখানে বলছে না হয় আমি একটা দশমিক সংখ্যা হতে পারে এবং একটি অক্ষর দেখতে আশা. 286 00:17:09,000 --> 00:17:12,000 এবং আমরা এটি কেন শুধু একটা মুহূর্ত ক্ষেত্রে দেখতে পাবেন. 287 00:17:12,000 --> 00:17:15,869 এবং এটি সক্রিয় আউট যে এই স্বরলিপি এখন তরিতরকারি স্মারক আমরা শুরু বলছি 288 00:17:15,869 --> 00:17:17,619 মাত্র এক সপ্তাহ আগে. 289 00:17:17,619 --> 00:17:21,740 আমাদের জন্য কি & এবং এন সি এখানে কি করছে? >> [ছাত্রদের] n ঠিকানা এবং গ ঠিকানা. 290 00:17:21,740 --> 00:17:25,400 হাঁ. এটা আমার গ n ঠিকানা এবং ঠিকানা প্রদান করে. কেন যে গুরুত্বপূর্ণ? 291 00:17:25,400 --> 00:17:30,220 আপনি কি জানেন যে সি ইন ফাংশান উপস্থিত করা সহ, আপনি সবসময় একটি মান বা না মান এ সব ফিরে আসতে পারেন. 292 00:17:30,220 --> 00:17:34,530 আপনি কোন int, একটি পংক্তি, একটি float, একটি গৃহস্থালি, যাই হোক না কেন, অথবা আপনি অকার্যকর ফিরে আসতে পারেন ফিরে আসতে পারেন, 293 00:17:34,530 --> 00:17:38,030 কিন্তু আপনি কেবলমাত্র একটি জিনিস সর্বাধিক ফিরে আসতে পারেন. 294 00:17:38,030 --> 00:17:42,760 কিন্তু এখানে আমরা sscanf সম্পর্কে হয়তো ফিরে কোন int, একটি দশমিক সংখ্যা চান, 295 00:17:42,760 --> 00:17:46,220 এবং আরও একটি গৃহস্থালির কাজ, এবং আমি একটি মুহূর্ত কেন গৃহস্থালি ব্যাখ্যা করব. 296 00:17:46,220 --> 00:17:51,460 আপনি কার্যকরভাবে sscanf দুটি জিনিস ফিরে আসতে চান, কিন্তু যে ঠিক করা সম্ভব সি না 297 00:17:51,460 --> 00:17:55,200 আপনি দুটি ঠিকানাগুলোতেই পাশ দিয়ে কাজ করতে পারেন যে কাছাকাছি 298 00:17:55,200 --> 00:17:57,370 কারণ যত তাড়াতাড়ি আপনি ঠিকানাগুলি দুই হাতে একটি ফাংশন, 299 00:17:57,370 --> 00:18:00,470 তাদের সাথে কি যে ফাংশন কি করতে পারি? >> [ছাত্রদের] যারা ঠিকানায় লিখুন. 300 00:18:00,470 --> 00:18:02,010 ঐ ঠিকানায় চিঠি লিখতে পারেন. 301 00:18:02,010 --> 00:18:05,770 আপনি তারকা ক্রিয়া ব্যবহার করার জন্য এবং সেই প্রত্যেকটি ঠিকানায় সেখানে যেতে পারেন. 302 00:18:05,770 --> 00:18:11,260 এটা ভেরিয়েবলের মান পরিবর্তন করার জন্য এই ধরণের ব্যাক ডোর প্রক্রিয়া কিন্তু খুব সাধারণ 303 00:18:11,260 --> 00:18:14,870 এই ক্ষেত্রে, দুই - একটা মাত্র জায়গা থেকে বেশী. 304 00:18:14,870 --> 00:18:21,340 এখন আমি == 1 জন্য এবং তারপর চেক n ফিরে যদি যে সত্য, না সত্য পরীক্ষা করছি বিজ্ঞপ্তি. 305 00:18:21,340 --> 00:18:26,170 কি করছেন? টেকনিক্যালি, সব আমরা সত্যিই GetInt মধ্যে ঘটতে করতে চান এই. 306 00:18:26,170 --> 00:18:30,740 মূল্যউদ্ধৃতি-উদ্ধতি 123 - আমরা, তাই কথা বলতে বিশ্লেষণ করতে চান, আমরা স্ট্রিং পড়তে চাই - 307 00:18:30,740 --> 00:18:34,560 এবং যদি তা দেখে মনে হচ্ছে একটি নম্বর আছে, কি না করছি আমরা sscanf বলার আছে 308 00:18:34,560 --> 00:18:38,190 এই পরিবর্তনশীল মধ্যে n জন্য সম্পর্কে - 123 - হয় যে নম্বর করান. 309 00:18:38,190 --> 00:18:42,090 আমি তখন কেন আমি আসলে কি আছে এই হিসাবে ভাল? 310 00:18:42,090 --> 00:18:48,220 Sscanf ভূমিকা বলছে আপনি একটি অক্ষর এখানে পেতে পারে কি? 311 00:18:48,220 --> 00:18:53,470 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] আসলে >> একটি দশমিক বিন্দু কাজ করতে পারেন. 312 00:18:53,470 --> 00:18:56,330 এর রাখা যাক একটি মুহূর্তে যে চিন্তা. আর কী? 313 00:18:56,330 --> 00:18:59,270 [ছাত্রদের] এটা শূন্য হতে পারে. >> ভাল চিন্তা. এটা নাল অক্ষর হতে পারে. 314 00:18:59,270 --> 00:19:01,660 এটা আসলে এই ক্ষেত্রে না. হাঁ. >> [ছাত্রদের] ASCII. 315 00:19:01,660 --> 00:19:04,340 ASCII. অথবা আমাকে এমনকি আরও সাধারণের বোধগম্য. 316 00:19:04,340 --> 00:19:06,640 % গ সেখানে মাত্র ত্রুটি পরীক্ষা করা হয়. 317 00:19:06,640 --> 00:19:09,300 আমরা সেখানে না নম্বর পরে একটি চরিত্র হতে না চান, 318 00:19:09,300 --> 00:19:11,870 কিন্তু এই সম্পর্কে কি কি করতে পারবেন নিম্নোক্ত. 319 00:19:11,870 --> 00:19:18,210 এটি সক্রিয় যে sscanf, ছাড়াও এই উদাহরণে হবে এবং গ মান এখানে সংরক্ষণ, 320 00:19:18,210 --> 00:19:24,890 এটি কি তা ভেরিয়েবল সংখ্যা উৎপন্ন হয় না এটা ইন মান করা 321 00:19:24,890 --> 00:19:30,260 তাই আপনি যদি শুধুমাত্র 123 টাইপ করার পরে, শুধুমাত্র% d তে মেলে যাচ্ছে, 322 00:19:30,260 --> 00:19:33,880 এবং শুধুমাত্র এন 123 মত একটি মান সঞ্চিত পরার, 323 00:19:33,880 --> 00:19:35,640 এবং গ কিছুই করা না হয়. 324 00:19:35,640 --> 00:19:37,620 সি অবশেষ একটি গার্বেজ মান, তাই কথা বলতে - 325 00:19:37,620 --> 00:19:40,730 আবর্জনা কারণ এটি কিছু মান সক্রিয়া করা হয়েছে না. 326 00:19:40,730 --> 00:19:45,520 সুতরাং যে ক্ষেত্রে, sscanf ফেরৎ 1 কারণ আমি ঐ পয়েন্টার 1 জনবহুল, 327 00:19:45,520 --> 00:19:50,190 যে ক্ষেত্রে মহান, আমি কোন int নেই, তাই আমি মেমরি মুক্ত লাইন মুক্ত 328 00:19:50,190 --> 00:19:54,000 যে GetString আসলে বরাদ্দ করা, এবং তারপর আমি ফিরে আসতে হবে, 329 00:19:54,000 --> 00:19:58,500 অন্যথায় যদি কখনও কোন বিস্ময়ের উদ্রেক যেখানে যে বিবৃতি থেকে আসে পুনরায় চেষ্টা করুন, এটি এখান থেকে আসে. 330 00:19:58,500 --> 00:20:04,390 বৈসাদৃশ্য দ্বারা যদি,, আমি টাইপ 123foo মধ্যে - কিছু কিছু লেখা র্যান্ডম ক্রম - 331 00:20:04,390 --> 00:20:08,490 sscanf সংখ্যা, সংখ্যা, সংখ্যা, চ দেখতে হবে, 332 00:20:08,490 --> 00:20:16,410 এবং এটা হবে 123 সালে করা যাচ্ছে; এটা গ মধ্যে চ এবং তারপর রাখা 2 ফিরে যাচ্ছে. 333 00:20:16,410 --> 00:20:20,640 সুতরাং আমরা আছে, ঠিক sscanf এর ব্যবহার, একটি অত্যন্ত সহজ উপায় মৌলিক সংজ্ঞা ব্যবহার করে - 334 00:20:20,640 --> 00:20:23,900 ভাল, প্রথম নজরে কিন্তু এ দিন মোটামুটি সহজ প্রক্রিয়া শেষ জটিল - 335 00:20:23,900 --> 00:20:28,320 বলার অপেক্ষা রাখে না হয় এবং কোন int সেখানে যদি তাই হয় যে, শুধুমাত্র যে কাজটা আমি খুঁজে পাওয়া যায়নি? 336 00:20:28,320 --> 00:20:29,860 এবং এখানে হোয়াইটস্পেস হয় ইচ্ছাকৃত. 337 00:20:29,860 --> 00:20:34,000 আপনি যদি sscanf জন্য ডকুমেন্টেশন পড়ুন, আপনি কি এটা বলে যে, যদি আপনি হোয়াইটস্পেস এক টুকরা অন্তর্ভুক্ত 338 00:20:34,000 --> 00:20:38,810 শুরুতে বা শেষে, খুব sscanf কারনের জন্য ব্যবহারকারীকে অনুমতি দেয়, হবে, 339 00:20:38,810 --> 00:20:41,860 যাও স্পেস বার 123 এবং আঘাত যে বৈধ হতে হবে. 340 00:20:41,860 --> 00:20:44,150 ব্যবহারকারী এ চিত্কার হবে না কারণ তারা স্পেস বার আঘাত 341 00:20:44,150 --> 00:20:48,640 শুরুতে বা শেষে, যা অল্পমাত্র আরো ব্যবহারকারী বান্ধব. 342 00:20:48,640 --> 00:20:52,300 >> তারপর কোন প্রশ্নের উপর GetInt? হাঁ. >> [ছাত্রদের] আপনি যদি শুধুমাত্র একটি গৃহস্থালি রাখা? 343 00:20:52,300 --> 00:20:54,030 ভাল প্রশ্ন. 344 00:20:54,030 --> 00:20:59,890 কি হবে যদি আপনি শুধু চ মত একটি গৃহস্থালি টাইপ এবং কখনও 123 টাইপ ছাড়া লিখুন আঘাত 345 00:20:59,890 --> 00:21:02,420 আপনি কি মনে করেন এই লাইনের কোড ব্যবহার তারপর হবে? 346 00:21:02,420 --> 00:21:04,730 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 347 00:21:04,730 --> 00:21:08,790 হ্যাঁ, তাই sscanf যে খুব কারণ যে ক্ষেত্রে, তা n বা গ পূরণ হচ্ছে না আবরণ করতে পারেন. 348 00:21:08,790 --> 00:21:15,310 এটি পরিবর্তে 0, ফিরে যা ক্ষেত্রে এছাড়াও আমি যে দৃশ্যকল্প করছি সংক্রামক যাচ্ছে 349 00:21:15,310 --> 00:21:18,750 কারণ আমি চাই প্রত্যাশিত মান হল 1. 350 00:21:18,750 --> 00:21:22,000 আমি শুধুমাত্র এক চান এবং শুধুমাত্র এক জিনিস বুজা যাও. ভাল প্রশ্ন. 351 00:21:22,000 --> 00:21:24,290 >> অন্যদের? ঠিক আছে. 352 00:21:24,290 --> 00:21:26,250 >> এর মধ্যে এখানে র সমস্ত কর্ম ব্যবহার মধ্য দিয়ে যেতে হবে না যাক, 353 00:21:26,250 --> 00:21:29,500 কিন্তু এক যে সম্ভবত অবশিষ্ট আগ্রহের হতে মনে হয় GetString 354 00:21:29,500 --> 00:21:32,790 কারণ এটি সক্রিয় যে GetFloat, GetInt, GetDouble, GetLongLong 355 00:21:32,790 --> 00:21:36,260 সব পান্ট GetString তাদের কার্যকারিতা অনেক. 356 00:21:36,260 --> 00:21:39,750 সুতরাং আসুন এখানে তিনি কিভাবে বাস্তবায়িত হয় কটাক্ষপাত করা. 357 00:21:39,750 --> 00:21:43,630 এই এক সামান্য জটিল দেখায়, কিন্তু এটা একই মৌলিক ব্যবহার 358 00:21:43,630 --> 00:21:45,670 যে আমরা শুরু করতে গত সপ্তাহে বিষয়ে কথা বলছি. 359 00:21:45,670 --> 00:21:49,490 GetString ইন, যা প্রতি অকার্যকর হিসাবে কোন যুক্তি লাগে আপ করুন এখানে 360 00:21:49,490 --> 00:21:53,730 এবং এটি একটি স্ট্রিং ফেরৎ, আমি দৃশ্যত একটি স্ট্রিং নামক বাফার ঘোষণা করছি. 361 00:21:53,730 --> 00:21:56,270 আমি কি যে এখনও জন্য ব্যবহার করা যাচ্ছে না সত্যিই জানি না, কিন্তু আমরা দেখতে পাবেন. 362 00:21:56,270 --> 00:21:58,390 দেখে মনে হচ্ছে ডিফল্ট 0 দ্বারা ক্ষমতা হয়. 363 00:21:58,390 --> 00:22:01,350 নেই পুরোপুরি নিশ্চিত যেখানে এই কি হবে যাও জন্য এখনো ব্যবহার করা যাচ্ছে না যাচ্ছে, না না, 364 00:22:01,350 --> 00:22:03,590 কিন্তু এখন এটা একটু বেশি আকর্ষণীয় হচ্ছে. 365 00:22:03,590 --> 00:22:06,520 লাইন 243, আমরা কোন int, গ ডিক্লেয়ার. 366 00:22:06,520 --> 00:22:08,800 এটি একটি মূঢ় বিবরণের সাজান. 367 00:22:08,800 --> 00:22:15,820 একটি গৃহস্থালি হয় 8 বিট, এবং 8 বিট কত বিভিন্ন মান সংরক্ষণ করতে পারেন? >> [ছাত্রদের] 256. >> 256. 368 00:22:15,820 --> 00:22:20,730 সমস্যা হল আপনি যদি 256 বিভিন্ন ASCII অক্ষর, যা আছে চাই 369 00:22:20,730 --> 00:22:23,340 যদি আপনি আবার মনে - এবং এই কিছু মুখস্থ করা নয়. 370 00:22:23,340 --> 00:22:25,710 কিন্তু আপনি যদি যে বড় হওয়া ASCII চার্ট ফিরে মনে করি আমরা ছিল সপ্তাহ আগে, 371 00:22:25,710 --> 00:22:30,600 যে ক্ষেত্রে 128 বা 256 ASCII অক্ষর ছিল. 372 00:22:30,600 --> 00:22:32,940 আমরা সব 0 সেঃ এবং 1s আপ ধরনে ব্যবহৃত. 373 00:22:32,940 --> 00:22:36,210 এটা একটা সমস্যা যদি আপনি কোনো ত্রুটি সনাক্ত সক্ষম হতে চান 374 00:22:36,210 --> 00:22:40,190 কারণ যদি আপনি ইতিমধ্যেই আপনার অক্ষরের জন্য করছি 256 মান ব্যবহার করে, 375 00:22:40,190 --> 00:22:43,050 আপনি কি সত্যিই এগিয়ে পরিকল্পনা করছি না, কারণ এখন বলছে আপনি কি কোন উপায় আছে, 376 00:22:43,050 --> 00:22:46,270 এই একটি legit অক্ষর নয়, এই হল কিছু ভ্রান্ত বার্তা. 377 00:22:46,270 --> 00:22:50,270 তাই দুনিয়া আছে তারা পরবর্তী বৃহত্তম মান, কোন int মত ব্যবহার, 378 00:22:50,270 --> 00:22:54,720 যাতে আপনি আছে 4 বিলিয়ন সম্ভাব্য মান জন্য একটি বিট, 32 এর ছবি নম্বর, 379 00:22:54,720 --> 00:22:58,860 যাতে কেবল আপনি শেষ পর্যন্ত তাদের মূলত 257 ব্যবহার করতে পারেন, 380 00:22:58,860 --> 00:23:01,720 1 টি যা আছে কিছু করার সময় একটি ত্রুটি হিসাবে অর্থ বিশেষ. 381 00:23:01,720 --> 00:23:03,120 >> সুতরাং আসুন কিভাবে এই কাজ করে দেখুন. 382 00:23:03,120 --> 00:23:07,760 লাইন 246 সালে, আমি যখন বড় এই লুপ যে fgetc হয় কলিং আছে, 383 00:23:07,760 --> 00:23:11,090 চ অর্থ ফাইল, তাই getc, এবং তারপর stdin. 384 00:23:11,090 --> 00:23:15,520 এটি সক্রিয় আউট এটা বলছে কীবোর্ড থেকে ইনপুট রিড আরও ভালো উপায়. 385 00:23:15,520 --> 00:23:19,300 স্ট্যান্ডার্ড ইনপুট মানে কীবোর্ড, স্ট্যান্ডার্ড আউপুট পর্দা মানে, 386 00:23:19,300 --> 00:23:23,310 এবং মান ত্রুটি, যা আমরা pset4 মধ্যে দেখতে পাবেন, পর্দা মানে 387 00:23:23,310 --> 00:23:27,490 একটি পর্দার বিশেষ অংশ কিন্তু যাতে প্রকৃত আউটপুট সঙ্গে মিশিয়ে ফেলেছিলেন না 388 00:23:27,490 --> 00:23:30,750 আপনি যে প্রিন্ট উদ্দেশ্যে. কিন্তু যে ভবিষ্যতে আরও বেশি. 389 00:23:30,750 --> 00:23:34,440 তাই ঠিক fgetc মানে কীবোর্ড থেকে একটি অক্ষর এবং এটি পড়া যেখানে সঞ্চয়? 390 00:23:34,440 --> 00:23:37,350 গ মধ্যে এটি সংরক্ষণ করুন. 391 00:23:37,350 --> 00:23:41,360 এবং তারপর চেক - তাই আমি কিছু বুলিয়ান conjunctions ব্যবহার করছি এখানে - 392 00:23:41,360 --> 00:23:46,000 এটা সমান না চেক - \ n, যাতে ব্যবহারকারী লিখুন আঘাত করেনি, আমরা যে সময়ে থামাতে চান, 393 00:23:46,000 --> 00:23:49,850 লুপ শেষ - এবং আমরা বিশেষ ধ্রুবক ফাইলের শেষে জন্য চেক করতে চান, 394 00:23:49,850 --> 00:23:53,610 যা আপনি যদি জানেন বা অনুমান কি, এটি জন্য দাঁড়াবেন? >> [ছাত্রদের] ফাইলের শেষ. ফাইলের >> শেষ. 395 00:23:53,610 --> 00:23:56,560 এই ধরনের অর্থহীন, কারণ আমি যদি কীবোর্ড এ টাইপ করছি, 396 00:23:56,560 --> 00:23:58,870 আসলে কোন ফাইল এই কাজে জড়িত, 397 00:23:58,870 --> 00:24:01,150 কিন্তু এই মাত্র জেনেরিক শব্দটি বোঝাতে ব্যবহার করা হয় বাছাই 398 00:24:01,150 --> 00:24:04,220 যে অন্য কিছুই মানুষের আঙ্গুলের এর থেকে আসছে. 399 00:24:04,220 --> 00:24:06,460 ফাইলের শেষে - ফাইলের শেষে. 400 00:24:06,460 --> 00:24:09,920 একপাশে একটি হিসাবে, যদি কখনও আপনার কীবোর্ড এ করেছি কন্ট্রোল ডি আঘাত, আপনি এখনো যে করা সম্ভব নয় - 401 00:24:09,920 --> 00:24:15,230 আপনি কন্ট্রোল সি আঘাত করেছি - কন্ট্রোল D: এই বিশেষ ধ্রুবক বলা ফাইলের শেষে পাঠায়. 402 00:24:15,230 --> 00:24:19,850 তাই এখন আমরা কিছু ডাইনামিক মেমরি বরাদ্দকরণের আছে. 403 00:24:19,850 --> 00:24:23,440 >> তাই আপনি যদি (n + 1> ক্ষমতা). এখন আমি n ব্যাখ্যা করব. 404 00:24:23,440 --> 00:24:26,100 N, ঠিক কত বাইট হয় বাফারে বর্তমানে, 405 00:24:26,100 --> 00:24:28,620 স্ট্রিং যে বর্তমানে আপনার ব্যবহারকারী থেকে নির্মাণ করছেন আপ. 406 00:24:28,620 --> 00:24:33,450 আপনি যদি আপনার বাফারে আরো অক্ষর তুলনায় আপনি বাফারে ক্ষমতা আছে, 407 00:24:33,450 --> 00:24:37,410 intuitively কি আমরা করতে হবে তারপর আরো ক্ষমতা বরাদ্দ করা হয়. 408 00:24:37,410 --> 00:24:43,330 আমি এখানে কিছু গাণিতিক সর পড়া উপর এবং শুধুমাত্র এই ফাংশন এখানে ফোকাস যাচ্ছি. 409 00:24:43,330 --> 00:24:46,070 আপনি কি জানেন যে malloc হয় বা অন্তত সাধারণভাবে পরিচিত. 410 00:24:46,070 --> 00:24:48,970 একটি অনুমান কি realloc আছে নিন. >> [ছাত্রদের] মেমরি জোড়ে. 411 00:24:48,970 --> 00:24:52,920 এটি মেমরি এর বেশ যোগ না. এটা অনুসরণ হিসাবে মেমরি reallocates. 412 00:24:52,920 --> 00:24:57,220 আপনি যদি এখনও সেখানে পংক্তির শেষে ঘরে আপনি যে মেমরি আরো দেত্তয়া 413 00:24:57,220 --> 00:25:00,000 তুলনায় এটি মূলত আপনাকে দেয়, তাহলে আপনি যে অতিরিক্ত মেমরি পাবেন. 414 00:25:00,000 --> 00:25:03,460 সুতরাং আপনি ঠিক রাখা স্ট্রিং এর অক্ষর নির্বাণ ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক করতে পারেন. 415 00:25:03,460 --> 00:25:05,830 কিন্তু যদি এই ক্ষেত্রে না, কারণ আপনি ঢুকে অতি দীর্ঘ 416 00:25:05,830 --> 00:25:07,940 এবং কিছু র্যান্ডম সেখানে মেমরি বেশী plopped 417 00:25:07,940 --> 00:25:10,290 কিন্তু এখানে নিচে সেখানে অতিরিক্ত মেমরি, যে ঠিক. 418 00:25:10,290 --> 00:25:13,100 Realloc আপনার জন্য সব ভারী উত্তোলন করতে হবে, 419 00:25:13,100 --> 00:25:16,750 আপনি স্ট্রিং এ পর্যন্ত থেকে এখানে পড়েছি, সরানো এটি দমন করা আছে, 420 00:25:16,750 --> 00:25:19,460 এবং তারপরে আপনি যে সময়ে আরো কিছু রানওয়ে দিতে. 421 00:25:19,460 --> 00:25:22,550 >> তাই হাতের একটি তরঙ্গ সাথে, আমাকে বলে কি GetString করছে 422 00:25:22,550 --> 00:25:26,330 এটি একটি ছোট বাফার, হয়তো এক একক অক্ষর দিয়ে শুরু এর, 423 00:25:26,330 --> 00:25:30,820 এবং ব্যবহারকারী দুই ধরনের অক্ষর যদি, realloc কলিং আপ GetString শেষ হয় এবং বলেছেন, 424 00:25:30,820 --> 00:25:33,150 এক অক্ষর ছিল যথেষ্ট নয়; সম্পর্কে দুটি অক্ষর দিন. 425 00:25:33,150 --> 00:25:35,950 তারপর যদি আপনি লুপের পক্ষে যুক্তি দিয়ে পড়া, এটা বলার যাচ্ছে 426 00:25:35,950 --> 00:25:39,600 ব্যবহারকারী 3 টি অক্ষর টাইপ করা; এখন না কিন্তু 2 4 অক্ষর সম্পর্কে দিতে, 427 00:25:39,600 --> 00:25:42,320 তারপর সম্পর্কে 8 দিন পরে, সম্পর্কে 16 এবং 32 দিন. 428 00:25:42,320 --> 00:25:45,000 যে আমি প্রতিটি সময় দ্বিত্ব ক্ষমতা করছি 429 00:25:45,000 --> 00:25:48,570 এর মানে হল যে বাফার যাও ধীরে ধীরে হত্তয়া যাচ্ছে না, এটা সুপার ফাস্ট হত্তয়া যাচ্ছে. 430 00:25:48,570 --> 00:25:51,380 এবং কি যে সুবিধা হতে পারে? 431 00:25:51,380 --> 00:25:54,600 আমি এটা কেন বাফারের মাপ দ্বিত্ব 432 00:25:54,600 --> 00:25:58,020 যদিও ব্যবহারকারী শুধু একটা কীবোর্ড থেকে অতিরিক্ত অক্ষর প্রয়োজন হতে পারে? 433 00:25:58,020 --> 00:26:01,750 [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে? >> [ছাত্রদের] আপনি এটি হিসাবে প্রায়ই হত্তয়া না. 434 00:26:01,750 --> 00:26:03,300 ঠিক. আপনি এটি হিসাবে প্রায়ই হত্তয়া না. 435 00:26:03,300 --> 00:26:05,510 এবং এই ধরনের আপনি শুধু আপনার কয়টা বেট করছি এখানে hedging, 436 00:26:05,510 --> 00:26:10,850 ধারণা করা হচ্ছে যে আপনি realloc অনেক কল কারণ এটি ধীর হতে থাকে না. 437 00:26:10,850 --> 00:26:12,910 কোন সময় মেমরির জন্য অপারেটিং সিস্টেম জিজ্ঞাসা, 438 00:26:12,910 --> 00:26:16,990 যত তাড়াতাড়ি আপনি ভবিষ্যতে সমস্যা সেটে দেখতে পাবেন, এটি কিছুটা সময় নিতে থাকে. 439 00:26:16,990 --> 00:26:20,010 সুতরাং সময় যে পরিমাণ হ্রাস, এমনকি আপনি যদি কিছু জায়গা নষ্ট করছি, 440 00:26:20,010 --> 00:26:21,900 একটি ভাল জিনিস হতে থাকে. 441 00:26:21,900 --> 00:26:24,060 >> কিন্তু আমরা যদি GetString এখানে চূড়ান্ত অংশ মাধ্যমে পড়া - 442 00:26:24,060 --> 00:26:27,950 এবং আবার প্রতি একক লাইন এখানে প্রতীতি হয় আজ এত গুরুত্বপূর্ণ না - 443 00:26:27,950 --> 00:26:30,530 লক্ষ্য করা যে শেষ পর্যন্ত আবার কল malloc 444 00:26:30,530 --> 00:26:33,880 এবং এটি অনেক বাইট হিসাবে ঠিক বরাদ্দ হিসাবে এটি স্ট্রিং জন্য প্রয়োজন 445 00:26:33,880 --> 00:26:38,060 এবং তারপর বিনামূল্যে বেজায় বড় বাফার কলিং দ্বারা দূরে ছোঁড়া 446 00:26:38,060 --> 00:26:40,080 যদি সত্যিই এটা অনেকবার দ্বিগুন বেশী. 447 00:26:40,080 --> 00:26:42,730 তাই স্বল্প, যে কিভাবে GetString হয়েছে সব সময় এই কাজ. 448 00:26:42,730 --> 00:26:47,060 সমস্ত এটি একটি সময়ে কোনো একটি অক্ষর পড়তে আবার এবং আবার এবং আবার, 449 00:26:47,060 --> 00:26:50,750 এবং প্রত্যেক সময় এটা কিছু অতিরিক্ত মেমরি প্রয়োজন, তা অপারেটিং সিস্টেমের জন্য অনুরোধ করবে 450 00:26:50,750 --> 00:26:53,670 দ্বারা realloc কলিং. 451 00:26:53,670 --> 00:26:57,890 >> কোন প্রশ্ন? ঠিক আছে. 452 00:26:57,890 --> 00:26:59,270 >> একটি আক্রমণ. 453 00:26:59,270 --> 00:27:04,060 এখন যে আমরা পয়েন্টার বুঝতে বা অন্তত হয় পয়েন্টার ক্রমশ পরিচিত, 454 00:27:04,060 --> 00:27:06,700 এর বিবেচনা করা যাক কিভাবে সারা বিশ্ব জুড়ে ভেঙ্গে আরম্ভ 455 00:27:06,700 --> 00:27:10,030 যদি আপনি বেশ adversarial ব্যবহারকারীদের বিরুদ্ধে আত্মরক্ষা না না, 456 00:27:10,030 --> 00:27:11,850 যারা আপনার সিস্টেমের মধ্যে হ্যাক করার চেষ্টা করছেন, 457 00:27:11,850 --> 00:27:16,890 যারা কিছু রেজিস্ট্রেশন কোড circumventing দ্বারা আপনার সফ্টওয়্যার চুরি করার চেষ্টা করছেন 458 00:27:16,890 --> 00:27:19,090 যে তারা অন্যভাবে ইন টাইপ থাকতে পারে 459 00:27:19,090 --> 00:27:22,990 >> এই যেমন কটাক্ষপাত এখানে নিয়ে, যা শুধু সি কোড যে একটি নীচে মূল ফাংশন রয়েছে 460 00:27:22,990 --> 00:27:26,380 যে একটা ফাংশন কল foo বিন্যাস. এবং এটি কি foo বিন্যাস হয় ক্ষণস্থায়ী? 461 00:27:26,380 --> 00:27:29,680 [ছাত্রদের] একটি যুক্তি. >> [Malan] একটি যুক্তি. 462 00:27:29,680 --> 00:27:33,450 সুতরাং argv [1], যা প্রথম শব্দ যে ব্যবহারকারী কমান্ড লাইনে টাইপ অর্থ 463 00:27:33,450 --> 00:27:36,360 a.out বা যাই হোক না কেন পরে প্রোগ্রাম বলা হয়. 464 00:27:36,360 --> 00:27:41,680 সুতরাং উপরের foo বিন্যাস একটি গৃহস্থালি * মধ্যে লাগে. কিন্তু গৃহস্থালি * ঠিক কি? >> [ছাত্রদের] একটি পংক্তি. 465 00:27:41,680 --> 00:27:43,350 [Malan] একটি স্ট্রিং, তাই এখানে নেই কিছুই নতুন. 466 00:27:43,350 --> 00:27:45,420 স্ট্রিং ইচ্ছামত হয় বার বলা হচ্ছে. 467 00:27:45,420 --> 00:27:51,430 এখানে এই লাইন ইন, গৃহস্থালির কাজ গ [12]; আধা - প্রযুক্তিগত ইংরেজি সাজানোর মধ্যে কি, এই লাইন করছে? 468 00:27:51,430 --> 00:27:55,220 [ছাত্রদের] একটি অ্যারে - র >> এরে? >> [ছাত্রদের] অক্ষর. >> অক্ষর. 469 00:27:55,220 --> 00:27:58,870 সম্পর্কে 12 অক্ষরের একটি অ্যারের দিন. সুতরাং আমরা এই একটি বাফার কল পারে. 470 00:27:58,870 --> 00:28:02,920 এটা টেকনিক্যালি এর নামক গ, কিন্তু প্রোগ্রামিং মধ্যে একটি বাফার মাত্র স্থান একটি গুচ্ছ অর্থ 471 00:28:02,920 --> 00:28:04,800 যে আপনি কিছু উপাদান ইন লাগাতে পারেন 472 00:28:04,800 --> 00:28:07,940 তারপর সর্বশেষে memcpy, আমরা আগে, করেছি কিন্তু ব্যবহৃত না আপনি সম্ভবত অনুমান এটি কী জন্য প্রয়োজন হতে পারে. 473 00:28:07,940 --> 00:28:10,480 এটি মেমরি কপি. কি করব? 474 00:28:10,480 --> 00:28:19,270 এটা আপাতদৃষ্টিতে বার কপি, গ মধ্যে নিজের ইনপুট, কিন্তু কেবল বার দৈর্ঘ্য. 475 00:28:19,270 --> 00:28:24,930 কিন্তু এখানে একটা বাগ আছে. >> [ছাত্রদের] আপনি sizeof অক্ষর প্রয়োজন. >> ঠিক আছে. 476 00:28:24,930 --> 00:28:30,860 টেকনিক্যালি, আমরা সত্যিই strlen (বার) * না sizeof (গৃহস্থালি)). উচিত এটা সঠিক. 477 00:28:30,860 --> 00:28:33,930 কিন্তু এখানে সবচেয়ে খারাপ ক্ষেত্রে, যাক এর যে that's অনুমান - 478 00:28:33,930 --> 00:28:35,950 ঠিক আছে. তারপর দুই বাগ আছে. 479 00:28:35,950 --> 00:28:39,160 সুতরাং sizeof (গৃহস্থালি)); 480 00:28:39,160 --> 00:28:41,290 চলুন এই সামান্য একটি ব্যাপকতর করা. 481 00:28:41,290 --> 00:28:44,910 তাই এখন এখনও সেখানে একটি বাগ, যা কি? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] 482 00:28:44,910 --> 00:28:46,990 কি জন্য পরীক্ষা? >> [ছাত্রদের] শূন্য জন্য চেক করুন. 483 00:28:46,990 --> 00:28:50,270 আমরা সাধারণত শূন্য চেক কারণ খারাপ ব্যাপার ঘটতে করা উচিত 484 00:28:50,270 --> 00:28:53,200 যখন আপনার NULL পয়েন্টার হয়, কারণ আপনি আপ আপাতত শেষ হতে পারে, 485 00:28:53,200 --> 00:28:57,630 এবং আপনি কি কখনো চালু করা উচিত নয় তারকা অপারেটর সঙ্গে এটি dereferencing দ্বারা নাল যাও. 486 00:28:57,630 --> 00:29:01,050 তাই ভালো. এবং আমরা কি কি করছেন? যুক্তি, এখানে আছে একটি ত্রুটি খুব. 487 00:29:01,050 --> 00:29:04,450 [ছাত্রদের] যদি argc is> = 2 চেক করুন. 488 00:29:04,450 --> 00:29:10,550 তাই যদি হয় argc> = 2 চেক. ঠিক আছে, তাই এখানে আছে এই প্রোগ্রামের তিনটি বাগ. 489 00:29:10,550 --> 00:29:16,630 এখন আমরা যদি চেক ব্যবহারকারী আসলে argv মধ্যে কিছু টাইপ [1]. গুড. 490 00:29:16,630 --> 00:29:20,950 তাই এর তৃতীয় বাগ? হাঁ. >> [ছাত্রদের] সি বড় যথেষ্ট নাও হতে পারে. 491 00:29:20,950 --> 00:29:23,320 গুড. আমরা এক দৃশ্যকল্প চেক. 492 00:29:23,320 --> 00:29:29,520 আমরা পরোক্ষভাবে চেক করবেন আরো মেমরি বেশী বার দৈর্ঘ্য অতিক্রম করবে কপি করা হবে না. 493 00:29:29,520 --> 00:29:32,510 তাই আপনি যদি ব্যবহারকারীকে স্ট্রিং টাইপ করা হয় 10 অক্ষর দীর্ঘ, 494 00:29:32,510 --> 00:29:36,020 এই কেবল অক্ষর 10 কপি বলছে না. এবং যে ঠিক. 495 00:29:36,020 --> 00:29:39,940 কিন্তু আছে কি যদি ব্যবহারকারী একটি 20-অক্ষর শব্দ ভালো প্রম্পটে একটি শব্দ টাইপ? 496 00:29:39,940 --> 00:29:44,900 এই বার থেকে 20 অক্ষরের মধ্যে কি কপি বলছে? 497 00:29:44,900 --> 00:29:49,750 সি, আমাদের বাফার হিসাবে অন্যথায় পরিচিত, যার অর্থ হল আপনি শুধু তথ্য লিখেছেন 498 00:29:49,750 --> 00:29:52,540 ২ 8 বাইট অবস্থানে যে আপনি নিজের না, 499 00:29:52,540 --> 00:29:54,870 এবং আপনি তাদের অর্থে যে আপনি তাদের জন্য বরাদ্দ কখনো কিনবেন না. 500 00:29:54,870 --> 00:30:00,370 তাই এই কি বাফার ওভারফ্লো আক্রমণ বা বাফার পদদলিত করা আক্রমণ হিসাবে সাধারণত এর পরিচিত. 501 00:30:00,370 --> 00:30:05,580 এবং এটা অর্থে আক্রমনের যে যদি ইউজার বা প্রোগ্রাম যা আপনার ফাংশন এর আহ্বান 502 00:30:05,580 --> 00:30:10,490 এই maliciously করছেন, আসলে কি ঘটবে পরের আসলে খুব খারাপ হতে পারে. 503 00:30:10,490 --> 00:30:12,450 >> সুতরাং আসুন এখানে এই ছবি কটাক্ষপাত করা. 504 00:30:12,450 --> 00:30:16,060 এই ছবি আপনার মেমরি স্ট্যাকের প্রতিনিধিত্ব করে. 505 00:30:16,060 --> 00:30:19,580 পুনরাহ্বান যে প্রতিটি সময় আপনি একটি ফাংশন কল আপনি এই স্ট্যাকের উপর সামান্যই ফ্রেম পাবেন 506 00:30:19,580 --> 00:30:21,520 এবং তারপর অন্য এবং তারপর অন্য আরেকটি. 507 00:30:21,520 --> 00:30:24,300 এবং এ পর্যন্ত, আমরা শুধু এই ধরনের আনমনা হিসাবে rectangles 508 00:30:24,300 --> 00:30:26,290 উভয় জাহাজে বা এখানে পর্দা. 509 00:30:26,290 --> 00:30:30,580 কিন্তু যদি আমরা এক যারা rectangles মধ্যে, যখন আপনি একটি ফাংশন কল foo এর উপর জুম, 510 00:30:30,580 --> 00:30:35,880 এটি সক্রিয় যে যে ফ্রেমের স্ট্যাকের ভিতরে আছে যে আয়তক্ষেত্র মধ্যে আরো 511 00:30:35,880 --> 00:30:40,060 শুধু x এবং y এবং a ও b, swap-র মত আমরা যে বিষয়ে কথা বলছি হয়নি. 512 00:30:40,060 --> 00:30:44,410 এটা পরিনত হয় যে তাদের মধ্যে কিছু আছে নিম্ন স্তরের বিবরণ, ফিরে ঠিকানা. 513 00:30:44,410 --> 00:30:49,550 সুতরাং এটি সক্রিয় আউট যখন প্রধান কল foo বিন্যাস, প্রধান যাও foo বিন্যাস অবহিত করা হয়েছে 514 00:30:49,550 --> 00:30:53,520 কম্পিউটার এর মেমরি কি প্রধান এর ঠিকানা হল 515 00:30:53,520 --> 00:30:57,770 কারণ অন্যথায়, যত তাড়াতাড়ি foo এর মধ্যে এখানে এই কেস হিসাবে নির্বাহ করার জন্য এটা করা হয়, 516 00:30:57,770 --> 00:31:00,830 একবার আপনি foo বিন্যাস শেষে এই বদ্ধ কোঁকড়া বক্রবন্ধনী পৌঁছানোর, 517 00:31:00,830 --> 00:31:05,310 কিভাবে নরক foo বিন্যাস আছে যেখানে প্রোগ্রাম নিয়ন্ত্রণ যেতে অনুমিত হয় জানেন? 518 00:31:05,310 --> 00:31:08,970 এটা পরিনত হয় যে যে প্রশ্নের উত্তর এই লাল এখানে আয়তক্ষেত্র হয়. 519 00:31:08,970 --> 00:31:12,670 এই একটি পয়েন্টার প্রতিনিধিত্ব করে, এবং এটি কম্পিউটারের উপর অস্থায়ীভাবে সঞ্চয় 520 00:31:12,670 --> 00:31:17,030 তথাকথিত স্ট্যাকের মূল ঠিকানা যাতে যত তাড়াতাড়ি foo কমান্ডটি নির্বাহ করার জন্য এটা করা হয়, 521 00:31:17,030 --> 00:31:21,120 যেখানে কম্পিউটার জানে এবং প্রধান কি লাইনে ফিরে যান. 522 00:31:21,120 --> 00:31:23,940 সংরক্ষিত ফ্রেম পয়েন্টার এই একইভাবে সম্পর্কিত. 523 00:31:23,940 --> 00:31:26,310 চর * এখানে কি বার প্রতিনিধিত্ব করে? 524 00:31:26,310 --> 00:31:31,350 এখন এখানে এই নীল সেগমেন্ট হয় foo বিন্যাস এর ফ্রেম. বার কি? 525 00:31:31,570 --> 00:31:35,010 বার শুধুমাত্র foo বিন্যাস ফাংশন আর্গুমেন্ট. 526 00:31:35,010 --> 00:31:37,500 তাই এখন আমরা পরিচিত ছবি বাছাই করেন পিছনে. 527 00:31:37,500 --> 00:31:39,850 আরো পর্দায় পণ্যদ্রব্য এবং আরো distractions আছে, 528 00:31:39,850 --> 00:31:43,380 কিন্তু শুধু এই হালকা নীল সেগমেন্ট কি আমরা chalkboard হয়েছে করেছি অঙ্কন 529 00:31:43,380 --> 00:31:45,790 জন্য swap 'র মত কিছু. যে foo এর জন্য ফ্রেম. 530 00:31:45,790 --> 00:31:51,490 এবং এটি শুধুমাত্র জিনিস অধিকার এখন হয় বার, যা এই পরামিতি. 531 00:31:51,490 --> 00:31:55,220 কিন্তু কি কি স্ট্যাকের মধ্যে এই এখানে কোড অনুযায়ী হওয়া উচিত? 532 00:31:55,220 --> 00:31:57,760 [ছাত্রদের] গৃহস্থালি গ [12]. >> [Malan] গৃহস্থালি গ [12]. 533 00:31:57,760 --> 00:32:02,810 আমরা মেমরি বরাদ্দ 12 একটি পরিবর্তনশীল নামক গ যাও স্কোয়ার দেখতে পাবেন, 534 00:32:02,810 --> 00:32:04,970 এবং নিশ্চয় আমরা পর্দায় যে নেই. 535 00:32:04,970 --> 00:32:08,480 খুব উপরে আছে গ [0], এবং তারপর এই চিত্রটি লেখক 536 00:32:08,480 --> 00:32:11,850 বার স্কোয়ার সব অঙ্কন, না বিরক্ত হয় কিন্তু প্রকৃতপক্ষে সেখানে সেখানে 12 537 00:32:11,850 --> 00:32:16,590 কারণ যদি আপনি নীচের অংশে ডানদিকে তাকান, গ [11] যদি 0 থেকে গণনা করা হয় 12th যেমন বাইট. 538 00:32:16,590 --> 00:32:18,400 কিন্তু এখানে সমস্যা. 539 00:32:18,400 --> 00:32:22,390 যা অভিমুখ গ ক্রমবর্ধমান হয়? 540 00:32:22,390 --> 00:32:27,080 সাজান উপরে নিচে যদি এটি শীর্ষে শুরু হয় এবং বৃদ্ধি নীচে. 541 00:32:27,080 --> 00:32:30,110 এটা ভালো আমরা নিজেদেরকে অনেক বাকি রানওয়ে এখানে এ সব না তাকান. 542 00:32:30,110 --> 00:32:32,090 আমরা ধরনের করেছি কোণার মধ্যে নিজেদেরকে আঁকা, 543 00:32:32,090 --> 00:32:36,940 এবং যে ক্যা [11] বার, যা সংরক্ষিত ফ্রেম পয়েন্টার বিরুদ্ধে সঠিক আপ বিরুদ্ধে সঠিক আপ, 544 00:32:36,940 --> 00:32:39,960 যা ফিরে ঠিকানা বিরুদ্ধে সঠিক আপ. কোন জায়গা নেই. 545 00:32:39,960 --> 00:32:42,810 তাই এর পরে সংশ্লেষ যদি আপনি আপ ঘুর্ণি 546 00:32:42,810 --> 00:32:46,500 আপনি চেষ্টা করুন এবং একটি 12-বাইট বাফারের মধ্যে 20 বাইট পড়া? 547 00:32:46,500 --> 00:32:50,060 যেখানে যারা অতিরিক্ত 8 বাইট যেতে হয় যাব? >> [ছাত্রদের] ইনসাইড - 548 00:32:50,060 --> 00:32:53,200 অন্য সব কিছুর ভিতর, যা কিছু হয় সুপার গুরুত্বপূর্ণ. 549 00:32:53,200 --> 00:32:57,260 এবং সবচেয়ে গুরুত্বপূর্ণ বিষয় সম্ভাব্য,, একটি লাল বক্স আছে, ফিরে ঠিকানা, 550 00:32:57,260 --> 00:33:03,560 কারণ অনুমান করা হয় যে আপনি দুর্ঘটনাবশতঃ বা adversarially যারা 4 বাইট মুছে ফেলা, 551 00:33:03,560 --> 00:33:07,260 যে শুধুমাত্র আবর্জনা কিন্তু সঙ্গে সঙ্গে একটি নম্বর পয়েন্টার ঠিকানা, 552 00:33:07,260 --> 00:33:09,810 যে যা মেমরির মধ্যে একটি প্রকৃত ঠিকানা প্রতিনিধিত্ব ঘটবে. 553 00:33:09,810 --> 00:33:13,880 নিহিতার্থ কি, যুক্তি? >> [ছাত্রদের] ফাংশন একটি ভিন্ন জায়গা ফিরে যাচ্ছে. 554 00:33:13,880 --> 00:33:15,250 ঠিক. 555 00:33:15,250 --> 00:33:19,170 কোঁকড়া বক্রবন্ধনী যে যখন foo বিন্যাস এবং আয় হিট প্রোগ্রাম এগিয়ে যাচ্ছে 556 00:33:19,170 --> 00:33:25,060 যাও প্রধান ফিরে না, এটা যে লাল বাক্সে যাই হোক ঠিকানা হল ফিরে যাচ্ছে. 557 00:33:25,060 --> 00:33:28,600 >> ইন circumventing সফ্টওয়্যার নিবন্ধনের ক্ষেত্রে, 558 00:33:28,600 --> 00:33:32,260 কি তার ঠিকানা যদি যে এর ফিরে হচ্ছে যে সাধারণতঃ বলা হয় ফাংশন পরার 559 00:33:32,260 --> 00:33:35,690 পরে আপনি সফ্টওয়্যার জন্য এবং আপনার দেওয়া নিবন্ধীকরণ কোড ইনপুট? করেছি 560 00:33:35,690 --> 00:33:39,870 আপনি কৌতুক কম্পিউটারের মধ্যে এখানে যাচ্ছে না কিন্তু বাছাই পরিবর্তে যাচ্ছে এখানে আপ করতে পারেন. 561 00:33:39,870 --> 00:33:45,100 অথবা যদি আপনি সত্যিই চতুর হন, একটি প্রতিদ্বন্দ্বী আসলে কীবোর্ড এ টাইপ উদাহরণস্বরূপ করতে পারেন,, 562 00:33:45,100 --> 00:33:50,690 প্রকৃত একটি শব্দ না, না 20 টি অক্ষর, কিন্তু সে আসলে ধরনের ঠাউর 563 00:33:50,690 --> 00:33:52,770 কিছু অক্ষর আছে যা কোড প্রতিনিধিত্বকারী. 564 00:33:52,770 --> 00:33:55,320 এবং তা সি কোড করা যাচ্ছে না, আসলে তা অক্ষর ব্যবহার করা যাচ্ছে 565 00:33:55,320 --> 00:33:59,290 যে মেশিন কোড বাইনারি, 0 সেঃ এবং 1s প্রতিনিধিত্বকারী. 566 00:33:59,290 --> 00:34:01,290 কিন্তু অনুমান তারা চালাক যথেষ্ট যে, 567 00:34:01,290 --> 00:34:06,500 যাও একরকম GetString প্রম্পট যা মূলত কোড কম্পাইল লেপন, 568 00:34:06,500 --> 00:34:09,980 এবং বিগত 4 বাইট যে ফিরতি ঠিকানা মুছে ফেলা. 569 00:34:09,980 --> 00:34:13,360 কি ঠিকানা এবং যে ইনপুট কি না? 570 00:34:13,360 --> 00:34:18,630 এটা আসলে এই লাল আয়তক্ষেত্র বাফার প্রথম বাইট ঠিকানা মধ্যে সঞ্চয়. 571 00:34:18,630 --> 00:34:23,070 সুতরাং আপনি সত্যিই চালাক আছে, এবং এই খারাপ মানুষের জন্য শুদ্ধাশুদ্ধি অনেক আউট আছে, 572 00:34:23,070 --> 00:34:25,639 কিন্তু যদি আপনি কিভাবে বড় এই বাফার হয় জিনিসটা করতে পারেন 573 00:34:25,639 --> 00:34:28,820 যেমন যে শেষ ইনপুট মধ্যে কয়েক বাইট আপনি প্রোগ্রাম প্রদান 574 00:34:28,820 --> 00:34:33,540 যাও সমতুল্য আপনার বাফার শুরুর ঠিকানা হবে এরকম, আপনি এটা করতে পারেন. 575 00:34:33,540 --> 00:34:39,320 যদি আমরা বলতে সাধারণতঃ হ্যালো এবং \ 0, এটা কি বাফার শেষ পর্যন্ত. 576 00:34:39,320 --> 00:34:44,420 কিন্তু যদি আমরা আরো চতুর এবং আমরা আক্রমণ জেনেরিক কোড ডাকবো সঙ্গে যে বাফার ভরাট - 577 00:34:44,420 --> 00:34:48,860 AAA, আক্রমণ করা, আক্রমণ করা, আক্রমণ - যেখানে এই মাত্র কিছু একটা যে খারাপ কিছু আছে, 578 00:34:48,860 --> 00:34:51,820 কি হবে যদি আপনি সত্যিই চতুর হন, আপনি এই কাজ করতে পারে. 579 00:34:51,820 --> 00:34:58,610 এখানে লাল বাক্স হয় সংখ্যা ক্রম - 80, C0, 35, 08. 580 00:34:58,610 --> 00:35:01,610 উল্লেখ্য যে নম্বর যে এখানে আপ সাথে মেলে. 581 00:35:01,610 --> 00:35:04,430 এটা বিপরীত ক্রমে আছে, কিন্তু যে অন্য কিছু সময় আরও. 582 00:35:04,430 --> 00:35:08,140 উল্লেখ্য, এই ফিরতি ঠিকানা করেনি ইচ্ছাকৃতভাবে করা হয়েছে রদবদল 583 00:35:08,140 --> 00:35:12,020 যাও ঠিকানা এখানে সমান, প্রধান ঠিকানা না. 584 00:35:12,020 --> 00:35:17,500 তাই আপনি যদি খারাপ লোক হয় সুপার স্মার্ট, তিনি যে আক্রমণ কোড অন্তর্ভুক্ত করতে হবে 585 00:35:17,500 --> 00:35:20,930 কিছু ব্যবহারকারী এর ফাইল সব মুছে দিন পাসওয়ার্ডগুলি বা কপি 586 00:35:20,930 --> 00:35:24,680 অথবা একটি ব্যবহারকারীর অ্যাকাউন্টের সাথে যে আমি পরে লগ ইন করতে পারেন - এ সব কিছু. 587 00:35:24,680 --> 00:35:26,950 >> এবং এই উভয় বিপদ এবং সি শক্তি 588 00:35:26,950 --> 00:35:29,840 কারণ আপনি পয়েন্টার মাধ্যমে মেমরি এক্সেস আছে 589 00:35:29,840 --> 00:35:32,520 এবং সেইজন্য আপনি একটি কম্পিউটার এর মেমরির মধ্যে কিছু করতে চান না লিখতে পারে, 590 00:35:32,520 --> 00:35:35,080 আপনি একটি কম্পিউটার কিছু করতে চান কি করতে পারেন 591 00:35:35,080 --> 00:35:39,550 সহজভাবে দ্বারা এটা কখনও তার নিজের মেমরি স্পেস মধ্যে প্রায় তিড়িং লাফ. 592 00:35:39,550 --> 00:35:44,650 এই দিন যাতে এবং অনেক প্রোগ্রাম এবং অনেক ওয়েবসাইটে যে বোঝাপড়া হয় 593 00:35:44,650 --> 00:35:46,200 এই সুবিধার সুযোগ গ্রহণ মানুষের ফুটান. 594 00:35:46,200 --> 00:35:50,760 এবং এই একটি অত্যাধুনিক সুপার আক্রমণের মতো, কিন্তু মনে আছে যে উপায় আছে সবসময় আরম্ভ না হতে পারে. 595 00:35:50,760 --> 00:35:53,560 বাস্তবতা হল যে কি খারাপ মানুষ সাধারণত করতে হবে, 596 00:35:53,560 --> 00:35:58,200 এটি একটি কমান্ড লাইনে একটি প্রোগ্রাম অথবা একটি GUI লগ প্রোগ্রাম বা ওয়েবসাইট, 597 00:35:58,200 --> 00:35:59,940 আপনি শুধু আজেবাজে কথা প্রদান শুরু. 598 00:35:59,940 --> 00:36:03,980 আপনি একটি অনুসন্ধান ক্ষেত্র এবং আঘাত লিখুন মধ্যে বড় শব্দ টাইপ করুন, 599 00:36:03,980 --> 00:36:05,780 এবং আপনি যদি ওয়েবসাইট ক্র্যাশ দেখতে অপেক্ষা 600 00:36:05,780 --> 00:36:09,990 অথবা আপনি যদি কিছু প্রোগ্রাম ত্রুটির বার্তা টেপা দেখতে অপেক্ষা 601 00:36:09,990 --> 00:36:14,330 কারণ যদি আপনি পেতে খারাপ লোক হিসাবে ভাগ্যবান এবং আপনি কিছু ছবি ইনপুট প্রদান 602 00:36:14,330 --> 00:36:18,980 যে প্রোগ্রাম, মানে প্রোগ্রামার আপনার খারাপ আচরণ বার কহা ক্র্যাশ না, 603 00:36:18,980 --> 00:36:23,630 যার মানে আপনি সম্ভবত সঙ্গে প্রচেষ্টা যথেষ্ট, যথেষ্ট ট্রায়াল এবং ত্রুটি করতে পারেন, 604 00:36:23,630 --> 00:36:26,650 জিনিসটা কিভাবে একটি আরো সঠিক আক্রমণ মজুরি. 605 00:36:26,650 --> 00:36:31,410 তাই যতটা নিরাপত্তা একটি অংশ এই আক্রমণ এড়ানো হয় ঠিক না পুরাপুরি 606 00:36:31,410 --> 00:36:34,100 কিন্তু তাদের সনাক্ত এবং লগের এ আসলে খুঁজছেন 607 00:36:34,100 --> 00:36:36,780 এবং এইজন্য কি ছবি ইনপুট আপনার ওয়েবসাইটে টাইপ মানুষ আছে, 608 00:36:36,780 --> 00:36:38,960 কি খঁোজা আপনার ওয়েবসাইটে আছে জনের টাইপ 609 00:36:38,960 --> 00:36:42,870 কিছু বাফার উছল আশা. 610 00:36:42,870 --> 00:36:45,500 এবং এই সব কি সহজ বুনিয়াদি যাও boils নিচে এর একটি অ্যারে 611 00:36:45,500 --> 00:36:49,080 এবং এটি কি এবং বরাদ্দ মেমরির ব্যবহার মানে না. 612 00:36:49,080 --> 00:36:51,710 >> সম্পর্কিত যে খুব হয় এই যাও. 613 00:36:51,710 --> 00:36:54,280 যাক এর ভিতরে একটি মাত্র হার্ড ড্রাইভের কটাক্ষে দেখা এখনো আবার. 614 00:36:54,280 --> 00:36:58,440 আপনি একটি বা দু 'সপ্তাহ আগে থেকে প্রত্যাহার যে যখন আপনি আপনার রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন বা ট্র্যাশ করতে পারেন ফাইল, টানুন 615 00:36:58,440 --> 00:37:03,710 কি ঘটবে? >> [ছাত্রদের] কিছুই নেই. >> সম্পূর্ণভাবে কিছুই, ডান? 616 00:37:03,710 --> 00:37:05,740 অবশেষে আপনি যদি ডিস্কের স্থান চালানো কম, 617 00:37:05,740 --> 00:37:08,190 উইন্ডোজ বা ম্যাক অপারেটিং সিস্টেম আপনার জন্য ফাইল মুছে ফেলা হবে. 618 00:37:08,190 --> 00:37:10,390 তবে আপনি যদি সেখানে কিছু টানুন, যে সকল নিরাপদ হয় না. 619 00:37:10,390 --> 00:37:13,800 সমস্ত একই ঘরে বাসিন্দা বা আপনার বন্ধু বা পরিবারের সদস্য না হয় এবং আছে ডবল ক্লিক করুন, voila, 620 00:37:13,800 --> 00:37:16,310 সব ক্রটিযুক্ত ফাইল মুছতে চেষ্টা আছে. 621 00:37:16,310 --> 00:37:19,590 আমাদের অধিকাংশ অন্তত জানেন যে আপনি ডান ক্লিক করুন ক্লিক করুন অথবা নিয়ন্ত্রণ আছে 622 00:37:19,590 --> 00:37:22,310 এবং খালি যে ভালো ট্র্যাশ বা কিছু. 623 00:37:22,310 --> 00:37:25,000 এমনকি তারপর যে বেশ কৌতুক না 624 00:37:25,000 --> 00:37:28,010 কারণ কি যখন আপনি আপনার হার্ড ড্রাইভে একটি ফাইল আছে 625 00:37:28,010 --> 00:37:32,770 যে কিছু কিছু শব্দ নথিটি বা কোন JPEG প্রতিনিধিত্ব করে, এবং এই আপনার হার্ড ড্রাইভের প্রতিনিধিত্ব করে, 626 00:37:32,770 --> 00:37:35,350 এবং এর যাক বলতে এখানে এই কাঠের ছিলকা যে ফাইলটি প্রতিনিধিত্ব করে, 627 00:37:35,350 --> 00:37:38,390 এবং এটি একটি 0 সেঃ এবং 1s আভা গঠিত হয়. 628 00:37:38,390 --> 00:37:42,470 যখন আপনি ট্র্যাশে শুধুমাত্র যে ফাইলটি টানুন না কি হয় বিন বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা যেতে পারে 629 00:37:42,470 --> 00:37:48,020 কিন্তু এটা খালি? কিছুই সাজান. 630 00:37:48,020 --> 00:37:49,640 এটা এখন এর একেবারে কিছুই না. 631 00:37:49,640 --> 00:37:54,290 এখন এটা ঠিক কিছুই কারণ সামান্য কিছু এই টেবিল আকারে ঘটবে. 632 00:37:54,290 --> 00:37:58,370 তাই ডাটাবেস অথবা টেবিল কিছু একটা কম্পিউটার এর ভিতর ধরনের মেমরি আছে 633 00:37:58,370 --> 00:38:03,850 যে মূলত ফাইলের জন্য একটি কলাম 'নাম এবং ফাইলের জন্য একটি কলাম' অবস্থান আছে, 634 00:38:03,850 --> 00:38:07,720 যেখানে এই অবস্থান 123, শুধু একটা র্যান্ডম সংখ্যা হতে পারে. 635 00:38:07,720 --> 00:38:14,560 সুতরাং আমরা x.jpeg এবং অবস্থান 123 মত কিছু থাকতে পারে. 636 00:38:14,560 --> 00:38:18,800 তারপর কি হয় যখন প্রকৃতপক্ষে আপনি আপনার ট্র্যাশ খালি করতে? 637 00:38:18,800 --> 00:38:20,330 যে দূরে চলে যায়. 638 00:38:20,330 --> 00:38:23,610 কিন্তু কি জন্য দূরে যেতে না হয় 0 সেঃ এবং 1s. 639 00:38:23,610 --> 00:38:26,270 >> তাই তখন এর pset4 যাও সংযোগ? 640 00:38:26,270 --> 00:38:31,240 Pset4 সঙ্গে ওয়েল, ঠিক, কারণ আমরা দূর্ঘটনাক্রমে কম্প্যাক্ট ফ্ল্যাশ কার্ড করেছি মুছে ফেলা 641 00:38:31,240 --> 00:38:35,750 যে দুর্ভাগ্য দ্বারা এই সমস্ত ফটো বা শুধু কারণ এটি ছিল বিকৃত হয়ে ওঠে 642 00:38:35,750 --> 00:38:38,000 কিন্তু যে 0 সেঃ এবং 1s এখনও সেখানে না না মানে. 643 00:38:38,000 --> 00:38:40,410 হয়তো এদের মধ্যে কয়েকটি কারণ কিছু বেশী দূষিত হারিয়ে যায় 644 00:38:40,410 --> 00:38:43,320 এ অর্থে যে কিছু 0 সেঃ ওঠে 1s এবং 1s ওঠে 0 সেঃ. 645 00:38:43,320 --> 00:38:47,240 খারাপ জিনিসের কারণে বগী সফ্টওয়্যার বা ত্রুটিপূর্ণ হার্ডওয়্যার ঘটতে পারে. 646 00:38:47,240 --> 00:38:50,370 কিন্তু যারা বিট অনেক হয়ত, তাদের মধ্যে এমন কি 100%, এখনও আছে. 647 00:38:50,370 --> 00:38:55,050 এটা ঠিক যে কম্পিউটার বা ক্যামেরা যেখানে JPEG1 শুরু না জানা 648 00:38:55,050 --> 00:38:56,910 এবং যেখানে JPEG2 শুরু. 649 00:38:56,910 --> 00:39:01,070 কিন্তু যদি আপনি, প্রোগ্রামার কাণ্ডজ্ঞান একটি বিট যেখানে যারা JPEGs হয়, জানা 650 00:39:01,070 --> 00:39:06,010 অথবা, তাই তারা কি মত চেহারা আপনি 0 সেঃ এবং 1s এবং বলতে কোন JPEG, JPEG-বিশ্লেষণ করতে পারে, 651 00:39:06,010 --> 00:39:09,440 আপনি মূলত জন্য শুধু একটি সঙ্গে একটি প্রোগ্রাম বা লিখতে পারে যখন লুপ 652 00:39:09,440 --> 00:39:12,820 যে যারা প্রতিটি ফাইলের একটি recovers. 653 00:39:12,820 --> 00:39:16,030 সুতরাং পাঠ তাহলে আপনি নিরাপদভাবে আপনার ফাইল erasing শুরু হয় 654 00:39:16,030 --> 00:39:18,340 যদি আপনি এই পুরাপুরি এড়াতে চাই. হ্যাঁ. 655 00:39:18,340 --> 00:39:21,010 >> [ছাত্রদের] কিভাবে আসে এটা আপনার কম্পিউটারে বলছেন 656 00:39:21,010 --> 00:39:23,550 যে আপনার আরো মেমরি তুলনায় আপনি আগে কি আছে? 657 00:39:23,550 --> 00:39:27,820 আরো মেমরি তুলনায় আপনি আগে কি আছে - >> [ছাত্রদের] আরো মেমরি উপলব্ধ. 658 00:39:27,820 --> 00:39:29,630 ওহ. ভাল প্রশ্ন. 659 00:39:29,630 --> 00:39:32,360 ট্র্যাশ খালি পরে কারণ তারপর আপনার কম্পিউটারে আপনি না বলুন 660 00:39:32,360 --> 00:39:34,910 যে আপনার আরো মুক্ত স্থান তুলনায় আপনি আগে কি আছে? 661 00:39:34,910 --> 00:39:36,770 সংক্ষেপে ইন, কারণ এটা মিথ্যা না. 662 00:39:36,770 --> 00:39:40,740 আরো টেকনিক্যালি, আপনি আরও জায়গা আছে না, কারণ এখন আপনি বলেন 663 00:39:40,740 --> 00:39:43,680 আপনি অন্যান্য স্টাফ করা যেখানে একবার যে ফাইল করতে পারেন. 664 00:39:43,680 --> 00:39:45,450 কিন্তু যে বিট এ চলে না মানে, 665 00:39:45,450 --> 00:39:48,590 এবং যে সকল বিট 0 সেঃ হয় উদাহরণস্বরূপ পরিবর্তিত হচ্ছে না মানে, 666 00:39:48,590 --> 00:39:50,150 আপনার সুরক্ষার জন্য. 667 00:39:50,150 --> 00:39:54,640 সুতরাং এর বিপরীতে, যদি আপনি নিরাপদভাবে ফাইল বা নিশ্চিহ্ন করা শারীরিকভাবে ডিভাইস ধ্বংস, 668 00:39:54,640 --> 00:39:57,300 যে সত্যিই শুধুমাত্র যে প্রায় কখনও কখনও উপায়. 669 00:39:57,300 --> 00:40:02,020 >> কারণ আমরা যে আধা - ভয়ের নোট করবেন ছেড়ে না, এবং আমরা সোমবার আপনি দেখতে পাবেন. 670 00:40:02,020 --> 00:40:07,000 [সাধুবাদ] 671 00:40:07,780 --> 00:40:10,000 >> [CS50.TV]