ডেভিড জে MALAN: ঠিক আছে. কখনও প্রথম থেকে এ স্বাগতম একটি ব্যঙ্গ জন্য CS50 পোষ্ট মর্টেম বা সুরতহালের. আমরা আমরা উদ্বোধন চাই এই ঐতিহ্য এই বছর. এবং এই একটি সুযোগ হবে ভিতর দিয়ে হেটে যেতে ব্যঙ্গ সমাধান. এবং আমরা গতি বাড়াতে বা ভিত্তি মন্দীভূত করব এখানে যাদের স্বার্থ নেভিগেশন. কারণ আপনি তাই আপনি সম্ভবত এখানে এসেছি , আপনি হতে পারে কিভাবে আগ্রহী বা কিছু উত্তর দেওয়া উচিত এই সমস্যার. তাই কেন আমরা দেখব না প্রথম এই বিভাগে এ? তাই স্ট্রিং পেয়ে. এর মানে আপনি তিনটি ভিন্ন সংস্করণের দিয়েছেন ছিল একটি প্রোগ্রাম, শেষ পর্যন্ত, একজন ব্যবহারকারী থেকে একটি পংক্তি পেতে বোঝানো. ছিল এটা যে কি থাকুক বা না নির্ধারণ আপনি বামে. এবং আমরা প্রশ্ন 0 সালে জিজ্ঞাসা সংস্করণ 1 যে অনুমান কম্পাইল এবং মৃত্যুদন্ড কার্যকর. কেন প্রোগ্রাম segfault পারে? এক নজরে, কোন পরামর্শ হিসাবে কেন? হ্যাঁ. AUDIENCE: তাই আমি এই এইজন্য মনে আমি একটি পূর্ববর্তী উদাহরণ গৃহস্থালি * গুলি এবং গুলি স্ক্যান এইজন্য এবং এটি একটি পয়েন্টার, কিভাবে কারণ দেখছি আপনি স্ক্যান করা কি এটি প্রভাব ফেলেছে? এটি গুলি বা s এর ঠিকানা কি? ডেভিড জে MALAN: ঠিক আছে. গুড. সুতরাং পরিশেষে, যে কোন সমস্যার উৎস সম্ভবতঃ কমাতে হবে যে পরিবর্তনশীল গুলি করতে. এবং এটা সত্যিই একটি পরিবর্তনশীল এর. যে ভেরিয়েবলের ডাটা টাইপ হয় গৃহস্থালি *, যা তা করে যাচ্ছে মানে একটি চরিত্রের ঠিকানা থাকে. এবং তাহাতে অন্তর্দৃষ্টি মিথ্যা. এটা এর ঠিকানা ধারণ যাচ্ছে আরো সাধারণভাবে একটি অক্ষর বা, প্রথম অক্ষরের ঠিকানা অক্ষরের একটি সম্পূর্ণ ব্লক. কিন্তু ধরা হয় যে স্ক্যান গুলি, উদ্দেশ্য মধ্যে জীবন, একটি ঠিকানা দেওয়া এবং দেওয়া হয় একটি বিন্যাসে কোড,% s-এর মত, পড়া এর খণ্ড মধ্যে একটি স্ট্রিং যে ঠিকানায় মেমরি. কিন্তু কোন সমান চিহ্ন পূর্বে আছে, কারণ প্রথম প্রথম যে সেমিকোলন কোড এর লাইন, আমরা আসলে তা চান না, কারণ সঙ্গে কোনো মেমরি বরাদ্দ malloc, তা না, কারণ আসলে কিছু আকার একটি অ্যারের, সব বরাদ্দ আপনি করছেন ব্যবহারকারীর পড়া হয় কিছু সম্পূর্ণ মধ্যে কীবোর্ড ইনপুট আবর্জনা মান, যা ডিফল্ট অবস্থায় গুলি করা হয়. তাই মতভেদ আপনি segfault চলুন হয় যে ঠিকানা ঠিক তাই ঘটবে না আপনি পারেন যে একটি মান হতে, আসলে, লিখুন. বরাদ্দ না তাই খারাপ সেখানে আপনার মেমরি. তাই প্রশ্ন 1, আমরা জিজ্ঞেস করলাম, সংস্করণ 2 যে অনুমান কম্পাইল এবং মৃত্যুদন্ড কার্যকর. কেন এই প্রোগ্রাম segfault পারে? সুতরাং এই এক কম বগী হয়. এবং শুধুমাত্র এক যে সত্যিই আছে সুস্পষ্ট ভাবে যেখানে আপনি করতে পারেন এখানে একটি segfault ট্রিগার. এবং এই বিষয়ভিত্তিক হয়. আমরা মেমরি গ ব্যবহার করছেন কোন সময়, কি আপনি একটি segfault প্রবৃত্ত করতে পারে সংস্করণ 2 দিয়ে? AUDIENCE: আপনি যে ইনপুট ব্যবহার 49 টিরও বেশি যে এর একটি স্ট্রিং অক্ষর. ডেভিড জে MALAN: যথাযথভাবে. আপনি কিছু নির্দিষ্ট দৈর্ঘ্য দেখুন কোন সময় এটি একটি অ্যারে আসে, আপনার রাডার এই হতে পারে যে বন্ধ যান উচিত সমস্যাযুক্ত আপনি চেক করছি না একটি অ্যারের সীমানা. এবং যে এখানে সমস্যা. আমরা এখনও scanf ব্যবহার করছেন. আমরা এখনও চেষ্টা করুন, যার মানে% গুলি ব্যবহার করছেন ব্যবহারকারী থেকে একটি পংক্তি পড়তে. অর্থাৎ, যা, গুলি মধ্যে পড়তে হতে যাচ্ছে এই মুহুর্তে, কার্যকরীভাবে হয় মেমরির একটি খণ্ড ঠিকানা অথবা এটি সমতুল্য. এটি একটি অ্যারের নাম মেমরি অক্ষর. কিন্তু ঠিক, যে আপনি একটি পংক্তি পড়তে হলে যে 49 টি অক্ষর, 49 সময়ের চেয়ে বেশি আপনি ব্যাকস্ল্যাশ জন্য জায়গা প্রয়োজন কারণ 0, আপনি ওভারফ্লো চলুন যে বাফার. এবং যদি আপনি ভাগ্যবান এবং পেতে সক্ষম হতে পারে একটি 51 তম অক্ষর, 52nd, 53rd লিখতে. কিন্তু এক পর্যায়ে ওএস্ বলতে হবে, কোন. এই হ 'ল মেমরি নয় আপনি স্পর্শ করার অনুমতি দেওয়া করছি. এবং প্রোগ্রাম segfault যাচ্ছে. তাই সেখানে, হিউরিস্টিক কোনো হওয়া উচিত আপনি নির্দিষ্ট দৈর্ঘ্য পেয়েছেন সময়, আপনার আছে নিশ্চিত করুন যে আপনি দৈর্ঘ্য চেক করছি করা এটি আপনি চেষ্টা করছেন যা কিছু থাকে এর তা পড়তে. AUDIENCE: সুতরাং যে, আপনি পারে সমাধান আসলে চেক একটি বিবৃতি ছিল দৈর্ঘ্য বেশী বেশী বা কম? ডেভিড জে MALAN: অবশ্যই. আপনি শুধুমাত্র একটি শর্ত আছে বলেছেন, যে যদি - বরং বা আপনি অগত্যা জানি না অগ্রিম কতগুলি অক্ষর ব্যবহারকারী টাইপ করা যাচ্ছে, কারণ আপনি মুরগির এবং ডিম আছে. আপনি scanf দিয়ে এটি এ পড়েছি না হওয়া পর্যন্ত আপনি তা হল কতদিন চিন্তা করতে পারেন. কিন্তু এই মুহুর্তে, এটা খুব দেরি যদি আপনি ইতিমধ্যে এটি মধ্যে পড়েছি কারণ মেমরির কিছু ব্লক. একটি সরাইয়া, CS50 লাইব্রেরি এড়াতে হিসাবে তাই এই সমস্যা পুরাপুরি, রিকল fgetc ব্যবহার করে. এবং এটি একটি সময়ে একটি অক্ষর সার্চ টিপ-toeing, বুদ্ধিমান ধরে আপনাকে যে একটি চরিত্র যদি ওভারফ্লো করতে পারবেন না আপনি একটি সময়ে এক পড়তে. ছিটকিনি GetString রিকল সাথে হয় হয় আমরা ক্রমাগত পুনরায় আকার আছে মেমরি যে তাল, যা শুধু ব্যাথা হয়. এটা লাইনের অনেক যে কি অবস্থান. তাই অন্য পদ্ধতির করতে হবে আসলে একটি পিসতুত ভাই ব্যবহার করে, তাই scanf এর, কথা বলতে. এইসব অনেক ধরন আছে আসলে চেক ফাংশন যে দৈর্ঘ্য কত অক্ষর আপনি সর্বাধিক পঠিত পারে. এবং আপনি পড়তে না, উল্লেখ পারে আরো 50 টি অক্ষর. তাই অন্য যে পন্থা হতে কিন্তু হবে বৃহত্তর ইনপুট কম অমায়িক. সুতরাং যে সংস্করণ অনুমান, জিজ্ঞেস 2 প্রশ্ন 3 কম্পাইল এবং মৃত্যুদন্ড কার্যকর করা হয়. কেন যে প্রোগ্রাম segfault পারে? সুতরাং এই এক আসলে একই , উত্তর যদিও এটা একটু কল্পনাকারী দেখাচ্ছে. আমরা মত আর যা malloc, ব্যবহার করছেন আমরা নিজেদেরকে আরও বিকল্প প্রদান করছি. এবং তারপর আমরা যে freeing করছি শেষে মেমরি. এটা এখনও মেমরি মাত্র 50 বাইট এর. তাই আমরা এখনও পড়তে চেষ্টা করা হতে পারে 51, 52, 1,000 বাইট. এটা জন্য segfault যাচ্ছে ঠিক একই কারণে. কিন্তু অন্য কারণে খুব আছে. এছাড়া রিটার্ন malloc পারে আর কি মেমরির একটি খণ্ড ঠিকানা? এটি নাল ফিরে আসতে পারে. এবং আমরা জন্য চেক করছি না, কারণ যে, আমরা কিছু কাজ হতে পারে যে যা অন্য কারণে, জন্য মূঢ় আমরা scanf কহন হতে পারে, পড়া কীবোর্ড থেকে ব্যবহারকারীর ইনপুট 0 অবস্থান মধ্যে, ওরফে নাল. এবং যে খুব,, স্পষ্টভাবে করবে না একটি segfault ট্রিগার. তাই প্রশ্নোত্তর এর উদ্দেশ্যে, আমরা would একটি হিসাবে যারা যেকোন গ্রহণ করেছেন বৈধ কারণ. এক অভিন্ন. এক একটি সামান্য আরো nuanced হয়. সর্বশেষে, প্রোগ্রাম এর সম্মান সঙ্গে মেমরি ব্যবহার, কিভাবে সংস্করণ 2 করবেন এবং সংস্করণ 3 পৃথক? সুতরাং এর মূল্য কি জন্য, আমরা দেখেছি একটি সম্ভব এর আপাতদৃষ্টিতে অবিরাম সরবরাহ এই উত্তর. এবং মানুষ এর উত্তর মধ্যে, আমরা কি ছিল জন্য প্রত্যাশী, কিন্তু আমরা অন্যান্য গৃহীত জিনিস, কিছু উল্লেখ ছিল সংস্করণ 2 ব্যবহার করছে যে তথাকথিত স্ট্যাকের. সংস্করণ 3 গাদা ব্যবহার করছে. এবং কাজের, এই সত্যিই না একটি পার্থক্য সব যে অনেক না. দিন শেষে, আমরা এখনও করছি শুধু মেমরি 50 বাইট পেয়ে. কিন্তু যে সম্ভাব্য উত্তর এক আমরা এ খুঁজছেন ছিল. আপনি আপনার ক্যুইজ পেতে কিন্তু হিসাবে আপনি দেখতে পাবেন ফিরে টিএফএস থেকে, আমরা যে অন্যান্য আলোচনা গ্রহণ তাদের অসম মেমরি ব্যবহার হিসাবে ভাল. কিন্তু গাদা এবং গাদা হত সঙ্গে যেতে একটি সহজ উত্তর. কোন প্রশ্ন? আমি তোমাদের রব দিতে. Rob Bowden: তাই সমস্যা 4. এর মানে আপনি পূরণ করতে হয়েছিল যেখানে এক সব আউট বাইট সংখ্যা ব্যবহৃত এসব বিভিন্ন ধরনের. আমরা দেখতে তাই প্রথম জিনিস. একটি 32 বিট আর্কিটেকচার অনুমান, এই CS50 অ্যাপ্লায়েন্স মত. সম্পর্কে মৌলিক জিনিস তাই এক 32 বিট আর্কিটেকচার, আমাদেরকে বলে যে, ঠিক কিভাবে বড় একটি পয়েন্টার যাচ্ছে স্থাপত্য করা. তাই অবিলম্বে, আমরা জানি যে কোন পয়েন্টার টাইপ 32 বিট বা 4 বাইট হয়. তাই এই টেবিলের দিকে তাকিয়ে আছে, একটি নোড * একটি পয়েন্টার টাইপ. এটা 4 বাইট হতে যাচ্ছে. Struct নোড *, যে আক্ষরিক না নোড তারা অভিন্ন. এবং যাতে 4 বাইট হতে যাচ্ছে. স্ট্রিং, তাই এটি একটি মত দেখাচ্ছে না এখনো পয়েন্টার, কিন্তু typedef, একটি স্ট্রিং শুধুমাত্র একটি গৃহস্থালি *, যা একটি পয়েন্টার টাইপ. সুতরাং যে 4 বাইট হতে যাচ্ছে. সুতরাং এই তিনটি সব 4 বাইট. এখন, নোড এবং ছাত্র হয় কিছুটা জটিল. সুতরাং নোড এবং ছাত্র আমি, আমরা দেখতে একটি পূর্ণসংখ্যা এবং একটি পয়েন্টার হিসেবে নোড. আর ছাত্রী দুই পয়েন্টার হয় এটি ভেতরে. তাই অন্তত এখানে আমাদের মামলা, উপায় আমরা মাপ গণনা শেষ করে এই struct শুধু সবকিছু পর্যন্ত যোগ করা হয় যে struct ভিতরে. সুতরাং নোডের জন্য, আমরা একটি পূর্ণসংখ্যা আছে, যা 4 বাইট হয়. আমরা 4 বাইট, যা একটি পয়েন্টার, আছে. তাই এক নোড যাচ্ছে 8 বাইট লাগতে. এবং একইভাবে ছাত্র জন্য, আমরা একটি আছে 4 বাইট এবং অন্য যে পয়েন্টার 4 বাইট যে পয়েন্টার. সুতরাং যে শেষ হয়ে যাচ্ছে আপ 8 বাইট হচ্ছে. সুতরাং নোড এবং ছাত্র 8 বাইট. আর এই তিনটি সব 4 বাইট. যে প্রশ্ন? হ্যাঁ. AUDIENCE: এটি একটি 64 বিট ছিল স্থাপত্য, would যে তাদের সব দুবার? Rob Bowden: এটা না would তাদের সব দুবার. তাই 64 বিট আর্কিটেকচার, এটা আবার,, পরিবর্তন যে মৌলিক জিনিস যে একটি পয়েন্টার এখন 64 বিট. হ্যাঁ. সুতরাং একটি পয়েন্টার 8 বাইট হয়. সুতরাং এই 4 বাইট যে ছিল 8 বাইট হতে যাচ্ছে. দুই পয়েন্টার, যা ছিল একটি ছাত্র,, ওয়েল, এখন এটি যাচ্ছে 8 বাইট, 8 বাইট হতে. এটি 16 বাইট করা যাচ্ছে. কিন্তু একটি নোডের এখনও 4 বাইট হয়. তাই এই পয়েন্টার যাচ্ছে 8 বাইট হতে. এই 4 বাইট হয়. সুতরাং একটি নোডের শুধুমাত্র যাচ্ছে 12 বাইট হতে. এক যে অন্য কোন প্রশ্ন? সুতরাং পরের এক, এই হল HTTP-র অবস্থা কোড. এবং যদি আপনি পরিস্থিতির বর্ণনা করা হয়েছে যার অধীনে এই যথাসাধ্য আপনি ফিরে আসেন করা. আমি কিছু ছাত্র শুনেছেন যে এক সমস্যা আছে তারা করতে চেষ্টা করে ত্রুটি ক্লায়েন্ট এর প্রান্তে থাকা. আমরা অনুরোধ করতে চেষ্টা তাই যখন সার্ভারের সাথে, কিছু যায় আমাদের প্রান্তে ভুল. কিন্তু সাধারণত, এই কোড আছে সার্ভার দ্বারা ফেরত হচ্ছে. সুতরাং আমরা কি চিন্তা করতে চাই ভুল বা ডান সার্ভারে যে এই জিনিস ফিরে যাও জানাবে. সুতরাং কেন একটি সার্ভার আয় হতে পারে অবস্থা কোড 200? কোন চিন্তা? হ্যাঁ. তাই কিছু সম্পর্কে সফলভাবে অনুরোধের মাধ্যমে গিয়েছিলাম. এবং তারা ফিরে আসতে সক্ষম হন আপনার জন্য জিজ্ঞাসা যাই হোক না কেন. সুতরাং সবকিছু ছিল জরিমানা. 302 সম্পর্কে কি পাওয়া? হ্যাঁ. AUDIENCE: সার্ভার খুঁজছেন ছিল আপনার অনুরোধ করা কি জন্য. কিন্তু এটা খুঁজে পাইনি. সুতরাং একটি ত্রুটি আছে. Rob Bowden: তাই সার্ভার ছিল আপনি যেমনটি কি খুঁজছি. তাই শুধু এখানে খুঁজছি, 302 পাওয়া, এটা সেটা খুঁজে পেতে সক্ষম. AUDIENCE: আমি দুঃখিত. Found তারা সেটা খুঁজে কি যে মানে. দুঃখিত. Rob Bowden: তাই 302 পাওয়া. সার্ভার খুঁজে পেতে সক্ষম হয় আপনি চেয়েছিলেন. AUDIENCE: কিন্তু তা প্রদর্শন না? Rob Bowden: মধ্যে পার্থক্য এই 302 এবং 200 হল যে এটি আপনি যা চান তা জানেন. কিন্তু এটা ঠিক যেখানে হয় না আপনি জিজ্ঞাসা করতে চেয়েছিলেন. সুতরাং 302 সাধারণ পুনর্নির্দেশ হয়. তাই আপনি যদি একটি পাতা অনুরোধ. এটা ওহ, আমি চাই, জানে আপনি এই ফিরে যাওয়ার জন্য. কিন্তু এই একটি আলাদা URL-এ. তাই হেই, আপনি আসলে এই চাই. ডেভিড জে MALAN: এটা বলেন যে একটি টুকরা আমরা আপনাকে বলছি একটি পুনর্নির্দেশ দিয়েছেন হেডার ফাংশন ব্যবহৃত যে ফাংশন যে ঘুরে,, অবস্থান প্রিন্ট কোলন, এবং তারপর ইউআরএল যা আপনি ব্যবহারকারী প্রত্যাখ্যান করতে চান. আপনি 302 দেখতে পাইনি যদিও স্পষ্টভাবে আছে, যে কি পিএইচপি হল magically হেডার হিসেবে সন্নিবেশ করা হবে রব সেখানে বলেন ঠিক কি বলছে - খুঁজে পাওয়া যায়নি. কিন্তু এর পরিবর্তে যান এখানে. Rob Bowden: ঠিক আছে. সুতরাং 403 সম্পর্কে কি নিষিদ্ধ? AUDIENCE: আমি এটা মনে করি যে সার্ভার মূলত বলছে না যে ক্লায়েন্ট হোম পেজে ব্যবহার করতে সক্ষম নয়. Rob Bowden: তাই হ্যাঁ. ওয়েল, সাধারণত উত্তর আমরা আশা কিছু মত, ফাইল হয় উপযুক্তভাবে chmodded না. যে সম্ভবত অধীন কি পরিস্থিতিতে আপনি তাদের দেখেছি. কিন্তু একটি কারণ থাকে যে ক্লায়েন্ট এখানে দোষ হতে পারে. অন্য অবস্থা কোড আসলে আছে - 401. সুতরাং এই অনুরূপ. 401 অননুমোদিত হয়. আর 403 নিষিদ্ধ করা হয়. তাই অননুমোদিত আপনি একচেটিয়াভাবে আপনি লগইন নেই করছি পেতে কিন্তু লগিং অর্থ হতে পারে আপনি অনুমোদিত হয়. তবে আপনি যদি ইতিমধ্যে লগ ইন করুন এবং আপনি যদি এখনও তারপর, অনুমতি নেই তবে আপনাকে নিষিদ্ধ পেতে পারেন. সুতরাং আপনি লগ ইন করা হয় ও না থাকলে অনুমতি, নিষিদ্ধ হয় আপনি পেতে পারেন কিছু. ডেভিড জে MALAN: এবং প্রক্রিয়া দ্বারা এই সমস্যা সাধারণত যা সার্ভারে হল সমাধান কি কমান্ড মাধ্যমে? Chmod, এটা যদি সত্যিই,, একটি অনুমতি ফাইল বা ডিরেক্টরির নেভিগেশন ইস্যু. Rob Bowden: এর পরে 404 পাওয়া যায়নি. হ্যাঁ. তাই 302 থেকে ভিন্ন যেখানে এটি ঠিক ছিল না আপনি কিন্তু বলছি যেখানে এটা জানেন কি আপনি চান, এই, এটা ঠিক আছে আপনি যা চান তা কোন ধারণা. এবং যদি আপনি অনুরোধ করা হয় না বৈধ কিছু. 418 আমি তখন একটি চা তৈয়ারি করার পাত্র এবং 500 অভ্যন্তরীণ সার্ভার. সুতরাং কেন আপনি যে পেতে পারে? সুতরাং segfault - আমি আসলে শূন্য জানি না এই জন্য আদর্শ. কিন্তু আপনার পিএইচপি কোড কিছু ছিল এটা ভুল, তত্ত্ব, এটি পারা আসলে, segfault যে ক্ষেত্রে, এই 500 অভ্যন্তরীণ সার্ভার সমস্যা, কিছু আপনার সার্ভারের সাথে ভুল কনফিগারেশন. অথবা একটি বাক্য গঠন ত্রুটি আছে আপনার পিএইচপি কোডে. অথবা কিছু খারাপ হচ্ছে. ডেভিড জে MALAN: আমরা segfault দেখতে হয়নি কিছু লোককে এর উত্তরের মধ্যে. আর টেকনিক্যালি, এটা ঘটতে পারে. কিন্তু যে একটি পিএইচপি, প্রোগ্রাম হবে আসলে, অন্যান্য ব্যক্তিদের দ্বারা লিখিত segfaulted, যা শুধুমাত্র যদি সেইসব মানুষ মাতাল আপ এবং মধ্যে বগী কোড লেখেন তাদের দোভাষী would পিএইচপি নিজেই segfault. 500 একটি segfault ভালো হয় তাই, যদিও আত্মা, এটা প্রায় সর্বদাই একটি কনফিগারেশন ফাইল সমস্যা ফলাফল আপনার ওয়েব সার্ভারের সাথে অথবা, রব বলেন, আপনার মত একটি বাক্য গঠন ত্রুটি, উদ্ধৃতি বন্ধ না. অথবা আপনি কোথাও একটি সেমিকোলন হারিয়ে গেছে. AUDIENCE: তাই শাটল pset জন্য, আমি আমি তা যখন আমি ক্লিক একবার মনে ব্রাউজার, কিন্তু কিছুই, এসেছেন তারা সাদা পাতা বলা কি. কিন্তু এটা কারণ কোডের ছিল. আমি যে জাভাস্ক্রিপ্ট ছিল মনে, ডান? Rob Bowden: হ্যাঁ. AUDIENCE: চান যে ত্রুটি এখনও চিন্তা? Rob Bowden: সুতরাং আপনি অর্জিত হতো না এই ত্রুটির কারণ সবকিছু ওয়েব সার্ভার এর দৃষ্টিকোণ থেকে সম্পূর্ণ সূক্ষ্ম ছিল. কিন্তু আপনি index.html অনুরোধ. আপনি shuttle.js অনুরোধ এবং service.js. এবং এটা সফলভাবে ফিরে আসতে পারবেন আপনি সেগুলো সব করতে - 200. ঠিক আছে. এটা আপনার ব্রাউজারে চেষ্টা শুধুমাত্র যখন এর জাভাস্ক্রিপ্ট কোড ব্যাখ্যা যে এটি মত, অপেক্ষা করছে, এই না বৈধ জাভাস্ক্রিপ্ট ত্রুটি. অন্য কোন প্রশ্ন? ঠিক আছে. ডেভিড জে MALAN: তাই পরবর্তী আপ নম্বর 11 ছিল. আর 11 স্যাকারিয়েস্ট ছিল মানুষ অনেক জন্য. তাই সবচেয়ে গুরুত্বপূর্ণ বিষয় এখানে উল্লেখ্য এই সত্যিই,, সম্পর্কে যে ছিল একটি দোকর লিঙ্ক তালিকা. কিন্তু এই গত বছরের হিসাবে একই ছিল না দোকর লিঙ্ক তালিকা সমস্যা নেই, যা আপনি সতর্কীকরণ দিতে না তালিকা, আসলে, পাঁচমিশালী হতে পারে. তালিকা পাঁচমিশালী ছিল তাই সত্য এবং যে শব্দ ছিল যে বহন করা আছে অভিপ্রেত ছিল আন্ডারলাইন আসলে এই একটি সরলীকরণ যে অন্যথায় হত কি আরো একটি চ্যালেঞ্জিং সমস্যা এবং এক একটি আর. তাই এখানে একটি সাধারণ ভুল করা ছিল আপনার এক গত বছরের সমাধান পেজার এবং তারপর শুধু অন্ধভাবে যে কপি ডান যা উত্তর, হিসাবে নিচে একটি ভিন্ন প্রশ্নের উত্তর আত্মা একই. কিন্তু এখানে এর subtleties নিম্নরূপ ছিল. তাই এক, আমরা একটি নোডের ঘোষণা ও আছে এখানে স্বাভাবিক ভাবেই সংজ্ঞায়িত. তারপর আমরা তালিকা একটি বিশ্বব্যাপী হতে সংজ্ঞায়িত পয়েন্টার নাল সক্রিয়া. তারপর দৃশ্যত, দুটি ফাংশন আছে আমরা এখানে জন্য এগুলির নমুনা আছে, সন্নিবেশ এবং মুছে ফেলুন. এবং তারপর আমরা এখানে কিছু নমুনা কোড আছে এর insertions একটি গুচ্ছ করছেন. এবং তারপর আমরা সম্পন্ন করার অনুরোধ যেমন এ নীচের সন্নিবেশ বাস্তবায়ন এটা তালিকায় এন টিপে একটি উপায় যে ধ্রুব সময়, এছাড়াও আন্ডারলাইন, এমনকি ইতিমধ্যে উপস্থিত হলে. সুতরাং সন্নিবেশ করতে পারবে সৌন্দর্য ধ্রুবক সময়ের মধ্যে তা থেকেই বোঝা হয় আপনি সন্নিবেশ আছে নতুন নোড যেখানে? সামনে রূপান্তর. সুতরাং, সৌভাগ্যক্রমে ঘটিয়েছে কমপক্ষে প্রয়োজন ব্যবহৃত যে ক্ষেত্রে এক এটা ভালো কোড এমনকি আরো লাইন, করেনি গত বছর এবং এমনকি ক্লাসে যখন আমরা আর এই ধরনের মাধ্যমে সায়ীদ মানুষের সঙ্গে এবং কিছু সঙ্গে মৌখিক ছদ্ম কোড. তাই এখানে সমাধান মধ্যে, এর উপর লাফালাফি যাক যে শুধু একটি চাক্ষুষ আছে পর্দা. আমরা নিম্নলিখিত করছেন যে লক্ষ্য করুন. এবং এছাড়াও অন্যান্য সরলীকরণ লক্ষ্য ছিল যে এটি এমনকি যদি ইতিমধ্যে বর্তমান, তাই এই মানে এমনকি যদি সংখ্যা আপনি যা করতে পারেন, সেখানে ইতিমধ্যে শুধু অন্ধভাবে অন্য সন্নিবেশ এটি কপি. এবং যে খুব,, একটি হতে বোঝানো হয় সরলীকরণ, আপনি যাতে , আরো হাজার সত্যিই, কিছু মনোনিবেশ বুদ্ধিমত্তা আকর্ষণীয় অংশ এবং চেক করার কিছু অতিরিক্ত ত্রুটি ঠিক না সীমিত সময় দেওয়া. তাই এই নমুনা সমাধান, আমরা বরাদ্দ বাম দিকে একটি পয়েন্টার একটি নোডের এখানে দিকে. এখন,, যে পয়েন্টার উপলব্ধি রব বলেন, মাত্র 32 বিট. এবং এটা আসলে থাকে না আপনি যতক্ষণ না একটি ঠিকানা এটি ঠিকানা নির্ধারণ করুন. এবং আমরা ডান হাত যে কি malloc মাধ্যমে পাশ. একটি ভাল নাগরিক লেগেছে, আমরা তা পরীক্ষা malloc নয়, আসলে, নাল, যাতে আমরা ঘটনাক্রমে তৈরি করবেন না এখানে একটি segfault. এবং যে কোন সময় আপনি, জীবনে আপনি malloc ব্যবহার পাছে, নাল জন্য চেক করা উচিত আপনি একটি সূক্ষ্ম বাগ আছে. তারপর আমরা দ্বারা যে নাল আরম্ভ এন এবং পূর্ববর্তী ও পরবর্তী বরাদ্দ. এবং এখানে এই ক্ষেত্রে, আমি সক্রিয়া কারণ এই নতুন, নাল আগের নোডের নতুন হতে যাচ্ছে আমার তালিকার শুরুতে. তাই করা আছে যাচ্ছে এটা আগে কিছুই. এবং আমি মূলত লিখবেন চাই দ্বারা নতুন নোডের বিদ্যমান তালিকা নিজেই তালিকা পরবর্তী সমান সেট. কিন্তু আমি এখনও সম্পন্ন না. তালিকার নিজেই ইতিমধ্যে অস্তিত্ব, তাই যদি এবং অন্তত একটি নোড ছিল ইতিমধ্যে জায়গায়, এই তালিকা যদি এখানে এবং আমি এখানে নতুন নোড সন্নিবেশ নিশ্চিত করুন যে করা প্রয়োজন আমার সাবেক নোড আমার নতুন নোডের পিছন দিকে পয়েন্ট, এই আবার,, কারণ একটি দোকর লিঙ্ক তালিকা. সুতরাং আমরা একটি বৈধতা পরীক্ষা করতে. ইতিমধ্যেই আছে যদি তালিকা, নাল নয় তারপর সেখানে এক বা একাধিক নোড, তাই কথা বলতে রেফারেন্স যে ফিরে যোগ করুন. এবং তারপর আমরা প্রয়োজন শেষ জিনিস কি আসলে বৈশ্বিক আপডেট করা হয় নির্দেশ পরিবর্তনশীল তালিকা নিজেই যে নতুন নোডের. হ্যাঁ. AUDIENCE: পয়েন্টার তীর ইন [শ্রবণাতীত] আছে, নাল সমান যে তালিকা মোকাবেলা কারণ তালিকা নাল হয়? ডেভিড জে MALAN: না. এটা proactively হচ্ছে কেবল আমাকে নয় এটা আমার যদি এমন হয়, সতর্ক থাকুন হয়তো আরো কিছু নোড সাথে মূল তালিকা এখানে ওভার এবং আমি ঢোকাতে করছি আমার এখানে ওভার নতুন নোড, সেখানে যাচ্ছে এখানে বেশী কিছুই হতে. এবং আমি যে ধারণা ক্যাপচার করতে চান আগের নির্ধারণ করুন নতুন নোড নেভিগেশন নাল. এবং সম্ভবতঃ, আমার কোড সঠিক হলে এবং সন্নিবেশ অন্য কোন উপায় আছে এই ফাংশন আর অন্য, নোড, সম্ভবতঃ, এমনকি যদি তালিকায় আগে থেকেই আছে এটা এক বা একাধিক নোড, সম্ভবতঃ তালিকায় প্রথম নোডের, থাকবে একটি নাল নিজেই পূর্ববর্তী পয়েন্টার. AUDIENCE: আর মাত্র একটি ফলো আপ. আপনি পরের সমান পয়েন্টার রাখা কারণ তালিকা আপনি পয়েন্টার তৈরি করছি হয় এটি এর প্রতি নির্দেশ করে যে তালিকায় আগে পরের জন্য, আমি অনুমান - আমি পরা - শুধু তালিকা? ডেভিড জে MALAN: যথাযথভাবে. এবং তাই এর আসলে দুই ক্ষেত্রে বিবেচনা করা যাক এখানে সত্যিই, যদিও আমরা তাদের কথা বিবেচনা করব যাতে না হয় কোড হিসাবে পুরোপুরি একই. কিন্তু একটি উচ্চ স্তরের উপর, যদি এই প্রতিনিধিত্ব করে তালিকা এবং এই একটি 32 বিট পয়েন্টার, সহজ দৃশ্যকল্প হয় এই ডিফল্টরূপে নাল যে. এবং আমি প্রবেশ করাতে চান অনুমান সংখ্যা 50 প্রথম সংখ্যা ছিল. তাই আমি এগিয়ে যান এবং বরাদ্দ করা যাচ্ছে না ধারণ করতে যাচ্ছে, যা একটি নোড, তিনটি ক্ষেত্র - এন, আগের ও পরের. আমি সংখ্যা 50 প্রয়োগ করা যাচ্ছে না এখানে, এই এন করা হবে না. এই পরের হতে হবে. এবং এই পূর্ববর্তী হতে হবে. এবং তাই আমি এই ক্ষেত্রে কি করবেন? ওয়েল, আমি শুধু এখানে লাইন 1 সম্পন্ন করেছি. পয়েন্টার এন এন পায়. আমি তখন আগের, বলছে করছি নাল পাওয়া উচিত. তাই এই নাল হতে যাচ্ছে. তারপর আমি পরের বলতে যাচ্ছি তালিকা পেতে যাচ্ছে. এবং এই মাত্র ভাল কাজ করে. এই নাল না. এবং তাই আমি নতুন নোড এর পরের, বলছে করছি ক্ষেত্র এই যা কিছু পাওয়া উচিত. সুতরাং যে সেখানে অন্য নাল রাখে. এবং তারপর শেষ জিনিস আমি এখানে চেক করা হয় না. তালিকায় এটা নাল সমান নয়, কিন্তু যদি নাল সমান, তাই আমরা লাফালাফি করে পুরাপুরি. তাই আমি সব পরের তালিকায় পায় হয় pictorially যার ফলাফল পয়েন্টার, সেই মতো একটি ছবি. সুতরাং যে এক দৃশ্যকল্প এর. এবং আপনার সম্পর্কে জিজ্ঞাসা করা হয়েছিল যে এক বিশেষভাবে এই মত একটি পরিস্থিতি, আমরা ইতিমধ্যে একটি এক নোড তালিকা আছে যেখানে. এবং আমি মূল ফিরে যেতে হলে সমস্যা বিবৃতি, আমরা করব পরবর্তী শুধু জন্য, বলে 34 হয় সন্নিবেশ আলোচনা অনুরোধে. তাই আমি শুধু সুবিধামত যাচ্ছি এখানে বেশী যে আঁকা. আমি শুধু malloced করেছি. এর আমি নাল জন্য চেক করছি অনুমান করা যাক. এখন, আমি আরম্ভ করা যাচ্ছে না এন 34 হতে. এবং এই এন হতে হবে. এই পরের হতে হবে. এবং এই পূর্ববর্তী হতে হবে. এর নিশ্চিত আমি না করা যাক পিছনের দিকে এই পেতে. পূর্ববর্তী আসে প্রথম সংজ্ঞা. আমার এই ঠিক করি. এই আগের হয়. এই পরের হয়. এই অভিন্ন, যদিও এর সুসংগত রাখা যাক. আগের. এই পরের হয়. তাই আমি শুধু চেক, আমার নোট malloced করেছি নাল জন্য, নোডের মধ্যে 34 নির্ধারিত হয়. পূর্ববর্তী নাল পায়. সুতরাং যে আমার যে আপনি. পরবর্তী তালিকা পায়. সুতরাং তালিকা এই হয়. তাই এই এখন একই এই অঙ্কন হিসাবে তারা এক দিকে নির্দেশ, যাতে তীর একই সালে. এবং তারপর আমি চেক করছি যদি তালিকা নাল সমান নয়. এবং এটা এই সময় না. তারপর আমি তালিকা করতে যাচ্ছি পূর্ববর্তী পয়েন্টার পায়. তাই আগের তালিকা PTR পায়. তাই এই নির্বাণ প্রভাব রয়েছে এখানে একটি গ্রাফিকাল তীর. এবং যে একটু হচ্ছে তরঙ্গায়িত, লাইন. এবং তারপর, সর্বশেষে, আমি আপডেট পয়েন্টার নির্দেশ তার তালিকা দেখাবে. তাই এখন এই এই লোক স্থানটিকে. এবং এখন, এর একটি দ্রুত করতে দেওয়া বৈধতা পরীক্ষা. এখানে তালিকা, যা আছে বিশ্বব্যাপী পরিবর্তনশীল. প্রথম নোডের,, প্রকৃতপক্ষে, 34 কারণ আমি যে তীর অনুসরণ করছি. আমি চাই, কারণ এবং যে সঠিক তালিকা প্রারম্ভে সন্নিবেশ সব নতুন নোড. তার পরের ক্ষেত্রের এই লোক আমার বাড়ে. আমি বর্তা, আমি পরের নাল আঘাত. সুতরাং কোন তালিকা আছে. আমি আগের আঘাত, আমি পেতে আমি আশা যেখানে ব্যাক. তাই কয়েক পয়েন্টার এখনও আছে, একথাও ঠিক যে, নিপূণভাবে. কিন্তু আপনি যা করতে বলা হয়েছিল যে এই ধ্রুবক সময় আপনাকে শুধুমাত্র মানে একটা সসীম সংখ্যক আছে আপনাকে যা করতে অনুমতি দেওয়া করছি. আর যে সংখ্যা কি? এটা এক ধাপ হতে পারে. এটা দুই হতে পারে. এটা 1,000 পদক্ষেপ হতে পারে. কিন্তু এটি আপনি করতে পারেন, যার মানে সসীম এর looping কোন ধরনের যাওয়া করেছেন এখানে, কোন recursion, কোন loops. এটা ঠিক হার্ড কোড রেখা হবে না এর আমরা এই নমুনা আছে কোডের হিসেবে. তাই পরবর্তী সমস্যার 12 আমাদের জিজ্ঞাসা Remove বাস্তবায়ন সম্পন্ন এটি মুছে ফেলা হয় যে এমনভাবে নিচের এন রৈখিক সময় তালিকা থেকে. তাই আপনি যদি একটু বেশি আছে আন্দোলিত রুম এখন. আপনি, যে এন অনুমান হতে পারে যদি বর্তমান তালিকায় উপস্থিত হবে কোন একবারের বেশি. এবং যে খুব একটি প্রশ্নোত্তর ভিত্তিক হতে বোঝানো হয় সরল ধৃষ্টতা, তাই যে আপনি সংখ্যা 50 কোথাও যদি পান তালিকায়, আপনি তা চান না অব্যাহত চিন্তা করতে হবে প্রত্যেক সম্ভাব্য খুঁজছেন, পুনরুক্তি শুধু বর্তা হবে, যা 50 হাজার কপি, সীমিত সময়ের মধ্যে কিছু minutia মধ্যে. সুতরাং Remove সঙ্গে, এই এক স্পষ্টভাবে ছিল আরো চ্যালেঞ্জিং এবং আরো লিখতে কোড. কিন্তু এক নজরে, অকপটে, এটা হতে পারে অপ্রতিরোধ্য এবং ভালো কিছু চেহারা , আপনি হতে পারে কোন উপায় আছে একটি ব্যঙ্গ উপর চিন্তা. কিন্তু আমরা পৃথক পদক্ষেপে মনোনিবেশ করলে, আশা করছি, এটা হঠাৎ করবে আপনি ধর্মঘট যে এই ব্যক্তির প্রতি ধাপ সুস্পষ্ট জ্ঞান করে তোলে অতীতের দিকে. সুতরাং আসুন একবার দেখে নেয়া যাক. সুতরাং প্রথম, আমরা পয়েন্টার আরম্ভ হতে নিজেই তার তালিকা দেখাবে. আমি রৈখিক সময় চান কারণ, যে উপায়ে আমি কিছু লুপ আছে যাচ্ছি. এবং একটি সাধারণ উপায় পুনরুক্তি উপর একটি তালিকা কাঠামো বা যে কোন ধরণের বিভিন্ন নোডের গঠন iteratively নিতে হয় তথ্য সামনে একটি পয়েন্টার কাঠামো এবং তারপর শুধু আপডেট শুরু এটি এবং আপনার পথে হেটে তথ্য কাঠামো মাধ্যমে. তাই আমি ঠিক তা করতে যাচ্ছি. পয়েন্টার হলেও, আমার অস্থায়ী পরিবর্তনশীল, যাক এর, নাল সমান নয় এগিয়ে যান এবং চেক. আমি ভাগ্যবান পেতে পারি? আমি বর্তমানে আছি নোডের মধ্যে এন ক্ষেত্র সমান দিকে তাকিয়ে সংখ্যা আমি চাই? আর যদি তাই হয়, এর কিছু কাজের জন্য. এখন, এই লক্ষ্য যদি শর্ত সমগ্র ঘিরে কোড নিম্নলিখিত পংক্তিগুলি. এই আমি যত্নশীল শুধুমাত্র জিনিস - প্রশ্নে একটি সংখ্যা খুঁজে পেতে. সুতরাং কোন অন্য, সহজসাধ্য যা আছে ধারণার জিনিস অল্প. কিন্তু এখন, আমি বুঝতে পেরেছি, এবং আপনি থাকতে পারে শুধুমাত্র চিন্তা পরে এই উপলব্ধি এটি একটি বিট মাধ্যমে, আছে আসলে দুই ক্ষেত্রে এখানে. নোডের মধ্যে রয়েছেন যেখানে এক হয় একটি যা তালিকা, এর শুরু যে কারণ, একটু বিরক্তিকর একটি বিশেষ ক্ষেত্রে, আপনি মোকাবেলা করতে হবে, কারণ এই জিনিস সঙ্গে, যা শুধুমাত্র ব্যতিক্রম হল. অন্য যেকোন স্থানে তালিকায়, এটা একই জিনিস. আগের নোড এবং একটি পরের আছে নোড, আগের নোড, পরবর্তী নোডের. কিন্তু এই লোক একটু বিশেষ তিনি শুরুতে যদি. সুতরাং পয়েন্টার তালিকা সমান হলে নিজেই, তাই আমি প্রারম্ভে করছি যদি তালিকা এবং আমি এন খুঁজে পেয়েছি, আমি প্রয়োজন জিনিষ কয়েক করতে. এক, আমি তালিকা পরিবর্তন প্রয়োজন পরবর্তী ক্ষেত্র, 50 নির্দেশ. তাই আমি চেষ্টা করছি অনুমান 34 মুছে ফেলার জন্য. তাই এই লোক এর যেতে না দূরে মাত্র একটি মুহূর্ত. তাই আমি বলতে যাচ্ছি, তালিকা পরবর্তী পয়েন্টার হয়. ওয়েল, এই পয়েন্টার. এর পরে এখানে ওভার প্রতি নির্দেশ করা হয়. তাই এই এই তীর ডান পরিবর্তন করা হয় এখন এখানে এই লোক নির্দেশ. এখন, আমরা আছে, মনে রাখা একটি অস্থায়ী পরিবর্তনশীল. তাই আমরা কোনো নোড এতিম নি, আমি এই লোক আছে, কারণ আমার Remove বাস্তবায়ন. সুতরাং এখন, যদি তালিকার নিজেই, নাল না আমি সামান্য কিছু ঠিক করা প্রয়োজন. আমি এখন নিশ্চিত এই তীর যে করা প্রয়োজন, পূর্বে প্রতি নির্দেশ করা হয়, যা 34 থেকে 50 থেকে, এই, দূরে যেতে না করেনি কারণ আমি পরিত্রাণ পেতে চেষ্টা করছি, যদি 34 হাজার, 50 ভাল কোন বজায় রাখা না যায় হিসাবে এটা ধরনের ফিরে রেফারেন্স তীর প্রস্তাব. তাই আমি ঠিক এই লাইন কি. আমি তখন আমি কাজ করছি. যে ক্ষেত্রে আসলে বেশ সহজ. তালিকার মাথা বন্ধ চপ তুলনামূলকভাবে সহজবোধ্য. দুর্ভাগ্যবসত, এই আছে অন্য বিরক্তিকর ব্লক. তাই এখন, আমি ক্ষেত্রে বিবেচনা আছে মাঝখানে কিছু আছে যেখানে. কিন্তু এটা ছাড়া খুব ভয়ানক নয় ভালো সিনট্যাক্স জন্য. তাই আমি শুরুতে নই যদি তালিকা, আমি কোথাও মাঝখানে আছি. এবং এখানে এই লাইন, বলছে না শুরু আপনি করেন যাহা নোড এ. আগের নোড এর পরবর্তী ক্ষেত্র যান এবং পয়েন্টার এ যে নির্দেশ. এর pictorially এই করুক না. যে জটিল পেয়ে ছিল. তাই আমি এখানে একটি পূর্ববর্তী ক্ষেত্র আছে - এর এই না দেওয়া - এখানে পরের ক্ষেত্র. আমি বরং আমার পয়েন্টার প্রক্রিয়া সহজ করা যাচ্ছে না আভা এর আঁকা আর আগে পিছে জিনিস crisscrossing একে অপরকে. এবং এখন,, আমি কি শুধু এই 1, 2 হয় বলা যাক আলোচনা অনুরোধে জন্য 3, এমনকি যে সঙ্গে লাইন আপ করা হয় না, যদিও প্রশ্নে সমস্যা. তাই এখানে আমার লিঙ্ক তালিকা. আমি এই দুটি মুছে ফেলার চেষ্টা করছি গল্পের বিশেষ সংস্করণ. তাই আমি পয়েন্টার আপডেট করেছি এই লোক প্রতি নির্দেশ করা. তাই এই PTR হয়. তিনি এখানে প্রতি নির্দেশ করে. এই বিদ্যমান, যা তালিকা বিশ্বব্যাপী হিসাবে আগে. এবং তিনি কোন ব্যাপার কি এখানে এর প্রতি নির্দেশ করে. এবং এখন, আমি দুই মুছে ফেলার চেষ্টা করছি. পয়েন্টার এখানে প্রতি নির্দেশ করা হয় তাই, আমি আছি দৃশ্যত,, অনুসরণ করা যাচ্ছে 1 এ সম্পর্কে রাখে যা আগের পয়েন্টার,. আমি তারপর বলতে যাচ্ছি যে পরবর্তী এই আমাকে ধরে এনেছে যা ক্ষেত্র, এখানে বাক্স, যাচ্ছে সমান পয়েন্টার পরের. তাই এই পয়েন্টার, এই পরের হয়. যে মানে হল যে এই তীর চাহিদা এই লোক নির্দেশ. সুতরাং কোড যে লাইন ঠিক কি আছে এই সামান্য বিট হয় সম্পন্ন. এবং এখন, এই একটি ভালো খুঁজছেন হয় সঠিক পথে একধাপ. আমরা মূলত 2 আউট স্নিপ চাই 1 এবং 3 এর মাঝখানে এর. সুতরাং আমরা চাই যে জ্ঞান করে তোলে এটি প্রায় রুট এই পয়েন্টার. তাই এই পরের লাইন পরীক্ষণ হলে পয়েন্টার পরবর্তী নাল নয়, আছে 2 ডানদিকে প্রকৃতপক্ষে কেউ, যে আমরা যা করতে হবে মানে একটু এখানে স্নিপ. তাই আমি এখন এই পয়েন্টার অনুসরণ করা প্রয়োজন এবং পূর্ববর্তী পয়েন্টার নেভিগেশন আপডেট একটি সামান্য বিট কি এই লোক এখানে এখানে বিন্দু কার্যসংক্রান্ত. এবং এখন, দৃশ্যত এই চমৎকার. আছে যে এটা একটা সামান্য নোংরা না আর 2 নির্দেশ কেউ. 2 বাম প্রতি নির্দেশ করা হয়. এবং 2 ডান প্রতি নির্দেশ করা হয়. কিন্তু তিনি, তিনি চান যাই হোক না কেন তা করতে পারে, কারণ তিনি মুক্ত করতে সম্বন্ধে. এবং এটা কি কোন ব্যাপার না সেই মান আর হয়. কি গুরুত্বপূর্ণ অবশিষ্ট অনুপস্থিত বলছি উপরোক্ত রাউটিং হয় এবং এখন তাকে নীচে. এবং সত্যিই, যে আমরা পরবর্তী কি কি. আমরা বলতে, যার মানে আমরা মুক্ত পয়েন্টার, অপারেটিং সিস্টেম, আপনাকে স্বাগত জানাই এই সংশোধন. এবং তারপর সর্বশেষে, আমরা ফিরে. অন্যথায় পরোক্ষভাবে, যদি আমরা এখনো ফিরে আসেন নি, আমরা খুঁজছেন রাখা পেয়েছেন. সুতরাং পয়েন্টার ঠিক পরের পয়েন্টার সমান এখানে এই লোক সরানো মানে. এখানে এই লোক নিয়ে যান. এখানে এই লোক নিয়ে যান তাহলে, আসলে, আমরা নম্বর খুঁজে পাইনি আমরা এখনো খুঁজছেন. তাই অকপটে, এটি সম্পূর্ণরূপে দেখায় অপ্রতিরোধ্য, আমি প্রথম দিকে মনে এক নজরে, বিশেষ করে আপনি যদি লড়াই এই সঙ্গে ব্যঙ্গ সময় তারপর দেখুন ভালো কিছু. এবং যদি আপনি আবার নিজেকে চাপড়ান. ওয়েল, আমি থাকতে পারে কোন উপায় আছে ব্যঙ্গ করে নিয়ে আসা. কিন্তু আমি আপনি করতে পারেন, তর্ক করবে আপনি বিরতি হলে এই ব্যক্তি সেটিকে নিচে শুধু ক্ষেত্রে এবং এটা ভিতর দিয়ে হেটে সাবধানে, নিঃসন্দেহে, অধীন, যদ্যপি চাপ পরিস্থিতিতে. সৌভাগ্যক্রমে, ছবি তৈরি সুখী সবকিছু. আপনি এই আঁকতে পারে উপায়ে কোন সংখ্যা. আপনি crisscrossing যা করতে হবে না এখানে জিনিস. আপনি সোজা সঙ্গে এটা করতে পারে ভালো লাইন. কিন্তু এই সমস্যা সারকথা, সাধারণ, উপলব্ধি করা ছিল শেষ পর্যন্ত ছবি একটু হওয়া উচিত ভালো কিছু, কারণ ধ্রুব সময় আপনি রাখা যে উহ্য জ্যামিং এবং জ্যামিং এবং জ্যামিং শুরুতে নতুন নোড তালিকার. কোন প্রশ্ন? সম্ভবত সবচেয়ে চ্যালেঞ্জিং অবশ্যই কোডিং প্রশ্ন. AUDIENCE: তাই অনুরূপ তালিকা পূর্ববর্তী উদাহরণ মধ্যে আগাইয়া. ডেভিড জে MALAN: ঠিক, ঠিক. জন্য শুধু একটি ভিন্ন নাম একটি বিশ্বব্যাপী পরিবর্তনশীল. ওয়ার্ল্ড ওয়াইড কি? Rob Bowden: ঠিক আছে. তাই এই যেখানে আপনি এক অনুচ্ছেদ লিখতে ছিল. কিছু কিছু লোকের প্রবন্ধ লিখেছিলেন এই প্রশ্নের জন্য. কিন্তু আপনি শুধু এই ছয়টি পদ ব্যবহার করতে হবে কি হবে যখন বর্ণনা আপনি facebook.com সাথে যোগাযোগ করার চেষ্টা করুন. তাই আমি ঠিক প্রক্রিয়ার মাধ্যমে কথা বলতে পারবেন সব এই পদ ব্যবহার করে. সুতরাং আমাদের ব্রাউজারে, আমরা facebook.com টাইপ এবং Enter আঘাত. সুতরাং আমাদের ব্রাউজার একটি গঠন করা যাচ্ছে HTTP-র এটা পাঠান যাচ্ছে যে অনুরোধ জন্য ফেসবুক কিছু প্রক্রিয়ার মাধ্যমে ফেসবুকের সাথে আমাদের সাড়া তার পৃষ্ঠার এইচটিএমএল. তাই প্রক্রিয়া দ্বারা কি যা HTTP-র অনুরোধ আসলে ফেসবুক পায়? সুতরাং প্রথম, আমরা অনুবাদ করতে প্রয়োজন Facebook.com. তাই ঠিক, নাম Facebook.com দেওয়া আসলে HTTP-র অনুরোধ আছে যেখানে যেতে হবে? সুতরাং আমরা Facebook.com অনুবাদ করতে হবে একটি IP ঠিকানা থেকে, যা স্বতন্ত্র কি মেশিন আমরা আসলে চিহ্নিত এই অনুরোধ পাঠাতে চান. আপনার ল্যাপটপ একটি IP ঠিকানা আছে. ইন্টারনেটের সাথে সংযুক্ত কিছু একটি IP ঠিকানা আছে. সুতরাং DNS-র, ডোমেন নাম সিস্টেম, যে হয় কি অনুবাদ সব ব্যবস্থা করে যাচ্ছে facebook.com থেকে একটি আইপি ঠিকানা থেকে যে আসলে আপনি সাথে যোগাযোগ করতে চান. সুতরাং আমরা DNS সার্ভারের সাথে যোগাযোগ করে বলতে facebook.com কি? এটা উহু, এটা IP ঠিকানা 190,212 এর, বলছেন কিছু, কিছু, কিছু. ঠিক আছে. এখন, আমি জানি কি মেশিন আমি সাথে যোগাযোগ করতে চান. আমি তখন আপনি আপনার HTTP-র অনুরোধ পাঠান যে মেশিন থেকে বেশি. সুতরাং কিভাবে এটা যে মেশিন পেতে পারে? ওয়েল, অনুরোধ থেকে যায় রাউটার লাফাচ্ছে যাও রাউটার. ক্লাসে যেমন মনে রাখুন, যেখানে আমরা আসলে রুট দেখেছি আমরা চেষ্টা করলে প্যাকেট গ্রহণ যোগাযোগ করতে. আমরা এটা আটলান্টিক উপর ঘুরে দেখেছি এক বিন্দু বা যাই হোক না কেন এ মহাসাগর. তাই শেষ শব্দটি পোর্ট. তাই এই আপনার কম্পিউটারে এখন হয়. আপনি বর্তমানে একাধিক বিষয় থাকতে পারে ইন্টারনেট এর সাথে যোগাযোগ. তাই আমি, অর্থাৎ, স্কাইপ চালানো যেতে পারে. আমি খোলা একটি ওয়েব ব্রাউজার থাকতে পারে. আমি কিছু থাকতে পারে ফাইল torrenting. তাই এই জিনিস সব হয় এর সাথে যোগাযোগ কিছু উপায় ইন্টারনেট. তাই আপনার কম্পিউটারে কিছু তথ্য প্রাপ্ত করার সময় ইন্টারনেট থেকে, কিভাবে এটি আছে জানেন কি আবেদন আসলে তথ্য চায়? এই বিশেষ কিনা কিভাবে এটা জানেন না তথ্য জন্য বোঝানো হয় বিপরীতে আবেদন torrenting ওয়েব ব্রাউজারে? তাই এই যে এ পোর্ট উদ্দেশ্য হল এই অ্যাপ্লিকেশনগুলি সব আছে আপনার কম্পিউটারে একটি পোর্ট দাবি করেন. সুতরাং আপনার ওয়েব ব্রাউজার, আরে, বলছেন আমি পোর্ট 1000 উপর শোনা করছি. এবং আপনার উনিশশো প্রোগ্রাম বলছে না, আমি পোর্ট 3000 উপর শোনা করছি. এবং স্কাইপ আমি পোর্ট 4000 ব্যবহার করছি, বলছেন. আপনি কিছু তথ্য পেতে সুতরাং যখন যে জন্যে এই অ্যাপ্লিকেশন এক, তথ্য যা বন্দর দিয়ে চিহ্নিত করা হয় এটি আসলে বরাবর পাঠানো উচিত. তাই এই উহু, আমি অন্তর্গত বলছেন, পোর্ট 1000 থেকে. আমি তখন আমি এই ফরোয়ার্ড করতে হবে জানি আমার ওয়েব ব্রাউজারে বরাবর. সুতরাং কারণে তা এখানে প্রাসঙ্গিক ওয়েব সার্ভার থাকে যে হয় পোর্ট 80 উপর শুনতে. আমি Facebook.com যোগাযোগ সুতরাং যখন, আমি আছি কিছু মেশিন সঙ্গে যোগাযোগ. কিন্তু আমি যে কোন পোর্ট বলার প্রয়োজন আমি সাথে যোগাযোগ করতে চান মেশিন. এবং ওয়েব সার্ভার হতে থাকে পোর্ট 80 প্রথম শোনা. তারা চেয়েছিলেন, তারা তা স্থির করতে পারে আপ তাই এটি পোর্ট 7000 উপর হিসেবে প্রদর্শিত হয়. এবং তারপর একটি ওয়েব ব্রাউজারে, আমি করতে পারে থেকে 7000: নিজে Facebook.com টাইপ পোর্ট 7000 থেকে অনুরোধ পাঠান ফেসবুক এর ওয়েব সার্ভারের. ডেভিড জে MALAN: এবং এই ক্ষেত্রে, এমনকি আমরা প্রয়োজন হয়নি, যদিও যে মানুষ এই উল্লেখ, এই ক্ষেত্রে, কি পোর্ট অনুরোধ আসলে যেতে হবে? আবার চেষ্টা করুন. যথাযথভাবে. একটি তনিমা যে খুঁজছি, কিন্তু না যে আছে কেউ শেষ না. Rob Bowden: তাই HTTPS দ্বারা, এটা যেহেতু জন্য বিশেষভাবে শোনা এনক্রিপ্ট করা, এটা পোর্ট 4430 উপর এর. AUDIENCE: এবং ইমেল 25 হয়, ডান? ডেভিড জে MALAN: বহির্গামী ইমেইল, 25, হাঁ. Rob Bowden: আমি এমনকি অধিকাংশ জানি না - কম বেশী সব হতে থাকে জিনিসের জন্য সংরক্ষিত. আমি সবকিছু অধীন মনে 1024 সংরক্ষিত. AUDIENCE: আপনি কেন বলতে হয়নি 3 ভুল নম্বর ছিল? Rob Bowden: কারণ একটি IP ঠিকানা, ডিজিটের চার groupings আছে. এবং তারা 0 থেকে 255 করতে পারব. সুতরাং 192.168.2.1 একটি সাধারণ স্থানীয় নেটওয়ার্ক IP ঠিকানা. ঐ সব 255 কম লক্ষ্য করুন. তাই আমি 300 দিয়ে শুরু করার সময়, যে সম্ভবত আছে না পারে নম্বর এক হয়েছে. ডেভিড জে MALAN: কিন্তু যে নিরীহ ক্লিপ থেকে - এটা তারা একটি ছিল যেখানে সিএসআই, ছিল সংখ্যা যে খুব বড় ছিল আইপি ঠিকানা. Rob Bowden: এই উপর কোন প্রশ্ন? পরের এক, তাই সম্পূর্ণ পরিবর্তন বিষয়, কিন্তু আমরা এই পিএইচপি অ্যারে আছে চতুর্ভুজ মধ্যে ঘর. এবং আমরা একটি unordered তালিকা আছে. এবং আমরা প্রতিটি তালিকার আইটেম প্রিন্ট আউট করতে চান শুধু বাড়ির নাম ধারণকারী. সুতরাং আমরা একটি foreach লুপ আছে. সুতরাং বাক্য গঠন foreach হয়, মনে রাখবেন অ্যারের মধ্যে আইটেম হিসাবে অ্যারে. তাই লুপ প্রতিটি পুনরাবৃত্তির মাধ্যমে, বাড়ির এক নিতে যাচ্ছে অ্যারের ভিতরে মান. প্রথম পুনরাবৃত্তির, ঘর অন Cabot হাউস হতে হবে. একটি দ্বিতীয় পুনরাবৃত্তির, বাড়ির উপর আছি তাই কুরিয়ার হাউস হতে হবে এবং. তাই ঘর হিসাবে প্রতিটি চতুর্ভুজ জন্য, আমরা করছি শুধু মুদ্রণ যাচ্ছে - তবে আপনাকে প্রতিধ্বনিত হতে পারে - তারপর তালিকার আইটেম এবং বাড়ির নাম এবং তারপর তালিকার আইটেম বন্ধ. কোঁকড়া ধনুর্বন্ধনী এখানে ঐচ্ছিক. এবং তারপর আমরা প্রশ্নে বলেন নিজেই, বন্ধ করতে মনে রাখা unordered তালিকা ট্যাগ. তাই আমরা পিএইচপি মোড থেকে প্রস্থান করতে হবে এই কাজ করার জন্য. অথবা আমরা প্রতিধ্বনিত হতে পারেনি unordered তালিকা ট্যাগ বন্ধ করুন. ডেভিড জে MALAN: এখানে এছাড়াও জরিমানা হবে জন্য একটি পুরানো স্কুল ব্যবহার করা হয়েছে = 0 0 একটি $ আমি সাথে লুপ এবং গন্য করতে ব্যবহার Ray দ্বারা চিন্তা. পুরোটাই জরিমানা খুব, ঠিক একটু wordier. AUDIENCE: তাই আপনি যদি চালু ছিল যদি [শ্রবণাতীত], আপনি কি - আমি লুপ [শ্রবণাতীত] কি ভুলে যাওয়া. আপনি চতুর্ভুজ বন্ধনী আমি $ চান? ডেভিড জে MALAN: যথাযথভাবে. হাঁ, ঠিক. Rob Bowden: আরও কিছু লাগবে? ডেভিড জে MALAN: ঠিক আছে. বিনিময় প্রথা. তাই উত্তর এর bunches ছিল এই প্রতিটি জন্য সম্ভব. আমরা সত্যিই ঠিক করছিলেন একটি গোলমালে এবং জন্য বাধ্যকারী কিছু একটি downside হয়. এবং সংখ্যা 16 ব্যবহারকারীদের যাচাই জিজ্ঞেস করলাম, ইনপুট ক্লায়েন্ট প্রান্তের, জাভাস্ক্রিপ্ট হিসাবে, পরিবর্তে সার্ভার সাইড এর, পিএইচপি সঙ্গে হিসাবে. তাই কি একটি গোলমালে এর এরকম ক্লায়েন্ট প্রান্তের? ভাল, আমরা প্রস্তাবিত জিনিস এক আপনি লেটেন্সি হ্রাস যে, আপনি কারণ যোগাযোগ বিরক্ত করতে হবে না কয়েক নিতে পারে সার্ভার, যা মিলিসেকেন্ড বা সেকেন্ডের এমনকি দুয়েক যে এড়ানো এবং মাত্র ব্যবহারকারীদের ইনপুট ক্লায়েন্ট প্রান্তের দ্বারা যাচাই একটি অন জমা হ্যান্ডলার triggering এবং শুধু তারা টাইপ করুন, কি চেক নামের জন্য কিছু? তারা কিছু টাইপ না ইমেল ঠিকানা মধ্যে? তারা থেকে একটি dorm বেছে নি ড্রপ ডাউন মেনু; আপনি তাদের ক্ষণিক প্রতিক্রিয়া দিতে পারেন gigahertz কম্পিউটার ব্যবহার অথবা তারা যে আছে যাই হোক না কেন আসলে তাদের ডেস্ক. সুতরাং এটা শুধুমাত্র একটি ভাল ব্যবহারকারীর এর সাধারণত অভিজ্ঞতা. কিন্তু ক্লায়েন্ট প্রান্তের করছেন একটি downside বৈধতা, তাহলে আপনি ছাড়া এটা করতে হলে সার্ভার সাইড ভ্যালিডেশন করছেন যে CS50 আসার আউট সবচেয়ে কেউ জানে আপনি শুধু আপনার কাঙ্ক্ষিত তথ্য পাঠাতে পারেন একটি সার্ভারে উপায়ে কোন সংখ্যা. সত্যি, অধিকাংশ কোন ব্রাউজারে, আপনি যা করতে পারেন সেটিংস এবং মাত্র প্রায় ক্লিক করুন জাভাস্ক্রিপ্ট বন্ধ করতে, যা হবে, অতএব, কোন ফর্ম নিষ্ক্রিয় বৈধতা. কিন্তু এছাড়াও আপনি প্রত্যাহার হতে পারে এমনকি আমি ব্যবহার করে ক্লাসে কিছু গোপনীয় বিষয় কি Telnet এবং আসলে ভান পেতে পাঠিয়ে একটি ব্রাউজার হতে একটি সার্ভারে অনুরোধ. এবং যে অবশ্যই নয় কোনো জাভাস্ক্রিপ্ট ব্যবহার করে. এটা শুধু আমার কমান্ড টাইপ এর একটি কীবোর্ড এ. সত্যিই তাই, যথেষ্ট মধ্যে যে কোনো প্রোগ্রামার ওয়েব ও HTTP সাথে স্বস্তি সে চায় যাহা তথ্য পাঠাতে পারে ভ্যালিডেশন ছাড়া একটি সার্ভারে. আর আপনার সার্ভার এছাড়াও চেক না হলে তারা আমাকে একটি নাম দিন নি, হয় আসলে এই একটি বৈধ ইমেইল ঠিকানা, কি তারা একটি dorm চয়ন, আপনি শেষ হতে পারে আপ ঢোকাতে বাজে বা শুধু ফাঁকা তথ্য আপনার ডাটাবেসের মধ্যে, যা সম্ভবত একটি ভাল জিনিস হতে যাচ্ছে না, যদি আপনি এটি ছিল অভিমানী হয়. তাই এই একটি বিরক্তিকর বাস্তবতা. তবে সাধারণভাবে, ক্লায়েন্ট প্রান্তের মধ্যে বৈধতা মহান. কিন্তু দু 'বার যতটা কাজ মানে. বিভিন্ন অস্তিত্ব আছে কি যদিও জন্য লাইব্রেরি, জাভাস্ক্রিপ্ট লাইব্রেরি উদাহরণস্বরূপ,, এই অনেক যে মাথা ব্যাথা অনেক কম. এবং যদি আপনি কোড কিছু পুনরায় ব্যবহার করতে পারেন সার্ভার সাইড, ক্লায়েন্ট প্রান্তের. কিন্তু এটা সাধারণত হয় বুঝতে পারি অতিরিক্ত কাজ. হ্যাঁ. AUDIENCE: তাই যদি আমরা ঠিক কম নিরাপদ বলেন - ডেভিড জে MALAN: [LAUGHS] বিতৃষ্ণা. যারা সবসময় কঠিন ন্যায়নির্ণয় থেকে বেশী. Rob Bowden: যে would গৃহীত হয়েছে. ডেভিড জে MALAN: কি? Rob Bowden: আমি এই সমস্যা তৈরি. যে গৃহীত হয়েছে. ডেভিড জে MALAN: হ্যাঁ. AUDIENCE: কুল. Rob Bowden: কিন্তু আমরা স্বীকার করেনি প্রথম এক জন্য - ভাল, আমরা কি খুঁজছেন সেটা হল আপনি ভালো কিছু করতে হবে না সার্ভারের সঙ্গে যোগাযোগ. আমরা শুধু দ্রুত স্বীকার করেনি. AUDIENCE: কি সম্পর্কে পৃষ্ঠাটি পুনরায় লোড না? Rob Bowden: হ্যাঁ. এটা একটা গ্রহণযোগ্য উত্তর ছিল. ডেভিড জে MALAN: আমরা অনুভব করলাম যেখানে কিছু এটা সম্ভবত বেশী না সম্ভাবনা ছিল আপনি কি জানতেন যে একটি কঠিন, যা বলার অপেক্ষা রাখে না কখনো কখনো আঁকতে লাইন. পরিবর্তে একটি লিঙ্ক তালিকা ব্যবহার করে বজায় রাখার জন্য একটি অ্যারের একটি পূর্ণসংখ্যার তালিকা সাজানো. লিঙ্ক দিয়ে তাই একটি গোলমালে আমরা প্রায়ই cite তাদের পুরো প্রেরণা যে তালিকা ভূমিকা আপনি গতিশীলতা পেতে ছিল. তারা বড় হয়ে যাবে. তারা সঙ্কুচিত করতে পারেন. সুতরাং আপনি হুপ্স মাধ্যমে তিড়িং লাফ করতে হবে না আসলে আরো মেমরি তৈরি একটি অ্যারের সাথে. অথবা আপনি করতে হবে না শুধু বলে, দুঃখিত, ব্যবহারকারী. অ্যারে পূর্ণ. তালিকার তাই গতিশীল বৃদ্ধি. লিঙ্ক তালিকার যদিও একটি downside হয়? AUDIENCE: এটা রৈখিক এর. লিঙ্ক তালিকা অনুসন্ধান রৈখিক পরিবর্তে আপনি লগ ইন কি ডেভিড জে MALAN: যথাযথভাবে. একটি লিঙ্ক তালিকা উপর খুঁজছেন রৈখিক, এটি সাজানো হচ্ছে, এমনকি যদি আপনি করতে পারেন, কারণ শুধুমাত্র এই রুটি crumbs অনুসরণ, এই পয়েন্টার, তালিকার শুরু থেকে শেষ. আপনি র্যান্ডম অ্যাক্সেস এবং লিভারেজ করতে পারবে না, সুতরাং, বাইনারি অনুসন্ধান, এটা এমনকি যদি সাজানো, আপনি পারা যে একটি অ্যারের সাথে. এবং আরেকটি খরচ এছাড়াও আছে. হ্যাঁ. AUDIENCE: স্মৃতি অদক্ষ? ডেভিড জে MALAN: হ্যাঁ. ওয়েল, আমি অগত্যা না would অদক্ষ বলে. কিন্তু এটা আপনি আরো মেমরি টাকা লাগে, আপনি প্রতি জন্য 32 বিট প্রয়োজন, কারণ অতিরিক্ত পয়েন্টার জন্য নোড, এ একটি একেলা লিঙ্ক তালিকা জন্য অন্তত. এখন, আপনি শুধুমাত্র পূর্ণসংখ্যা সংরক্ষণ করছেন এবং যদি আপনি পয়েন্টার যোগ করছি, যে আসলে ধরনের অ তুচ্ছ. এটা মেমরির পরিমাণ দ্বিগুনের এর. কিন্তু প্রকৃতপক্ষে, যদি আপনি সংরক্ষণ করছেন একটি থাকতে পারে যে structs এর লিঙ্ক তালিকা 8 বাইট, 16 বাইট, আরও যে বেশী হয়তো, এটা কম একটি প্রান্তিক ব্যয়ের. কিন্তু তবু একটি খরচ আছে. তাই যারা এর উভয় করেছি হবে downsides হিসাবে জরিমানা হয়েছে. 18. লিখতে পিএইচপি পরিবর্তে সি ব্যবহার একটি কমান্ড লাইন প্রোগ্রাম. তাই এখানে, তা ব্যবহার করে প্রায়ই দ্রুত এর একটি পিএইচপি বা রুবি বা পাইথন মত ভাষা. আপনি শুধুমাত্র দ্রুত খুলতে একটি টেক্সট এডিটর আপ. আপনি আরো অনেক ফাংশন আছে আপনার জন্য উপলব্ধ. পিএইচপি ফাংশন রান্নাঘরের সিংক রয়েছে, সি, আপনি যেহেতু খুব, খুব সামান্য আছে. আসলে, বলছি The হার্ড উপায় জানতে আপনি হ্যাশ টেবিল নেই. আপনি তালিকা সংযুক্ত আছে না. আপনি ঐ চান, আপনি করতে হবে নিজেকে তাদের বাস্তবায়ন. পিএইচপি এর তাই এক গোলমালে বা সত্যিই কোন ব্যাখ্যা ভাষা ক্ষিপ্রতা হয় যা দিয়ে আপনি কোড লিখতে পারেন. কিন্তু একটি downside হয়, আমরা এই দেখে আমি দ্রুত একটি misspeller আপ বেত্রাঘাত পিএইচপি ব্যবহার বক্তৃতায় বাস্তবায়ন, হয় যে একটি ব্যাখ্যা ভাষা ব্যবহার সাধারণত মন্থর. এবং আমরা একটি সঙ্গে demonstrably যে দেখেছি 3 থেকে 0.3 যাও থেকে সময় বৃদ্ধি কারণ ব্যাখ্যা যাও, যে আসলে এরকম. আরেকটি গোলমালে ছিল আপনি যে কম্পাইল করতে হবে না. সুতরাং এটা উন্নয়ন দ্রুত সম্পন্ন উল্লেখ্য, আপনি যদি না থাকে, কারণ একটি প্রোগ্রাম করার দুটি ধাপে. আপনি শুধু একটা আছে. তাই যে বেশ আছে বাধ্যকারী হিসাবে ভাল. একটি SQL ডাটাবেস ব্যবহার পরিবর্তে তথ্য ধারণ করার জন্য একটি CSV ফাইল. তাই SQL ডাটাবেস pset7 জন্য ব্যবহার করা হয়. CSV ফাইল আপনি অনেক কিছু ব্যবহার করেননি. কিন্তু আপনি হিসাবে pset7 মধ্যে পরোক্ষভাবে এটি ব্যবহৃত পাশাপাশি ইয়াহু হিসাববিদ্যা কথা বলা দ্বারা. কিন্তু CSV-শুধু একটি এক্সেল ফাইল মত হল কিন্তু সুপার সহজ, কলাম যেখানে শুধু ভিতরে কমা দ্বারা demarked একটি অন্যথায় টেক্সট ফাইলের. এবং একটি এসকিউএল ডাটাবেজ ব্যবহার হয় একটু বেশি আকর্ষক. আপনি জিনিস পেতে, কারণ এটি একটি গোলমালে এর মত নির্বাচন করে ঢুকিয়ে মুছে দিন. এবং আপনি, সম্ভবতঃ, ইনডেক্সসমূহ পেতে মাইএসকিউএল এবং মত অন্যান্য উপাত্ত, ওরাকল, মেমরির মধ্যে আপনার জন্য নির্মাণ, যা আপনার নির্বাচন সম্ভবত না মানে নীচে রৈখিক শীর্ষ হতে যাচ্ছে. এটা আসলে কিছু হতে যাচ্ছে বাইনারি অনুসন্ধান বা কিছু মত আত্মা একই. সুতরাং তারা সাধারণত দ্রুত করছি. কিন্তু একটি downside হয় যে এটা আরো কাজ আছে. এটি আরও চেষ্টা করে. আপনি উপাত্ত বুঝতে আছে. আপনি এটি সেট আপ করা আছে. আপনি চালানোর জন্য একটি সার্ভার প্রয়োজন প্রথম যে ডাটাবেস. আপনি বুঝতে প্রয়োজন এটি কনফিগার করার পদ্ধতি. সুতরাং এই শুধু এই বিনিময় প্রথা ধরণের. একটি CSV ফাইল, আপনি যা করতে পারেন যেহেতু gedit দিয়ে এটি তৈরি. এবং আপনি যেতে ভাল. যে তার পরেও কোন জটিলতা নেই. পরিবর্তে একটি হ্যাশ টেবিল একটি trie ব্যবহার সংরক্ষণ পৃথক chaining সঙ্গে স্মারক শব্দের অভিধান Pset5 এর. সুতরাং একটি তত্ত্ব, গোলমালে চেষ্টা করে অন্তত, কি? কনস্ট্যান্ট সময়, অন্তত আপনি যদি পৃথক প্রতিটি হ্যাশ আপনার মত একটি শব্দ অক্ষর, Pset5 জন্য থাকতে পারে. যে পাঁচটি হ্যাশ, ছয়, পাঁচ বা ছয় আছে যদি hashes শব্দ অক্ষর. এবং যে বেশ ভাল. এবং একটি উচ্চ পরিসর আছে যদি কিভাবে দীর্ঘ আপনার শব্দ হতে পারে, যে প্রকৃতপক্ষে asymptotically ধ্রুবক সময়. যেহেতু পৃথক সঙ্গে একটি হ্যাশ টেবিল যে সঙ্গে আছে, সমস্যা chaining ডাটা স্ট্রাকচার ধরনের যে আপনার আলগোরিদিম কর্মক্ষমতা সাধারণত সবকিছুর সংখ্যার উপর নির্ভর করে ইতিমধ্যে তথ্য কাঠামো. এবং যে নিশ্চিতভাবে সঙ্গে কেস চেইন, যদ্দ্বারা আপনাকে করা আরো স্টাফ একটি হ্যাশ টেবিল মধ্যে, আর যারা চেইন সবচেয়ে খারাপ মধ্যে, যার মানে যান কেস, আপনি খুঁজছেন হতে পারে জিনিস সব পথ এক শেষে হয় ঐ চেইন, যা কার্যকরভাবে রৈখিক কিছু মধ্যে devolves. এখন, বাস্তবে, এটা একেবারে পারা একটি হ্যাশ টেবিল সঙ্গে ক্ষেত্রমত চেইন একটি সংশ্লিষ্ট তুলনায় দ্রুততর trie বাস্তবায়ন. কিন্তু যে মধ্যে, বিভিন্ন কারণে এর চেষ্টা করে সমগ্র অনেক ব্যবহার করা হয়, যা মেমরি যে যা করতে পারেন, আসলে, ধীর জিনিস নিচে, আপনি চমৎকার পাবেন না, কারণ ক্যাশে কিছু বলা সুবিধাগুলো, যেখানে একসঙ্গে ঘনিষ্ঠ জিনিস রয়েছে যা মেমরি ব্যবহার করা সম্ভব প্রায়ই আরো দ্রুত. এবং কখনও কখনও আপনার সাথে আসতে পারেন একটি সত্যিই ভাল হ্যাশ ফাংশন. আপনি কোনো কিছু নষ্ট করতে এমনকি যদি মেমরি, আপনি সত্যিই,, করতে সক্ষম হতে পারেন দ্রুত এবং না জিনিষ খুঁজে পেতে হিসাবে খারাপ হিসাবে সুসংগত ভাবে. তাই সংক্ষিপ্ত, অগত্যা ছিল না এই এক বা এমনকি দুটি সাথে আমরা করছিলেন নির্দিষ্ট কাজ. প্ররোচনামূলক সত্যিই কিছু একটি গোলমালে এবং downside হয় হিসাবে সাধারণত আমাদের চোখে ধরা. Rob Bowden: তাই গোলমালে জন্য, আমরা কি তার নিজের উপর গ্রহণ করে না "দ্রুত." আপনি এটা সম্পর্কে কিছু বলার ছিল. আপনি তাত্ত্বিক দ্রুততর বলেন যদি, আমরা আপনার ধরনের বোঝা যে জানতাম এটি 1 0 যে. এবং হ্যাশ টেবিল, তত্ত্ব, 1 0 নয়. রানটাইম সম্পর্কে কিছু উল্লেখ সাধারণত পয়েন্ট আপনি পেয়েছিলাম. কিন্তু "দ্রুত" সমাধান সবচেয়ে নেভিগেশন চেষ্টা ছিল যে বড় বোর্ড সমাধান চেয়ে objectively মন্থর যে হ্যাশ টেবিল ছিল. তাই দ্রুত এবং তার মধ্যে সত্যিই সত্য নয়. ডেভিড জে MALAN: ডোম দে ডোম ডোম. আমি সম্ভবত বুঝতে পারবেন যে শুধুমাত্র একটি আছি যে যে অনুমিত এর কিভাবে অধিকার, উচ্চারণ করা? Rob Bowden: আমি আসলে কোন ধারণা ছিল না. ডেভিড জে MALAN: এটা করেছেন আমার মাথার মধ্যে ইন্দ্রিয়. Rob Bowden: আমি এই এক করছি. ঠিক আছে. তাই এই আপনি আঁকা ছিল যেখানে এক আপনি অনুরূপ ডায়াগ্রাম পারে বিগত পরীক্ষার উপর দেখা যায়. তাই আসুন শুধু এই তাকান. সুতরাং এইচটিএমএল নোড থেকে, আমরা আছে দুই শিশু, মাথা এবং শরীরের. সুতরাং আমরা শাখায় বিভক্ত - মাথা ও শরীর. মাথা একটি শিরোনাম ট্যাগ আছে. সুতরাং আমরা একটি শিরোনাম আছে. এখন, এক জিনিস মানুষ অনেক ভুলে গেছি এই টেক্সট নোড হয় এই গাছ মধ্যে উপাদান. তাই আমরা এখানে ovals হিসাবে তাদের আঁকা ঘটবে এইসব থেকে তাদের পার্থক্য নোড ধরন. কিন্তু নোটিশ এছাড়াও এখানে আমরা উপরে আছে, মধ্যম, এবং নিম্ন শেষ হচ্ছে হবে টেক্সট নোড. সুতরাং যারা বিস্মরণ কিছুটা ছিল একটি সাধারণ ভুল. শরীরের তিনটি সন্তান আছে - এই তিনটি DIVs. সুতরাং DIV, DIV, DIV এবং তারপর টেক্সট যারা DIVs এর নোড শিশুদের. অর্থাৎ প্রায় কাছাকাছি এটি যে প্রশ্নের জন্য. ডেভিড জে MALAN: এবং এটা এর মূল্য, আমরা এই অধিষ্ঠান না, যদিও আমরা খরচ সময়ের বিবরণ যাতে করে যে জাভাস্ক্রিপ্ট,, মধ্যে আসলে, ব্যাপার টেকনিক্যালি. তাই মাথা শরীরের আগে আসে যদি এইচটিএমএল, তারপর দেখা উচিত প্রকৃত DOM মধ্যে শরীরের বাকি. তার, শুধু FYI, সাধারণভাবে, যে নথি যাতে কিছু বলা, যেখানে এটা ব্যাপার আছে. এবং যদি আপনি একটি পার্সার প্রয়োগ করা হয়েছে কিনা, দালান, এইচটিএমএল পাঠ্য একটি প্রোগ্রাম মেমরি গাছ আপ, সৎ হবে, যে সম্ভবত intuitively কি আপনি যাহাই হউক না - উপরে নীচে, ডানে বামে. Rob Bowden: যে প্রশ্ন? আমি পরের এক কি করা উচিত? ডেভিড জে MALAN: শিওর. Rob Bowden: ঠিক আছে. তাই এই পদদলিত বাফার হয় আক্রমণ প্রশ্ন. এখানে চিনতে প্রধান বিষয় হল, ওয়েল, কিভাবে হতে পারে একটি বিপক্ষ কৌতুক নির্বাহ মধ্যে এই প্রোগ্রাম নির্বিচারে কোড? সুতরাং argv1, প্রথম কমান্ড লাইন এই প্রোগ্রামের যুক্তি, যে হতে পারে ইচ্ছামত দীর্ঘ. কিন্তু এখানে আমরা কপি memcpy ব্যবহার করছেন argv1, যা এখানে বার হয়. আমরা যুক্তি হিসেবে এটা পার করছি. এবং তাই নামের বারে গ্রহণ এর. সুতরাং আমরা বার memcpying করছি এই বাফার গ মধ্যে. আমরা কত বাইট কপি করা হয়? ভাল তবে অনেক বাইট বার ঘটবে , যে যুক্তি দ্বারা ব্যবহার করা. কিন্তু গ শুধুমাত্র 12 বাইট চওড়া. সুতরাং আমরা একটি কমান্ড লাইন আর্গুমেন্ট লিখুন যদি যে 12 বাইট চেয়ে দীর্ঘতর, আমরা করছি এই ওভারফ্লো যাচ্ছে বিশেষ বাফার. এখন, কিভাবে একটি বিপক্ষ রত পারে নির্বিচারে কোড নির্বাহ মধ্যে প্রোগ্রাম? সুতরাং যে এখানে মনে রাখা প্রধান foo বিন্যাস আহ্বান করা হয়. এবং তারপর, তাই প্রধান কল foo বিন্যাস. এর এই আঁকা যাক. সুতরাং আমরা আমাদের স্ট্যাকের আছে. এবং মূল একটি স্ট্যাক ফ্রেম আছে নীচে. এক পর্যায়ে প্রধান কল foo বিন্যাস. ওয়েল, অবিলম্বে, প্রধান কল foo বিন্যাস. তাই foo বিন্যাস নিজস্ব স্ট্যাকের ফ্রেম পায়. এখন, কিছু সময়ে, foo বিন্যাস ফিরে যাচ্ছে. এবং foo বিন্যাস আয় গিয়েছিলাম, আমরা এ জানা প্রয়োজন প্রধান আমরা ভেতরে কি কোড লাইন জানি যাতে ছিল যেখানে আমরা প্রধান মধ্যে পুনরায় শুরু হবে. আমরা একটি সম্পূর্ণ থেকে foo বিন্যাস কল করতে পারেন বিভিন্ন জায়গা গুচ্ছ. কিভাবে আমরা যেখানে ফিরে যাও জানেন? ভাল, আমরা যে কোথাও সংরক্ষণ করা প্রয়োজন. তাই কোথাও ডান কাছাকাছি, আমরা সংরক্ষণ আমরা একবার ফিরে উচিত যেখানে foo বিন্যাস আয়. এবং এই ফিরতি ঠিকানা হয়. সুতরাং কিভাবে একটি বিপক্ষ সুবিধা নিতে পারে এই সত্য যে এই বাফার গ সংরক্ষিত হয়, যাক এর এখানে ডান গ হয়, বলে. সুতরাং আমরা গ জন্য 12 বাইট পেয়েছেন. এই গ হয়. এবং এই foo বিন্যাস এর স্ট্যাক রিং হয়. দূষিত ব্যবহারকারী আরো পদার্পন সুতরাং যদি 12 আর বাইট বা তারা একটি কমান্ড লিখুন 12 সময়ের চেয়ে যে লাইন আর্গুমেন্ট অক্ষর, তারপর আমরা চলুন এই বাফার ওভারফ্লো. আমরা বর্তা পারেন. এবং কিছু সময়ে, আমরা অনেক দূরে যেতে আমরা শুরু যথেষ্ট যে এই ফিরতি ঠিকানা মুছে. তাই একবার আমরা ফিরতি ঠিকানা মুছে ফেলা এই অর্থ হল যে যখন foo বিন্যাস আয়, আমরা যেখানেই ফিরে করছি দূষিত ব্যবহারকারী দ্বারা এটি করতে বলছে তা যাই হোক না কেন দ্বারা প্রবেশ যাহা মূল্য অক্ষর ব্যবহারকারী প্রবেশ. তাই দূষিত ব্যবহারকারীর হচ্ছে হলে বিশেষ করে চতুর, তিনি এই থাকতে পারে printDef কোথাও ফিরে ফাংশন বা malloc কোথাও ফাংশন, ঠিক কোন জায়গায় নির্বিচারে. সে আছে কি কিন্তু যদি আরও বেশি চালাক ব্যবহারকারীর অধিকার এখানে ফিরে. এবং তারপর আপনি নির্বাহ শুরু এই কোড লাইনের হিসেবে. তাই এই মুহুর্তে, ইউজার লিখতে পারেন তিনি এই অঞ্চলের মধ্যে চায় যাই হোক না কেন. এবং তিনি সম্পূর্ণ নিয়ন্ত্রণ আছে আপনার প্রোগ্রাম উপর. যে প্রশ্ন? তাই পরের প্রশ্নে সম্পূর্ণ এমনভাবে foo বিন্যাস এর reimplementation এটা এখন আর প্রবন যে. তাই উপায় কয়েক আছে আপনি এই কাজ করতে পারে. আমরা এখনও শুধুমাত্র সি আছে দৈর্ঘ্য 12 হাজার হচ্ছে. আপনি এই পরিবর্তন করতে পারে আপনার সমাধান অংশ হিসাবে. আমরা করা একটি চেক যোগ নিশ্চিত বার নাল ছিল না. আপনি প্রয়োজন ছিল না যদিও যে পুরো ক্রেডিট জন্য. তাই আমরা প্রথমে চেক করছি বার স্ট্রিং দ্বারা. এটা, তারপর 12 এর চেয়ে বড় যদি আসলে কপি করবেন না. সুতরাং যে এটি নির্ধারণ এক উপায়. এটি নির্ধারণ আরেকটি উপায় পরিবর্তে গ থাকার একমাত্র দৈর্ঘ্য 12 হাজার করা, এটা আছে দৈর্ঘ্য strlen (বার) এর করা. এটি নির্ধারণ আরেকটি উপায় আসলে শুধু ফিরে যাও. তাই আপনি শুধু সব পরিত্রাণ অর্জিত ছিল এই, আপনি শুধু সব মুছে ফেলা ছিল কোড এর লাইন, আপনি অর্জিত হবে পুরো ক্রেডিট, এই ফাংশন থেকে আসলে কিছু কাজ করা সম্ভব হয় না. এটি কমান্ড লাইন কপি করে কিছু অ্যারের মধ্যে যুক্তি তার স্থানীয় স্ট্যাক ফ্রেম. এবং তারপর জিনিস ফিরে না. আর যাই হোক না কেন এটা মার্জিত সর্বস্বান্ত হয়. তাই ফিরতি একটি যথেষ্ট ছিল পুরো ক্রেডিট পাবার উপায়. ডেভিড জে MALAN: নেই বেশ আত্মা প্রশ্ন কিন্তু প্রতি গ্রহণযোগ্য তবু বৈশিষ্ট. Rob Bowden: যে কোন প্রশ্ন? এক জিনিস যে আপনি অন্তত কোড কম্পাইল আছে প্রয়োজন. টেকনিক্যালি আপনি না হয় তাই, যদিও প্রবন আপনার কোড যদি না কম্পাইল, আমরা যে স্বীকার করেনি. কোন প্রশ্ন? ঠিক আছে. ডেভিড জে MALAN: যদি আপনি চান এই শিরোনামের বলে? Rob Bowden: নং ডেভিড জে MALAN: সুতরাং এই এক, এই ভালো খবর বা খারাপ খবর হয় না. এই আক্ষরিক একই সমস্যা প্রথম ব্যঙ্গ হিসাবে. এবং এটা প্রায় একই pset1 হিসাবে সমস্যা. কিন্তু এটা ইচ্ছাকৃতভাবে করা সরলীকৃত হয় একটি সহজ পিরামিড, হতে পারে যে এক সামান্য সঙ্গে সমাধান সহজ পুনরাবৃত্তির. এবং সত্যিই, আমরা কি এ পাবার ছিল এখানে, এত যুক্তি ছিল না সম্ভবত, এই বিন্দু দ্বারা, আপনি কারণ আপনি ছিল তুলনায় আরো আরামদায়ক loops বা কেন loops জন্য সঙ্গে সপ্তাহে এক, কিন্তু সত্যিই যে সরাইয়া জ্বালাতন করা আপনার সাথে একটু আরামদায়ক পিএইচপি ঠিক কি না যে ধারণা প্রোগ্রামিং. এটা আসলে একটি ভাষা হিসেবে ব্যবহার করা যাবে কমান্ড লাইন প্রোগ্রাম লিখতে. এবং সত্যিই, যে আমরা চেষ্টা করছিলেন কি আপনার মনোযোগ আকর্ষণ করতে. এটি একটি কমান্ড লাইন পিএইচপি প্রোগ্রাম. তাই এখানে সি কোড, যখন সঠিক সি, পিএইচপি জন্য সংশোধন না. কিন্তু কোড সত্যিই একই. আপনি ক্যুইজ জন্য সমাধান তুলনা যদি ক্যুইজ 1 ২ 0, আপনি খুঁজে পাবেন তা ছাড়া, প্রায় অভিন্ন কিছু ডলার চিহ্ন এবং জন্য একটি ডাটা টাইপ অভাবে. বিশেষ করে, আমরা এখানে দেখব যদি, আপনি এই, আমরা বারবার দেখতে পাবেন ক্ষেত্রে, 1 থেকে 7 মাধ্যমে আপ. আমরা এটা 0 সূচক কাজ করে থাকতে পারে. তবে কখনও কখনও, আমি এটা মনে করি জিনিস সম্পর্কে চিন্তা মানসিকভাবে সহজ 1 থেকে 7. আপনি এক ব্লক চান, তাহলে দুই ব্লক, তারপর তিন তারপর, বিন্দু, বিন্দু, সাত বিন্দু. আমরা 1 থেকে ঞ সক্রিয়া করা হচ্ছে আছে এবং তারপর আমি পর্যন্ত গণনা করা. এবং এখানে সবকিছু অন্যথায় অভিন্ন. কিন্তু নোট যোগ্য জিনিষ কয়েক. আমরা আশা করি আপনি এই দুটি লাইন, এই প্রথম দিতে goofily একটি কুঁড়েঘর হিসাবে নামকরণ এক, ধারালো ঠুং জন্য. এবং যে মাত্র পথ নির্দিষ্ট করে, একটি প্রোগ্রাম হতে পারে যার মাধ্যমে ফোল্ডার, আপনি ব্যবহার করতে চান যে পাওয়া এই ফাইলের ব্যাখ্যা করা. এবং এর পরে যে তারপর লাইন, অবশ্যই, পিএইচপি মোডে প্রবেশ করে. আর খুব নীচে লাইন প্রস্থানের পিএইচপি মোড মানে. এবং এই সঙ্গে, সাধারণভাবে, কাজ করে ভাষায় ব্যাখ্যা. আপনি লিখুন যদি এটা কোন ধরনের বিরক্তিকর একটি foo.php নামক একটি ফাইলে প্রোগ্রাম. এবং তারপর আপনার ব্যবহারকারী আছে শুধু এই প্রোগ্রামটি চালানোর জন্য, ঠিক আছে, মনে রাখবেন আমি টাইপ করতে হবে "পিএইচপি স্থান foo.php." প্রকার অন্য কিছুই যদি বিরক্তিকর হাজার. এবং এটি প্রকাশ করে যে আপনার প্রোগ্রাম সব না, যা পিএইচপি, করা হবে না যে ব্যবহারকারীর জন্য আলোকজ্জ্বল. সুতরাং আপনি পুরাপুরি. পিএইচপি সরাতে পারেন বক্তৃতা থেকে প্রত্যাহার. এবং আপনি আসলে. / Foo বিন্যাস করতে পারেন আপনি এটা করে এটা chmodded করেছি এক্সিকিউটেবল. সুতরাং chmod a + x এর foo বিন্যাস যে কাজ করে. এবং আপনি কুঁড়েঘর এখানে যোগ করুন. কিন্তু সত্যিই, সমস্যা এ পেয়ে ছিল ভালো কিছু মুদ্রণ. কোন এইচটিএমএল, অবশ্যই কোন সি কোড, কিছু কিছু পিএইচপি. সুতরাং Milo তাহলে সমস্যা 25 সালে ফিরে আসেন. এবং 25 এর মধ্যে, আপনি নিম্নলিখিত দেওয়া হয় একটি যা ছিল কঙ্কাল কোড, বেশ সহজ ওয়েব পেজ. এবং সরস অংশ এইচটিএমএল জিনিস নিচে ছিল এখানে, আমরা শরীরের ভিতর আছে যেখানে ইনপুট অনন্য আইডি আছে যা ফর্ম যার ভেতরে দুটি ইনপুট, এক নাম, এক একটি ধারণা দিয়ে বাটন একটি ধারণা দিয়ে. প্রথমত, টাইপ লেখা ছিল টাইপ দ্বিতীয় জমা. এবং তাই আমরা, আসলে, আরো আপনি দিয়েছেন আপনি ঠিক তাই, প্রয়োজন ছাড়া উপাদানগুলো আপনাকে বলছি যা দিয়ে বিকল্প ছিল এই সমস্যা সমাধানের জন্য. আপনি কঠোরভাবে প্রয়োজন নেই এই ID-গুলির সব. কিন্তু এটি আপনি সমাধান করতে পারবেন এটা বিভিন্ন উপায়ে. তখন পর্যন্ত শীর্ষে, লক্ষ্য করা যে উদ্দেশ্য ট্রিগার ছিল এই মত একটি উইন্ডো - হ্যালো, Milo! - ব্যবহার করে ব্রাউজারে পপ আপ যদি সুপার সহজ কুশ্রী না, সতর্কতা ফাংশন. এবং তাই, শেষ পর্যন্ত, এই নিচে boils ধারণার দিক থেকে একরকম জন্য শোনা ফর্ম ক্লায়েন্ট প্রান্তের মধ্যে জমা একরকম নয় সার্ভার সাইড, দ্বারা যে জমা সাড়া ব্যবহারকারী টাইপ করা যে মান দখল নামের ক্ষেত্রে সালে, এবং তারপর একটি সতর্কতা শরীরের মধ্যে এটি প্রদর্শন. তাই আপনি এটা করতে পারেন একটি উপায় সাথে আছেন একটু দেখায় যা jQuery, প্রথমে চিহ্নগুলি সিন্টেক্সের হতবুদ্ধিকর. আপনি বিশুদ্ধ DOM কোড দিয়ে এটা করতে পারেন - আইডি দ্বারা document.getelement. কিন্তু এর এই সংস্করণ কটাক্ষপাত করা যাক. আমি গুরুত্বপূর্ণ একটি দম্পতি আছে লাইনের প্রথমে. তাই এক, আমরা, যা এই লাইনে আছে আপনি দেখা হয়ে থাকতে পারে তার সাথে অভিন্ন আমি বিশ্বাস করি, এ, form2.html সপ্তাহে 9 বর্গ থেকে. এবং এই মাত্র চালানো, বলছে না নিম্নলিখিত কোড যখন নথি প্রস্তুত. এটি গুরুত্বপূর্ণ হচ্ছে একমাত্র কারণ এইচটিএমএল পৃষ্ঠাসমূহ উপরে পড়তে হয় ডানে বামে নীচে,. আর তাই, আপনি যা করতে চেষ্টা যদি কিছু DOM পর্যন্ত এখানে কোডের কিছু উপাদান, কিছু এইচটিএমএল ট্যাগ, যে এর নিচে এখানে, আপনি খুব তাড়াতাড়ি এটা করছেন, এই না এমনকি কারণ মেমরিতে পড়তে হয়েছে. তাই এই document.ready বলে লাইন, আমরা বলছে, এখানে কিছু কোড, ব্রাউজার এর. কিন্তু পুরো না হওয়া পর্যন্ত এই চালানো না নথি প্রস্তুত, যে DOM হয় গাছ মেমরির মধ্যে বিদ্যমান. এই এক একটু বেশি হয় চিহ্নগুলি সিন্টেক্সের একটি যদি সহজবোধ্য কিছুটা আলাদা, আমি বলছে করছি যেখানে, অর্থগৃধ্নু যার অনন্য এইচটিএমএল এলিমেন্ট আইডেন্টিফায়ার ইনপুট হয়. এটা কি হ্যাশ ট্যাগ এর , অনন্য আইডি উল্লেখ করে. এবং তারপর আমি আহ্বান করছি. জমা. তাই. এখানে জমা একটি ফাংশন নিয়োগ, হয় একটি পদ্ধতি হিসাবে পরিচিত, যে বাম হাত বস্তুর ভিতর আমি হাইলাইট না যে সেখানে দিকে. আপনি একটা অবজেক্ট হিসাবে ইনপুট মনে তাই যদি মেমরি - এবং প্রকৃতপক্ষে এটা. এটি একটি গাছ একটি নোড আছে - . অর্থ জমা হলে এই ফর্ম সঙ্গে এই আইডি জমা হয়, চালানো নিম্নলিখিত কোড. আমি না যত্ন কি নাম ফাংশন আমি নির্বাহ করছি না. তাই এখানে আমি কি, হিসাবে আগে, ব্যবহার করছি ল্যামডা ফাংশন বা বলা বেনামী ফাংশন. এটা এ সব বুদ্ধিমত্তা না এটা কোন নাম আছে আকর্ষণীয় অন্যান্য তুলনায়, আপনি শুধুমাত্র হন তাহলে জরিমানা যা কখনো এটি একবার ফোন করতে যাচ্ছেন. আর ভিতরে আছে আমি আসলে সব ব্যবস্থা ফর্ম জমা. আমি প্রথম একটি ভেরিয়েবল ডিক্লেয়ার মূল্য বলা হয়. এবং তারপর এই প্রভাব কি এখানে অংশ এখন হাইলাইট? এমন একটি সময়ে কী কাজ করে আমার জন্য উচ্চ পর্যায়ের? AUDIENCE: এটা মূল্য পায় ব্যবহারকারী নিচের HTML-এ না. এর পরে যে আইডি পায় এবং এটা মান খুঁজে বের করে. ডেভিড জে MALAN: যথাযথভাবে. এটা যার অনন্য, নোড grabs আইডেন্টিফায়ার নাম. এটা তাহাতে মূল্য পায় যা হয়, সম্ভবতঃ, কি ইউজার তাকে বা নিজেকে টাইপ করা. এবং তারপর এটা সঞ্চয় করে যে এ পরিবর্তনশীল মূল্য বলা হয়. একটি সরাইয়া হিসাবে, আপনি হতে পারে একটু ভিন্নভাবে এই কাজ. কিছু করে পুরোটাই গ্রহণযোগ্য মিথ্যা var মূল্য পায় document.getElementById. এটা একটু কেন এবং এই হল jQuery ব্যবহার না করার ক্লান্তিকর. "নাম". মান. তাই পুরোপুরি গ্রহণযোগ্য. এটি করার বিভিন্ন উপায়. jQuery শুধু একটু বেশি সংক্ষিপ্ত ও হতে থাকে স্পষ্টভাবে আরো জনপ্রিয় প্রোগ্রামারদের মধ্যে. এখন, আমি একটি মানসিক সুস্থতা কোনো কিছু করছি কারণ সমস্যা, চেক বিবৃতিতে আমরা স্পষ্টভাবে বলেন, যদি ব্যবহারকারী এখনো টাইপ করা হয় নি তার একটি সঙ্কেত দেখাতে না, নাম দিন. কিন্তু আপনি শুধু দ্বারা, যে জন্য পরীক্ষা করতে পারবেন একটি জন্য খালি স্ট্রিং জন্য চেক আছে যদি মূল্যউদ্ধৃতি-উদ্ধতি আসলে সেখানে কিছুই. কিন্তু এটা মূল্যউদ্ধৃতি-উদ্ধতি সমান না হলে, আমি সতর্কতা কল করতে চান. এবং এখানে আকর্ষণীয় অংশ হল যে আমরা, প্লাস অপারেটর ব্যবহার করছেন যা জাভাস্ক্রিপ্ট কি করে? কনক্যাটেনেট. সুতরাং PHPs ডট অপারেটর মত. একই ধারণা, কিছুটা ভিন্ন সিনট্যাক্স. আর আমি শুধু স্ট্রিং তৈরি করছি আপনি স্ক্রিন শট নেভিগেশন দেখেছি - হ্যালো, তাই এবং তাই. এবং তারপর শেষ বিস্তারিত এই হয়. কেন আমি মিথ্যা ভিতরে ফিরে না এই বেনামী ফাংশন? AUDIENCE: কোন মূল্য নেই. আপনি আকারে লাগাতে হবে. মূল্য না যদি এটা ঠিক বলেছেন, ফাঁকা সমান, তাহলে এটা. যে জমা একটি ফাঁকা ছিল. ডেভিড জে MALAN: ঠিক আছে. যদিও সতর্ক. এখানে কোন কেউ আছে. এবং যে ফিরতি মিথ্যা বাইরে শর্ত যদি এর. তাই এই, মিথ্যা ফিরে, লাইন হাইলাইট কোন ব্যাপার কি যখন executes ফর্ম জমা হয়. কি এই মিথ্যা ভিতরে ফিরে না বলা এর হিসাবে ইভেন্ট হ্যান্ডলার,, প্রশ্নে ইভেন্ট জমা হচ্ছে? AUDIENCE: কারণ এটি শুধুমাত্র একবার ঘটবে. ডেভিড জে MALAN: শুধু একবার ঘটবে. নেই বেশ. হাঁ? AUDIENCE: এটা থেকে ফর্ম বাধা ডিফল্ট আচরণ জমা পাতা পুনঃ লোড করা হবে. ডেভিড জে MALAN: যথাযথভাবে. তাই আমি শব্দটি এখানে জমা ওভারলোডিং করছি আমি বলছে করছি, কারণ ফর্ম জমা হচ্ছে. আপনি সুপারিশ হিসাবে কিন্তু, এটি আসলে না সত্য HTTP-ভাবে জমা দেওয়া. আপনি কারণ এর, জমা ক্লিক করুন যখন আমাদের onSubmit হ্যান্ডলার, আমরা আটকাচ্ছে করছি যে ফর্ম জমা তাই কথা বলতে. আমরা তখন আমাদের জিনিস করছেন জাভাস্ক্রিপ্ট কোড দিয়ে. কিন্তু আমি ইচ্ছাকৃতভাবে মিথ্যা ফেরত দিচ্ছি আমি ঘটতে দিতে চান না কি কারণ একটি বিভক্ত দ্বিতীয় পরে পুরো ফর্ম জন্য হয় নিজেই ওয়েব জমা করা পরিবর্তন করে কী মান জোড়া দিয়ে সার্ভার ভালো কিছু হতে ইউআরএল Q = বিড়াল বা যাই হোক না কেন আমরা কি, উদাহরণস্বরূপ, ক্লাসে. আমি যে ঘটতে করতে চান না, কারণ এই জন্য কোন সার্ভারের শোনা আছে জমা গঠন করে. এটা কেবল জাভাস্ক্রিপ্ট কোডের কাজ. আমি এমনকি ছিল না কেন এবং যে একটি কর্ম, আমার ফর্মে বৈশিষ্ট্যাবলী কারণ আমি এই জন্য মনস্থ না কখনও সার্ভার যান. সুতরাং এটি জমা দেওয়া হচ্ছে. কিন্তু আমরা যে ফর্ম আটকাচ্ছে করছি জমা এবং ডিফল্ট বাধা আসলে যা আচরণ, সব পথ সার্ভার যান. AUDIENCE: সুতরাং ক্লায়েন্ট প্রান্তের পালন. ডেভিড জে MALAN: কিপিং এটি ক্লায়েন্ট প্রান্তের. ঠিক ঠিক. পরবর্তী আপ মাইএসকিউএল ওহ আমার ছিল. Rob Bowden: ঠিক আছে. তাই এই প্রথম প্রশ্ন সাধারণত ছিল মানুষের জন্য রুক্ষ. পরে বেশী ভাল গিয়েছিলাম যদিও. সুতরাং আপনি সঠিক তথ্য চয়ন ছিল এই কলাম উভয়ের জন্য ধরনের. আর এই দুটি কিছু আছে তাদের বিষয়ে জিনিস যে পছন্দ কঠিন করা. সুতরাং int-বৈধ ছিল না সংখ্যার জন্য টাইপ করুন. একটি 12 অঙ্ক একাউন্ট হচ্ছে কারণ সংখ্যা, কোন int বড় যথেষ্ট নয় মোট সংখ্যা সঞ্চয়. সুতরাং একটি বৈধ পছন্দ বড় হত আপনি কি জানেন যে ঘটতে যদি int. আরেকটি পছন্দ হয়েছে পারে দৈর্ঘ্য 12 একটি গৃহস্থালি ক্ষেত্র. তাই যারা এর উভয় কাজ করে. আন্তর্জাতিক করা হবে না. এখন, ভারসাম্য, ফিরে pset7 মনে. তাই আমরা বিশেষভাবে যাও দশমিক ব্যবহৃত শেয়ার বা মান সংরক্ষণ - ডেভিড জে MALAN: ক্যাশ. Rob Bowden: ক্যাশ. আমরা পরিমাণ সংরক্ষণ দশমিক ব্যবহৃত ব্যবহারকারী বর্তমানে যে নগদ. সুতরাং আমরা যে কি কারণ মনে রাখবেন, কারণ, floats. শব্দবাহুল্যহীনতা মধ্যে ফ্লোটিং পয়েন্ট আছে. এটা স্পষ্ট করে নগদ সংরক্ষণ করতে পারবেন না আমরা ভালো মানের এখানে চাই. সুতরাং দশমিক অবিকল দোকান করতে পারবেন , বলতে কিছু, দুই দশমিক স্থান. ভারসাম্য, আমরা তা চাই এটা কেন ভাসা দশমিক এবং না করা. ডেভিড জে MALAN: এবং এছাড়াও, খুব, যদিও এটি অন্যান্য মধ্যে চতুর হয়েছে পারে ভাবতে প্রেক্ষিতে হয়তো, এই কোন int জন্য একটি সুযোগ. আমি শুধু ট্র্যাক রাখতে পাবেন পেনিসমূহ অনেক কিছু. আমরা স্পষ্টভাবে ডিফল্ট দেখিয়েছেন কারণ , 100.00 হচ্ছে মূল্য যে এটা কোন int হতে পারে মানে. এবং খুব নম্বর দিয়ে অন্য তনিমা এটা বোঝানো যে ছিল একটি কৌতুক প্রশ্ন করা. কিন্তু প্রত্যাহার যে মাইএসকিউএল মধ্যে কোন int, যেমন সি, অন্তত এ প্রয়োগ, 32 বিট. এবং আমরা আপনাকে আশা করবেন না, যদিও জানেন ঠিক কত ডিজিটের যে মানে, প্রত্যাহার যে বৃহত্তম সংখ্যা আপনি সম্ভাব্য উপস্থাপন করতে পারেন একটি 32 বিট সংখ্যা সঙ্গে মোটামুটিভাবে কি? আমরা সবসময় কি নম্বর বলে? 2 কি প্রায়, যা 32 থেকে? আপনি অবিকল জানা নেই. কিন্তু প্রায় জীবনে সহায়ক. এটা প্রায় 4 বিলিয়ন এর. তাই আমরা কয়েক বার বলেন করেছি. আমি জানি আমি যে কয়েক বার বলেন. এবং এটা প্রায় 4 বিলিয়ন. এবং যে একটি ভাল নিয়ম চলতি জানা. আপনি 8 বিট, 256 থেকে থাকে ম্যাজিক সংখ্যা. আপনি 32 বিট, 4 আছে বিলিয়ন বা দিতে নিতে. তাই আপনি শুধু নিচে 4 বিলিয়ন লিখতে হলে, আপনি এটি কম ডিজিটের যে দেখতে পাবেন যে স্পষ্ট নয় যার মানে 12, ক্যাপচার যথেষ্ট expressiveness একটি 12 অঙ্ক একাউন্ট নম্বর. Rob Bowden: ঠিক আছে. তাই অন্যান্য বেশী ভাল গিয়েছিলাম. তাই অনুমান যে ব্যাংক একটি $ 20 মাসিক imposes সব অ্যাকাউন্ট রক্ষণাবেক্ষণ ফি. কি এসকিউএল কোয়েরি পারা ব্যাংকের সঙ্গে এমনকি যদি প্রতি গণনা থেকে $ 20 কেটে নেওয়া এটা কিছু নেতিবাচক ব্যালেন্স ফলাফল? তাই মূলত, চার আছে অনুসন্ধান প্রধান ধরনের - , সন্নিবেশ নির্বাচন করুন, আপডেট, এবং মুছে দিন. তাই আমরা যদি আমরা পারব কি মনে করেন এখানে ব্যবহার করা যাচ্ছে? আপডেট করুন. সুতরাং আসুন একবার দেখে নেয়া যাক. তাই আমরা এখানে আপডেট করছি. কি টেবিল আমরা অ্যাকাউন্ট আপডেট করা হয়? সুতরাং অ্যাকাউন্ট আপডেট. এবং তারপর বাক্য গঠন, কি বলছেন অ্যাকাউন্টের মধ্যে আমরা আপডেট করা হয়? ভাল, আমরা সমান ভারসাম্য নির্ধারণের করছি ভারসাম্য বিয়োগ 20 বর্তমান মূল্য. তাই এই সব সারি আপডেট হবে অ্যাকাউন্টের, subtracting ব্যালেন্স থেকে $ 20. ডেভিড জে MALAN: এখানে একটি সাধারণ ভুল, আমরা কখনও কখনও এটি forgave, যদিও আসলে এখানে পিএইচপি কোড আছে ছিল প্রশ্নের সাথে ফাংশন কলিং বা নির্বাণ সবকিছু প্রায় কোট যে সেখানে হতে হবে না. Rob Bowden: মাইএসকিউএল যে মনে রাখুন পিএইচপি থেকে পৃথক ভাষা. আমরা পিএইচপি মাইএসকিউএল লেখা হতে ঘটেছে. এবং পিএইচপি তাহলে এটি পাঠাচ্ছে মাইএসকিউএল সার্ভার থেকে বেশি. যাতে তবে আপনি যদি পিএইচপি দরকার নেই একটি মাইএসকিউএল সার্ভার এর সাথে যোগাযোগ. ডেভিড জে MALAN: যথাযথভাবে. ডলার চিহ্ন দিয়ে তাই কোন ভেরিয়েবল এই প্রেক্ষাপটে হওয়া উচিত. এটা ঠিক গণিত সব করতে পারেন ডাটাবেসের মধ্যে নিজে. Rob Bowden: ঠিক আছে. সুতরাং পরের এক. এই পরের এক হয়? হ্যাঁ. কি এসকিউএল কোয়েরি পারা ব্যাংকের সঙ্গে তাই তার হিসাব নম্বর উদ্ধার ধনী গ্রাহকদের, যাদের 1,000 থেকে বড় ভারসাম্যকে? তাই চারটি প্রধান ধরণের মধ্যে যা আমরা এখানে চান যাচ্ছে? নির্বাচন করুন. তাই আমরা নির্বাচন করতে চান. আমরা কি নির্বাচন করতে চান? আমরা নির্বাচন করতে কি কলামের চান? আমরা বিশেষভাবে চান নম্বর নির্বাচন করুন. কিন্তু আপনি তারকা, আমরা বলেন, যদি এছাড়াও যে স্বীকার করেছে. তাই টেবিল থেকে সংখ্যা নির্বাচন? অ্যাকাউন্ট. এবং তারপর আমরা শর্ত চান? কোথায় 1,000 থেকে বড় ভারসাম্য. আমরা বৃহত্তর গৃহীত বেশী বা সমান. গত এক. কি এসকিউএল কোয়েরি পারা ব্যাংকের সঙ্গে বন্ধ, অর্থাত, প্রতি একাউন্ট মুছে যে $ 0 একটি ভারসাম্য আছে? তাই চার যা আমরা ব্যবহার করতে চান যাচ্ছে? তাদের এক্সেস আছে. সুতরাং যে জন্য সিনট্যাক্স? কি টেবিল থেকে মুছবেন? অ্যাকাউন্ট. এবং তারপর অবস্থা যা আমরা মুছে ফেলতে চান - ব্যালেন্স শূন্য সমান যেখানে. সুতরাং অ্যাকাউন্ট থেকে সব সারি মুছে দিন ব্যালেন্স শূন্য হয় যেখানে. এর মধ্যে যে কোনো প্রশ্ন? কিউ চান? ডেভিড জে MALAN: সারি গাইড. সুতরাং এই এক, আমরা আপনাকে একটি কিছুটা দিয়েছেন আমরা একটি অন্বেষণ যে পরিচিত গঠন structs এর পাশাপাশি ক্লাসে বিট, একটি তথ্য, যা ছিল আত্মা সম্পর্কিত কাঠামো. একটি কিউ সাথে যদিও পার্থক্য আমরা একরকম মনে রাখা ছিল যারা বৃহৎ এ, কিউ সামনে ছিল আমরা আরো করতে পারে অংশ যাতে মেমরি দক্ষ ব্যবহার, অন্তত আমরা একটি অ্যারে ব্যবহার করা হয়েছে কিনা. কারণ রিকল, আমরা একটি অ্যারে আছে, যদি, উদাহরণস্বরূপ, এই সামনে হয় কিউ, আমি এখানে কিউ মধ্যে পেতে হলে, এবং তারপর কেউ লাইনে পায় আমার পিছনে আমার পিছনে আমার,,, এবং পিছনে এক ব্যক্তি লাইন আউট ধাপ, আপনি পারা, আমরা আমাদের মানবিক কিছু দেখেছি ক্লাসে স্বেচ্ছাসেবী, সবাই আছে এই ভাবে নামান. তবে সাধারণভাবে, সবাই কি হচ্ছে কিছু সময়ের সর্বোত্তম ব্যবহার হয় না একটি প্রোগ্রাম, কারণ এটা মানে আপনার অ্যালগোরিদম কি চলমান asymptotic চলমান সময়? এটা রৈখিক এর. যে মূঢ় ধরনের মত আর আমি মনে. লাইন পরবর্তী ব্যক্তির পাশে থাকলে মধ্যে যেতে অনুমিত এর যে ব্যক্তি দোকান, তারা সব হবে না একসঙ্গে সরাতে. শুধু যে ব্যক্তি বন্ধ অনুত্তীর্ণ করা যাক সময় উদাহরণস্বরূপ, আসে. তাই আমরা সেখানে সময় একটি বিট সংরক্ষণ করতে পারবেন. আর তা করার যে যদিও, যে উপায়ে যে কিউ প্রধান বা কিউ সামনে যাচ্ছে কার্যক্রমে গভীর এবং গভীর সরাতে অ্যারের মধ্যে এবং শেষ পর্যন্ত বল আমরা একটি ব্যবহার করছেন আসলে চারপাশে মোড়ানো মানুষ সংরক্ষণ অ্যারের এই সারিতে. তাই আপনি প্রায় মনে করতে পারেন একটি বিজ্ঞপ্তি তথ্য হিসাবে অ্যারের যে অর্থে গঠন. তাই আপনি যদি একরকম রাখা আছে এটা মাপ বা তা সত্যিই শেষ এবং তারপর এটি শুরুতে যেখানে. সুতরাং আমরা আপনাকে ঘোষণা করে যে প্রস্তাব এক ধরনের কিউ, কলিং এটা প্রশ্ন, শুধু একটা চিঠি. তারপর আমরা সামনে থাকা যে প্রস্তাব শূন্য এবং যে সক্রিয়া আকার শূন্য সক্রিয়া করা. তাই ঠিক এখন, কিছুই নেই যে কিউ ভেতরে. এবং আমরা সম্পন্ন করার অনুরোধ এ নিচে সারিবদ্ধ বাস্তবায়ন ফাংশন এন যোগ করে এমনভাবে যে তাহলে প্রশ্ন শেষ এবং সত্য ফেরৎ. কিন্তু প্রশ্ন সম্পূর্ণ বা নেতিবাচক হয়, ফাংশন পরিবর্তে মিথ্যা ফেরত পাঠাবেন. এবং আমরা আপনাকে দুয়েক দিয়েছেন অনুমানগুলোর. কিন্তু তারা সত্যিই বৈশিষ্ট্যগুলি পারব না প্রাসঙ্গিক, ঠিক সেই bool, বিদ্যমান টেকনিক্যালি, bool আছে না, কারণ আপনি অন্তর্ভুক্ত যদি না সি অস্তিত্ব একটি নির্দিষ্ট হেডার ফাইল. সুতরাং যে ঠিক নিশ্চিত সেখানে করা হয়েছিল কোন এই একটি কৌতুক হয় আর প্রশ্ন ধরনের. তাই সারিবদ্ধ, আমরা নমুনা এ প্রস্তাব নিম্নরূপ সমাধান বাস্তবায়ন. এক, আমরা প্রথম স্বচ্ছন্দে চেক, কম ঝুলন্ত ফল. কিউ পূর্ণ অথবা নম্বর থাকলে যে আপনি সন্নিবেশ করার চেষ্টা করছেন কম আমরা এ খবর জানায় যা শূন্য, আর সমস্যা নির্দিষ্টকরণ উচিত আমরা কেবল চান, কারণ, অনুমতি দেওয়া হবে না অ ঋণাত্মক মান, তাহলে উচিত শুধু অবিলম্বে মিথ্যা ফিরে. তাই কিছু তুলনামূলকভাবে সহজ পরীক্ষণের ত্রুটি. আপনি যে প্রকৃত যোগ করতে চান, যদিও যদি সংখ্যা, আপনি কোনো কিছু কি ছিল এখানে চিন্তা. এটা একটু বিরক্তিকর যেখানে এবং এই হল মানসিকভাবে, আপনি আছে কারণ wraparound হ্যান্ডেল চিন্তা কিভাবে. কিন্তু ধারণা জীবাণু এখানে যে এর আমাদের কাছে সুদের যে wraparound হয় প্রায়ই মডুলার এরিথমেটিক বোঝা এবং mod অপারেটর, শতাংশ পাশ, আপনি একটি বড় মূল্য থেকে যেতে পারেন যেখানে ফিরে শূন্য এবং তারপর এক এবং দুই এবং তিনটি এবং তারপর ফিরে প্রায় শূন্য, এক এবং দুই এবং তাই ঘোষণা তিনটি এবং আবার এবং আবার. সুতরাং আমরা এই কাজ প্রস্তাব উপায় আমরা মধ্যে সূচক চান যে নম্বর কোথায় বলা অ্যারে আমাদের ইন্টিজার থাকা. কিন্তু সেখানে পেতে, আমরা প্রথম কাজ করতে চান কিউ মাপ কিন্তু যাই হোক না কেন তারপর যে যোগ যাই হোক না কেন তালিকার সামনে হয়. এবং যে প্রভাব আমাদের রাখা হল ডান সারিতে অবস্থান এবং ধরে নিই না যে লাইনে প্রথম ব্যক্তি প্রারম্ভে হয়, যা তিনি বা সে একেবারে হতে পারে যদি আমরা এছাড়াও প্রত্যেকের নাড়াচাড়া করা হয়. কিন্তু আমরা শুধু কাজ তৈরি করছেন নিজেদের জন্য আমরা গ্রহণ করলে যে বিশেষ পথ. সুতরাং আমরা অপেক্ষাকৃত সহজ এটা রাখতে পারেন. আমরা স্মরণ করতে পারি যে আমরা ঠিক সারিতে কোন int যোগ. এবং তারপর আমরা শুধু সত্য ফিরে. এদিকে, dequeue, আমরা জিজ্ঞাসা আপনি নিচের কাজগুলো করতে. এমনভাবে তা বাস্তবায়ন যে এটি dequeues, যে, মুছে ফেলা হবে এবং আয় হয় কিউ সামনে এ কোন int. Int-মুছে ফেলার জন্য, এটা যথেষ্ট এটা ভুলে যাওয়া. আপনি তার বিট অগ্রাহ্য করার দরকার নেই. সুতরাং এটা আসলে সেখানে এখনও আছে. শুধু একটি হার্ড ড্রাইভের তথ্য মত, আমরা আসলে উপেক্ষা করছি এটা সেখানে এখন যে. ফ খালি এবং, যদি আমরা উচিত পরিবর্তে নেতিবাচক 1 ফিরে. তাই এই অবাধ মনে. কেন নেতিবাচক 1 ফিরে পরিবর্তে মিথ্যা এর? হ্যাঁ. AUDIENCE: প্রশ্ন সংরক্ষণকারী হয় ধনাত্মক মান. আপনি শুধুমাত্র ইতিবাচক মান সংরক্ষণ সাল প্রশ্ন করে, নেতিবাচক একটি ত্রুটি হয়. ডেভিড জে MALAN: ঠিক আছে, সত্য. আমরা শুধুমাত্র ইতিবাচক সংরক্ষণ করছেন তাই, কারণ মান অথবা শূন্য তারপর, এটা করার জন্য জরিমানা একটি প্রহরী হিসাবে একটি নেতিবাচক মান প্রত্যাবর্তন মান, একটি বিশেষ চিহ্ন. কিন্তু আপনি, আছে ইতিহাস rewriting করছি কারণ আমরা কেবল করছি কারণ অ ঋণাত্মক মান ফিরে আমরা চাই, কারণ হল একটি সেন্সিনেল মূল্য আছে. তাই আরো নির্দিষ্টভাবে, কেন ঠিক না ত্রুটি ক্ষেত্রে মিথ্যা ফিরে? হ্যাঁ. AUDIENCE: আপনি ব্যর্থ করেছি একটি পূর্ণসংখ্যা ফিরে. ডেভিড জে MALAN: যথাযথভাবে. সি পায় কোথায় এবং এই হল বেশ constraining. আপনি চলুন বলছে করছি কোন int ফিরে যাও, আপনি পেয়েছেন কোন int ফিরে যাও. আপনি অভিনব পেতে এবং ফিরে শুরু করতে পারবেন না একটি bool বা একটি float অথবা একটি স্ট্রিং বা যে ভালো কিছু. এখন এদিকে, জাভাস্ক্রিপ্ট এবং পিএইচপি এবং অন্য ভাষায় যা করতে পারেন, আসলে, আপনি বিভিন্ন ফিরে আছে মান ধরন. এবং যে আসলে, উপযোগী হতে পারে যেখানে আপনি ইতিবাচক ints, শূন্য ফিরে আসতে পারে, নেতিবাচক ints, বা মিথ্যা বা নাল এমনকি ত্রুটির বোঝান. কিন্তু আমরা নেই সি বহুমুখিতা সুতরাং dequeue সঙ্গে, আমরা কি হয় কি উত্থাপন - Rob Bowden: আপনি মিথ্যা ফিরে আসতে পারেন. এটি হ্যাশ শুধু যে মিথ্যা হচ্ছে শূন্য মিথ্যা নির্ধারণ করুন. সুতরাং আপনি মিথ্যা ফিরে যদি, আপনি শূন্য ফিরে করছি. এবং শূন্য, আমাদের কিউ 'র মধ্যে একটি বৈধ বিষয় নেতিবাচক 1 নয়, যেহেতু যদি মিথ্যা নেতিবাচক 1 হতে ঘটেছে. কিন্তু আপনি এমন কি না করা উচিত যে জানা প্রয়োজন. ডেভিড জে MALAN: এটা কেন আমি এটা বলতে হয়নি. Rob Bowden: কিন্তু এটা সত্য ছিল না আপনি মিথ্যা ফিরে যাবে না. ডেভিড জে MALAN: শিওর. সুতরাং dequeue, আমরা স্বীকার লক্ষ্য তার যুক্তি হিসেবে বাতিলযোগ্য. আমরা পারব না, কারণ এবং যে ইন কিছু ক্ষণস্থায়ী আমরা শুধু উপাদান সরাতে চান কিউ সামনে এ. তাই কিভাবে আমরা এই কাজ সম্পর্কে যেতে পারে? ওয়েল, প্রথমত, এর এই না দেওয়া দ্রুত বৈধতা পরীক্ষা. কিউ সাইজ 0 হয়, আছে কাজ করতে হবে কোন কাজ. 1 নেতিবাচক ফিরুন. সম্পন্ন. সুতরাং যে আমার প্রোগ্রাম একটি কয়েক লাইন. তাই মাত্র চারটি লাইন থাকা. তাই এখানে আমি হ্রাস করার সিদ্ধান্ত সাইজ. এবং কার্যকরভাবে আকার decrementing আমি বিস্মরণ করছি যে মানে কিছু আছে হয়. কিন্তু আমি আরো আপডেট করার জন্য আছে যেখানে নম্বর সামনে হয়. সুতরাং যে কি, আমি প্রয়োজন দুটি কিছু করার. আমি প্রথম কি নম্বর মনে রাখা প্রয়োজন কিউ সামনে এ হয়, আমি যে জিনিস ফিরে প্রয়োজন কারণ. তাই আমি ঘটনাক্রমে ভুলে না চান এটি সম্পর্কে এবং তারপর মুছে ফেলা. আমি কোন int মধ্যে মনে রাখা যাচ্ছে না. এবং এখন, আমি আপডেট করতে চান q.front: +1 q.front হবে. এই প্রথম ব্যক্তি ছিল তাই যদি লাইন, এখন, আমি করতে প্লাস 1 কাজ করতে চান লাইন পরবর্তী ব্যক্তি এ নির্দেশ. কিন্তু আমি যে wraparound সব ব্যবস্থা আছে. এবং ক্ষমতা একটি আন্তর্জাতিক ধ্রুবক যদি, যে আমাকে নিশ্চিত করার অনুমতি প্রদান করে যাচ্ছে আমি খুবই শেষ ব্যক্তি নির্দেশ হিসেবে লাইন, modulo অপারেশন আনা হবে এ শূন্য আমার ফিরে কিউ সামনে. এবং যে এখানে wraparound পরিচালনা. এবং তারপর আমি এন ফিরে এগিয়ে যান. এখন, কঠোরভাবে বলতে, আমি না এন ডিক্লেয়ার করা আছে. আমি এটি দখল এবং এটি সংরক্ষণ করতে হত না সাময়িকভাবে, মূল্য, কারণ এখনও আছে. তাই আমি শুধু সঠিক গাণিতিক যেত না সাবেক প্রধান ফেরত কিউ. কিন্তু আমি শুধু এই আরো পরিষ্কার ছিল যে অনুভূত আসলে int-দখল, এটা করা এন মধ্যে, এবং তারপর যে ফিরে স্বচ্ছতা দোহাই জন্য কিন্তু কঠোরভাবে প্রয়োজন নেই. চুপ. তারা সব আমার মাথা উচ্চারণযোগ্য করছি. Rob Bowden: তাই প্রথম প্রশ্ন বাইনারি ট্রি সমস্যা. তাই প্রথম প্রশ্ন আমরা করছি, হয় এই সংখ্যার দেওয়া. এবং আমরা একরকম সেগুলি সন্নিবেশ করতে চান এই নোডের এটা যে এই ধরনের একটি বৈধ বাইনারি অনুসন্ধান বৃক্ষ. তাই এক জিনিস সম্পর্কে মনে রাখা বাইনারি অনুসন্ধান বৃক্ষ এটা না করে ঠিক যে বাঁদিকে জিনিস কম এবং জিনিস অধিকার বেশী. এটা করা প্রয়োজন যে সমগ্র গাছ বাম কম, এবং পুরো ট্রি অধিকার বেশী. আমি তারপর উপরের এখানে 34 করা, এবং যদি তাই হয় আমি এখানে 20 করা, যাতে যাতে বৈধ না এ পর্যন্ত, কারণ 34 এখানে আপ. 20 বাম যাচ্ছে. সুতরাং যে কম এর. কিন্তু আমি তখন এখানে 59 করা যাবে না, কারণ 59 20 ডানদিকে হয়, যদিও এটি 34 এর বাম এখনও. মন যে বাধ্যতা সঙ্গে সুতরাং, সম্ভবত এই সমাধানের সবচেয়ে সহজ উপায় সমস্যা শুধু সাজানোর এই সংখ্যার - তাই 20, 34, 36, 52, 59, 106. এবং তারপর যারা সন্নিবেশ বাম থেকে ডানে. তাই 20 এখানে যায়. 34 এখানে যায়. 36 এখানে যায়. 52, 59, 106. এবং আপনি সঙ্গে মূর্ত করতে পারে কিছু প্লাগিং এবং বুঝতে, ওহ, আমি যথেষ্ট নম্বর না থাকে, অপেক্ষা করুন এখানে উপর এই পূরণ. তাই আমি reshift প্রয়োজন আমার রুট নোট হতে যাচ্ছে. কিন্তু, যদি চূড়ান্ত তিনটি নোটিশ বাঁ দিক থেকে ডানদিকে আপনি পড়তে, এটা হয় ক্রমবর্ধমান অর্ডার. সুতরাং এখন, আমরা ঘোষণা করতে চান struct জন্য হতে যাচ্ছে এই গাছ বিভিন্ন নোডের. একটি বাইনারি ট্রির সুতরাং আমরা কি প্রয়োজন? তাই আমরা ধরনের একটি মূল্য আছে int-, তাই কিছু int মান. আমি মনে করি আমরা বলা কি না জানি না সমাধান মধ্যে এটা - এন int. আমরা বাম সন্তানের একটি পয়েন্টার প্রয়োজন এবং ডান সন্তানের একটি পয়েন্টার. সুতরাং এই মত দেখতে যাচ্ছে. এবং এটা আসলে আগে সন্ধান করব দোকর সংযুক্ত থাকেন যখন তালিকার উপাদান, তাই নোটিশ - আমি স্ক্রল আছে যাচ্ছি সব পথ ফিরে ডাউন সমস্যা 11. সুতরাং, এটা এই অভিন্ন দেখায় বিজ্ঞপ্তি আমরা শুধু এই কল ঘটতে ছাড়া বিভিন্ন নাম. আমরা এখনও একটি পূর্ণসংখ্যা আছে মূল্য এবং দুই পয়েন্টার. এটা পরিবর্তে চিকিত্সা শুধু যে পরবর্তী জিনিস প্রতি নির্দেশ হিসাবে পয়েন্টার এবং আগের জিনিস, আমরা চিকিত্সা করছেন পয়েন্টার একটি বাম সন্তানের দিকে নির্দেশ এবং ডান সন্তান. ঠিক আছে. সুতরাং যে আমাদের struct নোড আছে. এবং এখন, শুধুমাত্র ফাংশন আমরা প্রয়োজন এই ঢুকা হয়, যদি বাস্তবায়ন যা আমরা গাছ, ছাপানো উপর যেতে চান যাতে গাছ মান আউট. তাই এখানে খুঁজছি, আমরা প্রিন্ট করতে চায় আউট 20, 34, 36, 52, 59, এবং 106. কিভাবে আমরা যে কাজ করা সম্ভব হয়? সুতরাং এটা খুবই অনুরূপ. আপনি অতীতের পরীক্ষার দেখেছি যদি সমস্যা আপনি প্রিন্ট আউট চেয়েছিলেন মধ্যে মধ্যে কমা দিয়ে পুরো গাছ সবকিছু, এমনকি এটি আসলে ছিল যে চেয়ে সহজ. তাই এখানে সমাধান. এই উল্লেখযোগ্যভাবে সহজ ছিল আপনি recursively তা না হলে. যে কেউ চেষ্টা করলে আমি জানি না iteratively তা করে. কিন্তু প্রথম, আমরা আমাদের বেস কেস আছে. কি রুট নাল যদি? তারপর আমরা শুধু ফিরে চলুন. আমরা কিছু প্রিন্ট করতে চান না. অন্যথায় আমরা তর্ক চলুন recursively নিচে. সমগ্র বাম subtree প্রিন্ট. তাই কম সবকিছু প্রিন্ট আমার বর্তমান মান মূলত. এবং তারপর আমি নিজেকে মুদ্রণ যাচ্ছি. এবং তারপর আমি নিচে recurse যাচ্ছি আমার সমগ্র ডান subtree, তাই সবকিছু আমার মূল্য তার চেয়ে অনেক বেশী. এবং এই মুদ্রণ যাচ্ছে যাতে সবকিছু আউট. কিভাবে আসলে এই প্রশ্নটি যে accomplishes? AUDIENCE: আমি একটা প্রশ্ন আছে [শ্রবণাতীত] উপর. Rob Bowden: সমীপবর্তী এর তাই ওয়ান ওয়ে কোনো recursive সমস্যা শুধু মনে হয় এটা পছন্দ সম্পর্কে আপনি মনে আছে প্রায় সব কোণ ক্ষেত্রে. তাই আমরা চাই যে বিবেচনা এই সমগ্র গাছ মুদ্রণ. তাই সব আমরা মনোনিবেশ করতে যাচ্ছি এই বিশেষ নোড হল - 36. recursive কল, আমরা জাহির যারা ঠিক কাজ. তাই এখানে, এই recursive কল ঢুকা, আমরা এমনকি চিন্তা ছাড়া এটি সম্পর্কে, শুধু বাম ঢোঁড়ন তিন, ইতিমধ্যে 20 ছাপে কল্পনা এবং আমাদের জন্য 34. এবং তারপর যখন আমরা শেষ পর্যন্ত recursively নেভিগেশন ঢুকা কল ঠিক আছে, যে সঠিকভাবে প্রিন্ট হবে 52, 59, এবং আমাদের জন্য 106. তাই এই 20, 34 মুদ্রণ করতে পারেন যে দেওয়া, এবং অন্যান্য, 52, 59, 108 প্রিন্ট করতে পারেন আমরা যা করতে সক্ষম হতে হবে সব মুদ্রণ হয় যে মাঝখানে আমরাই. তাই আমাদের আগে সবকিছু প্রিন্ট আউট. আমরাই মুদ্রণ করুন, যাতে বর্তমান নোড প্রিন্ট 36, নিয়মিত printf,, এবং তারপর আমাদের পরে সবকিছু মুদ্রণ. ডেভিড জে MALAN: এই যেখানে recursion হয় সত্যিই সুন্দর পায়. এটা বিশ্বাসের এই আশ্চর্যজনক লিপ যেখানে আপনি কাজের tiniest বিট না. এবং তারপর আপনি যাক কেউ অন্য বিশ্রাম করতে. এবং যে অন্য কেউ আপনি, হাস্যকর ভাবে, না. গুরুতর ক্ষুদ্রকায় সুশীলা পরীবিশেষ পয়েন্টের জন্য, তাই আপনি যদি যদি আপনার কোন প্রশ্ন নেভিগেশন স্ক্রল আপ - Rob Bowden: প্রশ্ন অন? ডেভিড জে MALAN: আর একটু নিচে যেখানে সংখ্যা, কেউ জানে না এই সংখ্যা থেকে আসে? Rob Bowden: আমি আক্ষরিক কোন ধারণা আছে. ডেভিড জে MALAN: তারা প্রদর্শিত ব্যঙ্গ জুড়ে. AUDIENCE: তারা একই নম্বর কি? ডেভিড জে MALAN: যারা সংখ্যা. একটু ইস্টার ডিম. তাই অনলাইনে পর্যবেক্ষক আপনি তাদের জন্য বাসা, আপনি ইমেইলের মাধ্যমে আমাদের জানাতে পারেন heads@CS50.net কি তাত্পর্য এই আবৃত্ত ছয় সংখ্যা হাজার ক্যুইজ 1 সর্বত্র, আমরা আপনার ঝরনা হবে চূড়ান্ত এ আশ্চর্যজনক মনোযোগ দিয়ে বক্তৃতা এবং একটি চাপ বল. সূক্ষ্ম, খুশী হলাম. Rob Bowden: কোন শেষ প্রশ্ন ব্যঙ্গ সম্পর্কে কিছু?