[Powered by Google Translate] [গত সপ্তাহে 5]
[ডেভিড জে Malan, হার্ভার্ড বিশ্ববিদ্যালয়]
[এটি CS50.] [CS50.TV]
[নারী] তিনি এর মিথ্যা; সম্পর্কে কি, আমি জানি না.
[ম্যান] সুতরাং আমরা কি জানি?
[নারী] যে 9:15 এ রায় Santoya এটিএম এ ছিল.
[ম্যান] সুতরাং প্রশ্ন কি, না ছিল সে সময়ে 9:16 করছেন?
[নারী] কিছু এ 9 মিমি শ্যুটিং.
হয়তো তিনি Sniper দেখেছি.
[ম্যান] অথবা তিনি তার সঙ্গে কাজ করছেন.
[নারী]. অপেক্ষা করুন এক ফিরে যান.
[ম্যান] আপনি কি কি?
[♫ ♫ উত্কণ্ঠাময় অনিশ্চয়তাপূর্ণ সঙ্গীত]
[নারী] তার মুখ আপ আনুন. সম্পূর্ণ পর্দা.
[মানুষ] তার চশমা. >> একটি প্রতিফলন আছে.
[♫ ♫ উত্কণ্ঠাময় অনিশ্চয়তাপূর্ণ সঙ্গীত]
[ম্যান] এটা Nuevita এর বেসবল টিম. এটা তাদের লোগো.
[নারী] এবং তিনি যে কেহ যে জ্যাকেট এর পরেছে বলছেন এর.
>> [ডেভিড Malan] তো, এই হচ্ছে CS50 সপ্তাহ 5, এবং আজকে আমরা আপনার জন্য টেলিভিশন এবং চলচ্চিত্রের একটি বিট নিকুচি.
তাই যখনই আপনি এখানে এই মত একটি শো দেখছেন,
এবং cops বলবে "যা আপনাকে পরিষ্কার করতে পারি?" বা "উন্নত"
বাস্তব বিশ্বের কোন উন্নত আছে.
আসলে, আপনি কি সত্যিই পেতে একটি ভালো সামান্য কিছু.
আমি পাতা থেকে কর্মীদের ফটো এক গুটান করেছি.
এটি একটি প্রোগ্রাম নামক ফটোশপ. এটি 2 Bowdens 1,
1 থেকে 3 প্রকৃতপক্ষে Bowdens, আজ, কারণ আমরা মিসেস Bowden এখানে আছে রব এবং পল সঙ্গে হিসাবে ভাল,.
কিন্তু এখানে পর্দায় হয় রব, এবং যদি আমরা যে ঝলমল করা জুম তিনি তার চোখে সবসময় এর ছিল,
আপনি কি আসলে দেখতে হয় যে আপনি কি কি দেখতে পাবেন.
এটি "উন্নত," তাই "সিএসআই" আছে এটি ভুল.
অন্য একটি ক্লিপ আছে, যদি আমরা "সিএসআই" অল্পমাত্র বিট আর উপর বাছাই করতে পারেন.
এই এক একটি সুন্দর শব্দগুচ্ছ অত কহা আপনি চাইলে
আপনার বন্ধুদের সঙ্গে প্রযুক্তিগত নিস্বন যখন, সত্যিই, আপনি একেবারে কিছুই বলছে.
>> [ম্যান] সপ্তাহের জন্য আমি হয়েছি কোচোয়ান Killer হত্যার তদন্ত
একটি নির্দিষ্ট রোগগ্রস্ত মোহ.
[নারী # 1] এই রিয়েল টাইমে হয়.
[নারী # 2] আমি একটি GUI ইন্টারফেসের ভিসুয়াল বেসিক ব্যবহার করে তৈরি, যদি আমি একটি IP ঠিকানা ট্র্যাক করতে পারেন দেখতে পাবেন.
>> [Malan] সুতরাং সিঙ্ক সরাইয়া অডিও আউট, একটি GUI ইন্টারফেসের ভিসুয়াল বেসিক ব্যবহার করে তৈরি করা
একটি IP ঠিকানা ট্র্যাক সম্পূর্ণ অর্থহীন বিষয়.
এই দিন আপনি ভিসুয়াল বেসিক ব্যবহার করতে চাই,
একটি GUI জন্য কোন প্রয়োজন নেই, এবং আইপি ঠিকানা ছিল একটি টেকনিক্যালি সঠিক শব্দ.
তাই নজর রাখা এই জন্য, এবং আমার প্রিয় এক:
এই এক একটা সামান্য আরো রহস্যময়, কারণ আপনি একটি আলাদা ভাষা জানা প্রয়োজন.
একটি ভাষা বলা Objective-C, যা সি একটি সুপারসেটও আছে
তা এর সি প্লাস কিছু অতিরিক্ত বৈশিষ্ট্য, তাদের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং মধ্যে মানে.
এবং এই ভাষা যে Apple iOS প্রোগ্রামিং জন্য জনপ্রিয় করেনি.
তাই এখানে থেকে একটি ভিন্ন সম্পূর্ণভাবে শো থেকে একটি ক্লিপ, "সংখ্যা,"
যে আসলে আপনি যদি আপনার TiVo এবং বিরাম ডান মুহূর্ত তাকান ঘনিষ্ঠভাবে,
আপনি যে কি তারা এ খুঁজছেন তা পুরোপুরি বর্ণিত কি হচ্ছে দেখতে পাবেন.
এবং আমাকে এখানে একটি ভিন্ন অডিও সংযোগকারী চেষ্টা এবং যদি আমরা নারা দেখুন
সিঙ্ক অডিও এই সময় রাখা.
আমি আপনাকে "সংখ্যা."
>> [ম্যান # 1] এটি একটি 32 বিট IPv4 ঠিকানা.
[ম্যান # 2] আইপি, যে ইন্টারনেট. >> বেসরকারী নেটওয়ার্ক. এটা Anita এর প্রাইভেট নেটওয়ার্ক.
[Malan] ঠিক আছে. এটি Objective-C, এবং এটি কিছু ছাগলছানা রঙ এর প্রোগ্রাম এর জন্য,
হিসাবে আপনি সম্ভবত সেখানে ভেরিয়েবলের নাম থেকে আবিষ্কার করতে পারেন.
যাতে পরে,, ছিল "সংখ্যা." তাই আজ এবং এই সপ্তাহে আমরা পরিচয় করিয়ে
একটি ফরেনসিক এবং সেইজন্য সমস্যার মধ্যে প্রসঙ্গের দুনিয়া সামান্য বিট.
আজ একটি সংক্ষিপ্ত বক্তৃতা কারণ এখানে একটি বিশেষ ঘটনা আছে হবে
পরে, তাই আমরা একটি উঁকি নিতে, এবং জ্বালাতন করা হবে উভয় ছাত্র এবং অভিভাবকদের একইভাবে আজ
সঙ্গে জিনিষ দিগন্ত উপর যা কিছু.
সারাংশ সোমবার হিসাবে তাদের মধ্যে,, আপনি আরো কয়েকটি সহপাঠীদের থাকবে.
EdX, হার্ভার্ড এবং MITs নতুন খোলা courseware জন্য অনলাইন উদ্যোগ
এবং আরো, হার্ভার্ড এর উপর সোমবার ক্যাম্পাস চালু করছে.
সর্বশেষ হিসাবে গণনা, - যার অর্থ আসা সোমবার আপনি থাকবে
86.000 অতিরিক্ত সহপাঠীদের CS50 এর বক্তৃতা সঙ্গে বরাবর অনুসরণ করা হবে
ও বিভাগে এবং এগিয়ে যান এবং সমস্যা সেট.
এবং এই অংশ হিসাবে, আপনি উদ্বোধনী বর্গ সদস্য হতে হবে
CS50 এবং এখন CS50x.
>> এই অংশ হিসাবে এখন, বুঝতে পারেননি, যে হিসাবে ভাল কিছু upsides হতে হবে.
ছাত্রদের জন্য এ বিশাল নম্বর পেতে এই জন্য প্রস্তুত,,
এটা বলার জন্য যথেষ্ট যে যদিও আমরা 108 টিএফএস এবং সি এ এস আছে,
না বেশ ভাল ছাত্র / শিক্ষক অনুপাত একবার আমরা 80,000 অন্যান্য ছাত্র আঘাত.
তাই আমরা অনেক সমস্যা শূন্য করা চলুন না ম্যানুয়ালি সেট করে.
সুতরাং সমস্যা সেট চালু এই সপ্তাহে CS50 চেক করা হবে,
যা প্রয়োগ মধ্যে একটি কমান্ড লাইন থেকে ব্যবহারযোগ্য হবে
যে আপনি একবার আপনি পরে এটা আপডেট এই সপ্তাহান্তে পাবেন,
এবং আপনি একটি কমান্ড চালাতে সক্ষম হবেন, 50 চেক,
আপনার নিজস্ব pset উপর, এবং আপনি কিনা আপনার প্রোগ্রাম হিসাবে কিছু প্রতিক্রিয়া পাবেন
সঠিক বা ভুল অনুযায়ী বিভিন্ন নকশা নির্দিষ্টকরণের যে আমরা প্রদান করে থাকেন.
যে যাতে আরও বেশি এবং সমস্যা সেট স্পেসিফিকেশন এবং
CS50x সহপাঠীদের এই হিসাবে ভাল ব্যবহার করা হবে.
>> সুতরাং সমস্যা সেট 4 ফরেনসিক সম্পর্কে সব.
এবং এই টুকরা কিছু বাস্তব জীবনের স্টাফ দ্বারা অনুপ্রাণিত হয়,
তদ্দ্বারা আমি যখন গ্র্যাজুয়েট স্কুলে ছিল, আমি কিছুদিনের জন্য অন্তরীণ সঙ্গে
MIDDLESEX কাউন্টি এর জেলা অ্যাটর্নি কার্যালয় ফরেনসিক কাজ করছেন
তাদের নেতৃত্ব ফরেনসিক তদন্তকারী সঙ্গে, এবং কি এই যাও amounted
না, আমি মনে করি আমি কয়েক সপ্তাহ এর অতীত উল্লেখ করেছে, একটি গণ রাজ্য পুলিশ বা অন্যদের
আসা হবে না, তারা হার্ড ড্রাইভ এবং সিডি এবং ফ্লপি ডিস্কের মত কাজ করবে খসা
এবং ভালো, এবং তারপরে নিরূপণ ফরেনসিক অফিসে লক্ষ্য ছিল কিনা
বা ছিল কিছু ধরণের প্রমাণ ছিল না.
এই বিশেষ অনুসন্ধানের ইউনিট, তাই এটি ছিল বাবু অপরাধ,
এটি ছিল অপরাধের আরো সমস্যাগ্রস্থ সাজানোর,
কিছু ডিজিটাল মিডিয়ার কিছু ধরনের ব্যবস্থাপনা করা; সক্রিয় আউট না যে অনেক মানুষ
একটি ইমেল করে বলে যে "আমি তা." লিখুন
সেজন্য প্রায়ই এই ফরেনসিক অনুসন্ধান সব যে অনেক ফলের আপ না করেন,
তবে কখনও কখনও মানুষ যেমন ইমেল লিখতে হবে.
তাই কখনও কখনও প্রচেষ্টা পুরস্কৃত হয়েছে.
>> কিন্তু এই ফরেনসিক pset যাও যাত্তয়া, আমরা pset 4 গ্রাফিক্স একটি বিট হবে পরিচায়ক.
কাজেই সম্ভবত আপনার দেওয়া, JPEGs, gifs এবং এইসব দিন ভালো জন্য এই জিনিস নিতে,
কিন্তু আপনি যদি সত্যিই এটা আমার মনে হয়, একটি চিত্র, অনেক ভালো রব এর মুখ,
বিন্দু একটি অনুক্রম, বা পিক্সেল হিসাবে স্থাপিত হতে পারে.
Rob এর মুখ ক্ষেত্রে এখন,, রং সমস্ত প্রকারের আছে,
এবং আমরা পৃথক বিন্দু, পিক্সেল হিসাবে পরিচিত otherwide দেখতে শুরু করে,
একবার আমরা ইন জুম শুরু
কিন্তু আমরা যদি একটু অজটিল দুনিয়া, এবং ঠিক এই যে এখানে রব বলে
কালো এবং সাদা, ভাল, উপস্থাপন কালো এবং সাদা আমরা শুধু বাইনারি ব্যবহার করতে পারেন.
এবং যদি আমরা বাইনারি ব্যবহার করতে যাচ্ছেন, 1 অথবা 0, আমরা এই একই চিত্র প্রকাশ করতে পারেন
Rob এর বিট এই প্যাটার্ন সঙ্গে মুখের স্মিত: 11000011 উপস্থাপন
সাদা, সাদা, কালো, কালো, কালো, কালো, সাদা সাদা.
এবং তাই, তারপরে একটা বিশাল লাফ দিতে পারলে না, যাও রঙিন ফটোগ্রাফ সম্পর্কে কথা বলা শুরু.
যে আপনি ফেসবুকে অথবা একটি ডিজিটাল ক্যামেরা সঙ্গে নিতে দেখতে চাই,
কিন্তু অবশ্যই, যখন এটি রং আসে, আপনি আরো বিট প্রয়োজন.
ফটোগ্রাফ এবং বিশ্বের বেশ সাধারণ রং 1 বিট ব্যবহার না হয়,
হিসাবে এই প্রস্তাব দেওয়া হয়, কিন্তু 24 বিট রঙ, যেখানে আসলে আপনি রং লক্ষ লক্ষ পেতে.
সুতরাং হিসাবে ক্ষেত্রে যখন আমরা রব এর চোখে জুম,
যে ছিল বিভিন্ন রঙিন সম্ভাবনার লক্ষ লক্ষ কোনো নম্বর.
>> সুতরাং আমরা সমস্যা সেট 4 হিসাবে পাশাপাশি walkthrough এই পরিচয় করিয়ে দেব,
যা স্বাভাবিকের 2:30 পরিবর্তে 3:30 হতে কারণ শুক্রবার এর এখানে বক্তৃতা আজকের হবে.
কিন্তু ভিডিও অনলাইন, স্বাভাবিক হিসাবে, আগামীকাল হতে হবে.
আমরা অন্য ফাইল ফরম্যাট আপনাকে পরিচয় করিয়ে দেব.
তাই ইচ্ছাকৃতভাবে এই প্রথম এ ভয় চেহারা রাখা,
কিন্তু এটি শুধু একটি সি struct জন্য কিছু ডকুমেন্টেশন.
এটি সক্রিয় যে মাইক্রোসফট বছর আগে, এই বিন্যাসে লোকায়ত সাহায্য,
বিটম্যাপ নামক ফাইল ফরম্যাট, BMP, এবং এই ছিল একটি অতি - সহজ,
আনন্দময় গ্রাফিক্যাল ফাইল ফরম্যাট যে বেশ কিছু সময় ব্যবহার করা হয়
এবং কখনও কখনও এখনও জন্য ডেস্কটপের ওয়ালপেপার উপর.
আপনি যদি উইন্ডোজ এক্সপি এবং ঘূর্ণায়মান পাহাড় এবং নীল আকাশ ফিরে মনে,
সাধারণত যে ছিল একটি BMP, বা বিটম্যাপ ইমেজ, এবং বিটম্যাপ
আমাদের জন্য মজা কারণ তারা কিছুটা জটিলতা আছে.
এটা বেশ 0 এবং 1 এর এর এই গ্রিড হিসাবে সহজ নয়;
পরিবর্তে, আপনি একটি ফাইল শুরু করার একটি হেডার মত জিনিষ আছে.
সুতরাং একজন. Bmp ফাইল ভিতর অন্য কথায়, একটি 0 এবং 1 এর এর আভা,
কিন্তু কিছু অতিরিক্ত 0 এবং এর মধ্যে আছে 1 এর আছে.
এবং এটি সক্রিয় যে কি সম্ভবত আমরা গ্রহণ করেছি বছর জন্য জন্য দেয়া হয়,
. doc বা. xls বা. mp3 বা. mp4 মত ফাইল ফরম্যাটের,
যাহা - কিছু ফাইল ফরম্যাটের যে আপনি পরিচিত.
ভাল, কি এমনকি এটা একটি ফাইল ফরম্যাট করা মানে?
এ দিনের শেষে কারণ, সমস্ত ফাইলগুলির আমরা ব্যবহার আছে কেবল 0 ও 1 এর
এবং হয়ত যারা এর 0 এবং 1 এর একটি, খ, গ, বা মাধ্যমে ASCII ভালো, প্রতিনিধিত্ব
কিন্তু দিনের শেষে মাধ্যমে, এটি শুধু এর 0 এবং 1 এর.
>> তাই শুধু মানুষের মাঝে একটি নতুন ফাইল ফরম্যাট উদ্ভাবিত সিদ্ধান্ত
যেখানে তারা কি আসলে বিট প্যাটার্নের অর্থ হবে প্রমিত.
এবং এখানে এই ক্ষেত্রে, লোকেরা যারা বিটম্যাপ ফাইল ফরম্যাট পরিকল্পিত
তিনি আরো বলেন যে একটি বিটম্যাপ ফাইলের মধ্যে প্রথম বাইট এ, হিসাবে অফসেট 0 দ্বারা denoted, সেখানে,
গিয়ে কিছু cryptically নামে পরিবর্তনশীল নামক bfType করা আছে এর,
যা শুধু বিটম্যাপ ফাইল টাইপ জন্য দাঁড়িয়েছে; কি বিটম্যাপ ফাইলের ধরন এই হয়.
আপনি, দ্বিতীয় সারিতে যে 2 অফসেট, বাইট 2 নম্বর থেকে সম্ভবত আবিষ্কার করতে পারেন,
0 এবং 1 এর এর যে কি প্রতিনিধিত্ব করে একটি প্যাটার্ন আছে?
কিছু আকার, এবং এটি থেকে সেখানে যায়.
সুতরাং সমস্যা সেট 4, আপনি এইসব জিনিস কিছু মাধ্যমে পাবেন করা পদচারণা.
>> আমরা শেষ পর্যন্ত তাদের সব বিষয়ে চিন্তা করা হইনি, কিন্তু লক্ষ্য করা হবে এটি আকর্ষণীয় পেতে আরম্ভ
চারপাশে লাইন বা বাইট 54, rgbtBlue, সবুজ এবং লাল.
আপনি যদি কখনও আদ্যক্ষরা আরজিবি, লাল সবুজ নীল করেছি শুনেছেন, এই যে একটি রেফারেন্স.
কারণ এটি সক্রিয় আউট আপনি সব রামধনু রঙ আঁকা যাবে
সঙ্গে লাল এবং নীল এবং সবুজ কিছু সংমিশ্রণ.
আসলে,, রুমে বাবা নিকটতম প্রজেক্টর কিছু প্রত্যাহার করা হতে পারে.
এই দিন, আপনার 1 উজ্জ্বল আলো লেন্সের আসছে আউট দেখতে.
কিন্তু দিনে, আপনি লাল লেন্স, লেন্স নীল, সবুজ এবং লেন্স ছিল
এবং তারা একসঙ্গে পর্দা যার লক্ষ্য এবং একটি রঙিন ছবি গঠিত.
এবং বেশ প্রায়ই মধ্যম বিদ্যালয় এবং উচ্চ বিদ্যালয় যারা লেন্স আছে
সদা তাই সামান্য বাঁকাভাবে, তাই আপনি ছিল ডবল অথবা ট্রিপল চিত্র বাছাই করা,
কিন্তু যে ধারণা ছিল. আপনি লাল এবং সবুজ এবং নীল আলো একটি ছবি অলঙ্কার ছিল.
এবং যে একই নীতি কম্পিউটারে ব্যবহৃত হয়.
>> সমস্যা যাতে মধ্যে চ্যালেঞ্জ, তারপর, আপনার জন্য 4 সেট
যাও কিছু বিষয় হতে যাচ্ছি; এক প্রকৃতপক্ষে একটি চিত্র মাপ পরিবর্তন হয়.
0 এবং 1 এর এর একটি প্যাটার্ন নিয়ে,
জিনিসটা যা 0 এবং 1 এর এর একটি অংশ গঠন কি ভালো প্রতিনিধিত্ব করেন,
এবং তারপর চিন্তা করা কিভাবে পিক্সেল প্রতিলিপি নির্মাণ: reds, ব্লুজ, সবুজ শাক সব্জী
ভিতরে যাতে যখন একটি ছবি ভালো প্রথমে দেখাচ্ছে, পরিবর্তে ভালো যে দেখাশোনা হতে পারে.
অন্যান্য চ্যালেঞ্জের মধ্যে খুব,, যে আপনি পাবেন হস্তান্তর করা হবে
একটি প্রকৃত ফাইলের ফরেনসিক একটি ডিজিটাল ক্যামেরা থেকে ইমেজ
এবং যে ক্যামেরা সময় উপর একবার,, ছিল একটি ফটো আভা.
সমস্যা, ঘটনাক্রমে আমরা মুছে ফেলা হয় অথবা ছবিটি ছিল একরকম দূষিত.
ডিজিটাল ক্যামেরার সাথে খারাপ জিনিস ঘটতে হবে এবং যাতে দ্রুত আমরা এর 0 এবং 1 এর সব কপি
বন্ধ আপনাকে যে জন্য কার্ড, 1 বড় ফাইলের মধ্যে তাদের সব সঞ্চয়, এবং তারপর আমরা তাদের আপনি হাতে পাবেন
সমস্যার মধ্যে 4 সেট যাতে আপনি সি একটি প্রোগ্রাম যা পুনরুদ্ধার লিখতে পারেন
যারা JPEGs সব, মনে মনে.
এবং এটি সক্রিয় যে JPEGs আউট, যদিও তারা একটি জটিল ফাইল ফরম্যাট কিছুটা,
তারা অনেক এই স্মিত এখানে মুখ চেয়ে আরো জটিল.
এটা পরিনত হয় যে প্রতি কোন JPEG 0 এবং 1 এর এর একই প্যাটার্নের সঙ্গে শুরু হয়.
সুতরাং যখন একটি লুপ বা অনুরূপ জন্য একটি লুপ বা ব্যবহার করে,
আপনি সমস্ত 0 এর এই ফরেনসিক চিত্রে এবং 1 এর উপর পুনরুক্তি করতে পারেন
এবং প্রত্যেক সময় আপনি বিশেষ প্যাটার্ন যে সমস্যা সেট এর স্পেসিফিকেশন সংজ্ঞায়িত হয়েছে তা দেখতে,
আপনি খুব উচ্চ সম্ভাবনা সঙ্গে অনুমান, 'ওহ, এখানে হয়,,
কোন JPEG শুরু, 'এবং যত তাড়াতাড়ি আপনি খুঁজে একই প্যাটার্ন,
বাইট বা কিলোবাইট বা মেগাবাইট কিছু পরে নম্বর,
আপনি, 'ধারনা করতে পারি বিস্ময়! এখানে একটি দ্বিতীয় কোন JPEG, আমি প্রথম ছবির পরে একটি নেন.
সম্পর্কে যে প্রথম ফাইলটি পড়া থামাতে যাক, এই নতুন লেখা শুরু. '
এবং 4 pset জন্য আপনার প্রোগ্রামের আউটপুট হিসাবে অনেক হিসাবে 50 JPEGs হবে.
এবং এটি যদি 50 JPEGs না, আপনি একটি লুপ একটি বিট আছে.
আপনি যদি একটি JPEGs সীমাহীন নম্বর আছে, আপনি একটি অসীম লুপ আছে.
যাতে খুব, খুব সাধারণ একটি মামলা করা হবে.
যে দিগন্ত কি লেখা আছে তা.
>> 0 ক্যুইজ আমাদের পিছনে. আমার ইমেল প্রতি, বুঝতে পারছি, invariably যে লোকেরা আছে
উভয় খুশি নিরপেক্ষ মধ্যে, বাছাই করা, এবং দু: খিত ব্যঙ্গ কাছাকাছি 0 সময় যারা.
এবং আমার কাছে পৌঁছান, মাথা টিএফএস, Zamyla, আপনার নিজের TF দয়া করে না
সি এ এস বা এক যে আপনি কি জানেন যদি আপনি কিভাবে যে চলে গেলেন আলোচনা করতে চাই.
>> তাই পিতামাতা ছাপ এখানে রুমে,
CS50 লাইব্রেরি কি? গুড জব.
CS50 লাইব্রেরি কি? হাঁ? [ছাত্র উত্তর, অপাচ্য]
>> ঠিক আছে, ভাল. এটা একটি কোড prewritten সেট যে আমরা, কর্মী, লিখেছেন,
আমরা আপনাকে প্রদান, কিছু সাধারণ বৈশিষ্ট্য প্রদান করে.
সামগ্রী সম্পর্কে একটি স্ট্রিং পেতে চাই; সম্পর্কে কোন int পেতে, ফাংশন যে এখানে তালিকাভুক্ত করা হয় সব.
এখন শুরু হচ্ছে, আমরা সত্যিই এই প্রশিক্ষণের চাকার অপসৃত করা শুরু.
সুতরাং আমরা আপনার কাছ থেকে "স্ট্রিং" নিতে শুরু করে যাচ্ছেন,
যা, রিকল, কি প্রকৃত তথ্য টাইপ জন্য ছিল মাত্র একটি প্রতিশব্দ? গৃহস্থালি *.
তাই অভিভাবকদের জন্য, যে সম্ভবত ছিল - ভালো, তাই গৃহস্থালি * দেখতে আমরা শুরু করব
পর্দায় সমস্ত আরো হিসাবে আমরা আমাদের শব্দভান্ডার থেকে "স্ট্রিং" মুছে ফেলুন,
অন্তত যখন এটি আসলে কোড লেখা আসে.
একইভাবে, আমরা অনেক হিসাবে এই ফাংশন ব্যবহার করে বন্ধ হবে,
কারণ আমাদের প্রোগ্রাম আরো পরিশীলিত পেতে যাচ্ছে
বরং শুধুমাত্র প্রোগ্রামগুলি যে প্রম্পট জ্বলজ্বলে সঙ্গে সেখানে বসতে লিখুন,
ব্যবহারকারী যাও জন্য অপেক্ষা ইন কিছু টাইপ করুন
আপনি অন্য কোথাও থেকে আপনার ইনপুট পাবেন.
উদাহরণস্বরূপ, আপনার স্থানীয় হার্ড ডিস্ক বিট সিরিজ থেকে তাদের পাবেন.
আপনি পরিবর্তে ভবিষ্যতে তাদের একটি নেটওয়ার্ক সংযোগ থেকে পাবেন, কিছু ওয়েবসাইট কোথাও.
তাই প্রথমবার এই স্তর ছুলা এর দিন, এবং CS50 প্রয়োগ টানিয়া তোলা আপ
এবং এই ফাইল নামক CS50.h, যা আপনি সপ্তাহের জন্য সহ চলেছি ধারালো.
>> কিন্তু যাক এর আসলে এই ভিতরে কি দেখতে.
তাই নীল ফাইল উপরের মাত্র একটি মন্তব্য আভা,
পাটা তথ্য এবং লাইসেন্সিং. এটি একটি সাধারণ উদাহরণ কতকাংশে
সফ্টওয়্যার, কারণ সফ্টওয়্যার অনেক দিন এইসব কি বলা এর "ওপেন সোর্স,"
যার অর্থ হল যে কেউ লিখিত কোড করেনি
এবং এটি সহজলভ্য, না এবং চালানোর জন্য ব্যবহার করতে পারেন,
কিন্তু আসলে পড়া এবং পরিবর্তন এবং আপনার নিজের কাজে সংহত.
তাই কি আপনি ওপেন সোর্স সফটওয়ার ব্যবহার করছি,,
যদিও খুব ছোট ফর্ম.
যদি আমি মন্তব্য গত নিচে স্ক্রল যদিও,, আমরা আরো কিছু পরিচিত জিনিস দেখতে শুরু করব.
এখানে শীর্ষে, তাই নোটিশ CS50.h ফাইলটি একটি হেডার ফাইল আভা রয়েছে.
এখন, এই অধিকাংশ আমরা আগে, আছে দেখা যায় না কিন্তু এক হয়
পরিচিত; এই যা আমরা আছে দেখা যায়, যদিও সংক্ষেপে, দূর পর্যন্ত?
হাঁ, আদর্শ লাইব্রেরি. Stdlib.h malloc আছে,
তাই একবার আমরা শুরু ডাইনামিক মেমরি বরাদ্দকরণের বিষয়ে কথা বলছি,
যা আমরা পরের সপ্তাহে ফিরে আসবে হিসাবে পাবেন, আমরা যে ফাইল সহ শুরু.
এটা পরিনত হয় যে আসলে bool এবং সত্য এবং মিথ্যা সি মধ্যে উপস্থিত না থাকার, সহজাতভাবে,
যদি আপনি এই ফাইলটি এখানে অন্তর্ভুক্ত.
সুতরাং আমরা সপ্তাহের জন্য,, হয়েছে প্রমিত bool.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 বিলিয়ন.
সুতরাং আপনি আপনার সম্ভাব্য মান ব্যয় যাতে আপনি বিশ্বের কমিট করতে পারেন
যে যদি কিছু গোলমাল হয়, আমি এই মহা বড় মান প্রত্যাবর্তন করা.
কিন্তু আপনি ব্যবহারকারী কিছু ভালো রহস্যপূর্ণ টাইপ "2, 3, 4 ..." করতে না চান
এর বড় সংখ্যা, যেখানে আপনি একটি ধ্রুবক হিসাবে পরিবর্তে সাধারণের বোধগম্য.
সত্যিই তাই, যদি আপনি মলদ্বারে হচ্ছে গত কয়েক সপ্তাহ ছিল,
যে কোনো সময় আপনি GetInt কল, যদি আপনি একটি শর্ত হয়েছে উচিত চেক.
INT_MAX ব্যবহারকারী টাইপ করেন, বা আরো নির্দিষ্টভাবে,
কি GetInt রিটার্ন INT_MAX? কারণ যদি তা,
আসলে মানে হল তারা এটা টাইপ না; এই ক্ষেত্রে কিছু ভুল হয়েছে.
তাই এটি কি একটি "প্রহরী" মান, যা শুধু অর্থ বিশেষ হিসাবে সাধারণত এর পরিচিত.
>> ওয়েল, আমি কি এখন যাও. গ ফাইল চালু.
সি ফাইল প্রয়োগ কিছু সময় অস্তিত্ত্বকে করেনি,
আসলে,, যন্ত্র আছে এটা আপনার জন্য precompiled
আমরা যে জিনিসের মধ্যে একে বলা হয় "অবজেক্ট কোড,"
কিন্তু এটা আপনি যেখানে তার কারণ হল, সিস্টেমের ব্যাপার জানেন না,
এই ক্ষেত্রে, যেখানে এটা যন্ত্র.
কিন্তু এখন এর স্ক্রল করে নিচে GetInt যাক, এবং কিভাবে GetInt হয়েছে সব সময় এই কাজ দেখতে.
তাই আমরা এখানে আগে থেকে অনুরূপ মন্তব্য আছে.
সম্পর্কে কেবল কোড অংশের মধ্যে জুম করা যাক,
এবং কি আমরা GetInt জন্য নিম্নলিখিত আছে.
এটি কোনো ইনপুট নেয় এবং এটি কোন int ফেরৎ, যখন (সত্য), তাই আমরা একটি ইচ্ছাকৃত অসীম লুপ আছে
কিন্তু সম্ভবতঃ,, আমরা এই বিরতি আউট একরকম, করব বা মধ্যে এই থেকে ফিরে.
সুতরাং আসুন কিভাবে এই কাজ করে দেখুন. ভাল, আমরা মনে GetString ব্যবহার করা হবে
এই লুপ, 166 ভিতর প্রথম লাইন.
এটি এখন ভাল অভ্যাস কারণ কি অবস্থার অধীন
এই বিশেষ অভিব্যক্তি, শূন্য GetString ফিরে আসতে পারে?
যদি কিছু গোলমাল হয়. যখন আপনি GetString মত কল কি ভুল হয়ে যেতে পারে?
হাঁ? [ছাত্র উত্তর, অপাচ্য] >> হ্যাঁ. তাই হয়তো malloc ব্যর্থ.
কোথাও নীচে ফণা GetString malloc আহ্বান করা হয়,
যা মেমরি বরাদ্দ করা, যা কম্পিউটার দোকান দেয়
অক্ষর যে সকল ব্যবহারকারী কীবোর্ড মধ্যে ধরনের.
অনুমান এবং ব্যবহারকারী একটি বিনামূল্যে সময় পুরো অনেক ছিল
এবং টাইপ 2 বিলিয়ন অক্ষরের বেশী, উদাহরণস্বরূপ,.
কম্পিউটার বেশী অক্ষর এমনকি RAM উপস্থিত রয়েছে.
ওয়েল, GetString যাও যাও যাও আপনি যে বোঝান সক্ষম হতে হয়েছে,
এমনকি যদি এই একটি সুপার, সুপার অসাধারণ কোণার কেস.
এটা একরকম এই হ্যান্ডেল করতে পারবে আছে, এবং তাই GetString,
যদি আমরা ফিরে যান এবং তার ডকুমেন্টেশন পড়ুন, আসলে,, কিন্তু NULL ফেরত.
এখন যদি GetString NULL ফেরত দ্বারা করা সম্ভব না হলে, GetInt বিফল হবে
ফিরে দ্বারা শুধুমাত্র একটি প্রহরী হিসাবে INT_MAX,.
এগুলি হল শুধু মানুষের নিয়মাবলী. একমাত্র উপায় জানতে চান আপনি এই ক্ষেত্রে
ডকুমেন্টেশন পড়া হয়.
সুতরাং আসুন যেখানে int-আসলে GotInt যাও নিচে স্ক্রোল করুন.
>> তাই লাইন 170 সালে যদি আমি স্ক্রল ডাউন একটি অতিরিক্ত বিট, আমরা এই লাইন উপরে একটি মন্তব্য আছে.
সুতরাং আমরা 172 সালে, ডিক্লেয়ার করার কোন int n এবং একটি গৃহস্থালি গ, এবং তারপর এই নতুন ফাংশন,
আপনি যা কিছু আগে জুড়ে, স্খলিতচরণ কিন্তু sscanf আছে.
উল্লিখিত পংক্তি অনুযায়ী স্ক্যান চ ঘোরা.
অন্য কথায়, সম্পর্কে একটি স্ট্রিং দিন এবং আমি আগ্রহের তথ্য টুকরোগুলি জন্য এটি স্ক্যান করবে.
সুতরাং যে কি মানে? ওয়েল, অনুমান যে, আক্ষরিক অর্থ, 1 2 3 আমি কীবোর্ড এ টাইপ করুন,
এবং তারপর আঘাত লিখুন. 1 2 3 তথ্য টাইপ GetString দ্বারা যখন ফিরে কি?
এটা সম্ভবত এর একটি স্ট্রিং, ডান? আমি একটি স্ট্রিং আছে, তাই 1 2 3 সত্যিই "1 2 3"
সঙ্গে এটি শেষে \ 0. যে কোন int হয় না.
যে একটি সংখ্যা না. এটি একটি নম্বর মনে হচ্ছে কিন্তু এটি আসলে না.
তাই GetInt কি আছে? এটা যে পংক্তি বাম থেকে স্ক্যান করা হয়েছে,
1 2 3 \ 0, এবং প্রকৃত একরকম একটি পূর্ণসংখ্যা যাও তা রূপান্তর করুন.
এখন, আপনি কিভাবে এই জিনিসটা করতে পারে.
আপনি যদি pset 2 ফিরে মনে করেন, সম্ভবতঃ আপনি না একটু আরামদায়ক
সিজার বা vigenere যাতে আপনি একটি স্ট্রিং উপর পুনরুক্তি করতে পারেন,
আপনি অক্ষর পছন্দ সঙ্গে ints রূপান্তর করতে পারেন. এটা একটি কাজ সমগ্র অনেক.
কেন sscanf মত একটি ফাংশন যা আপনাকে যে জন্য ফোন আছে না?
সুতরাং sscanf প্রত্যাবর্তনের এই ক্ষেত্রে বলা লাইন, যা একটি স্ট্রিং একটি যুক্তি,.
তারপর আপনি কোট মধ্যে, নির্দিষ্ট, printf অনুরূপ,
না কি আপনি এই স্ট্রিং দেখতে আশা?
আমি কি এখানে বলছে না হয়, আমি একটা দশমিক সংখ্যা হতে পারে এবং একটি অক্ষর দেখতে আশা.
এবং আমরা এটি কেন শুধু একটা মুহূর্ত ক্ষেত্রে দেখতে পাবেন.
এটা পরিনত হয় যে এই স্বরলিপি এখন তরিতরকারি স্মরণকারী
আমরা শুরু মাত্র এক সপ্তাহ আগে যে বিষয়ে কথা বলছি.
>> আমাদের জন্য কি & এবং এন সি এখানে কি করছে? [ছাত্র উত্তর, অপাচ্য]
>> হ্যাঁ. এটা আমার গ n ঠিকানা এবং ঠিকানা প্রদান করে.
এখন, কেন যে গুরুত্বপূর্ণ? আচ্ছা, আপনি কি জানেন যে সঙ্গে সি ইন ফাংশান উপস্থিত করা
আপনি সবসময় সব মান বা না মান প্রত্যাবর্তন করা যাবে.
আপনি কোন int, একটি পংক্তি, একটি float, একটি গৃহস্থালি, যাই হোক না কেন ফিরে যেতে পারেন.
অথবা আপনি অকার্যকর ফিরে, কিন্তু আপনি শুধুমাত্র 1 টি জিনিস সর্বাধিক প্রত্যাবর্তন করতে পারেন.
কিন্তু এখানে আমরা sscanf সম্পর্কে হয়তো ফিরে কোন int, একটি দশমিক সংখ্যা চান,
এবং আরও একটি গৃহস্থালির কাজ, এবং আমি একটি মুহূর্ত কেন গৃহস্থালি ব্যাখ্যা করব.
সুতরাং আপনি কার্যকরভাবে চ 2 জিনিষ ফেরত দিতে চান; যে ঠিক করা সম্ভব সি না
সুতরাং আপনি 2 ঠিকানাগুলোতেই পাশ দিয়ে কাজ করতে পারেন চারপাশে যে,
কারণ যত তাড়াতাড়ি আপনি 2 ঠিকানাগুলি হাতে একটি ফাংশান কি, যে ফাংশন তাদের সাথে কি করতে পারি?
ঐ ঠিকানায় চিঠি লিখতে পারেন. আপনি * অপারেশন ব্যবহার এবং যারা ঠিকানাগুলির প্রত্যেকটিতে "সেখানে যাওয়ার জন্য" করতে পারেন.
এটা এই খিড়কি প্রক্রিয়া সাজানোর, কিন্তু ভেরিয়েবলের মান পরিবর্তন করার জন্য খুব সাধারণ
ঠিক এই ক্ষেত্রে 1 2 মধ্যে জায়গা, বেশী.
এখন, আমি == to1 জন্য, চেক এবং তারপর n ফিরে যদি যে সত্য, না সত্য পরীক্ষা করছি বিজ্ঞপ্তি.
কি করছেন? ভাল টেকনিক্যালি,, সব আমরা সত্যিই GetInt মধ্যে ঘটতে করতে চান এই.
আমরা, পার্স তাই কথা বলতে চাই; আমরা স্ট্রিং পড়তে চাই
"1 2 3" এবং যদি এটা মনে আছে একটি নম্বর আছে,
আমরা কি sscanf করছি না এই সম্পর্কে বলার জন্য পরিবর্তনশীল হবে যে নম্বর, 1 2 3, করা হয়.
তারপর কেন,, আমি কি এই হিসাবে আছে ভাল?
এছাড়াও বলছে, sscanf, তবে আপনাকে একটি অক্ষর এখানে পেতে পারে ভূমিকা কি.
[ছাত্র ভাষাভাষী, অপাচ্য] >> নেই - একটি দশমিক বিন্দু কাজ করতে পারেন.
এর রাখা যাক একটি মুহূর্তে যে চিন্তা. আর কী?
[ছাত্র, অপাচ্য] >> সুতরাং, ভালো চিন্তা, এটি শূন্য অক্ষর হতে পারে.
এটা আসলে এর, এই ক্ষেত্রে না. হাঁ? [ছাত্র, অপাচ্য]
>> >> ASCII. অথবা, আমাকে এমনকি আরও সাধারণের বোধগম্য.
% গ সেখানে মাত্র ত্রুটি পরীক্ষা করা হয়.
আমরা সেখানে না নম্বর পরে অক্ষর হতে না চান,
কিন্তু এই সম্পর্কে কি কি করতে পারবেন করা হল:
এটি সক্রিয় যে sscanf, সংরক্ষণ ছাড়াও এখানে এই উদাহরণে হবে এবং গ মান,,
এটি কি তা ভেরিয়েবল সংখ্যা উৎপন্ন হয় না এটা ইন মান করা
সুতরাং আপনি যদি শুধুমাত্র 1 2 3, তারপর টাইপ করুন% d তে মেলে যাচ্ছে
এবং শুধুমাত্র এন 1 2 3 ভালো একটি মান সংরক্ষিত হয় এবং গ কিছুই করা পরার পরার;
গ অবশেষ একটি গার্বেজ মান, তাই কথা বলতে.
জঞ্জাল কারণ এটি কিছু মান হিসাবে সক্রিয়া করা হয়েছে না.
সুতরাং যে ক্ষেত্রে, sscanf প্রত্যাবর্তন 1, কারণ আমি সেই পয়েন্টার এক নারী,
যে ক্ষেত্রে, মহান. আমি কোন int আছে, তাই আমি মেমরি মুক্ত লাইন মুক্ত
যে GetString আসলে বরাদ্দ করা, এবং তারপর আমি ফিরে আসতে হবে.
অন্যথায়, যদি কখনও কোন বিস্ময়ের উদ্রেক যেখানে যে বিবৃতি থেকে পুনরায় চেষ্টা করুন ঠিক এই স্থান থেকে আসে, আসে.
বৈসাদৃশ্য দ্বারা যদি,, আমি 1 2 3 foo বিন্যাস টাইপ,
কিছু কিছু লেখার র্যান্ডম ক্রম, sscanf দেখতে হবে,
নম্বর উত্তেজনা,, নম্বর উত্তেজনা, উত্তেজনা, সংখ্যা, উত্তেজনা - চ.
এবং তা হবে 1 2 3 করা যাচ্ছে.
এটা গ চ মধ্যে রাখুন, এবং তারপর 2 ফিরে যাচ্ছে.
সুতরাং আমরা আছে, ঠিক scanf এর ব্যবহার মৌলিক সংজ্ঞা ব্যবহার করে,
একটি অত্যন্ত সহজ উপায় - ভাল, প্রথম নজরে জটিল, কিন্তু এ দিনের শেষে,
বলছে মোটামুটি সহজ প্রক্রিয়া, নেই কোন int, এবং যদি তাই হয় যে, শুধুমাত্র যে কাজটা আমি খুঁজে পাওয়া যায়নি?
এবং সাদা এখানে স্থান ইচ্ছাকৃত. আপনি যদি sscanf জন্য ডকুমেন্টেশন পড়ুন,
এটি যে আপনি যদি সাদা স্থান একটি শুরুতে বা শেষে টুকরা অন্তর্ভুক্ত, আপনি বলে
sscanf খুব কারনের জন্য ব্যবহারকারীকে অনুমতি দেয়,, যাও spacebar 1 2 3 আঘাত করা, এবং যে বৈধ হতে হবে.
এটি ব্যবহারকারী এ চিত্কার হবে না কারণ তারা শুরুতে বা শেষে spacebar আঘাত,
যা অল্পমাত্র আরো ব্যবহারকারী বান্ধব.
>> কোন প্রশ্ন থাকে, তাহলে, উপর GetInts? হাঁ?
[ছাত্র প্রশ্ন, অপাচ্য]
>> গুড প্রশ্ন. চ কি, এবং হিট মত যদি আপনি শুধু একটি গৃহস্থালির কাজ টাইপ করা, লিখুন
কখনও 1 2 3 টাইপ ছাড়া; কি আপনি কোড এই লাইনের পরে ব্যবহার করা হবে বলে তুমি মনে কর?
সুতরাং sscanf খুব যে আবরণ, করতে পারেন না কারণ সেক্ষেত্রে,
তা n বা গ পূরণ হতেই থাকবে না; এটি পরিবর্তে 0 ফিরে যাচ্ছে.
যে ক্ষেত্রে, এই আমি যে দৃশ্যকল্প করছি সংক্রামক, কারণ আমি চাই প্রত্যাশিত মান হল 1.
আমি কেবল 1 চান, এবং শুধুমাত্র 1 টি জিনিস বুজা যাও. ভাল প্রশ্ন. অন্যদের?
>> ঠিক আছে, তাই এখানে কাজ করে সব দিয়ে যেতে না দেওয়া,
কিন্তু এক যে হতে পারে, সম্ভবত অবশিষ্ট সুদ, মনে হচ্ছে
কারণ এটি সক্রিয় আউট GetString হয় যে GetFloat, GetInt,
, GetDouble GetLongLong GetString তাদের কার্যকারিতা অনেক সমস্ত পান্ট.
সুতরাং আসুন এখানে তিনি কিভাবে বাস্তবায়িত হয় কটাক্ষপাত করা.
এই এক সামান্য জটিল দেখায় কিন্তু এটি একই মৌলিক ব্যবহার
যে আমরা শুরু করতে গত সপ্তাহে বিষয়ে কথা বলছি. তাই GetString,
যা প্রতি অকার্যকর হিসাবে কোন যুক্তি লাগে এখানে,
এবং এটি একটি স্ট্রিং প্রত্যাবর্তন; তাই আমি একটি স্ট্রিং নামক বাফার ঘোষণা করছি.
আমি কি যে এখনও জন্য ব্যবহার করা যাচ্ছে না সত্যিই জানি না, কিন্তু আমরা দেখতে পাবেন.
ক্ষমতা ভালো সৌন্দর্য ডিফল্ট, 0 দ্বারা করা হয়,; পুরোপুরি নিশ্চিত যেখানে এই যাচ্ছে না.
. কি হবে এখনও জন্য ব্যবহার করা যাচ্ছে না
কিন্তু এখন তাই লাইন 243 সালে পেয়ে একটু আরো আকর্ষণীয়, এর,
আমরা কোন int গ, এই একটি মূঢ় বিবরণের সাজানোর ঘোষণা.
একটি গৃহস্থালি হয় 8 বিট, এবং 8 বিট কত বিভিন্ন মান সংরক্ষণ করতে পারেন?
256. সমস্যা হল, যদি আপনি বিভিন্ন 256 ASCII অক্ষর করাতে চাই,
যা আছে, যদি আপনি ফিরে মনে করি, এবং এই কিছু মুখস্থ করা নয়.
কিন্তু আপনি যদি যে বড় হওয়া ASCII চার্ট ফিরে মনে করি আমরা ছিল সপ্তাহ আগে,
ছিল যে ক্ষেত্রে, 128 বা 256 ASCII অক্ষর আছে,.
আমরা সব 0 এর ধরনে এবং 1 পর্যন্ত ব্যবহৃত.
এটা একটা সমস্যা যদি আপনি কোনো ত্রুটি সনাক্ত সক্ষম হতে চান.
কারণ যদি আপনি ইতিমধ্যেই আপনার অক্ষরের জন্য করছি 256 মান ব্যবহার করে,
আপনি কি সত্যিই এগিয়ে পরিকল্পনা করছি না, কারণ এখন বলছে আপনি কি কোন উপায় আছে,
"এটি একটি legit অক্ষর না; এটি কিছু ভ্রান্ত বার্তা."
তাই দুনিয়া আছে, তারা পরবর্তী বৃহত্তম মান ব্যবহার করতে হবে,
কোন int ভালো কিছু যাতে আপনি একটি বিটের ছবি নম্বর আছে,
যাতে 4 বিলিয়ন সম্ভাব্য মান জন্য 32, কেবল আপনি শেষ পর্যন্ত ব্যবহার করতে পারেন,
মূলত, তাদের 257, 1 যা কিছু ত্রুটি হিসাবে একটি বিশেষ অর্থ আছে.
>> সুতরাং আসুন কিভাবে এই কাজ করে দেখুন. লাইন 246 সালে, আমি যখন বড় এই লুপ আছে
যে fgetc হয় কলিং; চ অর্থ ফাইল, getc, এবং তারপর stdin.
দেখা যাচ্ছে এটা বলছে আরও সুনির্দিষ্ট উপায় "ইনপুট কীবোর্ড থেকে পড়া."
স্ট্যান্ডার্ড ইনপুট মানে কীবোর্ড, স্ট্যান্ডার্ড আউপুট পর্দা মানে,
এবং মান ত্রুটি, যা আমরা pset 4 এ দেখতে পাবেন, পর্দা মানে,
একটি পর্দার বিশেষ অংশ কিন্তু যাতে তা মিশিয়ে ফেলেছিলেন না
সঙ্গে প্রকৃত আউটপুট যে আপনি মুদ্রণ উদ্দেশ্যে; কিন্তু যা ভবিষ্যতে আরও.
তাই ঠিক fgetc মানে কীবোর্ড থেকে একটি অক্ষর, এবং এটি পড়া যেখানে সঞ্চয়?
গ তা, সঞ্চয় এবং তারপর চেক, তাই আমি শুধু কিছু বুলিয়ান conjunctions এখানে ব্যবহার করে,
চেক যে এটা আছে, তাই হবে, ব্যবহারকারী এন্টার করেনি সমান \ হইনি.
আমরা যে বিন্দু, লুপ শেষে থামাতে চাই, এবং আমরা যাচাই করতে চান
জন্য বিশেষ ধ্রুবক, ফাইলের শেষে, যা আপনি যদি জানেন বা অনুমান - এটি কী জন্য দাঁড়াবেন?
ফাইলের শেষে. সুতরাং এই ধরনের অর্থহীন, কারণ আমি যদি কীবোর্ড এ টাইপ করছি,
আসলে কোন ফাইল এই কাজে জড়িত,
কিন্তু এই মাত্র জেনেরিক শব্দটি বোঝাতে ব্যবহার করা হয় বাছাই
যে অন্য কিছুই মানুষের আঙ্গুলের এর থেকে আসছে. ফাইলের শেষে. ফাইলের শেষে.
হিসাবে একটি সরাইয়া, যদি কখনও আপনার কীবোর্ড এ করেছি নিয়ন্ত্রণ ঘ আঘাত,
আপনি এখনো যে করা সম্ভব নয়; আপনি নিয়ন্ত্রণ গ আঘাত করেছেন.
কিন্তু নিয়ন্ত্রণ ঘ এই বিশেষ ধ্রুবক বলা ফাইলের শেষে পাঠায়.
>> তাই এখন আমরা কিছু ডাইনামিক মেমরি বরাদ্দকরণের আছে.
তাই আপনি যদি n + 1> ক্ষমতা এখন, আমি এন ব্যাখ্যা করব.
n ঠিক কত বাইট হয় বাফারে বর্তমানে,
স্ট্রিং যে বর্তমানে আপনার ব্যবহারকারী থেকে নির্মাণ করছেন আপ.
আপনি যদি আপনার বাফারে আরো অক্ষর তুলনায় আপনি বাফারে ক্ষমতা আছে,
intuitively, আমরা কি তাহলে যা করতে হবে আরো ক্ষমতা বরাদ্দ করা হয়.
আমি গাণিতিক কিছু সর পড়া এখানে উপর চলেছি
শুধুমাত্র এই ফাংশন এখানে এবং ফোকাস.
আপনি কি জানেন যে malloc হয়, অথবা অন্তত সাধারণভাবে পরিচিত.
একটি অনুমান কি realloc আছে নিন. [ছাত্র উত্তর, অপাচ্য]
>> হ্যাঁ. এবং এটি মেমরি যোগ বেশ এর না; এটি অনুসরণ হিসাবে মেমরি reallocates:
আপনি যদি এখনও সেখানে পংক্তির শেষে ঘরে আপনি যে মেমরি আরো দেত্তয়া
তুলনায় এটি মূলত আপনাকে দেয়, তাহলে আপনি যে অতিরিক্ত মেমরি পাবেন.
সুতরাং আপনি শুধুমাত্র স্ট্রিং অক্ষর ফিরে যাও যাও যাও ব্যাক ব্যাক ব্যাক স্থাপন করতে পারেন.
কিন্তু যদি এই ক্ষেত্রে না, কারণ আপনি ঢুকে অতি দীর্ঘ
এবং কিছু র্যান্ডম না plopped মেমরির মধ্যে আছে, কিন্তু অতিরিক্ত আছে
এখানে নিচে মেমরি, যে ঠিক. Realloc আপনার জন্য সব ভারী উত্তোলন করতে হবে,
পংক্তি আপনি এইভাবে এখান থেকে দূরে সরানো পড়েছি,
ডাউন করা আছে, এবং তারপর আপনি যে সময়ে আরো কিছু রানওয়ে দিতে.
তাই হাতের একটি তরঙ্গ সাথে, আমাকে বলে কি GetString করছে
এটি একটি ছোট বাফার, হয়তো 1 একক অক্ষর দিয়ে শুরু এর,
এবং ব্যবহারকারী 2 অক্ষর ধরনের যদি, GetString সমাপ্ত
realloc আহ্বান জানান এবং বলেন, 'বিস্ময়, 1 টি অক্ষর যথেষ্ট ছিল না.
সম্পর্কে 2 অক্ষর দিন. ' তারপর যদি আপনি লুপের পক্ষে যুক্তি দিয়ে পড়া,
এটা বলে, 'বিস্ময় ব্যবহারকারী 3 টি অক্ষর টাইপ করা, যাচ্ছে.
সম্পর্কে এখন না কিন্তু 2 4 অক্ষর দিন, তারপরে সম্পর্কে 8 দিন, তারপর সম্পর্কে 16 এবং 32 দিন. '
যে আমি প্রতিটি সময় দ্বিত্ব ক্ষমতা করছি
এর মানে হল যে বাফার যাও ধীরে ধীরে হত্তয়া যাচ্ছে না.
এটি সুপার ফাস্ট হত্তয়া যাচ্ছে, এবং এর যে কি সুবিধা হতে পারে?
আমি এটা কেন বাফারের মাপ দ্বিত্ব, যদিও ব্যবহারকারী
1 কীবোর্ড থেকে অতিরিক্ত অক্ষর শুধু প্রয়োজন হতে পারে?
[ছাত্র উত্তর, অপাচ্য]. >> কি যে?
ঠিক. আপনি এটি হিসাবে প্রায়ই হত্তয়া না.
এবং এই একটি মাত্র ধরনের - you're আপনার কয়টা বেট এখানে hedging.
ধারণা করা হচ্ছে যে আপনি অনেক realloc কল করতে না চান, কারণ এটা ধীর হতে থাকে.
কোন সময় মেমরির জন্য অপারেটিং সিস্টেম জিজ্ঞাসা, যত তাড়াতাড়ি আপনি দেখতে পাবেন
ভবিষ্যতে সমস্যা সেটে, এটা কিছু সময় লাগতে থাকে.
সময় যে পরিমাণ হ্রাস, এমনকি আপনি যদি কিছু জায়গা নষ্ট করছি, তাই একটি ভাল জিনিস হতে থাকে.
>> কিন্তু যদি GetString চূড়ান্ত অংশ মাধ্যমে এখানে আমরা পড়েছি,
এবং আবার, প্রতি একক লাইন এখানে প্রতীতি হয় আজ এত গুরুত্বপূর্ণ না.
কিন্তু শেষ পর্যন্ত আবার কল malloc বিজ্ঞপ্তি, এবং এটি বরাদ্দ
অনেক ঠিক বাইট হিসাবে হিসাবে এটি স্ট্রিং জন্য প্রয়োজন
এবং তারপর কলিং বিনামূল্যে দ্বারা দূরে ছোঁড়া, বেজায় বড় বাফার,
যদি সত্যিই এটা অনেকবার দ্বিগুন বেশী.
সংক্ষেপে বলতে গেলে, যে কিভাবে GetString হয়েছে এই সব সময় কাজ করে.
সমস্ত এটি আছে একটি সময়ে একটি অক্ষর পড়তে আবার এবং আবার এবং আবার
এবং প্রত্যেক সময় এটা কিছু অতিরিক্ত মেমরি প্রয়োজন, তা realloc জন্য কল করে অপারেটিং সিস্টেম জিজ্ঞেস.
কোন প্রশ্ন? ঠিক আছে.
>> একটি আক্রমণ. এখন যে আমরা বুঝতে পয়েন্টার, অথবা কমপক্ষে
পয়েন্টার সাথে ক্রমবর্ধমান হারে পরিচিত,
এর বিবেচনা করা যাক কিভাবে সারা বিশ্ব জুড়ে ভেঙ্গে আরম্ভ
যদি আপনি বেশ adversarial ব্যবহারকারীদের বিরুদ্ধে আত্মরক্ষা না না,
যারা আপনার সিস্টেমের মধ্যে হ্যাক করার চেষ্টা করছেন.
মানুষ যারা কিছু রেজিস্ট্রেশন কোড circumventing দ্বারা আপনার সফ্টওয়্যার চুরি করার চেষ্টা করছেন
যে তারা অন্যভাবে ইন টাইপ থাকতে পারে
এই যেমন কটাক্ষপাত এখানে নিয়ে, যা শুধু সি কোড
যে একটি নীচে মূল ফাংশন রয়েছে, যে একটা ফাংশন কল foo বিন্যাস,
এবং এটি কি foo বিন্যাস হয় ক্ষণস্থায়ী? [ছাত্র] একটি যুক্তি.
>> একা যুক্তি. সুতরাং argv [1], যা প্রথম শব্দ ব্যবহারকারী টাইপ অর্থ
a.out বা যাই হোক না কেন পরে কমান্ড লাইনে প্রোগ্রাম বলা হয়.
উপরের foo বিন্যাস, তাই, নেয় একটি গৃহস্থালি * মধ্যে, কিন্তু গৃহস্থালি * ঠিক কি?
স্ট্রিং. এখানে এখন পর্যন্ত কিছুই নতুন, এবং স্ট্রিং ইচ্ছামত হয় বার বলা হচ্ছে.
এখানে এই লাইন ইন, গৃহস্থালির কাজ গ [12] আধা - প্রযুক্তিগত ইংরেজি সাজানোর মধ্যে, কি, এই লাইন করছে?
অ্যারে -? অক্ষর. সম্পর্কে 12 অক্ষরের একটি অ্যারের দিন.
সুতরাং আমরা এই একটি বাফার কল পারে. এটা টেকনিক্যালি এর নামক গ, কিন্তু প্রোগ্রামিং মধ্যে একটি বাফার
শুধু স্থান একটি গুচ্ছ যে আপনি কিছু উপাদান ইন লাগাতে পারেন অর্থ
>> তারপর সর্বশেষে memcpy,, আমরা পূর্বে ব্যবহৃত না করেছি.
কিন্তু সম্ভবত আপনি অনুমান করতে পারেন এটি কী জন্য প্রয়োজন. এটি মেমরি কপি.
কি করব? ওয়েল, দৃশ্যতঃ এটা বার কপি করা, গ মধ্যে নিজের ইনপুট,,
কিন্তু কেবল বার দৈর্ঘ্য.
কিন্তু এখানে একটা বাগ আছে.
ঠিক আছে, তাই টেকনিক্যালি আমরা সত্যিই strlen (বার) কি এক্স sizeof (গৃহস্থালির কাজ করা), যে সঠিক হবে.
কিন্তু এখানে সবচেয়ে খারাপ ক্ষেত্রে, এর যে that's অনুমান করি - তাই, ঠিক আছে.
তারপর 2 বাগ আছে. সুতরাং sizeof (গৃহস্থালির কাজ), সমস্ত অধিকার, আসুন এই সামান্য চওড়া করা.
সুতরাং এখন এর এখনও আছে একটি বাগ সংশোধন করা, যা হয় কি?
[ছাত্র উত্তর, অপাচ্য] কি জন্য >> চেক? ঠিক আছে, তাই আমরা চেক করা উচিত
জন্য NULL, কারণ খারাপ জিনিষ যখন আপনার পয়েন্টার হয় NULL ঘটতে,
কারণ আপনি আপ যাচ্ছে সেখানে শেষ হয়ে যাবে, এবং আপনি কি কখনও যাচ্ছে উচিত করা হবে হইনি যাও Null হতে পারে
দ্বারা * অপারেটর সঙ্গে এটি dereferencing.
তাই করা ভালো, এবং কি কি আমরা করছে? কথাটি এখানে আছে একটি ত্রুটি খুব.
[ছাত্র উত্তর, অপাচ্য]
>> তাই আপনি যদি argc ≥ 2 চেক?
ঠিক আছে, তাই এখানে আছে এই প্রোগ্রামে 3 বাগ.
আমরা যদি ব্যবহারকারী আসলে 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]. সুতরাং আমরা মেমরি 12 স্কোয়ার দেখতে পাবেন,
বরাদ্দ করা একটি পরিবর্তনশীল নামক গ যাও.
এবং নিশ্চয় আমরা পর্দায় যে নেই.
খুব উপরে আছে গ [0], এবং তারপর এই চিত্রটি লেখক
বার স্কোয়ার সব অঙ্কন কিন্তু না বিরক্ত হয় প্রকৃতপক্ষে সেখানে সেখানে 12
কারণ যদি আপনি নীচের অংশে ডানদিকে তাকান, গ [11], যদি 0 থেকে গণনা করা হয়, যেমন 12 বাইট.
কিন্তু আছে এখানে এর সমস্যা: ইন যা দিকবিন্যাস গ করা হয় ক্রমবর্ধমান?
শীর্ষ ডাউন সারাংশ সাজান, ডান? যদি এটি শীর্ষে আরম্ভ করা হয় এবং প্রসারণের সাথে তাল মিলিয়ে নীচের অংশে যাও,
কিন্তু ভালো আমরা নিজেদেরকে অনেক বাকি রানওয়ে এখানে সব না তাকান.
আমরা ধরনের করেছি একটি কোণার মধ্যে নিজেদেরকে রঙিন মূর্তিদ্বারা পরিশোভিত,
এবং যে গ [11] দণ্ড, যা স্ট্যাকের ফ্রেম পয়েন্টার বিরুদ্ধে হয় ডান আপ বিরুদ্ধে হয় ডান আপ,
যা ফিরতি ঠিকানা বিরুদ্ধে হয় ডান আপ; কোন আরো রুম এর সেখানে.
তাই এর নিহিতার্থ তারপর, যদি আপনি স্ক্রু আপ,
আপনি চেষ্টা করুন এবং একটি 12-বাইট বাফারের মধ্যে 20 বাইট পড়া?
যেখানে যারা 8 অতিরিক্ত মাপ, বাইট হিসাবে করা হয় যাও হত্তয়া যাচ্ছে?
অন্য সব কিছুর ভিতর, যা কিছু হয় সুপার গুরুত্বপূর্ণ.
এবং সবচেয়ে গুরুত্বপূর্ণ বিষয় সম্ভাব্য,, একটি লাল বক্স আছে, ফিরতি ঠিকানা.
কারণ আপনি যে অনুমান করা হয় দুর্ঘটনাবশতঃ বা adversarially
যারা 4 বাইট, যে পয়েন্টার ঠিকানা মুছে ফেলা,
? শুধু সঙ্গে আবর্জনা, কিন্তু সঙ্গে একটি সংখ্যা যা মেমরির মধ্যে একটি প্রকৃত ঠিকানা প্রতিনিধিত্ব ঘটবে না
Implicaiton কি, যুক্তি?
[ছাত্র উত্তর, অপাচ্য] >> যথাযথভাবে. যখন foo এর প্রত্যাবর্তন
কোঁকড়া বক্রবন্ধনী যে এবং হিট, প্রোগ্রাম যাও যাও প্রধান যাও প্রত্যাবর্তন হইনি এগিয়ে যাওয়া যাচ্ছে করা হয়,
এটি যে লাল বাক্সে যাই হোক ঠিকানা হল ফিরে যাচ্ছে.
>> এখন, এ circumventing সফ্টওয়্যার নিবন্ধনের ক্ষেত্রে,
ঠিকানা যে এর ফিরে হচ্ছে কি হয় ফাংশন হয়
যে সাধারনতঃ পরে আপনি সফ্টওয়্যার জন্য অর্থ প্রদান করা করেছি নামক এবং আপনার নিবন্ধীকরণ কোড দ্বারা ইনপুট করা পরার?
আপনি ঘোঁজ - ঘাঁজ কম্পিউটার সারাংশ এখানে যাচ্ছে হইনি মধ্যে, সাজাতে কিন্তু আছে পরিবর্তে, যাচ্ছে এখানে আপ করতে পারে নি.
বা, যদি আপনি কি সত্যিই IM এর প্রশংসক নন সেয়ান, একটি দুশ্মন প্রকৃতপক্ষে কীবোর্ড সময়ে মধ্যে টাইপ করতে পারেন,
উদাহরণস্বরূপ, একটি প্রকৃত শব্দ না, না 20 টি অক্ষর, কিন্তু অনুমান সে
কিছু অক্ষর আছে যা কোড ধরনের প্রতিনিধিত্ব করে?
এবং তা সি কোড করা যাচ্ছে না, এটা অক্ষর ব্যবহার করা যাচ্ছে
যে মেশিন কোড বাইনারি, 0 এবং 1 এর এর প্রতিনিধিত্ব করেন.
কিন্তু আছে ঠাউর তারা IM এর প্রশংসক নন সেয়ান যথেষ্ট যাও যে, GetString প্রম্পট মধ্যে যে কোন ভাবেই হউক যাও করে আটকে দিন do
কিছু যে মূলত হয় কোড কম্পাইল,
এবং শেষ 4 মাপ, বাইট হিসাবে যে ফিরতি ঠিকানা, মুছে ফেলা এবং কি ঠিকানা যে ইনপুট আছে do?
এটা এই লাল আয়তক্ষেত্র বাফার সারাংশ প্রথম বাইটটি সারাংশ ঠিকানা মধ্যে সঞ্চয় করে.
সুতরাং আপনি যাও সত্যিই চতুর হত্তয়া আছে, এবং এই হয় ট্রায়াল এবং ত্রুটি সারাংশ একটি অনেক
জন্য আছে খারাপ লেগেছে, কিন্তু আপনি যদি আউট কিভাবে বড় এই বাফার হয় জিনিসটা করতে পারেন,
যেমন যে শেষ ইনপুট মধ্যে কয়েক বাইট যে আপনি প্রোগ্রাম প্রদান
যাও সমতুল্য আপনার বাফার শুরুর ঠিকানা হতে পারে এরকম,
আপনি এটা করতে পারেন. যদি আমরা বলতে সাধারনতঃ,, হ্যালো, এবং \ 0, যে এর কি বাফার মধ্যে সমাপ্ত আপ.
কিন্তু আছে যদি আমরা IM এর প্রশংসক নন আরো সেয়ান, এবং আমরা কি আমরা জেনেরিক আক্রমনের কোড ফোন করবো সঙ্গে যে বাফার ভরাট,
, A,, A,, A, একটি: আক্রমণ, আক্রমনের, আক্রমনের, আক্রমনের, যেখানে এই মাত্র এমন কিছু বিষয় যা কিছু খারাপ আছে.
ভাল, কি যদি আপনি সত্যিই চতুর হন, আপনি এই কাজ করতে পারে:
লাল এখানে বাক্স ইন হয় সংখ্যার একটি ক্রম: 80,, CO, 35, 08.
উল্লেখ্য যে নম্বর যে এখানে আপ সাথে মেলে.
এটা বিপরীত ক্রমে আছে, কিন্তু যে অন্য কিছু সময় আরও.
উল্লেখ্য, এই ফিরতি ঠিকানা করেনি ইচ্ছাকৃতভাবে করা হয়েছে রদবদল
যাও ঠিকানা এখানে সমান, প্রধান ঠিকানা না.
তাই আপনি যদি খারাপ লোক হয় সুপার স্মার্ট, তিনি যে আক্রমণ কোড অন্তর্ভুক্ত করতে হবে
কিছু, ভালো 'ব্যবহারকারী এর ফাইলগুলি সারাংশ সমস্ত. মুছে দিন'
বা 'পাসওয়ার্ডগুলি অনুলিপি,' বা 'একটি ব্যবহারকারীর অ্যাকাউন্টের সাথে যে আমি লগ ইন করতে পারবেন.'
এ সব কিছু; এবং এই উভয় বিপদ এবং সি শক্তি
কারণ আপনি পয়েন্টার মাধ্যমে মেমরি এক্সেস আছে
এবং সেইজন্য আপনি কিছু আপনি একটি কম্পিউটার এর মেমরিতে চান লিখতে পারেন.
আপনি একটি কম্পিউটার কিছু সহজভাবে চান দ্বারা আপনি কি করতে পারেন
কখনও এটা নিজস্ব মেমরি স্পেস মধ্যে প্রায় তিড়িং লাফ.
এবং তাই, এই দিন, তাই অনেক প্রোগ্রাম এবং অনেক ওয়েবসাইটে যে বোঝাপড়া হয়
এই সুবিধার সুযোগ গ্রহণ মানুষের ফুটান.
এবং এই একটি অতি - পরিশীলিত আক্রমণের মতো মনে হতে পারে,
কিন্তু এটা সবসময় যে ভাবে শুরু হয় না.
>> বাস্তবতা হল যে কি খারাপ মানুষ সাধারণত করতে হবে,
এটি একটি কমান্ড লাইনে একটি প্রোগ্রাম অথবা একটি GUI লগ প্রোগ্রাম বা ওয়েবসাইট,
হয় শুধু আপনি ছাইপাঁশ প্রদান শুরু.
আপনি একটি অনুসন্ধান ক্ষেত্র এবং আঘাত প্রবেশ বড় শব্দ টাইপ করুন,
এবং আপনি যদি ওয়েবসাইট ক্র্যাশ দেখতে অপেক্ষা করুন.
অথবা আপনি যদি কিছু প্রোগ্রাম ত্রুটির বার্তা টেপা দেখতে অপেক্ষা করুন.
কারণ যদি আপনি পেতে ভাগ্যবান, হিসাবে খারাপ লোক,
এবং আপনি কিছু ছবি ইনপুট যে ক্র্যাশ প্রোগ্রাম প্রদান,
মানে প্রোগ্রামার আপনার খারাপ আচরণ বার কহা না
যার মানে যথেষ্ট প্রচেষ্টার সঙ্গে আপনি সম্ভবত পারেন,,
যথেষ্ট শুদ্ধাশুদ্ধি, জিনিসটা কিভাবে একটি আরো সঠিক আক্রমণ মজুরি.
তাই যতটা নিরাপত্তা একটি অংশ এই আক্রমণ এড়ানো হয় ঠিক না পুরাপুরি, কিন্তু তাদের সনাক্ত
এবং প্রকৃতপক্ষে লগের এ খুঁজছেন এবং এইজন্য কি ছবি ইনপুট আপনার ওয়েবসাইটে টাইপ মানুষ আছে.
কি খঁোজা আপনার ওয়েবসাইটে আছে মানুষের উদ্বেল বাফার আশা টাইপ?
এবং এই সব কি একটি অ্যারের সহজ বুনিয়াদি যাও boils ডাউন,
এবং এটি কি এবং বরাদ্দ মেমরির ব্যবহার মানে?
এবং এর সাথে সম্পর্কিত যে খুব,, এই.
>> তাই আসুন শুধু ভিতরে একটি হার্ড ড্রাইভের কটাক্ষে দেখা এখনো আবার.
তাহলে আপনি প্রত্যাহার থেকে একটি বা দুটি সপ্তাহ আগে যখন আপনি ফাইল টেনে
আপনার রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন বা ট্র্যাশ করতে পারেন, কি হয়?
[ছাত্র] কিছুই নেই. >> হ্যাঁ, একেবারে কিছুই না. অবশেষে আপনি যদি রান কম
ডিস্কের স্থান উপর, উইন্ডোজ বা ম্যাক অপারেটিং সিস্টেম আপনার জন্য ফাইল মুছে ফেলা হবে.
তবে আপনি যদি সেখানে কিছু টেনে আনুন, তারপর সব সময়ে নিরাপদ নয়.
আপনার সমস্ত roomate, বন্ধু বা পরিবারের সদস্য না হয় আছে ডবল ক্লিক করুন এবং voila.
সব ক্রটিযুক্ত ফাইল মুছতে চেষ্টা আছে.
সুতরাং আমাদের অধিকাংশ অন্তত জানেন যে আপনি ডান বা ক্লিক ক্লিক নিয়ন্ত্রণ আছে
এবং ট্র্যাশ খালি, অথবা যে ভালো কিছু.
কিন্তু তারপর, যে বেশ কৌতুক না.
কারণ কি যখন আপনি আপনার হার্ড ড্রাইভে একটি ফাইল আছে
নথিটি বা কিছু কিছু শব্দ যে কোন JPEG প্রতিনিধিত্ব করে?
এবং এই আপনার হার্ড ড্রাইভের প্রতিনিধিত্ব করে, এবং এর যাক বলতে এখানে এই কাঠের ছিলকা যে ফাইলটি প্রতিনিধিত্ব করে,
এবং এটি একটি 0 এবং 1 এর এর আভা গঠিত হয়.
যখন আপনি trashcan বা রাসায়নিক পদ্ধতিতে ব্যবহার করা জিনিসকে আবার ব্যবহারের উপযোগী করে তোলা বিন শুধুমাত্র যে ফাইলটি টানুন না কি হয়,
কিন্তু এটা খালি?
কিছুই সাজান. এটা এখন এর একেবারে কিছুই না.
এখন এটি শুধু কিছুই, কারণ সামান্য কিছু এই টেবিল আকারে ঘটবে.
তাই ডাটাবেস অথবা টেবিল কিছু একটা কম্পিউটার এর ভিতর ধরনের মেমরি আছে
যে মূলত ফাইলের নামের জন্য 1 টি কলাম আছে,
এবং ফাইল এর অবস্থান, যেখানে এই অবস্থান 123, শুধু একটা র্যান্ডম সংখ্যা হতে পারে জন্য 1 টি কলাম.
সুতরাং আমরা x.jpg মত, এবং অবস্থান 123 থাকতে পারে.
এবং তারপরে কি ঘটবে, যখন আপনি আপনার ট্র্যাশ খালি করতে?
যে দূরে চলে যায়. কিন্তু কি জন্য দূরে যেতে না হয় এর 0 এবং 1 এর.
>> তাই, তাহলে এর, সংযোগ যাও 4 pset?
ওয়েল, সঙ্গে pset 4, শুধুমাত্র কারণ ঘটনাক্রমে আমরা মুছে ফেলা করেছি
কম্প্যাক্ট ফ্ল্যাশ কার্ড যে এই ছবিগুলোর সব ছিল,
অথবা শুধু কারণ দুর্ভাগ্য দ্বারা এটি দূষিত,
কিন্তু এর যে 0 এবং 1 এর এখনও সেখানে না না মানে.
হয়তো এদের মধ্যে কয়েকটি কারণ কিছু বেশী দূষিত হারিয়ে যায়
ইন্দ্রিয় যে কিছু 0 এর ওঠে 1 এর এবং 1 এর মধ্যে ওঠে 0 এর.
খারাপ জিনিসের কারণে বগী সফ্টওয়্যার বা ত্রুটিপূর্ণ হার্ডওয়্যার ঘটতে পারে.
কিন্তু যারা বিট অনেক হয়ত, তাদের মধ্যে এমন কি 100% এখনও আছে,
এটি শুধু যে কম্পিউটার বা ক্যামেরা যেখানে কোন JPEG 1 শুরু না জানা
এবং যেখানে কোন JPEG 2 শুরু, কিন্তু যদি আপনি, প্রোগ্রামার,
কাণ্ডজ্ঞান একটি বিট, যেখানে যারা JPEGs হয় বা তারা কি অনুরূপ সঙ্গে, জানা,
আপনি এর 0 এবং 1 এর বিশ্লেষণ এবং, বলে 'খুশি করতে পারেন. কোন JPEG. কোন JPEG উত্তেজনা,. '
আপনি মূলত জন্য শুধু একটি সঙ্গে একটি প্রোগ্রাম বা লিখতে পারে যখন লুপ
যে যারা প্রতিটি ফাইলের এবং প্রতি এক recovers.
আমি তখন পাঠ, আরম্ভ "নিরাপদভাবে" আপনার ফাইল erasing হয়
যদি আপনি এই পুরাপুরি এড়াতে চাই. হ্যাঁ?
[ছাত্র প্রশ্ন, অপাচ্য]
>> আরো মেমরি তুলনায় আপনি আগে কি আছে -
ওহ! ভাল প্রশ্ন. তাই কেন, তারপর, পরে ট্র্যাশ খালি রাখুন,
কিন্তু আপনার কম্পিউটার আপনাকে বলে যে আপনি আরো মুক্ত স্থান তুলনায় আপনি আগে কি আছে?
সংক্ষেপে ইন, কারণ এটা মিথ্যা না. আরো টেকনিক্যালি, আপনি আরও জায়গা আছে.
কারণ এখন আপনি বলেন, আপনি অন্যান্য স্টাফ করা যেখানে একবার যে ফাইল করতে পারেন,
কিন্তু যে বিট এ চলে না মানে,
এবং যে সকল 0 বিট এর পরিবর্তিত হয় উদাহরণস্বরূপ হচ্ছে, আপনার সুরক্ষার জন্য, না মানে.
বিপরীতে, যদি আপনি "নিরাপদভাবে" ফাইল মুছে ফেলুন, অথবা শারীরিক ডিভাইস ধ্বংস,
যে সত্যিই একমাত্র উপায়, কখনও কখনও যে আশেপাশে.
কারণ আমরা যে আধা - ভয়ের নোট করবেন ছেড়ে না, এবং আমরা সোমবার আপনি দেখতে পাবেন.
CS50.TV