[Powered by Google Translate] [সপ্তাহ 5] [ডেভিড জে Malan - হার্ভার্ড বিশ্ববিদ্যালয়] [এটি CS50. - CS50.TV] এটি CS50, সপ্তাহ 5. আজকে এই সপ্তাহে এবং, আমরা একটি ফরেনসিক বিশ্বের অল্প ঘটে! সমস্যা প্রেক্ষিতে 4 সেট করুন. আজ একটি সংক্ষিপ্ত বক্তৃতা কারণ পরে আছে এখানে একটি বিশেষ ঘটনা হবে. সুতরাং আমরা একটি উঁকি গ্রহণ এবং উভয় ছাত্র এবং অভিভাবকদের একইভাবে আজ জ্বালাতন করা হবে সঙ্গে জিনিষ দিগন্ত উপর যা কিছু. সারাংশ সোমবার হিসাবে তাদের মধ্যে,, আপনি আরো কয়েকটি সহপাঠীদের থাকবে. edX, হার্ভার্ড এবং MIT-এর নতুন OpenCourseWare এবং আরো অনলাইন উদ্যোগের জন্য, হার্ভার্ড এর ক্যাম্পাসে সোমবার, যা সোমবার আসা মানে হয় চালু আপনি শেষ গণনা হিসাবে আছে, 86.000 অতিরিক্ত সহপাঠীদের, হবে CS50 এর বক্তৃতা ও বিভাগে সঙ্গে যারা বরাবর অনুসরণ করা হবে এবং এগিয়ে যান এবং সমস্যা সেট. এবং এই অংশ হিসাবে, আপনি CS50 এবং এখন CS50x উদ্বোধনী বর্গ সদস্য হতে হবে. এই অংশ হিসাবে, এখন বুঝতে পারি যে হিসাবে ভাল কিছু upsides হতে হবে. ছাত্রদের জন্য এ বিশাল নম্বর পেতে এই জন্য প্রস্তুত,, এটা বলার জন্য যথেষ্ট যে যদিও আমরা 108 টিএফএস এবং সি এ এস আছে, এটা একবার আমরা ছাত্রদের 80,000 আঘাত বেশ ভাল ছাত্র, শিক্ষক অনুপাত না. আমরা অনেক সমস্যা ম্যানুয়ালি সেট করে শূন্য করা যাচ্ছে না করছি, তাই সমস্যা সেট চালু এই সপ্তাহে CS50 চেক করা হবে, যা প্রয়োগ মধ্যে একটি কমান্ড লাইন থেকে ব্যবহারযোগ্য হবে যে আপনি একবার আপনি পরে এটা আপডেট এই সপ্তাহান্তে পাবেন. আপনি আপনার নিজের pset একটি কমান্ড, check50, সঞ্চালন করতে সক্ষম হবেন, এবং আপনি হিসাবে তাত্ক্ষণিক প্রতিক্রিয়া কিনা আপনার প্রোগ্রামের সঠিক বা ভুল পাবেন নকশা অনুযায়ী বিভিন্ন স্পেসিফিকেশনের যে আমরা প্রদান করে থাকেন. সমস্যা সেট নির্দেশের মধ্যে যে আরো. CS50x সহপাঠীদের এই হিসাবে ভাল ব্যবহার করা হবে. সমস্যা সেট 4 সমস্ত ফরেনসিক সম্পর্কে হয়, এবং এই pset সত্যিই কিছু বাস্তব জীবনের উপাদান ছিল দ্বারা অনুপ্রাণিত তদ্দ্বারা আমি যখন গ্র্যাজুয়েট স্কুলে ছিল আমি যখন জন্য অন্তরীণ সঙ্গে MIDDLESEX কাউন্টি এর জেলা অ্যাটর্নি এর ফরেনসিক অফিসে কাজ করছেন সঙ্গে তাদের সীসা ফরেনসিক তদন্তকারী. কি এই amounted, হিসাবে আমি মনে করি আমি উল্লেখ করেছে গত কয়েক সপ্তাহ, হয় গণ রাজ্য পুলিশ বা অন্যদের লাভ করবে, তারা হার্ড ড্রাইভ এবং সিডি এবং ফ্লপি ডিস্ক এবং ভালো ভালো জিনিস ঘুমাইয়া পড়া হবে, এবং তারপর ফরেনসিক অফিসে লক্ষ্য নিরূপণ ছিল কিনা বা ছিল কিছু ধরণের প্রমাণ ছিল না. এই বিশেষ অনুসন্ধানের ইউনিট, তাই এটি ছিল বাবু অপরাধ. এটা ছিল অপরাধের আরো সমস্যাগ্রস্থ সাজানোর, ডিজিটাল মিডিয়ার কিছু কিছু জড়িত. এটি সক্রিয় আউট না যে অনেক মানুষ একটি ইমেল লিখুন বলছে, "আমি তা." সেজন্য প্রায়ই, এইসব ফরেনসিক অনুসন্ধান সব যে অনেক ফলের আপ না করেন, তবে কখনও কখনও মানুষ যেমন ইমেল লিখতে হবে. তাই কখনও কখনও, প্রচেষ্টা পুরস্কৃত হয়েছে. কিন্তু আপ হতে এই ফরেনসিক pset যাও, আমরা pset4 হবে গ্রাফিক্স একটি বিট পরিচায়ক. আপনি সম্ভবত মঞ্জুর জন্য এই জিনিস নিতে - JPEGs, gifs, এবং মত - এইসব দিন. তবে আপনি যদি সত্যিই এটা আমার মনে হয়, একটি চিত্র, অনেক ভালো রব এর মুখ, বিন্দু বা পিক্সেল একটা ক্রম হিসাবে স্থাপিত হতে পারে. Rob এর মুখ ক্ষেত্রে, রং সমস্ত প্রকারের আছে, এবং আমরা পৃথক বিন্দু, পিক্সেল হিসাবে পরিচিত অন্যথায় দেখতে শুরু করে, একবার আমরা ইন জুম শুরু কিন্তু আমরা যদি একটু অজটিল দুনিয়া এবং সেটা যে এখানে এই কালো এবং সাদা হয় রব, কালো এবং সাদা প্রতিনিধিত্ব করেন, আমরা শুধু বাইনারি ব্যবহার করতে পারেন. এবং যদি আমরা বাইনারি ব্যবহার করতে যাচ্ছেন, 1 অথবা 0, আমরা এই একই চিত্র প্রকাশ করতে পারেন র রব এর বিট এই প্যাটার্ন সঙ্গে হাস্যমুখের. 11000011 উপস্থাপন সাদা, সাদা, কালো, কালো, কালো, কালো, সাদা, সাদা. এবং তাই তারপর এর রঙিন ফটোগ্রাফ সম্পর্কে কথা শুরু একটি বিশাল লাফ হইনি, যে আপনি ফেসবুকে অথবা একটি ডিজিটাল ক্যামেরা সঙ্গে নিতে দেখতে চাই. কিন্তু অবশ্যই যখন এটি রং আসে, আপনি আরো বিট প্রয়োজন. ফটোগ্রাফ এবং বিশ্বের বেশ সাধারণ রং 1 বিট ব্যবহার না হয়, হিসাবে এই প্রস্তাব দেওয়া হয়, কিন্তু 24 বিট রঙ, যেখানে আসলে আপনি রং লক্ষ লক্ষ পেতে. সুতরাং হিসাবে ক্ষেত্রে যখন আমরা রব এর চোখে জুম, যে ছিল বিভিন্ন রঙিন সম্ভাবনার লক্ষ লক্ষ কোনো নম্বর. সুতরাং আমরা সমস্যা সেট 4 হিসাবে পাশাপাশি walkthrough এই পরিচয় করিয়ে দেব, যা স্বাভাবিকের 2:30 পরিবর্তে 3:30 হতে কারণ শুক্রবার এর এখানে বক্তৃতা আজকের হবে. কিন্তু ভিডিও চলিত আগামীকাল হিসাবে অনলাইন হতে হবে. আমরা অন্য ফাইল ফরম্যাট আপনাকে পরিচয় করিয়ে দেব. এই ইচ্ছা হয় প্রথমে ভয় চেহারা বোঝানো, কিন্তু এটি শুধু একটি সি struct জন্য কিছু ডকুমেন্টেশন. এটি সক্রিয় যে মাইক্রোসফট বছর আগে এই বিন্যাসে লোকায়ত সাহায্য বিটম্যাপ নামক ফাইল ফরম্যাট, bmp, এবং এই ছিল একটি সুপার সহজ, আনন্দময় গ্রাফিক্যাল ফাইল ফরম্যাট যে বেশ কিছু সময়ের জন্য ব্যবহার করা হয় এবং ডেস্কটপের উপর ওয়ালপেপার জন্য কখনও কখনও দেখা হত. আপনি যদি উইন্ডোজ এক্সপি এবং ঘূর্ণায়মান পাহাড় এবং নীল আকাশ ফিরে মনে, সাধারণত যে ছিল একটি bmp অথবা বিটম্যাপ ইমেজ. বিটম্যাপ আমাদের জন্য মজা কারণ তারা কিছুটা জটিলতা আছে. এটা পুরোপুরি হিসাবে 0 সেঃ এবং 1s এই গ্রিড হিসাবে সহজ. পরিবর্তে, আপনি একটি ফাইল শুরু করার একটি হেডার মত জিনিষ আছে. সুতরাং অন্যান্য ভিতরে একটি. Bmp ফাইল শব্দ, একটি 0 সেঃ এবং 1s আভা, কিন্তু কিছু অতিরিক্ত সেখানে 0 সেঃ এবং 1s আছে. এবং এটি সক্রিয় যে কি সম্ভবত আমরা গ্রহণ করেছি বছর জন্য জন্য দেয়া হয় - . doc বা. xls বা. mp3, ভালো ফাইল ফরম্যাটের. mp4, যাহা - কিছু ফাইল ফরম্যাটের আপনি পরিচিত - কি এমনকি এটা একটি ফাইল ফরম্যাট করা মানে, কারণ দিনের শেষে এই ফাইলের সব ঠিক 0 সেঃ এবং 1s আছে আমরা ব্যবহার করি. এবং হয়ত ঐ 0 সেঃ এবং 1s এবিসি বা মত হওয়া ASCII মাধ্যমে চিত্রিত করা, কিন্তু দিনের শেষে, এটি এখনও ঠিক 0 সেঃ এবং 1s. তাই শুধু মানুষের মাঝে একটি নতুন ফাইল ফরম্যাট উদ্ভাবিত সিদ্ধান্ত যেখানে তারা কি আসলে বিট প্যাটার্নের অর্থ হবে প্রমিত. এবং এখানে এই ক্ষেত্রে, লোকেরা যারা বিটম্যাপ ফাইল ফরম্যাট পরিকল্পিত তিনি আরো বলেন যে একটি বিটম্যাপ ফাইলের মধ্যে প্রথম বাইট এ, অফসেট হিসাবে সেখানে 0 দ্বারা denoted, গিয়ে কিছু cryptically নামে পরিবর্তনশীল নামক bfType করা আছে, যা শুধু বিটম্যাপ ফাইল টাইপ জন্য ঘোরা, কি বিটম্যাপ ফাইল প্রকার হল এই. আপনি দ্বিতীয় যে সারি 2 অফসেট, বাইট 2 নম্বর থেকে সম্ভবত আবিষ্কার করতে পারেন, 0 সেঃ এবং 1s একটি প্যাটার্ন যে কি উপস্থাপন করা হয়েছে? কিছু মাপ. এবং এটি থেকে সেখানে যায়. সুতরাং সমস্যা সেট 4, আপনি এইসব জিনিস কিছু মাধ্যমে পাবেন করা পদচারণা. আমরা শেষ পর্যন্ত তাদের সব বিষয়ে চিন্তা করা হবে না. কিন্তু এটি 54 বাইট প্রায় আকর্ষণীয় পেতে আরম্ভ বিজ্ঞপ্তি: rgbtBlue, সবুজ, ও Red. আপনি যদি কখনও শুনেছেন করেছি আদ্যক্ষরা আরজিবি - লাল, সবুজ, নীল - এই যে একটি রেফারেন্স কারণ এটি সক্রিয় আউট আপনি সব রামধনু রঙ আঁকা যাবে সঙ্গে লাল এবং নীল এবং সবুজ কিছু সংমিশ্রণ. এবং সত্য, রুমে বাবা নিকটতম প্রজেক্টর কিছু প্রত্যাহার হতে পারে. এই দিন, আপনি এক উজ্জ্বল আলো লেন্সের আসছে আউট দেখতে, কিন্তু ফিরে দিন আপনাকে লাল লেন্স, লেন্স নীল, সবুজ এবং লেন্স ছিল, এবং তারা একসাথে একটি পর্দা যার লক্ষ্য এবং একটি রঙিন ছবি গঠিত. এবং বেশ প্রায়ই, মধ্যম এবং উচ্চ বিদ্যালয় স্কুলের যারা লেন্স আছে কখনও সামান্য তাই বাঁকাভাবে, তাই আপনি ছিল ডবল অথবা ট্রিপল চিত্র বাছাই করা. কিন্তু যে ধারণা ছিল. আপনি লাল এবং সবুজ এবং নীল আলো একটি ছবি অলঙ্কার ছিল. এবং যে একই নীতি কম্পিউটারে ব্যবহৃত হয়. তাই আপনার জন্য চ্যালেঞ্জ তারপর সমস্যা মধ্যে মধ্যে সেট 4 কয়েকটি বিষয় হতে যাচ্ছে. একজন আসলে একটি চিত্র মাপ পরিবর্তন হয়, 0 সেঃ এবং 1s একটি প্যাটার্ন নিয়ে, জিনিসটা যা 0 সেঃ এবং 1s এর একটি অংশ গঠন কি ভালো প্রতিনিধিত্ব করেন, এবং তারপর চিন্তা করা কিভাবে পিক্সেল প্রতিলিপি নির্মাণ - reds, ব্লুজ, সবুজ শাক - ভিতরে যাতে যখন একটি ছবি ভালো প্রথমে দেখাচ্ছে, এটি পরিবর্তে ভালো যে দেখাশোনা হতে পারে. অন্যান্য চ্যালেঞ্জের মধ্যে খুব যে আপনি একটি ইমেজ ফরেনসিক হস্তান্তর করা হবে হবে একটি ডিজিটাল ক্যামেরা থেকে আসল ফাইল. এবং যে ক্যামেরা সময় উপর একবার,, ছিল একটি ফটো আভা. সমস্যা আমরা ঘটনাক্রমে হয় বা মুছে ফেলা হয়েছিল ছবিটি একরকম দূষিত. খারাপ জিনিষ ডিজিটাল ক্যামেরার সঙ্গে ঘটেছে. এবং এত দ্রুত আমরা যে কার্ড 0 সেঃ এবং 1s আপনার জন্য বন্ধ সমস্ত কপি, এক বড় ফাইলের মধ্যে তাদের সব সঞ্চয়, এবং তারপর আমরা তাদের কাছে আপনার সমস্যা যাও মধ্যে হাতে পাবেন 4 সেট করুন যাতে আপনি সি একটি প্রোগ্রাম যা তাদের সঙ্গে JPEGs সমস্ত পুনরুদ্ধার লিখুন আদর্শভাবে, করতে পারেন. এবং এটি সক্রিয় যে JPEGs আউট, যদিও তারা একটি জটিল ফাইল ফরম্যাট কিছুটা করছি - তারা অনেক এই স্মিত এখানে মুখ চেয়ে আরো জটিল - এটি সক্রিয় যে প্রতি কোন JPEG 0 সেঃ এবং 1s একই প্যাটার্নের সঙ্গে শুরু হয়. তাই ব্যবহার করে, পরিণামে, যখন একটি লুপ বা অনুরূপ জন্য একটি লুপ বা, আপনি সমস্ত 0 সেঃ এবং 1s উপর এই ফরেনসিক চিত্রে পুনরুক্তি করতে পারেন, এবং প্রত্যেক সময় আপনি বিশেষ প্যাটার্ন যে সমস্যা সেট স্পেসিফিকেশন সংজ্ঞায়িত হয়েছে তা দেখতে, আপনি এখানে খুব উচ্চ সম্ভাবনা হয়,, কোন JPEG শুরু ধারনা করতে পারি. এবং যত তাড়াতাড়ি আপনি খুঁজে বাইট কিছু নম্বর একই প্যাটার্ন বা কিলোবাইট বা মেগাবাইট পরে, এখানে আপনি অনুমান করতে পারেন একটি দ্বিতীয় কোন JPEG, আমি প্রথম ছবির পরে একটি নেন. সম্পর্কে যে প্রথম ফাইলটি পড়া থামাতে যাক, এই নতুন লেখা শুরু, এবং আপনার প্রোগ্রামের pset4 জন্য আউটপুট হিসাবে অনেক হিসাবে 50 JPEGs হবে. এবং এটি যদি 50 JPEGs না, আপনি একটি লুপ একটি বিট আছে. আপনি যদি একটি JPEGs সীমাহীন নম্বর আছে, আপনি একটি অসীম লুপ আছে. যাতে খুব খুব সাধারণ একটি মামলা করা হবে. সুতরাং যে দিগন্ত কি লেখা আছে তা. আমাদের পিছনে 0 ক্যুইজ আমার ইমেল প্রতি, বুঝতে পারি যে invariably আছে লোকেরা যারা উভয় খুশি, নিরপেক্ষ, এবং প্রায় দু: খিত ব্যঙ্গ 0 সময় সাজান. এবং আমার কাছে পৌঁছান, মাথা TF Zamyla, আপনার নিজের TF দয়া করে না, সি এ এস বা এক যে আপনি কি জানেন যদি আপনি কিভাবে যে চলে গেলেন আলোচনা করতে চাই. সুতরাং বাবা ছাপ এখানে রুমে, কি CS50 গ্রন্থাগারের? [হাস্য] গুড জব. CS50 লাইব্রেরি কি? হাঁ. >> [ছাত্রদের] এটি একটি কোড প্রাক লিখিত সেট [শ্রবণাতীত] ঠিক আছে, ভাল. এটি একটি কোড প্রাক লিখিত সেট যে আমরা কর্মীরা লিখেছে, আমরা আপনাকে প্রদান, যে কয়েকটি সাধারণ উপলব্ধকারীর, সম্পর্কে একটি স্ট্রিং পেতে ভালো সামগ্রী, সম্পর্কে পেতে কোন int - ফাংশন যে এখানে তালিকাভুক্ত করা হয় সব. এখন শুরু হচ্ছে, আমরা সত্যিই এই প্রশিক্ষণের চাকার অপসৃত করা শুরু. আমরা আপনার কাছ থেকে নিতে একটি স্ট্রিং শুরু করে যাচ্ছেন, যা রিকল কি প্রকৃত তথ্য টাইপ জন্য ছিল মাত্র একটি প্রতিশব্দ? >> [একাধিক ছাত্র] চর *. চর *. পিতামাতাদের জন্য, যে সম্ভবত ছিল [তোলে whooshing শব্দ]. এটা ভাল. চর * আমরা পর্দায় সমস্ত আরো উপর আমরা আমাদের শব্দভান্ডার থেকে স্ট্রিং অপসারণ দেখতে শুরু করবেন, অন্তত যখন এটি আসলে কোড লেখা আসে. একইভাবে, আমরা এই ফাংশন ব্যবহার হিসাবে অনেক কিছু বন্ধ হবে কারণ আমাদের প্রোগ্রাম আরো পরিশীলিত পেতে যাচ্ছি. বরং শুধুমাত্র প্রোগ্রামগুলি যে প্রম্পট জ্বলজ্বলে সঙ্গে সেখানে বসতে লিখুন, অপেক্ষা ব্যবহারকারীর জন্য কিছু একটা টাইপ করুন, আপনি অন্য কোথাও থেকে আপনার ইনপুট পাবেন. উদাহরণস্বরূপ, আপনার স্থানীয় হার্ড ডিস্ক বিট সিরিজ থেকে তাদের পাবেন. আপনি পরিবর্তে ভবিষ্যতে তাদের একটি নেটওয়ার্ক সংযোগ থেকে পাবেন, কোথাও কিছু ওয়েবসাইট. সুতরাং এই স্তর ছুলা প্রথম সময় এর জন্য দেওয়া এবং CS50 অ্যাপ্লায়েন্স বৈঠাচালনা আপ এবং এই ফাইল নামক cs50.h, যা আপনি হয়েছি # সপ্তাহের জন্য সহ, কিন্তু আমি কি আসলে এই ভিতরে কি দেখতে. নীল ফাইল উপরের মাত্র একটি মন্তব্য আভা: পাটা তথ্য এবং লাইসেন্সিং. এটি একটি সফ্টওয়্যার সাধারণ দৃষ্টান্ত কতকাংশে কারণ সফ্টওয়্যার অনেক দিন এইসব কি ওপেন সোর্স এর নামে, যার অর্থ হল যে কেউ কোড করা হয়েছে এবং এটি সহজলভ্য না এবং চালানোর ব্যবহার করলেও প্রকৃতপক্ষে এবং পড়তে পরিবর্তন এবং আপনার নিজের কাজে সংহত. তাই কি আপনি, ব্যবহার করছি একটি খুব ছোট ফর্ম যদ্যপি ওপেন সোর্স সফ্টওয়্যার,. যদি আমি মন্তব্য গত নিচে স্ক্রল যদিও,, আমরা আরো কিছু পরিচিত জিনিস দেখতে শুরু করব. এখানে উপরের যে cs50.h ফাইলটি একটি হেডার ফাইল আভা অন্তর্ভুক্ত এ বিজ্ঞপ্তি. এর মধ্যে সর্বাধিক, আমরা আগে, আছে দেখা যায় না কিন্তু এক পরিচিত. এই যা আমরা আছে দেখা যায়, যদিও সংক্ষেপে, দূর পর্যন্ত? >> [ছাত্রদের] স্ট্যান্ডার্ড লাইব্রেরি. হাঁ, আদর্শ লাইব্রেরি. stdlib.h malloc আছে. একবার আমরা শুরু ডাইনামিক মেমরি বরাদ্দকরণের বিষয়ে কথা বলছি, যা আমরা পরের সপ্তাহে ফিরে আসবে হিসাবে পাবেন, আমরা যে ফাইল সহ শুরু. এটা পরিনত হয় যে আসলে bool এবং সত্য এবং মিথ্যা সি অপরিহার্যভাবে মধ্যে উপস্থিত না থাকার যদি আপনি এই ফাইলটি এখানে অন্তর্ভুক্ত. সপ্তাহের জন্য আমরা হয়েছে stdbool.h সহ যাতে আপনি একটি bool, সত্য বা মিথ্যা. ধারণা ব্যবহার করতে পারেন এই ছাড়া, আপনি জাল তা বাছাই এবং কোন int ব্যবহার করতে হবে এবং ইচ্ছামত ঠিক অনুমান যে মিথ্যা 0 এবং 1 সত্য হয়. যদি আমরা নিচে স্ক্রল আরও এখানে, একটি স্ট্রিং আমাদের সংজ্ঞা. এটি সক্রিয় আউট, হিসাবে আমরা আগে বলেন করেছি, যে যেখানে এই তারকা হয় কোন ব্যাপার না. এমনকি আপনি স্থান সব থাকতেই পারে. আমরা এই সেমিস্টারে ভর্তি করা এই হিসাবে হয়েছে তা স্পষ্ট করতে প্রচার যে তারকা টাইপ করতে হয়েছে, কিন্তু শুধু সাধারণ হিসাবে বুঝতে, যদি সামান্য আরো একটি সাধারণ ঘটনা নয় সেখানে এটা করা হয়, কিন্তু এই বৈশিষ্ট্যগুলি এটা একই জিনিস. কিন্তু এখন যদি আমরা আরও নিচে, যাক এর GetInt কটাক্ষপাত করা কারণ আমরা অন্যথায় এই সেমিস্টারে আগে যে সম্ভবত প্রথম ব্যবহৃত. এখানে GetInt. এটা কি? >> [ছাত্রদের] একটি প্রোটোটাইপ. >> এটি শুধু একটি প্রোটোটাইপ. প্রায়ই, আমরা আমাদের সমাজের সারাংশ এগুলির নমুনা রাখেননি. গ ফাইল, কিন্তু আপনার হেডার ফাইল,. জ ফাইল, এগুলির নমুনা মধ্যে এই এখানে এক ভালো লাগাতে পারেন যাতে যখন আপনি কিছু ফাংশন লিখুন যে আপনি অন্য ব্যক্তিদের ব্যবহার করতে সক্ষম হতে চান, যা ঠিক CS50 গ্রন্থাগারের সঙ্গে মামলা, আপনি না কেবল cs50.c মত আপনার ফাংশন বাস্তবায়ন, এছাড়াও আপনি যে ফাইলটি শীর্ষে কিন্তু এ একটি হেডার ফাইলটি উপরে এগুলির নমুনা করা. তারপর যে হেডার ফাইলটি কি বন্ধু এবং সহকর্মীদের অন্তর্ভুক্ত # সঙ্গে তাদের নিজস্ব কোড অন্তর্ভুক্ত. এই সব সময় তাই, আপনি হয়েছি এইসব এগুলির নমুনা সব সহ, কার্যকরীভাবে # আপনার ফাইল উপরে কিন্তু এই পথে পদ্ধতিও অন্তর্ভুক্ত, আপনার নিজের মধ্যে যা মূলত কপি এবং pastes এই ফাইলটি. এখানে কিছু মোটামুটি বিস্তারিত ডকুমেন্টেশন. আমরা প্রায় কাছাকাছি নিয়েছেন জন্য দেওয়া যে GetInt পায় কোন int, কিন্তু এটি সক্রিয় আউট কিছু কোণার মামলা আছে. যদি ব্যবহারকারী একটি সংখ্যা যে খুব বড় ধরনের উপায়, একটি দশ লক্ষের পঞ্চঘাত, যে শুধুমাত্র একটি int-ভিতরে উপযুক্ত নয় পারেন? প্রত্যাশিত আচরণ কি? আদর্শভাবে, এটা আঁচ. তাই এই ক্ষেত্রে, যদি আপনি এমন সূক্ষ্ম মুদ্রণ পড়া, আসলে আপনি যে যদি লাইন পড়া যাবে না, এই আয় INT_MAX দেখতে পাবেন. আমরা এই সম্পর্কে করেছি, কিন্তু কথা বলত না তার ছাঁদের উপর ভিত্তি করে, কি এটা সম্ভবত? [ছাত্রদের] একটি ধ্রুবক. >> এটা একটা ধ্রুবক. এটা বিশেষ কিছু ধ্রুবক যে যারা হেডার ফাইল এক সম্ভবত এর ঘোষণা যে ফাইলে উপর বেশী, এবং INT_MAX সম্ভবত প্রায় 2 বিলিয়ন মত, ধারণা করা হচ্ছে যে, কারণ আমরা একরকম যে কিছু বোঝান প্রয়োজন ভুল হয়েছে, আমরা, হ্যাঁ, আমাদের নিষ্পত্তি 4 বিলিয়ন নম্বর আছে: আপ 2 বিলিয়ানের -2 বিলিয়ন, বা দিতে নিতে. ভাল, কি প্রোগ্রামিং সাধারণ হল আপনি চুরি করা মাত্র ঐ সংখ্যার এক, হয়তো 0 হয়তো, 2 বিলিয়ন বিলিয়ন হয়তো -2, যাতে আপনি আপনার সম্ভাব্য মান ব্যয় যাতে আপনি বিশ্বের কমিট করতে পারেন যে যদি কিছু গোলমাল হয়, আমি এই সুপার বড় মান প্রত্যাবর্তন করা. কিন্তু আপনি কিছু ব্যবহারকারী 234 ভালো রহস্যপূর্ণ টাইপ করছে ... করতে না চান একটি বড় সংখ্যা,. আপনি এটি সর্বজনীন পরিবর্তে একটি ধ্রুবক হিসাবে. সত্যিই তাই, যদি আপনি মলদ্বারে হচ্ছে গত কয়েক সপ্তাহ ছিল, যে কোনো সময় আপনি নামক GetInt, আপনি যদি একটি সঙ্গে INT_MAX শারীরিকভাবে ব্যবহারকারী টাইপ করেছেন তাদের উচিত চেক করা হয়েছে, অথবা, আরো নির্দিষ্টভাবে, GetInt রিটার্ন INT_MAX করেছেন, কারণ যদি তা, আসলে মানে হল তারা এটা টাইপ না. এই ক্ষেত্রে কিছু ভুল হয়েছে. তাই এটি কি একটি প্রহরী মান, যা শুধু অর্থ বিশেষ হিসাবে সাধারণত এর পরিচিত. এর এখন যাক. গ ফাইল পরিণত হবে. সি ফাইল প্রয়োগ কিছু সময় অস্তিত্ত্বকে করেনি. এবং সত্য, যন্ত্র এটি প্রাক কম্পাইল যে জিনিস আমরা অবজেক্ট কোড নামক করানোর জন্য, আছে কিন্তু এটা আপনি যেখানে তার কারণ হল, সিস্টেমের জানে না ব্যাপার এই ক্ষেত্রে যেখানে এটা: যন্ত্রপাতি. নিচে স্ক্রল এখন যাও এবং GetInt সব এই সময় কিভাবে GetInt হয়েছে কাজ দেখতে চলুন শুরু করা যাক. এখানে আমরা আগে থেকে অনুরূপ মন্তব্য আছে. আমাকে শুধু কোড অংশের মধ্যে জুম. এবং কি আমরা GetInt জন্য নিম্নলিখিত আছে. এটি কোনো ইনপুট নেয়. এটা প্রত্যাবর্তন (সত্য) যখন কোন int,, যাতে আমরা একটি ইচ্ছাকৃত অসীম লুপ আছে, কিন্তু সম্ভবতঃ আমরা এই বিরতি একরকম আউট বা করব মধ্যে এই থেকে ফিরে. যাক কিভাবে এই কাজ করে দেখুন. আমরা মনে হচ্ছে এই লুপ এর ভিতরে প্রথম পংক্তির মধ্যে GetString ব্যবহার করা হবে, 166. এটি এখন ভাল অভ্যাস কারণ কি পরিস্থিতির অধীন GetString ফেরত যায়নি বিশেষ অভিব্যক্তি শূন্য? >> [ছাত্রদের] যদি কিছু গোলমাল হয়. যদি কিছু গোলমাল হয়. এবং কি কি ভুল যখন আপনি GetString মত কল যেতে পারে? হাঁ. >> [ছাত্রদের] Malloc এটি ints দিতে ব্যর্থ হয়. হাঁ. হয়তো malloc ব্যর্থ. কোথাও নীচে ফণা, GetString কলিং malloc, যা মেমরি বরাদ্দ করা হয়, যা কম্পিউটার দোকান দেয় অক্ষরের সব ব্যবহারকারী যে ধরনের কীবোর্ড মধ্যে. অনুমান এবং ব্যবহারকারী একটি বিনামূল্যে সময় পুরো অনেক ছিল এবং টাইপ উদাহরণস্বরূপ আরো,, , কম্পিউটার বেশী অক্ষরের চেয়ে 2 বিলিয়ন অক্ষর এমনকি RAM উপস্থিত রয়েছে. GetString যাও যাও যাও আপনি যে বোঝান সক্ষম করা আছে. যদি এই একটি সুপার, সুপার অসাধারণ কোণার কেস, এটা একরকম এই হ্যান্ডেল করতে পারবে আছে, এবং তাই GetString, যদি আমরা ফিরে যান এবং তার ডকুমেন্টেশন পড়ুন, আসলে ফিরতি শূন্য মধ্যে আছে. তাই এখন যদি GetString NULL ফেরত দ্বারা করা সম্ভব না হলে, GetInt INT_MAX ফিরে দ্বারা কর্ম বিফল হবে ঠিক যেমন একটি পাহারা. এগুলি হল শুধু মানুষের নিয়মাবলী. একমাত্র উপায় আপনি এই ক্ষেত্রে জানতে চাই ডকুমেন্টেশন পড়া হয়. চলুন শুরু করা যাক যেখানে আসলে int-অর্জিত হয় স্ক্রোল ডাউন. লাইন 170 সালে যদি আমি স্ক্রল ডাউন একটি বিট, আরো, আমরা এই লাইন উপরে একটি মন্তব্য আছে. 172 আমরা কোন int, n, এবং একটি গৃহস্থালি, গ, এবং তারপর এই নতুন ফাংশন ঘোষণা, আপনি যা কিছু আগে, sscanf জুড়ে স্খলিতচরণ আছে. এই পংক্তি scanf ঘোরা. অন্য কথায়, সম্পর্কে একটি স্ট্রিং দিন এবং আমি আগ্রহের তথ্য টুকরোগুলি জন্য এটি স্ক্যান করবে. এর অর্থ কি? ধরুন আমি যে, আক্ষরিক অর্থ, 123 টাইপ করুন কীবোর্ড তারপর লিখুন এবং আঘাত. 123 ডাটা টাইপ GetString দ্বারা যখন ফিরে কি? >> [ছাত্রদের] স্ট্রিং. এটা সম্ভবত এর একটি স্ট্রিং, ডান? আমি একটি স্ট্রিং পেয়েছিলাম. সুতরাং 123 সত্যিই হয়, মূল্যউদ্ধৃতি-উদ্ধতি, এটা শেষে \ 0 সাথে 123. যে কোন int হয় না. যে একটি সংখ্যা না. এটি একটি নম্বর মনে হচ্ছে কিন্তু এটি আসলে না. তাই GetInt কি আছে? 123 \ 0 - - এবং একটি প্রকৃত পূর্ণসংখ্যা যাও একরকম রূপান্তর এটা পংক্তি বাম থেকে স্ক্যান হয়েছে. আপনি কিভাবে এই জিনিসটা না পারে. আপনি যদি pset2 ফিরে মনে করেন, সম্ভবতঃ আপনি না একটু সিজার করতে স্বাচ্ছন্দ্য অথবা Vigenere তাই, আপনি একটি স্ট্রিং উপর পুনরুক্তি করতে পারেন, আপনি অক্ষর ints রূপান্তর করতে পারেন. কিন্তু নরক, এটা একটা কাজ সমগ্র অনেক. কেন sscanf মত একটি ফাংশন যা আপনাকে যে জন্য ফোন আছে না? সুতরাং sscanf প্রত্যাবর্তনের একটি যুক্তি - এই ক্ষেত্রে বলা লাইন, যা একটি স্ট্রিং. তারপর আপনি কোট মধ্যে, নির্দিষ্ট খুব অনুরূপ printf, আপনি কি এই স্ট্রিং দেখতে আশা. এবং কি আমি এখানে বলছে না হয় আমি একটা দশমিক সংখ্যা হতে পারে এবং একটি অক্ষর দেখতে আশা. এবং আমরা এটি কেন শুধু একটা মুহূর্ত ক্ষেত্রে দেখতে পাবেন. এবং এটি সক্রিয় আউট যে এই স্বরলিপি এখন তরিতরকারি স্মারক আমরা শুরু বলছি মাত্র এক সপ্তাহ আগে. আমাদের জন্য কি & এবং এন সি এখানে কি করছে? >> [ছাত্রদের] n ঠিকানা এবং গ ঠিকানা. হাঁ. এটা আমার গ n ঠিকানা এবং ঠিকানা প্রদান করে. কেন যে গুরুত্বপূর্ণ? আপনি কি জানেন যে সি ইন ফাংশান উপস্থিত করা সহ, আপনি সবসময় একটি মান বা না মান এ সব ফিরে আসতে পারেন. আপনি কোন int, একটি পংক্তি, একটি float, একটি গৃহস্থালি, যাই হোক না কেন, অথবা আপনি অকার্যকর ফিরে আসতে পারেন ফিরে আসতে পারেন, কিন্তু আপনি কেবলমাত্র একটি জিনিস সর্বাধিক ফিরে আসতে পারেন. কিন্তু এখানে আমরা sscanf সম্পর্কে হয়তো ফিরে কোন int, একটি দশমিক সংখ্যা চান, এবং আরও একটি গৃহস্থালির কাজ, এবং আমি একটি মুহূর্ত কেন গৃহস্থালি ব্যাখ্যা করব. আপনি কার্যকরভাবে sscanf দুটি জিনিস ফিরে আসতে চান, কিন্তু যে ঠিক করা সম্ভব সি না আপনি দুটি ঠিকানাগুলোতেই পাশ দিয়ে কাজ করতে পারেন যে কাছাকাছি কারণ যত তাড়াতাড়ি আপনি ঠিকানাগুলি দুই হাতে একটি ফাংশন, তাদের সাথে কি যে ফাংশন কি করতে পারি? >> [ছাত্রদের] যারা ঠিকানায় লিখুন. ঐ ঠিকানায় চিঠি লিখতে পারেন. আপনি তারকা ক্রিয়া ব্যবহার করার জন্য এবং সেই প্রত্যেকটি ঠিকানায় সেখানে যেতে পারেন. এটা ভেরিয়েবলের মান পরিবর্তন করার জন্য এই ধরণের ব্যাক ডোর প্রক্রিয়া কিন্তু খুব সাধারণ এই ক্ষেত্রে, দুই - একটা মাত্র জায়গা থেকে বেশী. এখন আমি == 1 জন্য এবং তারপর চেক n ফিরে যদি যে সত্য, না সত্য পরীক্ষা করছি বিজ্ঞপ্তি. কি করছেন? টেকনিক্যালি, সব আমরা সত্যিই GetInt মধ্যে ঘটতে করতে চান এই. মূল্যউদ্ধৃতি-উদ্ধতি 123 - আমরা, তাই কথা বলতে বিশ্লেষণ করতে চান, আমরা স্ট্রিং পড়তে চাই - এবং যদি তা দেখে মনে হচ্ছে একটি নম্বর আছে, কি না করছি আমরা sscanf বলার আছে এই পরিবর্তনশীল মধ্যে n জন্য সম্পর্কে - 123 - হয় যে নম্বর করান. আমি তখন কেন আমি আসলে কি আছে এই হিসাবে ভাল? Sscanf ভূমিকা বলছে আপনি একটি অক্ষর এখানে পেতে পারে কি? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] আসলে >> একটি দশমিক বিন্দু কাজ করতে পারেন. এর রাখা যাক একটি মুহূর্তে যে চিন্তা. আর কী? [ছাত্রদের] এটা শূন্য হতে পারে. >> ভাল চিন্তা. এটা নাল অক্ষর হতে পারে. এটা আসলে এই ক্ষেত্রে না. হাঁ. >> [ছাত্রদের] ASCII. ASCII. অথবা আমাকে এমনকি আরও সাধারণের বোধগম্য. % গ সেখানে মাত্র ত্রুটি পরীক্ষা করা হয়. আমরা সেখানে না নম্বর পরে একটি চরিত্র হতে না চান, কিন্তু এই সম্পর্কে কি কি করতে পারবেন নিম্নোক্ত. এটি সক্রিয় যে sscanf, ছাড়াও এই উদাহরণে হবে এবং গ মান এখানে সংরক্ষণ, এটি কি তা ভেরিয়েবল সংখ্যা উৎপন্ন হয় না এটা ইন মান করা তাই আপনি যদি শুধুমাত্র 123 টাইপ করার পরে, শুধুমাত্র% d তে মেলে যাচ্ছে, এবং শুধুমাত্র এন 123 মত একটি মান সঞ্চিত পরার, এবং গ কিছুই করা না হয়. সি অবশেষ একটি গার্বেজ মান, তাই কথা বলতে - আবর্জনা কারণ এটি কিছু মান সক্রিয়া করা হয়েছে না. সুতরাং যে ক্ষেত্রে, sscanf ফেরৎ 1 কারণ আমি ঐ পয়েন্টার 1 জনবহুল, যে ক্ষেত্রে মহান, আমি কোন int নেই, তাই আমি মেমরি মুক্ত লাইন মুক্ত যে GetString আসলে বরাদ্দ করা, এবং তারপর আমি ফিরে আসতে হবে, অন্যথায় যদি কখনও কোন বিস্ময়ের উদ্রেক যেখানে যে বিবৃতি থেকে আসে পুনরায় চেষ্টা করুন, এটি এখান থেকে আসে. বৈসাদৃশ্য দ্বারা যদি,, আমি টাইপ 123foo মধ্যে - কিছু কিছু লেখা র্যান্ডম ক্রম - sscanf সংখ্যা, সংখ্যা, সংখ্যা, চ দেখতে হবে, এবং এটা হবে 123 সালে করা যাচ্ছে; এটা গ মধ্যে চ এবং তারপর রাখা 2 ফিরে যাচ্ছে. সুতরাং আমরা আছে, ঠিক sscanf এর ব্যবহার, একটি অত্যন্ত সহজ উপায় মৌলিক সংজ্ঞা ব্যবহার করে - ভাল, প্রথম নজরে কিন্তু এ দিন মোটামুটি সহজ প্রক্রিয়া শেষ জটিল - বলার অপেক্ষা রাখে না হয় এবং কোন int সেখানে যদি তাই হয় যে, শুধুমাত্র যে কাজটা আমি খুঁজে পাওয়া যায়নি? এবং এখানে হোয়াইটস্পেস হয় ইচ্ছাকৃত. আপনি যদি sscanf জন্য ডকুমেন্টেশন পড়ুন, আপনি কি এটা বলে যে, যদি আপনি হোয়াইটস্পেস এক টুকরা অন্তর্ভুক্ত শুরুতে বা শেষে, খুব sscanf কারনের জন্য ব্যবহারকারীকে অনুমতি দেয়, হবে, যাও স্পেস বার 123 এবং আঘাত যে বৈধ হতে হবে. ব্যবহারকারী এ চিত্কার হবে না কারণ তারা স্পেস বার আঘাত শুরুতে বা শেষে, যা অল্পমাত্র আরো ব্যবহারকারী বান্ধব. তারপর কোন প্রশ্নের উপর GetInt? হাঁ. >> [ছাত্রদের] আপনি যদি শুধুমাত্র একটি গৃহস্থালি রাখা? ভাল প্রশ্ন. কি হবে যদি আপনি শুধু চ মত একটি গৃহস্থালি টাইপ এবং কখনও 123 টাইপ ছাড়া লিখুন আঘাত আপনি কি মনে করেন এই লাইনের কোড ব্যবহার তারপর হবে? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] হ্যাঁ, তাই sscanf যে খুব কারণ যে ক্ষেত্রে, তা n বা গ পূরণ হচ্ছে না আবরণ করতে পারেন. এটি পরিবর্তে 0, ফিরে যা ক্ষেত্রে এছাড়াও আমি যে দৃশ্যকল্প করছি সংক্রামক যাচ্ছে কারণ আমি চাই প্রত্যাশিত মান হল 1. আমি শুধুমাত্র এক চান এবং শুধুমাত্র এক জিনিস বুজা যাও. ভাল প্রশ্ন. অন্যদের? ঠিক আছে. এর মধ্যে এখানে র সমস্ত কর্ম ব্যবহার মধ্য দিয়ে যেতে হবে না যাক, কিন্তু এক যে সম্ভবত অবশিষ্ট আগ্রহের হতে মনে হয় GetString কারণ এটি সক্রিয় যে GetFloat, GetInt, GetDouble, GetLongLong সব পান্ট GetString তাদের কার্যকারিতা অনেক. সুতরাং আসুন এখানে তিনি কিভাবে বাস্তবায়িত হয় কটাক্ষপাত করা. এই এক সামান্য জটিল দেখায়, কিন্তু এটা একই মৌলিক ব্যবহার যে আমরা শুরু করতে গত সপ্তাহে বিষয়ে কথা বলছি. GetString ইন, যা প্রতি অকার্যকর হিসাবে কোন যুক্তি লাগে আপ করুন এখানে এবং এটি একটি স্ট্রিং ফেরৎ, আমি দৃশ্যত একটি স্ট্রিং নামক বাফার ঘোষণা করছি. আমি কি যে এখনও জন্য ব্যবহার করা যাচ্ছে না সত্যিই জানি না, কিন্তু আমরা দেখতে পাবেন. দেখে মনে হচ্ছে ডিফল্ট 0 দ্বারা ক্ষমতা হয়. নেই পুরোপুরি নিশ্চিত যেখানে এই কি হবে যাও জন্য এখনো ব্যবহার করা যাচ্ছে না যাচ্ছে, না না, কিন্তু এখন এটা একটু বেশি আকর্ষণীয় হচ্ছে. লাইন 243, আমরা কোন int, গ ডিক্লেয়ার. এটি একটি মূঢ় বিবরণের সাজান. একটি গৃহস্থালি হয় 8 বিট, এবং 8 বিট কত বিভিন্ন মান সংরক্ষণ করতে পারেন? >> [ছাত্রদের] 256. >> 256. সমস্যা হল আপনি যদি 256 বিভিন্ন ASCII অক্ষর, যা আছে চাই যদি আপনি আবার মনে - এবং এই কিছু মুখস্থ করা নয়. কিন্তু আপনি যদি যে বড় হওয়া ASCII চার্ট ফিরে মনে করি আমরা ছিল সপ্তাহ আগে, যে ক্ষেত্রে 128 বা 256 ASCII অক্ষর ছিল. আমরা সব 0 সেঃ এবং 1s আপ ধরনে ব্যবহৃত. এটা একটা সমস্যা যদি আপনি কোনো ত্রুটি সনাক্ত সক্ষম হতে চান কারণ যদি আপনি ইতিমধ্যেই আপনার অক্ষরের জন্য করছি 256 মান ব্যবহার করে, আপনি কি সত্যিই এগিয়ে পরিকল্পনা করছি না, কারণ এখন বলছে আপনি কি কোন উপায় আছে, এই একটি legit অক্ষর নয়, এই হল কিছু ভ্রান্ত বার্তা. তাই দুনিয়া আছে তারা পরবর্তী বৃহত্তম মান, কোন int মত ব্যবহার, যাতে আপনি আছে 4 বিলিয়ন সম্ভাব্য মান জন্য একটি বিট, 32 এর ছবি নম্বর, যাতে কেবল আপনি শেষ পর্যন্ত তাদের মূলত 257 ব্যবহার করতে পারেন, 1 টি যা আছে কিছু করার সময় একটি ত্রুটি হিসাবে অর্থ বিশেষ. সুতরাং আসুন কিভাবে এই কাজ করে দেখুন. লাইন 246 সালে, আমি যখন বড় এই লুপ যে fgetc হয় কলিং আছে, চ অর্থ ফাইল, তাই getc, এবং তারপর stdin. এটি সক্রিয় আউট এটা বলছে কীবোর্ড থেকে ইনপুট রিড আরও ভালো উপায়. স্ট্যান্ডার্ড ইনপুট মানে কীবোর্ড, স্ট্যান্ডার্ড আউপুট পর্দা মানে, এবং মান ত্রুটি, যা আমরা pset4 মধ্যে দেখতে পাবেন, পর্দা মানে একটি পর্দার বিশেষ অংশ কিন্তু যাতে প্রকৃত আউটপুট সঙ্গে মিশিয়ে ফেলেছিলেন না আপনি যে প্রিন্ট উদ্দেশ্যে. কিন্তু যে ভবিষ্যতে আরও বেশি. তাই ঠিক fgetc মানে কীবোর্ড থেকে একটি অক্ষর এবং এটি পড়া যেখানে সঞ্চয়? গ মধ্যে এটি সংরক্ষণ করুন. এবং তারপর চেক - তাই আমি কিছু বুলিয়ান conjunctions ব্যবহার করছি এখানে - এটা সমান না চেক - \ n, যাতে ব্যবহারকারী লিখুন আঘাত করেনি, আমরা যে সময়ে থামাতে চান, লুপ শেষ - এবং আমরা বিশেষ ধ্রুবক ফাইলের শেষে জন্য চেক করতে চান, যা আপনি যদি জানেন বা অনুমান কি, এটি জন্য দাঁড়াবেন? >> [ছাত্রদের] ফাইলের শেষ. ফাইলের >> শেষ. এই ধরনের অর্থহীন, কারণ আমি যদি কীবোর্ড এ টাইপ করছি, আসলে কোন ফাইল এই কাজে জড়িত, কিন্তু এই মাত্র জেনেরিক শব্দটি বোঝাতে ব্যবহার করা হয় বাছাই যে অন্য কিছুই মানুষের আঙ্গুলের এর থেকে আসছে. ফাইলের শেষে - ফাইলের শেষে. একপাশে একটি হিসাবে, যদি কখনও আপনার কীবোর্ড এ করেছি কন্ট্রোল ডি আঘাত, আপনি এখনো যে করা সম্ভব নয় - আপনি কন্ট্রোল সি আঘাত করেছি - কন্ট্রোল D: এই বিশেষ ধ্রুবক বলা ফাইলের শেষে পাঠায়. তাই এখন আমরা কিছু ডাইনামিক মেমরি বরাদ্দকরণের আছে. তাই আপনি যদি (n + 1> ক্ষমতা). এখন আমি n ব্যাখ্যা করব. N, ঠিক কত বাইট হয় বাফারে বর্তমানে, স্ট্রিং যে বর্তমানে আপনার ব্যবহারকারী থেকে নির্মাণ করছেন আপ. আপনি যদি আপনার বাফারে আরো অক্ষর তুলনায় আপনি বাফারে ক্ষমতা আছে, intuitively কি আমরা করতে হবে তারপর আরো ক্ষমতা বরাদ্দ করা হয়. আমি এখানে কিছু গাণিতিক সর পড়া উপর এবং শুধুমাত্র এই ফাংশন এখানে ফোকাস যাচ্ছি. আপনি কি জানেন যে malloc হয় বা অন্তত সাধারণভাবে পরিচিত. একটি অনুমান কি realloc আছে নিন. >> [ছাত্রদের] মেমরি জোড়ে. এটি মেমরি এর বেশ যোগ না. এটা অনুসরণ হিসাবে মেমরি reallocates. আপনি যদি এখনও সেখানে পংক্তির শেষে ঘরে আপনি যে মেমরি আরো দেত্তয়া তুলনায় এটি মূলত আপনাকে দেয়, তাহলে আপনি যে অতিরিক্ত মেমরি পাবেন. সুতরাং আপনি ঠিক রাখা স্ট্রিং এর অক্ষর নির্বাণ ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক করতে পারেন. কিন্তু যদি এই ক্ষেত্রে না, কারণ আপনি ঢুকে অতি দীর্ঘ এবং কিছু র্যান্ডম সেখানে মেমরি বেশী plopped কিন্তু এখানে নিচে সেখানে অতিরিক্ত মেমরি, যে ঠিক. Realloc আপনার জন্য সব ভারী উত্তোলন করতে হবে, আপনি স্ট্রিং এ পর্যন্ত থেকে এখানে পড়েছি, সরানো এটি দমন করা আছে, এবং তারপরে আপনি যে সময়ে আরো কিছু রানওয়ে দিতে. তাই হাতের একটি তরঙ্গ সাথে, আমাকে বলে কি GetString করছে এটি একটি ছোট বাফার, হয়তো এক একক অক্ষর দিয়ে শুরু এর, এবং ব্যবহারকারী দুই ধরনের অক্ষর যদি, realloc কলিং আপ GetString শেষ হয় এবং বলেছেন, এক অক্ষর ছিল যথেষ্ট নয়; সম্পর্কে দুটি অক্ষর দিন. তারপর যদি আপনি লুপের পক্ষে যুক্তি দিয়ে পড়া, এটা বলার যাচ্ছে ব্যবহারকারী 3 টি অক্ষর টাইপ করা; এখন না কিন্তু 2 4 অক্ষর সম্পর্কে দিতে, তারপর সম্পর্কে 8 দিন পরে, সম্পর্কে 16 এবং 32 দিন. যে আমি প্রতিটি সময় দ্বিত্ব ক্ষমতা করছি এর মানে হল যে বাফার যাও ধীরে ধীরে হত্তয়া যাচ্ছে না, এটা সুপার ফাস্ট হত্তয়া যাচ্ছে. এবং কি যে সুবিধা হতে পারে? আমি এটা কেন বাফারের মাপ দ্বিত্ব যদিও ব্যবহারকারী শুধু একটা কীবোর্ড থেকে অতিরিক্ত অক্ষর প্রয়োজন হতে পারে? [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] >> কি যে? >> [ছাত্রদের] আপনি এটি হিসাবে প্রায়ই হত্তয়া না. ঠিক. আপনি এটি হিসাবে প্রায়ই হত্তয়া না. এবং এই ধরনের আপনি শুধু আপনার কয়টা বেট করছি এখানে hedging, ধারণা করা হচ্ছে যে আপনি realloc অনেক কল কারণ এটি ধীর হতে থাকে না. কোন সময় মেমরির জন্য অপারেটিং সিস্টেম জিজ্ঞাসা, যত তাড়াতাড়ি আপনি ভবিষ্যতে সমস্যা সেটে দেখতে পাবেন, এটি কিছুটা সময় নিতে থাকে. সুতরাং সময় যে পরিমাণ হ্রাস, এমনকি আপনি যদি কিছু জায়গা নষ্ট করছি, একটি ভাল জিনিস হতে থাকে. কিন্তু আমরা যদি GetString এখানে চূড়ান্ত অংশ মাধ্যমে পড়া - এবং আবার প্রতি একক লাইন এখানে প্রতীতি হয় আজ এত গুরুত্বপূর্ণ না - লক্ষ্য করা যে শেষ পর্যন্ত আবার কল malloc এবং এটি অনেক বাইট হিসাবে ঠিক বরাদ্দ হিসাবে এটি স্ট্রিং জন্য প্রয়োজন এবং তারপর বিনামূল্যে বেজায় বড় বাফার কলিং দ্বারা দূরে ছোঁড়া যদি সত্যিই এটা অনেকবার দ্বিগুন বেশী. তাই স্বল্প, যে কিভাবে GetString হয়েছে সব সময় এই কাজ. সমস্ত এটি একটি সময়ে কোনো একটি অক্ষর পড়তে আবার এবং আবার এবং আবার, এবং প্রত্যেক সময় এটা কিছু অতিরিক্ত মেমরি প্রয়োজন, তা অপারেটিং সিস্টেমের জন্য অনুরোধ করবে দ্বারা realloc কলিং. কোন প্রশ্ন? ঠিক আছে. একটি আক্রমণ. এখন যে আমরা পয়েন্টার বুঝতে বা অন্তত হয় পয়েন্টার ক্রমশ পরিচিত, এর বিবেচনা করা যাক কিভাবে সারা বিশ্ব জুড়ে ভেঙ্গে আরম্ভ যদি আপনি বেশ adversarial ব্যবহারকারীদের বিরুদ্ধে আত্মরক্ষা না না, যারা আপনার সিস্টেমের মধ্যে হ্যাক করার চেষ্টা করছেন, যারা কিছু রেজিস্ট্রেশন কোড circumventing দ্বারা আপনার সফ্টওয়্যার চুরি করার চেষ্টা করছেন যে তারা অন্যভাবে ইন টাইপ থাকতে পারে এই যেমন কটাক্ষপাত এখানে নিয়ে, যা শুধু সি কোড যে একটি নীচে মূল ফাংশন রয়েছে যে একটা ফাংশন কল foo বিন্যাস. এবং এটি কি foo বিন্যাস হয় ক্ষণস্থায়ী? [ছাত্রদের] একটি যুক্তি. >> [Malan] একটি যুক্তি. সুতরাং argv [1], যা প্রথম শব্দ যে ব্যবহারকারী কমান্ড লাইনে টাইপ অর্থ a.out বা যাই হোক না কেন পরে প্রোগ্রাম বলা হয়. সুতরাং উপরের foo বিন্যাস একটি গৃহস্থালি * মধ্যে লাগে. কিন্তু গৃহস্থালি * ঠিক কি? >> [ছাত্রদের] একটি পংক্তি. [Malan] একটি স্ট্রিং, তাই এখানে নেই কিছুই নতুন. স্ট্রিং ইচ্ছামত হয় বার বলা হচ্ছে. এখানে এই লাইন ইন, গৃহস্থালির কাজ গ [12]; আধা - প্রযুক্তিগত ইংরেজি সাজানোর মধ্যে কি, এই লাইন করছে? [ছাত্রদের] একটি অ্যারে - র >> এরে? >> [ছাত্রদের] অক্ষর. >> অক্ষর. সম্পর্কে 12 অক্ষরের একটি অ্যারের দিন. সুতরাং আমরা এই একটি বাফার কল পারে. এটা টেকনিক্যালি এর নামক গ, কিন্তু প্রোগ্রামিং মধ্যে একটি বাফার মাত্র স্থান একটি গুচ্ছ অর্থ যে আপনি কিছু উপাদান ইন লাগাতে পারেন তারপর সর্বশেষে memcpy, আমরা আগে, করেছি কিন্তু ব্যবহৃত না আপনি সম্ভবত অনুমান এটি কী জন্য প্রয়োজন হতে পারে. এটি মেমরি কপি. কি করব? এটা আপাতদৃষ্টিতে বার কপি, গ মধ্যে নিজের ইনপুট, কিন্তু কেবল বার দৈর্ঘ্য. কিন্তু এখানে একটা বাগ আছে. >> [ছাত্রদের] আপনি sizeof অক্ষর প্রয়োজন. >> ঠিক আছে. টেকনিক্যালি, আমরা সত্যিই strlen (বার) * না sizeof (গৃহস্থালি)). উচিত এটা সঠিক. কিন্তু এখানে সবচেয়ে খারাপ ক্ষেত্রে, যাক এর যে that's অনুমান - ঠিক আছে. তারপর দুই বাগ আছে. সুতরাং sizeof (গৃহস্থালি)); চলুন এই সামান্য একটি ব্যাপকতর করা. তাই এখন এখনও সেখানে একটি বাগ, যা কি? >> [শ্রবণাতীত ছাত্র প্রতিক্রিয়া] কি জন্য পরীক্ষা? >> [ছাত্রদের] শূন্য জন্য চেক করুন. আমরা সাধারণত শূন্য চেক কারণ খারাপ ব্যাপার ঘটতে করা উচিত যখন আপনার NULL পয়েন্টার হয়, কারণ আপনি আপ আপাতত শেষ হতে পারে, এবং আপনি কি কখনো চালু করা উচিত নয় তারকা অপারেটর সঙ্গে এটি dereferencing দ্বারা নাল যাও. তাই ভালো. এবং আমরা কি কি করছেন? যুক্তি, এখানে আছে একটি ত্রুটি খুব. [ছাত্রদের] যদি argc is> = 2 চেক করুন. তাই যদি হয় argc> = 2 চেক. ঠিক আছে, তাই এখানে আছে এই প্রোগ্রামের তিনটি বাগ. এখন আমরা যদি চেক ব্যবহারকারী আসলে argv মধ্যে কিছু টাইপ [1]. গুড. তাই এর তৃতীয় বাগ? হাঁ. >> [ছাত্রদের] সি বড় যথেষ্ট নাও হতে পারে. গুড. আমরা এক দৃশ্যকল্প চেক. আমরা পরোক্ষভাবে চেক করবেন আরো মেমরি বেশী বার দৈর্ঘ্য অতিক্রম করবে কপি করা হবে না. তাই আপনি যদি ব্যবহারকারীকে স্ট্রিং টাইপ করা হয় 10 অক্ষর দীর্ঘ, এই কেবল অক্ষর 10 কপি বলছে না. এবং যে ঠিক. কিন্তু আছে কি যদি ব্যবহারকারী একটি 20-অক্ষর শব্দ ভালো প্রম্পটে একটি শব্দ টাইপ? এই বার থেকে 20 অক্ষরের মধ্যে কি কপি বলছে? সি, আমাদের বাফার হিসাবে অন্যথায় পরিচিত, যার অর্থ হল আপনি শুধু তথ্য লিখেছেন ২ 8 বাইট অবস্থানে যে আপনি নিজের না, এবং আপনি তাদের অর্থে যে আপনি তাদের জন্য বরাদ্দ কখনো কিনবেন না. তাই এই কি বাফার ওভারফ্লো আক্রমণ বা বাফার পদদলিত করা আক্রমণ হিসাবে সাধারণত এর পরিচিত. এবং এটা অর্থে আক্রমনের যে যদি ইউজার বা প্রোগ্রাম যা আপনার ফাংশন এর আহ্বান এই maliciously করছেন, আসলে কি ঘটবে পরের আসলে খুব খারাপ হতে পারে. সুতরাং আসুন এখানে এই ছবি কটাক্ষপাত করা. এই ছবি আপনার মেমরি স্ট্যাকের প্রতিনিধিত্ব করে. পুনরাহ্বান যে প্রতিটি সময় আপনি একটি ফাংশন কল আপনি এই স্ট্যাকের উপর সামান্যই ফ্রেম পাবেন এবং তারপর অন্য এবং তারপর অন্য আরেকটি. এবং এ পর্যন্ত, আমরা শুধু এই ধরনের আনমনা হিসাবে rectangles উভয় জাহাজে বা এখানে পর্দা. কিন্তু যদি আমরা এক যারা rectangles মধ্যে, যখন আপনি একটি ফাংশন কল foo এর উপর জুম, এটি সক্রিয় যে যে ফ্রেমের স্ট্যাকের ভিতরে আছে যে আয়তক্ষেত্র মধ্যে আরো শুধু x এবং y এবং a ও b, swap-র মত আমরা যে বিষয়ে কথা বলছি হয়নি. এটা পরিনত হয় যে তাদের মধ্যে কিছু আছে নিম্ন স্তরের বিবরণ, ফিরে ঠিকানা. সুতরাং এটি সক্রিয় আউট যখন প্রধান কল foo বিন্যাস, প্রধান যাও foo বিন্যাস অবহিত করা হয়েছে কম্পিউটার এর মেমরি কি প্রধান এর ঠিকানা হল কারণ অন্যথায়, যত তাড়াতাড়ি foo এর মধ্যে এখানে এই কেস হিসাবে নির্বাহ করার জন্য এটা করা হয়, একবার আপনি foo বিন্যাস শেষে এই বদ্ধ কোঁকড়া বক্রবন্ধনী পৌঁছানোর, কিভাবে নরক foo বিন্যাস আছে যেখানে প্রোগ্রাম নিয়ন্ত্রণ যেতে অনুমিত হয় জানেন? এটা পরিনত হয় যে যে প্রশ্নের উত্তর এই লাল এখানে আয়তক্ষেত্র হয়. এই একটি পয়েন্টার প্রতিনিধিত্ব করে, এবং এটি কম্পিউটারের উপর অস্থায়ীভাবে সঞ্চয় তথাকথিত স্ট্যাকের মূল ঠিকানা যাতে যত তাড়াতাড়ি foo কমান্ডটি নির্বাহ করার জন্য এটা করা হয়, যেখানে কম্পিউটার জানে এবং প্রধান কি লাইনে ফিরে যান. সংরক্ষিত ফ্রেম পয়েন্টার এই একইভাবে সম্পর্কিত. চর * এখানে কি বার প্রতিনিধিত্ব করে? এখন এখানে এই নীল সেগমেন্ট হয় foo বিন্যাস এর ফ্রেম. বার কি? বার শুধুমাত্র foo বিন্যাস ফাংশন আর্গুমেন্ট. তাই এখন আমরা পরিচিত ছবি বাছাই করেন পিছনে. আরো পর্দায় পণ্যদ্রব্য এবং আরো distractions আছে, কিন্তু শুধু এই হালকা নীল সেগমেন্ট কি আমরা chalkboard হয়েছে করেছি অঙ্কন জন্য swap 'র মত কিছু. যে foo এর জন্য ফ্রেম. এবং এটি শুধুমাত্র জিনিস অধিকার এখন হয় বার, যা এই পরামিতি. কিন্তু কি কি স্ট্যাকের মধ্যে এই এখানে কোড অনুযায়ী হওয়া উচিত? [ছাত্রদের] গৃহস্থালি গ [12]. >> [Malan] গৃহস্থালি গ [12]. আমরা মেমরি বরাদ্দ 12 একটি পরিবর্তনশীল নামক গ যাও স্কোয়ার দেখতে পাবেন, এবং নিশ্চয় আমরা পর্দায় যে নেই. খুব উপরে আছে গ [0], এবং তারপর এই চিত্রটি লেখক বার স্কোয়ার সব অঙ্কন, না বিরক্ত হয় কিন্তু প্রকৃতপক্ষে সেখানে সেখানে 12 কারণ যদি আপনি নীচের অংশে ডানদিকে তাকান, গ [11] যদি 0 থেকে গণনা করা হয় 12th যেমন বাইট. কিন্তু এখানে সমস্যা. যা অভিমুখ গ ক্রমবর্ধমান হয়? সাজান উপরে নিচে যদি এটি শীর্ষে শুরু হয় এবং বৃদ্ধি নীচে. এটা ভালো আমরা নিজেদেরকে অনেক বাকি রানওয়ে এখানে এ সব না তাকান. আমরা ধরনের করেছি কোণার মধ্যে নিজেদেরকে আঁকা, এবং যে ক্যা [11] বার, যা সংরক্ষিত ফ্রেম পয়েন্টার বিরুদ্ধে সঠিক আপ বিরুদ্ধে সঠিক আপ, যা ফিরে ঠিকানা বিরুদ্ধে সঠিক আপ. কোন জায়গা নেই. তাই এর পরে সংশ্লেষ যদি আপনি আপ ঘুর্ণি আপনি চেষ্টা করুন এবং একটি 12-বাইট বাফারের মধ্যে 20 বাইট পড়া? যেখানে যারা অতিরিক্ত 8 বাইট যেতে হয় যাব? >> [ছাত্রদের] ইনসাইড - অন্য সব কিছুর ভিতর, যা কিছু হয় সুপার গুরুত্বপূর্ণ. এবং সবচেয়ে গুরুত্বপূর্ণ বিষয় সম্ভাব্য,, একটি লাল বক্স আছে, ফিরে ঠিকানা, কারণ অনুমান করা হয় যে আপনি দুর্ঘটনাবশতঃ বা adversarially যারা 4 বাইট মুছে ফেলা, যে শুধুমাত্র আবর্জনা কিন্তু সঙ্গে সঙ্গে একটি নম্বর পয়েন্টার ঠিকানা, যে যা মেমরির মধ্যে একটি প্রকৃত ঠিকানা প্রতিনিধিত্ব ঘটবে. নিহিতার্থ কি, যুক্তি? >> [ছাত্রদের] ফাংশন একটি ভিন্ন জায়গা ফিরে যাচ্ছে. ঠিক. কোঁকড়া বক্রবন্ধনী যে যখন foo বিন্যাস এবং আয় হিট প্রোগ্রাম এগিয়ে যাচ্ছে যাও প্রধান ফিরে না, এটা যে লাল বাক্সে যাই হোক ঠিকানা হল ফিরে যাচ্ছে. ইন circumventing সফ্টওয়্যার নিবন্ধনের ক্ষেত্রে, কি তার ঠিকানা যদি যে এর ফিরে হচ্ছে যে সাধারণতঃ বলা হয় ফাংশন পরার পরে আপনি সফ্টওয়্যার জন্য এবং আপনার দেওয়া নিবন্ধীকরণ কোড ইনপুট? করেছি আপনি কৌতুক কম্পিউটারের মধ্যে এখানে যাচ্ছে না কিন্তু বাছাই পরিবর্তে যাচ্ছে এখানে আপ করতে পারেন. অথবা যদি আপনি সত্যিই চতুর হন, একটি প্রতিদ্বন্দ্বী আসলে কীবোর্ড এ টাইপ উদাহরণস্বরূপ করতে পারেন,, প্রকৃত একটি শব্দ না, না 20 টি অক্ষর, কিন্তু সে আসলে ধরনের ঠাউর কিছু অক্ষর আছে যা কোড প্রতিনিধিত্বকারী. এবং তা সি কোড করা যাচ্ছে না, আসলে তা অক্ষর ব্যবহার করা যাচ্ছে যে মেশিন কোড বাইনারি, 0 সেঃ এবং 1s প্রতিনিধিত্বকারী. কিন্তু অনুমান তারা চালাক যথেষ্ট যে, যাও একরকম GetString প্রম্পট যা মূলত কোড কম্পাইল লেপন, এবং বিগত 4 বাইট যে ফিরতি ঠিকানা মুছে ফেলা. কি ঠিকানা এবং যে ইনপুট কি না? এটা আসলে এই লাল আয়তক্ষেত্র বাফার প্রথম বাইট ঠিকানা মধ্যে সঞ্চয়. সুতরাং আপনি সত্যিই চালাক আছে, এবং এই খারাপ মানুষের জন্য শুদ্ধাশুদ্ধি অনেক আউট আছে, কিন্তু যদি আপনি কিভাবে বড় এই বাফার হয় জিনিসটা করতে পারেন যেমন যে শেষ ইনপুট মধ্যে কয়েক বাইট আপনি প্রোগ্রাম প্রদান যাও সমতুল্য আপনার বাফার শুরুর ঠিকানা হবে এরকম, আপনি এটা করতে পারেন. যদি আমরা বলতে সাধারণতঃ হ্যালো এবং \ 0, এটা কি বাফার শেষ পর্যন্ত. কিন্তু যদি আমরা আরো চতুর এবং আমরা আক্রমণ জেনেরিক কোড ডাকবো সঙ্গে যে বাফার ভরাট - AAA, আক্রমণ করা, আক্রমণ করা, আক্রমণ - যেখানে এই মাত্র কিছু একটা যে খারাপ কিছু আছে, কি হবে যদি আপনি সত্যিই চতুর হন, আপনি এই কাজ করতে পারে. এখানে লাল বাক্স হয় সংখ্যা ক্রম - 80, C0, 35, 08. উল্লেখ্য যে নম্বর যে এখানে আপ সাথে মেলে. এটা বিপরীত ক্রমে আছে, কিন্তু যে অন্য কিছু সময় আরও. উল্লেখ্য, এই ফিরতি ঠিকানা করেনি ইচ্ছাকৃতভাবে করা হয়েছে রদবদল যাও ঠিকানা এখানে সমান, প্রধান ঠিকানা না. তাই আপনি যদি খারাপ লোক হয় সুপার স্মার্ট, তিনি যে আক্রমণ কোড অন্তর্ভুক্ত করতে হবে কিছু ব্যবহারকারী এর ফাইল সব মুছে দিন পাসওয়ার্ডগুলি বা কপি অথবা একটি ব্যবহারকারীর অ্যাকাউন্টের সাথে যে আমি পরে লগ ইন করতে পারেন - এ সব কিছু. এবং এই উভয় বিপদ এবং সি শক্তি কারণ আপনি পয়েন্টার মাধ্যমে মেমরি এক্সেস আছে এবং সেইজন্য আপনি একটি কম্পিউটার এর মেমরির মধ্যে কিছু করতে চান না লিখতে পারে, আপনি একটি কম্পিউটার কিছু করতে চান কি করতে পারেন সহজভাবে দ্বারা এটা কখনও তার নিজের মেমরি স্পেস মধ্যে প্রায় তিড়িং লাফ. এই দিন যাতে এবং অনেক প্রোগ্রাম এবং অনেক ওয়েবসাইটে যে বোঝাপড়া হয় এই সুবিধার সুযোগ গ্রহণ মানুষের ফুটান. এবং এই একটি অত্যাধুনিক সুপার আক্রমণের মতো, কিন্তু মনে আছে যে উপায় আছে সবসময় আরম্ভ না হতে পারে. বাস্তবতা হল যে কি খারাপ মানুষ সাধারণত করতে হবে, এটি একটি কমান্ড লাইনে একটি প্রোগ্রাম অথবা একটি GUI লগ প্রোগ্রাম বা ওয়েবসাইট, আপনি শুধু আজেবাজে কথা প্রদান শুরু. আপনি একটি অনুসন্ধান ক্ষেত্র এবং আঘাত লিখুন মধ্যে বড় শব্দ টাইপ করুন, এবং আপনি যদি ওয়েবসাইট ক্র্যাশ দেখতে অপেক্ষা অথবা আপনি যদি কিছু প্রোগ্রাম ত্রুটির বার্তা টেপা দেখতে অপেক্ষা কারণ যদি আপনি পেতে খারাপ লোক হিসাবে ভাগ্যবান এবং আপনি কিছু ছবি ইনপুট প্রদান যে প্রোগ্রাম, মানে প্রোগ্রামার আপনার খারাপ আচরণ বার কহা ক্র্যাশ না, যার মানে আপনি সম্ভবত সঙ্গে প্রচেষ্টা যথেষ্ট, যথেষ্ট ট্রায়াল এবং ত্রুটি করতে পারেন, জিনিসটা কিভাবে একটি আরো সঠিক আক্রমণ মজুরি. তাই যতটা নিরাপত্তা একটি অংশ এই আক্রমণ এড়ানো হয় ঠিক না পুরাপুরি কিন্তু তাদের সনাক্ত এবং লগের এ আসলে খুঁজছেন এবং এইজন্য কি ছবি ইনপুট আপনার ওয়েবসাইটে টাইপ মানুষ আছে, কি খঁোজা আপনার ওয়েবসাইটে আছে জনের টাইপ কিছু বাফার উছল আশা. এবং এই সব কি সহজ বুনিয়াদি যাও boils নিচে এর একটি অ্যারে এবং এটি কি এবং বরাদ্দ মেমরির ব্যবহার মানে না. সম্পর্কিত যে খুব হয় এই যাও. যাক এর ভিতরে একটি মাত্র হার্ড ড্রাইভের কটাক্ষে দেখা এখনো আবার. আপনি একটি বা দু 'সপ্তাহ আগে থেকে প্রত্যাহার যে যখন আপনি আপনার রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন বা ট্র্যাশ করতে পারেন ফাইল, টানুন কি ঘটবে? >> [ছাত্রদের] কিছুই নেই. >> সম্পূর্ণভাবে কিছুই, ডান? অবশেষে আপনি যদি ডিস্কের স্থান চালানো কম, উইন্ডোজ বা ম্যাক অপারেটিং সিস্টেম আপনার জন্য ফাইল মুছে ফেলা হবে. তবে আপনি যদি সেখানে কিছু টানুন, যে সকল নিরাপদ হয় না. সমস্ত একই ঘরে বাসিন্দা বা আপনার বন্ধু বা পরিবারের সদস্য না হয় এবং আছে ডবল ক্লিক করুন, voila, সব ক্রটিযুক্ত ফাইল মুছতে চেষ্টা আছে. আমাদের অধিকাংশ অন্তত জানেন যে আপনি ডান ক্লিক করুন ক্লিক করুন অথবা নিয়ন্ত্রণ আছে এবং খালি যে ভালো ট্র্যাশ বা কিছু. এমনকি তারপর যে বেশ কৌতুক না কারণ কি যখন আপনি আপনার হার্ড ড্রাইভে একটি ফাইল আছে যে কিছু কিছু শব্দ নথিটি বা কোন JPEG প্রতিনিধিত্ব করে, এবং এই আপনার হার্ড ড্রাইভের প্রতিনিধিত্ব করে, এবং এর যাক বলতে এখানে এই কাঠের ছিলকা যে ফাইলটি প্রতিনিধিত্ব করে, এবং এটি একটি 0 সেঃ এবং 1s আভা গঠিত হয়. যখন আপনি ট্র্যাশে শুধুমাত্র যে ফাইলটি টানুন না কি হয় বিন বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা যেতে পারে কিন্তু এটা খালি? কিছুই সাজান. এটা এখন এর একেবারে কিছুই না. এখন এটা ঠিক কিছুই কারণ সামান্য কিছু এই টেবিল আকারে ঘটবে. তাই ডাটাবেস অথবা টেবিল কিছু একটা কম্পিউটার এর ভিতর ধরনের মেমরি আছে যে মূলত ফাইলের জন্য একটি কলাম 'নাম এবং ফাইলের জন্য একটি কলাম' অবস্থান আছে, যেখানে এই অবস্থান 123, শুধু একটা র্যান্ডম সংখ্যা হতে পারে. সুতরাং আমরা x.jpeg এবং অবস্থান 123 মত কিছু থাকতে পারে. তারপর কি হয় যখন প্রকৃতপক্ষে আপনি আপনার ট্র্যাশ খালি করতে? যে দূরে চলে যায়. কিন্তু কি জন্য দূরে যেতে না হয় 0 সেঃ এবং 1s. তাই তখন এর pset4 যাও সংযোগ? Pset4 সঙ্গে ওয়েল, ঠিক, কারণ আমরা দূর্ঘটনাক্রমে কম্প্যাক্ট ফ্ল্যাশ কার্ড করেছি মুছে ফেলা যে দুর্ভাগ্য দ্বারা এই সমস্ত ফটো বা শুধু কারণ এটি ছিল বিকৃত হয়ে ওঠে কিন্তু যে 0 সেঃ এবং 1s এখনও সেখানে না না মানে. হয়তো এদের মধ্যে কয়েকটি কারণ কিছু বেশী দূষিত হারিয়ে যায় এ অর্থে যে কিছু 0 সেঃ ওঠে 1s এবং 1s ওঠে 0 সেঃ. খারাপ জিনিসের কারণে বগী সফ্টওয়্যার বা ত্রুটিপূর্ণ হার্ডওয়্যার ঘটতে পারে. কিন্তু যারা বিট অনেক হয়ত, তাদের মধ্যে এমন কি 100%, এখনও আছে. এটা ঠিক যে কম্পিউটার বা ক্যামেরা যেখানে JPEG1 শুরু না জানা এবং যেখানে JPEG2 শুরু. কিন্তু যদি আপনি, প্রোগ্রামার কাণ্ডজ্ঞান একটি বিট যেখানে যারা JPEGs হয়, জানা অথবা, তাই তারা কি মত চেহারা আপনি 0 সেঃ এবং 1s এবং বলতে কোন JPEG, JPEG-বিশ্লেষণ করতে পারে, আপনি মূলত জন্য শুধু একটি সঙ্গে একটি প্রোগ্রাম বা লিখতে পারে যখন লুপ যে যারা প্রতিটি ফাইলের একটি recovers. সুতরাং পাঠ তাহলে আপনি নিরাপদভাবে আপনার ফাইল erasing শুরু হয় যদি আপনি এই পুরাপুরি এড়াতে চাই. হ্যাঁ. [ছাত্রদের] কিভাবে আসে এটা আপনার কম্পিউটারে বলছেন যে আপনার আরো মেমরি তুলনায় আপনি আগে কি আছে? আরো মেমরি তুলনায় আপনি আগে কি আছে - >> [ছাত্রদের] আরো মেমরি উপলব্ধ. ওহ. ভাল প্রশ্ন. ট্র্যাশ খালি পরে কারণ তারপর আপনার কম্পিউটারে আপনি না বলুন যে আপনার আরো মুক্ত স্থান তুলনায় আপনি আগে কি আছে? সংক্ষেপে ইন, কারণ এটা মিথ্যা না. আরো টেকনিক্যালি, আপনি আরও জায়গা আছে না, কারণ এখন আপনি বলেন আপনি অন্যান্য স্টাফ করা যেখানে একবার যে ফাইল করতে পারেন. কিন্তু যে বিট এ চলে না মানে, এবং যে সকল বিট 0 সেঃ হয় উদাহরণস্বরূপ পরিবর্তিত হচ্ছে না মানে, আপনার সুরক্ষার জন্য. সুতরাং এর বিপরীতে, যদি আপনি নিরাপদভাবে ফাইল বা নিশ্চিহ্ন করা শারীরিকভাবে ডিভাইস ধ্বংস, যে সত্যিই শুধুমাত্র যে প্রায় কখনও কখনও উপায়. কারণ আমরা যে আধা - ভয়ের নোট করবেন ছেড়ে না, এবং আমরা সোমবার আপনি দেখতে পাবেন. [সাধুবাদ] [CS50.TV]