[পর্যালোচনা: ক্যুইজ 1] [আলি Nahm, Oreoluwa Barbarinsa, লুকাস Freitas, রব Bowden] [হার্ভার্ড বিশ্ববিদ্যালয়] [এটি CS50.] [CS50.TV] [লুকাস Freitas] সবাইকে স্বাগতম. এই ব্যঙ্গ 1 জন্য পর্যালোচনা. শুধু একটি দাবিত্যাগ হিসাবে, এই হল - আমি বলতে চাচ্ছি, আমরা আবরণ চেষ্টা চলুন সম্ভব, কিন্তু যতটা উপাদান মানে এই নয় যে আমরা ব্যঙ্গ 1 হতে পারে যে জিনিস সব আবরণ চলুন. যাতে আপনি একটি বক্তৃতা এ চেহারা, বিভাগে, আপনি যা করতে পারেন যে সবকিছু নিতে ভুলবেন না. ক্যুইজ 1 বুধবার, পরের বুধবার হতে যাচ্ছে. সুতরাং অধ্যয়ন নিশ্চিত করা. এটি প্রথম ব্যঙ্গ মত প্রায় কাছাকাছি, হতে যাচ্ছে তার বিন্যাস সংক্রান্ত, কিন্তু এটি সম্ভবত অনেক বেশি কঠিন হতে যাচ্ছে. আমি 50 নেন যখন অন্তত, গত বছর, আমি এটা অনেক বেশি কঠিন ছিল. তাই অনেক অধ্যয়ন. আমি ডাটা স্ট্রাকচার আবরণ যাচ্ছি এবং Huffman কোডিং. এই, মানুষ অনেক জটিল মনে হয় এমন কিছু বিষয় কিন্তু আমি এটি যতটা সম্ভব সহজ করা চেষ্টা যাচ্ছি. প্রথম সব, আমরা কি আপনাকে বলছি ব্যঙ্গ 1 জন্য জানতে চান হয় আমি উপস্থাপন করতে যাচ্ছি যে ডাটা স্ট্রাকচার প্রতিটি ধারণাগত বিবরণ বুঝতে. তার মানে আপনি, না আছে এর মানে হল যে আসলে আপনার ব্যঙ্গ 1 সালে একটি হ্যাশ টেবিল বাস্তবায়ন. আমরা আপনাকে একটি সম্পূর্ণ হ্যাশ টেবিল বাস্তবায়ন করতে চাই না; হয়তো আমরা চেষ্টা করব আপনি কিছু ফাংশন বাস্তবায়ন করা, সবচেয়ে সাধারণ কাজকর্ম, কিন্তু আমরা আপনাকে সবকিছু বাস্তবায়ন করতে যাচ্ছেন না. সুতরাং আপনি প্রতিটি ডাটা স্ট্রাকচার ধারণার বুঝতে যে গুরুত্বপূর্ণ এবং এছাড়াও আপনি সি কোড করতে পারবেন যে, তারা প্রতিটি ডাটা স্ট্রাকচার জন্য আছে শুধু সবচেয়ে সাধারণ অপারেশন. এবং এছাড়াও, পয়েন্টার এবং structs পর্যালোচনা করতে পারবেন তারা এই ডাটা স্ট্রাকচার অনেক প্রদর্শিত হবে. ঠিক আছে. লিঙ্ক তালিকা আসলে অ্যারে অনুরূপ, কিন্তু একটি লিঙ্ক তালিকা এবং একটি অ্যারের মধ্যে পার্থক্য, প্রথম সব,, একটি লিঙ্ক তালিকা একটি খুব নমনীয় আকার আছে অ্যারে আপনি অ্যারের জন্য খুব বড় আকার চয়ন হয় আছে, যখন, যাতে আপনি, আপনি যে অ্যারের মধ্যে আপনার সমস্ত ডেটা জমা করতে পারবেন চলুন জানি অথবা আপনি অ্যারের একটি নমনীয় দৈর্ঘ্য আছে malloc ব্যবহার আছে. লিঙ্ক তালিকা মধ্যে এটা আরো উপাদান পেতে খুব সোজা, লিঙ্ক তালিকায় আরো উপাদান করিয়ে বা উপাদান মুছে ফেলুন. এবং প্রকৃতপক্ষে, আপনি লিঙ্ক তালিকা অনুসারে বাছাই করা না চান তাহলে, আপনি অনুসন্ধান এবং ধ্রুব সময় উপাদান সরাতে পারেন, তাই হে (1) সময়, তাই এটা খুবই সুবিধাজনক. আপনি শুধু, নোড সর্বদা malloc করতে মনে রাখতে সতর্ক থাকুন এবং মুক্ত হতে হবে আপনি না, আপনি মেমরি ডিস্ক্রিপ্টরের লিক সম্বন্ধে সূচিত হবে মাত্র কারণ. তাই লিঙ্ক তালিকা - একটি নোড সংজ্ঞা ঠিক আমরা অধিকার আছে কি ভালো হয়. আমি int-n করা, কিন্তু আপনি আপনার কাঙ্ক্ষিত তথ্য সংরক্ষণ করতে পারেন. আপনি একটি স্ট্রিং সঞ্চয় করতে চান তাহলে, এটা সূক্ষ্ম. আপনি একটি struct সঞ্চয় করতে চান, এটা আপনি চান যাই হোক না কেন,, একটি ডবল সূক্ষ্ম. আমি শুধু এখানে উদাহরণ জন্য int-n করা. এবং আপনি পরবর্তী নোডের একটি ইশারা আছে. সুতরাং, মূলত: একটি লিঙ্ক তালিকা কিছু তথ্য আছে, এবং তারপর এটি পরবর্তী নোডের স্থানটিকে. এটি লিঙ্ক তালিকায় শেষ উপাদান আছে, এটি যাও যাও নাল নির্দেশ যাচ্ছে. সুতরাং এই একটি লিঙ্ক তালিকা একটি উদাহরণ. ঠিক আছে, তাই এখন আমি একটি লিঙ্ক তালিকায় একটি উপাদান প্রবেশ করাতে চান তাহলে এর আমরা কি হবে তা দেখতে দিন. প্রথমত, একটি ফাংশন সন্নিবেশ টাইপ অকার্যকর হতে হবে আমি কিছু ফেরত না চান কারণ. এবং আমি একটি আর্গুমেন্ট হিসাবে কোন int নিতে যাচ্ছি, আমি প্রবেশ করাতে চান জানতে চান কারণ. সুতরাং আমি কি উচিত প্রথম জিনিস কি? ওয়েল, আমি newnode উপর malloc করা উচিত, তাই যে প্রথম লাইন. আমি শুধু একটি লিঙ্ক তালিকা করিয়ে নতুন নোড তৈরি করছি. তাই আমি কি করতে পারি? ভাল, আমরা জানি যে লিঙ্ক তালিকা আমাদের বাস্তবায়নের মধ্যে বর্গ, সবসময় আমরা একটি বিশ্বব্যাপী পরিবর্তনশীল হিসাবে মাথা রাখা. তাই আমরা কিছু করতে পারি মাথা পরিবর্তন হয়. আমি এই নতুন নোডের নতুন মাথা হতে না পারেন, এবং এটি আগের মাথার দিকে নির্দেশ করে যাচ্ছে. আমরা যে কিভাবে করতে পারি? আমি যা করতে হবে প্রথম জিনিস , মান নতুন নোডের মধ্যে 'এন' পরিবর্তন হয় ফাংশন প্রেরণ করা হত যা. তারপর newnode এর পরের মাথা হবে. মাথা newnode করা যাচ্ছে. সুতরাং এটা বেশ সহজ. একটি নোডের মুছে ফেলার জন্য, আমরা ভালো এটা করতে পারেন - আমরা তা করতে পারে ওয়ান ওয়ে বলতে হয়, ঠিক আছে, আমি মুছে ফেলতে চেয়েছিলেন, উদাহরণস্বরূপ, 3, কি আমি কাজ করতে পারে ঠিক আগের নোড নির্দেশ হল 3 পরবর্তী নোডের. তাই আমি ঠিক সেই মতো কিছু করতে হবে. কিন্তু যে কাজ সঙ্গে সমস্যা কি? আমি একটি মেমরি লিক আছে, তাই আমি আর নম্বর 3 অ্যাক্সেস নেই. যে সঙ্গে সমস্যা হল আমি যে নোড মুক্ত করতে পারবে যাচ্ছি না যে. আমি মেমরি লিক এবং (অপাচ্য) আমাকে ঘৃণা করতে যাচ্ছে আছে যাচ্ছি. সুতরাং পরিবর্তে যে করছেন, আমি সম্ভবত একটি অস্থায়ী পয়েন্টার থাকা উচিত. তাই আমি temp করা. এটা আমি মুছতে চান নোডের দিকে নির্দেশ করতে যাচ্ছে. এবং তারপর আমি পরবর্তী নোডের বিন্দু পূর্ববর্তী নোড অগ্রসর না হতে পারেন আমি মুছতে চান নোড. এবং পরিশেষে, আমি পয়েন্টার মুক্ত করতে পারেন. আমি আমার অধিকার আছে তৈরি যে পয়েন্টার মুক্ত করতে আছে? আমি, শুধু কারণ হবে না - পার্থক্য এই নোডের malloc ব্যবহার করে তৈরি করা হয়েছে যে, এই এক শুধু স্ট্যাকের মধ্যে শূন্য সুইচ হিসাবে ঘোষণা করা হয় যখন তাই এটি গাদা আছে. তাই আমি এটি মুক্ত করতে হবে না. ঠিক আছে. তাই এখন আমি কি stacks সম্পর্কে কথা বলুন. Stacks বেশ সহজবোধ্য. আমরা শুধু অ্যারে ব্যবহার করে ক্লাসে stacks এবং সারির করেছিল, কিন্তু আপনি পরিচিত হতে হবে - শুধু সচেতন হতে হবে আপনি হিসাবে ভাল লিঙ্ক তালিকা ব্যবহার সারির মধ্যে stacks করতে পারেন যে. আপনি একটি অ্যারে আছে সুতরাং, যদি তা একটি স্ট্যাক হবে? একটি স্ট্যাক, প্রথম, একটি আকার আছে করতে হবে. আপনি এই মুহূর্তে আছে যে স্ট্যাকের আকার কি সংরক্ষণ করা আছে. এবং এছাড়াও আপনি যদি সংখ্যার এই ক্ষেত্রে, একটি অ্যারের হবে যদি আপনি চান তবে, এটি একটি অ্যারে হতে পারে স্ট্রিং, struct একটি শ্রেণীবিন্যাস, আপনি সংরক্ষণ করতে ইচ্ছুক কিছু যে. স্ট্যাক বিষয়ে: একটি স্ট্যাক এবং একটি লিঙ্ক তালিকা মধ্যে পার্থক্য স্ট্যাকের মধ্যে আপনি শুধুমাত্র স্ট্যাকের মধ্যে রাখা হয়েছিল যে শেষ উপাদান এক্সেস আছে. এটা প্রথম আউট, সর্বশেষ এ বলা হচ্ছে. আপনি ট্রে একটি স্ট্যাক আছে শুধু চাই, আপনি স্ট্যাকের উপর একটি ট্রে রাখা হলে, আপনি অন্যান্য ট্রে অ্যাক্সেস আছে প্রথম যে ট্রে অপসারণ করতে হবে. এটা stacks সঙ্গে একই জিনিস. আমি, উদাহরণস্বরূপ, একটি স্ট্যাক একটি উপাদান যোগ করতে চান সুতরাং, আমি কি করা উচিত? এটি ধাক্কা বলা হয়, এবং এটি বেশ সহজবোধ্য এর. আপনাকে যা করতে হবে সর্বপ্রথম চেক যদি স্ট্যাকের আকার বড় বা স্ট্যাকের ক্ষমতা সমান নয়. আপনি ইতিমধ্যে পূর্ণ ক্ষমতা থাকে, তাহলে আপনি অন্য কিছু যোগ করতে পারেন না কারণ. যদি না হয় এবং তারপর, আপনি শুধু স্ট্যাকে উপাদান যোগ আছে. এবং পরিশেষে, আকার বাড়ায়. সুতরাং এটি বেশ সহজবোধ্য. তাই আমি শুধু সংখ্যা 2 যোগ করুন. আমি পপ চান, যা আমি সরানোর বিষয়ে অর্থ যোগ এবং উপাদান মূল্য ফেরত দিতে হয় যে শেষ উপাদান, আমি চেক আছে প্রথম জিনিস স্ট্যাকের খালি হয় না. যদি এটা খালি, আমি কিছু না ফিরে যেতে পারে না. সেই ক্ষেত্রে, আমি -1 ফেরত দিচ্ছি. অন্যথা, আমি বৈশিষ্ট মাপ হ্রাস চলেছি, ও সংখ্যা (s.size) ফিরে. কেন আমি মাপ হ্রাস এবং তারপর s.size ফিরে হয়নি? এই ক্ষেত্রে, বৈশিষ্ট আকার 4 আছে, কারণ এটা হচ্ছে এবং আমি চতুর্থ উপাদান ফেরত চাই, ডান? কিন্তু চতুর্থ উপাদান সূচী কি? তিন. আমি মাপ করবেন যেহেতু - 3 হবে, আমি (s.size) s.numbers ফিরে আসতে পারেন এটি 3 কারণ. তাই এটি শুধু সূচক এর. এখন queues. সারির কাছাকাছি একই জিনিস. শুধু পার্থক্য হল, যে পরিবর্তে শেষ মধ্যে থাকার, প্রথম আউট হয় আপনি প্রথম আউট, প্রথম আছে. আপনি যদি একটি সংগীতানুষ্ঠানে যেতে অপেক্ষা করছি সম্ভবত যদি, আপনি পরিবর্তে সারিতে একটি স্ট্যাক ছিল আপনি খুশি হতে পারেন না. আসা শেষ ব্যক্তি হচ্ছে কনসার্টের প্রবেশ করতে প্রথম ব্যক্তি হবে. আপনি সম্ভবত খুশি হতে পারেন না. কিউ সালে পেতে প্রথম ব্যক্তি এছাড়াও নামা প্রথম ব্যক্তি. সুতরাং একজন কিউ সংজ্ঞা, অ্যারের মধ্যে মাপ হচ্ছে ছাড়াও, তবে আপনাকে স্ট্যাকের মাথা সূচক যা মাথা, আছে আছে. এই মুহূর্তে প্রথম উপাদান তাই. সারিবদ্ধ stacks জন্য ধাক্কা হিসাবে একই জিনিস. আপনি খুব সাদাসিধা ছিল, আপনি শুধু বলতে হবে, আমি ধাক্কা জন্য কি হিসাবে ভাল, আমি ঠিক ঠিক একই জিনিস করতে পারেন. এটা ক্ষমতা অতিক্রম না করে যদি আমি পরীক্ষা করতে পারবেন. যদি তা না হয়, আমি অন্যথায় আমি নতুন মান রপ্তানি করতে পারেন, মিথ্যা ফিরে এবং তারপর আকার বাড়ায়. কিন্তু কেন এই ভুল? এর এই উদাহরণে দেখতে দিন. আমি কাপড় একটি গুচ্ছ সারিবদ্ধ চেষ্টা করছি, এবং তারপর আমি dequeue এবং সারিবদ্ধ যাচ্ছি. সেখানে কমান্ড অনেক, কিন্তু এটা খুব সহজ. আমি 5 সারিবদ্ধ, তাই 5 যোগ করতে যাচ্ছে, এবং তারপর 7, করছি 1, 4, 6, এবং তারপর আমি কিছু dequeue করতে চান, যা আমি প্রথম উপাদান সরিয়ে যাচ্ছি না. তাই আমি ডান, সংখ্যা 3, অপসারণ করা যাচ্ছে না? প্রথম উপাদান. ঠিক আছে. আমি অন্য কিছু সারিবদ্ধ চেষ্টা এখন, যদি কি ঘটতে যাচ্ছে? আমার বাস্তবায়ন মতে, আমি সূচক q.size পরবর্তী সংখ্যা করা হচ্ছে. এই ক্ষেত্রে, আকার 8 হয়, তাই সূচক 8 শেষ অবস্থান এ অধিকার এখানে করা হবে. আমি ডান এখানে 1 সারিবদ্ধ চেষ্টা করুন, আমি শেষ অবস্থান overwriting করা হবে সম্পূর্ণ ভুল যা সংখ্যা 1, যাও. আমি কি করে যেতে চাই চারপাশে মোড়ানো এবং প্রথম অবস্থান থেকে যেতে হয়. হতে পারে আপনি শুধু ভাল, আমি চেক আছে, বলতে হবে আমি আসলে সেখানে কিছু লাগাতে পারেন যদি. যদি না হয়, আমি ওহ, নতুন পূর্ণ ক্ষমতা বলে, আসলে ক্ষমতা হল - 1, এবং আপনি সেখানে একটি উপাদান রাখা যাবে না. কিন্তু সমস্যা কি? সমস্যা হল আমি ঠিক অধিকার এখানে সবকিছু dequeue যদি এবং তারপর আমি অন্য কিছু যোগ করার চেষ্টা করুন, এটা বলতে হবে, হ্যাঁ, আপনি 0 যা পূর্ণ ক্ষমতা, এ ছিল. সুতরাং আপনার সারিতে সর্বস্বান্ত হয়. আপনি চারপাশে মোড়ানো আছে, এবং প্রায় মোড়কে একটি উপায় আপনি স্বপ্নদর্শী এবং অন্যান্য psets শিখেছি বলছি গেলিক ভাষার ব্যবহার ছিল. আপনি q.size + + q.head কি কেন বুঝতে বাড়িতে এটি চেষ্টা করে দেখতে পারেন গেলিক ভাষার ক্ষমতা, কিন্তু আপনি এখানে ডান চেক করা হলে, আমরা এটি কাজ করে দেখতে পারেন. তাই শেষ উদাহরণে, q.size ছিল 8 এটা এখানে অ্যারের এই অবস্থান ছিল এবং মাথা, 1 ছিল. সুতরাং + 1 টি 8, 9 হতে হবে. মডুলাস ক্ষমতা 9 0 হবে. এটা সূচক 0 যেতে হবে. আমরা সঠিক অবস্থানে থাকব. এবং তারপর বাড়িতে কিউ চেষ্টা করুন. কিছু গুরুত্বপূর্ণ জিনিস: একটি স্ট্যাক ও সারিতে মধ্যে পার্থক্য বুঝতে চেষ্টা করুন. বাড়িতে, সারিবদ্ধ, dequeue, ধাক্কা এবং পপ রূপায়ণকারী সঙ্গে খুব পরিচিত পেতে চেষ্টা করুন. আপনি তাদের প্রতিটি ব্যবহার করেন এবং যখন এও বুঝতে. সুতরাং এর Pokemons একটি গুচ্ছ সঙ্গে 10 সেকেন্ডের জন্য শিথিল করা যাক. এবং এখন এর পিছনে ডাটা স্ট্রাকচার করতে যান. টেবিলের হ্যাশ. মানুষ অনেক হ্যাশ সারণির কাঁচুমাচু ছিল. সমস্যা 6 সেটে, যাচাইকারী বানান. হ্যাশ টেবিল এবং চেষ্টা করে, মানুষ অনেক তাদের ভয় পেতে. তারা তারা বুঝতে খুব একটা কঠিন মনে. হাঁ? [রব বাউডেন] সমস্যা 5 সেট. সমস্যা হাঁ, 5 সেট. ধন্যবাদ রব. হ্যাঁ. ছয় অভিমান এন 'বহান, হাঁ করে. সমস্যা বানান যাচাইকারী ছিল 5 সেট, এবং আপনি একটি হ্যাশ টেবিল বা একটি চেষ্টা হয় ব্যবহার ছিল. মানুষ অনেক তারা বুঝতে সুপার কঠিন ছিল, কিন্তু তারা আসলে বেশ সহজ হয়. একটি হ্যাশ টেবিল মূলত, কি? একটি হ্যাশ টেবিল লিঙ্ক তালিকার একটি অ্যারে. একটি অ্যারে এবং একটি হ্যাশ টেবিল মধ্যে একমাত্র পার্থক্য হ্যাশ টেবিল আপনি একটি হ্যাশ ফাংশন কিছু বলা আছে. একটি হ্যাশ ফাংশন কি? আপনাকে বলছি এখানে পড়তে পারেন যদি আমি জানি না. এটি একটি হ্যাশ টেবিল একটি উদাহরণ. সুতরাং আপনি যে আপনি 31 উপাদানের সঙ্গে একটি অ্যারে আছে দেখতে পারেন. এবং কি আমরা একটি হ্যাশ টেবিল কি একটা হ্যাশ ফাংশন আছে হয় যে একটি কি অনুবাদ করতে হবে, প্রতিটি একটি সূচক int. যদি, উদাহরণস্বরূপ, আমি বি হ্যারিসন জন্য চয়ন করতে চান, আমি আমার হ্যাশ ফাংশন মধ্যে বি হ্যারিসন করা হবে, এবং হ্যাশ ফাংশন 24 আবার ফিরে আসবে. তাই আমি আমি 24 সালে বি হ্যারিসন সঞ্চয় করতে চান না. সুতরাং যে শুধু একটি অ্যারে হচ্ছে এবং একটি হ্যাশ টেবিল থাকার মধ্যে পার্থক্য. হ্যাশ টেবিল আপনি আপনাকে বলতে হবে যে একটি ফাংশন করতে হবে যেখানে আপনি সংরক্ষণ করতে ইচ্ছুক যে ডেটা জমা করতে. হ্যাশ ফাংশন জন্য, আপনি একটি হ্যাশ ফাংশন জন্য দেখতে চাই যে নিয়ন্ত্রণবাদী এবং উত্তমরুপে বিতরণ করে. আপনি এখানে দেখতে পারেন, আপনি আমি দোকান চেয়েছিলেন যে তথ্য অনেক আসলে 19 যে ছিল দেখতে পরিবর্তে সব ফ্রি যা ছিল 31 এবং 30 ও 29, ব্যবহার করে. তাই আমি যে হ্যাশ ফাংশন খুব ভালভাবে বিতরণ ছিল না. আমরা যথাযথভাবে বিতরণ করা বলে, এটা আমরা চাই যে মানে মোটামুটিভাবে, অন্তত 1 বা প্রতিটি জন্য 2 - মত, অ্যারে মধ্যে সূচকের প্রতিটি জন্য 1 বা 2 এর একটি পার্থক্য. আপনি প্রায়, অ্যারের মধ্যে প্রতিটি লিঙ্ক তালিকায় উপাদান একই সংখ্যক করাতে চাই. এবং এটা এটা, হ্যাশ টেবিল মধ্যে বৈধ এর হ্যাশ টেবিল হিসাবে দেখতে চেক সহজ. তারপর গাছ. এটি একটি গাছ. কম্পিউটার বিজ্ঞান মধ্যে গাছ কোনো কারণে নিচে গোলমালে হয়. সুতরাং অধিকার এখানে আপনি ট্রি রুট এবং তারপর পাতার আছে. আপনি শুধু পিতামাতা এবং সন্তানের জন্য নামাবলী জানা উচিত. প্রতিটি নোডের ঊর্ধ্বতন নীচের যে নোড যা তার শিশু, আছে. সুতরাং, উদাহরণস্বরূপ, 2, অধিকার আছে 3 এবং অন্যান্য সন্তানের জন্য পিতা বা মাতা হতে যাচ্ছে 3 1 জন্য পিতা বা মাতা এবং আছে অন্যান্য শিশুদের হতে যাচ্ছে যখন. এবং 1 ক্রমশ 3 এর সন্তান হবে, এবং হয়. আমরা আরো অনেক কিছু আকর্ষণীয়, একটি বাইনারি অনুসন্ধান বৃক্ষ বলা আছে যা একটি নোড ডানদিকে সব মান এখানে ডান, ডান হতে যাচ্ছে - ডান, root-র মধ্যে উপাদান থেকে বড় হতে যাচ্ছে. ডানদিকে তাই আমি এখানে ডান সংখ্যা 5 আছে, সব উপাদান 5 থেকে বড় হতে যাচ্ছে, এবং বাম হয় সব উপাদান 5 তুলনায় কম হতে যাচ্ছে. কেন এই দরকারী? ওয়েল, আমি 7 নম্বর এখানে যদি চেক করতে চান, উদাহরণস্বরূপ, আমি শুধু প্রথম 5 যেতে পারেন এবং আমি দেখতে যাচ্ছি, 5 আর 7 বেশী বা কম কি? এটা বেশী, তাই আমি এটা ট্রি ডানদিকে করা আছে যাচ্ছে না. তাই আমি তাকান অনেক কম উপাদান আছে. একটি বাইনারি অনুসন্ধান বৃক্ষ, নোড বাস্তবায়ন, আমি ঠিক, তথ্য আছে আছে যাচ্ছি তাই int-n; তবে আপনাকে একটি স্ট্রিং থাকতে পারে অথবা আপনি যেমনটি কিছু. আপনাকে কেবল বৃহত্তর কি সংজ্ঞা উপর সতর্কতা অবলম্বন করা আবশ্যক আছে, কম কি. সুতরাং আপনি স্ট্রিং ছিল, উদাহরণস্বরূপ, যদি আপনি নির্ধারণ করতে পারে ডানদিকে সমস্ত জিনিষ বৃহত্তর দ্বারা আছে যাচ্ছি যে, বাম কম লেন্থ আছে যাচ্ছি, তাই এটা আপনার উপর সত্যিই আছে. আমি কিভাবে বিএসটি জন্য খুঁজে বাস্তবায়ন করতে পারি? আমরা কি করতে হবে সর্বপ্রথম রুট শূন্য যদি পরীক্ষা হয়. এটি শূন্য, এটা জিনিস আছে না মানে হল আপনি এমন একটি গাছ, অধিকার না থাকে, কারণ? তাই আমি মিথ্যা ফিরে. অন্যথা, আমি সংখ্যা বেশী হলে চেক চলেছি root-র মধ্যে মান মূলত. আমি ডান উপাদান খুঁজে পেতে চেষ্টা করতে যাচ্ছি ট্রি. আপনি আমি এখানে recursion ব্যবহার করছি যে দেখুন. যদি কম এবং তারপর, আমি বাম তাকান যাচ্ছি. এবং পরিশেষে, অন্যথায়, এটি বৃহত্তর কম বা না না হলে, এটা মান নিজেই যে এর মানে. তাই আমি শুধু সত্য ফিরে. আপনি আমি যদি, যদি, যদি ব্যবহৃত যে এখানে দেখতে পারেন. এবং, মনে রাখবেন ব্যঙ্গ 0, আমরা,, যদি, যদি, যদি ছিল একটি সমস্যা হয়েছে এবং আপনি অদক্ষতা খুঁজে অনুমিত হয়, এবং অদক্ষতা যদি আপনি ব্যবহার করেন. আপনি যদি অন্য, যদি অন্য, যদি ব্যবহৃত, এবং অন্য উচিত. এবং যদি অন্য হলে এবং অন্য এখানে তাই, আমি অন্য ব্যবহার করা উচিত? কি যে কেউ - হাঁ? [ছাত্র ভাষাভাষী, শ্রবণাতীত] এটা একেবারে ঠিক আছে. তাই সে, এটা কোন ব্যাপার না যে এর বলছে শুধুমাত্র এই কারণে যে আমরা আগে ছিল অদক্ষতা যে ছিল, কিছু শর্ত সন্তুষ্ট ছিল হয়তো, যদি, কারণ যাতে আপনি একটি কাজ করেছেন, কিন্তু তারপর আপনি অন্যান্য অবস্থার সব চেক চালু ছিল. কিন্তু এই ক্ষেত্রে, এটা এখুনি ফিরে আসেন, তাই এটা কোন ব্যাপার না. তাই আপনি যদি অন্য ব্যবহার করতে হবে না. এবং পরিশেষে, এর চেষ্টা সম্পর্কে কথা বলুন, যা সকলের প্রিয়. একটি করে দেখুন অ্যারে একটি গাছ. এটা মান সন্ধান খুব দ্রুত, কিন্তু এটা মেমরি অনেক ব্যবহার করে. এবং এটা শব্দ ফিল্টার সাধারণত, তাই যখন আপনি আপনার ফোন একটি টেলিফোন বইয়ের মত, উদাহরণস্বরূপ, আমি জানি না, বাস্তবায়ন চাই এবং আপনি বি টাইপ করতে সক্ষম হতে চান এবং শুধু বি আছে যারা নাম আছে এটা উদাহরণস্বরূপ, ব্যবহার করে দেখুন ব্যবহার করে বাস্তবায়ন করা খুব সোজা. কিভাবে আপনি ব্যবহার করে দেখুন একটি নোড সংজ্ঞায়িত করব? আপনাকে কেবল is_word হবে যে একটি bool আছে. অর্থাৎ, যে নোড আগে সমস্ত অক্ষর ব্যবহার করে উপস্থাপন আপনি একটি শব্দ গঠন করতে পেরেছি, এবং তারপর আপনি নোড পয়েন্টার একটি অ্যারের করতে হবে. আপনি আমরা একটি ঊর্ধ্বতন নোড অ্যারের, তাই নোড * অ্যারে আছে দেখতে পারেন? হাঁ? সুতরাং আসুন যে কাজ করবে কিভাবে দেখতে দিন. বানান চেক জন্য, আমরা 27 উপাদানের একটি অ্যারে আছে, আমরা সকল চিঠিপত্র প্লাস ঊর্ধকমা আছে. আমি বোর্ডে লিখতে সক্ষম হতে চান, কারণ এখানে আগে আমি 2 ব্যবহার করা যাচ্ছে না. ঠিক আছে. তাই এই ব্যবহার করে দেখুন একটি উদাহরণ. আমি শুধু প্রথম নোডের নির্ধারণ করুন, আমি 2 উপাদানের একটি অ্যারের করতে হবে শূন্য থেকে 2 পয়েন্টার, তাই আমি শুধু 'একটি' এবং 'খ' রাখা যে. এবং আমি যে is_word একটি bool আছে যাচ্ছি. এটা প্রথম এক জন্য মিথ্যা হতে যাচ্ছে, ঠিক, কারণ যে আগে আপনি কোনো অক্ষর নেই. তাই খালি শব্দ একটি শব্দ নয়. সুতরাং এটা মিথ্যা. আমি এই অভিধান 'একটি' যোগ করতে চান, আমি কি করতে হবে? আমি শুধু 'একটি' জন্য নতুন নোডের malloc করতে হবে, এবং তারপর সত্য তার শব্দ যোগ করুন. তাই এটি শুধু 'একটি' সত্য হতে যাচ্ছে থাকার যে প্রতিনিধিত্ব করে. জানার জন্য? আমি 'বিএ' যোগ করতে চান তাহলে, আমি 'খ' জন্য malloc 1 করতে হবে, এবং তারপর আমি, মিথ্যা যাও বুলিয়ান স্থাপন করা যাচ্ছে না নিজে 'খ' একটি শব্দ নয়. এরপর আরো একটি 'একটি' জন্য এক, তাই 'বিএ' malloc চলেছি, এবং তারপর আমি এটা সত্যি একটি শব্দ স্থাপন করতে যাচ্ছি. 'বিএ' একটি শব্দ কারণ. আমি দেখতে চাই এবং তারপর যদি 'খ', এই অভিধানে যদি আমি শুধু প্রথম এক, 'খ' যেতে পারেন. আমি নিচে যান, এবং আমি শব্দ তাকান, এবং এটা মিথ্যা বলছেন. সুতরাং এটি একটি শব্দ নয়. আমি 'বিএ' চেক করতে চান, আমি প্রথম এক, 'খ' যান, এবং তারপর 'একটি' যান, এবং আমি সত্য দেখতে, তাই এটি একটি শব্দ. জানার জন্য? মানুষ অনেক চেষ্টা দ্বারা বিভ্রান্ত পেতে. কোন? অবশেষে, Huffman কোডিং. Huffman কোডিং খুবই দরকারী মেমরি সংরক্ষণ করুন এবং টেক্সট ফাইল কম্প্রেস, ঠিক কারণ আপনি যেমন, 'একটি' এবং 'ই' ব্যবহার বার অনেক, আপনি না যতটা 'ফ' বা 'Z' ব্যবহার যদি আপনার নথিতে, কিন্তু আমি জানি না. প্রতি একক চরিত্র জন্য মাত্র 1 বাইট হচ্ছে, প্রতি একক - আমরা ASCII টেবিল মধ্যে আছে 256 অক্ষর খুব অনুকূল নয়, আপনি আরো অনেক কিছু ব্যবহার করে কিছু অক্ষর আছে মাত্র কারণ, তাই সম্ভবত আপনি তাদের জন্য কম মেমরি ব্যবহার করা উচিত. আমি কিভাবে Huffman কোডিং ব্যবহার? আমরা একটি Huffman গাছ যা করতে হবে.  একটি Huffman গাছ নোড আছে চিঠি, 'গ', 'বি', 'একটি', ভালো হতে যাচ্ছে যে একটি প্রতীক আছে, আপনি যাই হোক না কেন চিঠি, শব্দ লেখা প্রদর্শিত হবে যে ফ্রিকোয়েন্সি যে একটি ফ্রিকোয়েন্সি, আপনি যদি জন্য Huffman ট্রি তৈরি হয়েছে এবং তারপর Huffman ট্রি বাম দিকে নির্দেশ করা যাচ্ছে যে একটি নোডের এবং ডান দিকে নির্দেশ করা যাচ্ছে যে অন্য একটি নোড. তাই শুধু একটি গাছ মত. আপনি কিভাবে একটি Huffman ট্রি নির্মাণ করেন? আপনি সর্বনিম্ন ফ্রিকোয়েন্সি আছে 2 নোড বাছাই চলুন. আপনি টাই আছে আপনি 2 নোড বাছাই চলুন পাশাপাশি সর্বনিম্ন ASCII মান আছে. তারপর আপনি ঐ 2 নোড আউট একটি নতুন ট্রি তৈরি করতে যাচ্ছেন যে পিতা বা মাতা নোডের মধ্যে সংযুক্ত ফ্রিকোয়েন্সি আছে যাচ্ছে. এবং তারপর আপনি বন থেকে 2 শিশুদের সরিয়ে চলুন এবং ঊর্ধ্বতন সঙ্গে তাদের প্রতিস্থাপন. এবং আপনি শুধুমাত্র আপনি বনের মধ্যে 1 গাছ আছে না হওয়া পর্যন্ত যে পুনরাবৃত্তি চলুন. সুতরাং আসুন আপনি ZAMYLA জন্য একটি Huffman গাছ করে কিভাবে দেখুন. আপনি সমস্ত অক্ষর 'এ' ছাড়া ফ্রিকোয়েন্সি 1 আছে এখানে দেখতে পারেন; ফ্রিকোয়েন্সি 2 আছে. তাই আমি আমি ASCII মান এবং ফ্রিকোয়েন্সি অনুযায়ী করা সব চিঠিপত্র নোড তৈরি. আমি প্রথম ট্রি তৈরি করতে চান সুতরাং, যদি তা 'এল' এবং 'এম' দিয়ে হবে. সুতরাং এখানে. জুড়ি ফ্রিকোয়েন্সি 2 হতে হবে এটা + 1 টি 1, কারণ, তাহলে সর্বনিম্ন ফ্রিকোয়েন্সি সঙ্গে পরবর্তী 2 'ওয়াই' এবং 'জেড' হয়. 2 একটি ফ্রিকোয়েন্সি আছে - এবং তারপর আমি হচ্ছে তাদের সব আছে. তাই পরবর্তী এক জন্য সর্বনিম্ন ASCII মান আছে বেশী যে কোন কোনটি হয়? 'এ' এবং 'এল'. তাই আমি নতুন নোড নির্মাণ, এবং পরিশেষে, এটা 4 এবং 2, তাই 2 বাম হতে যাচ্ছে. এবং এই Huffman গাছ. আমি কিছু টেক্সট লিখতে চান তারপর যদি, মত Huffman ট্রি ব্যবহার করে, টেক্সট রূপান্তর বাইনারি খুব সহজ. আমি বাম চলন্ত একটি 0 এবং ডান চলন্ত বলতে উদাহরণস্বরূপ, যদি, একটি 1 হয় কি প্রতিনিধিত্ব করতে যাচ্ছে যে হয়? সুতরাং মত 1, 1, ঠিক আছে, তাই ঠিক আছে, এবং তারপর, তাই বাকি 0, এল হবে, এবং তারপর 1, 0, 0. সুতরাং 1, 0, তাই মাত্র 1, 0, 'এ'. এবং তারপর 0, 1, তাই 'জেড'. এবং তারপর 1, 0, 0 - কোন. 0, 0 'Y' হতে, তাই অলস হবে. সুতরাং যে আমার জন্য সব, রব এর উপর নিতে যাচ্ছে. [রব বাউডেন] অতএব, সপ্তাহে 7 স্টাফ. আমরা সত্যিই দ্রুত যান উপর অনেক পেয়েছেন. Bitwise অপারেটর, বাফার ওভারফ্লো, CS50 লাইব্রেরি তারপর, এইচটিএমএল, HTTP সিএসএস. 15 থেকে 20 মিনিটের মত সমস্ত সালে. Bitwise অপারেটরদের. আপনাকে জানতে হবে যে তাদের মধ্যে 6 আছে. Bitwise ও, bitwise বা, XOR, বাম স্থানান্তর, ডানে সরান, এবং না. রাইট নামান এবং আপনি সবে এ সব বক্তৃতায় দেখেছি না. আমরা দ্রুত এটা এখানে উপর যাবেন, কিন্তু এটি এই যে বিদ্যমান 6 যে জানা ভাল. Bitwise অপারেটরদের আপনাকে + + 4 3 যখন মতো যে মনে রাখুন. আপনি 3 এবং 4 বাইনারি সাথে ডিল করা হয় না. Bitwise অপারেটরদের সঙ্গে আপনি আসলে সংখ্যা 3 এবং 4 পৃথক বিটের সাথে ডিল করা হয়. সুতরাং আমরা বলবো যে প্রথম এক bitwise, নয় এবং এটি আছে সব সব বিট উল্টানো হয়. আপনি সি এই লেখার যদি তাই এখানে,, আপনি এটা লিখতে না ~ 11011 বা যাই হোক না কেন, আপনি, এটা ~ 4 মত লিখতে হবে এবং তারপর এটি 4 বাইনারি উপস্থাপনা টুসকি হবে. তাই এখানে, 1 এর থেকে ~ কিছু বাইনারি সংখ্যা 1101101 হুবহু 0 এর সব 1 এর টুসকি যাচ্ছে এবং সমস্ত 0 এর. আমি সেখানে বলে, এই ঘন ব্যবহার, আমরা কিছু নম্বর চিন্তা করতে চান মত এবং আমরা কিছুক্ষনের মধ্যে এটি দেখতে পাবেন, হয় বিট সব তাদের মধ্যে একজন ছাড়া 1 যেখানে. সুতরাং সংখ্যা প্রকাশ করতে সাধারণত সহজ ঠিক যে একক বিট সেট করা হয় যেখানে, এবং তারপর এটি ~, তাই প্রত্যেক অন্যান্য বিট যে এক ছাড়া সেট করা হয় নিতে. সুতরাং যে আমরা কিছুক্ষনের মধ্যে আরো ব্যবহার চলুন কি. Bitwise বা. এখানে 2 বাইনারি সংখ্যা, এবং এই 2 নম্বর হয় তারা প্রতি সম্ভব প্রতিনিধিত্ব করেন, যেহেতু প্রায় কাছাকাছি প্রতিনিধি বিট সমন্বয় আপনাকে কাজ করতে হবে পারে. আমি প্রতিটি বিট or'd যখন এখানে,, আমরা সরাসরি নিচে তুলনা চলুন. সুতরাং বাম দিকে আমরা একটি 1 এবং একটি 1 আছে. আমি bitwise যখন | যারা, আমি কি পেতে যাচ্ছি? এক. 0 এবং 1 আমাকে দিতে হবে | তারপর bitwise? এক. Bitwise 1 এবং 0 একই জিনিস, এক হতে যাচ্ছে. Bitwise 0 | 0 আমার 0 দিতে হবে. 0 মামলা | তাই আমি 0 পাওয়া যেখানে শুধু কেস 0 হয়. এবং আপনি শুধু আপনার লজিক্যাল ors মত যে মনে করতে পারেন. আপনি সত্য হিসাবে 1 এবং হিসাবে মিথ্যা 0 মনে সুতরাং, যদি একই জিনিস এখানে প্রযোজ্য. সুতরাং সত্য বা সত্য সত্য; সত্য বা মিথ্যা সত্য. মিথ্যা বা সত্য সত্য; মিথ্যা বা মিথ্যা আসলে মিথ্যা যে এর একমাত্র জিনিস. এখানে আপনি জানা উচিত যে উদাহরণ bitwise অপারেটর ব্যবহার করা হয় যখন একটি প্রশংসনীয় ভাল উদাহরণ হিসাবে. এখানে যদি আমরা বা Ox20 সঙ্গে মূলধন 'এ', এবং আমরা আমরা কিছু পেতে, একটি দ্বিতীয় এই তাকান করব. এবং আমরা বা ছোট হাতের 'একটি' Ox20 সঙ্গে, আমরা কিছু পেতে হলে. সুতরাং আসুন ASCII টেবিল থামা যাক. ঠিক আছে. এখানে আমরা 'এ' যে দেখুন - এখানে আমরা 'এ' 65 দশমিক হল আছে. কিন্তু আমি Ox41 যা হেক্সাডেসিমেল, সঙ্গে যাবেন. চমত্কার নিশ্চিত আমরা ক্লাসে এটা দেখেছি. আমি মনে করি আমরা বর্গ তা দেখেছি মনে এটা হেক্সাডেসিমাল থেকে বাইনারি রূপান্তর বেশ সহজ করে. তাই এখানে, আমি বাইনারি মধ্যে 4 লাগাতে চান, যে শুধু 0100 হতে যাচ্ছে. এই 1 এর জায়গা, 2 এর জায়গা, 4 এর জায়গা, তাই এই 4 হয়. তারপর আমি 0001 হতে যাচ্ছে যা বাইনারি মধ্যে 1 বিভক্ত করতে পারেন. এবং তাই এই বাইনারি মধ্যে 'এ' র উপস্থাপনা হতে যাচ্ছে. ছোট হাতের 'একটি', এটা এখন Ox61 হতে যাচ্ছে গ্রহণ, তার বাইনারি মধ্যে এই পর্যন্ত বিভাজন যেখানে,, তাই একটি 6 - এর আসলে এটা করুক না - কোন রবার আছে? ইরেজার. Ox61. সুতরাং বাইনারি মধ্যে 6 বিভাজন + 4 + 2 + 0 0 হতে যাচ্ছে. এবং বিভাজন 1 0001 হতে যাচ্ছে. , এই 2 মধ্যে পার্থক্য এ খুঁজছি আমরা একটি ছোট হাতের এবং বড় হাতের 'এ' মধ্যে একমাত্র পার্থক্য এই একক বিট যে দেখতে. ঠিক আছে - তাই এখানে ফিরে আসছে. আমরা বিট Ox20 হয় তাকান, এখানে ফিরে আসছে তার বাইনারি মধ্যে তাই বিভাজন Ox20, 0010, 0000 হল. Ox20, সেট করা হয় যে শুধুমাত্র বিট, আমরা সঙ্গে সংশ্লিষ্ট যে এই বিট মূলধন এবং ছোট হাতের 'একটি' মধ্যে সুইচিং সঙ্গে. যদি এই এক, 'এ', যা আমি বা 'এ', ' যদি আমি বা Ox20 সঙ্গে 'এ', কি আমি পেতে যাচ্ছি? [ছাত্র, শ্রবণাতীত] ছোট হাতের 'একটি', এটি একটি 1 এই বিট টুসকি যাচ্ছে কারণ. এবং যদি আমি বা 'একটি' Ox20 সঙ্গে কি আমি পেতে যাচ্ছি? একটি ছোট হাতের, কারণ শুধু oring 'একটি' Ox20 সঙ্গে, আমি শুধু একটি 1 এই একক বিট oring করা যাচ্ছে না; এটা কোন ব্যাপার না, তাই এটি ইতিমধ্যেই একটি 1 এর. তাই আমরা 'একটি' এবং 'একটি' পেতে. Bitwise এবং. আবার, আমরা আমাদের যৌক্তিক ও সহযোগীর হিসাবে এই মনে করতে পারেন. বাম দিকে আমরা সত্য ও সত্য আছে. এটা সত্য হতে যাচ্ছে, এবং ক্ষেত্রে সব জন্য এর মিথ্যা ও সত্য বা সত্য ও মিথ্যা, বা মিথ্যা ও মিথ্যা সেগুলো কেউ সত্য. তাই আমরা পেয়ে শেষ পর্যন্ত 1000 হয়. সুতরাং এখন, এখানে, এখানে আমি বিশ্বাসভাজন bitwise না ব্যবহার করেছি যেখানে আছে, আমরা Ox20 ছিল যেখানে. তাই এই Ox20 হয়. এখন আমি কি করতে চান, bitwise Ox20 এর ~. যে সমস্ত বিট টুসকি যাচ্ছে. তাই আমি 1101, 1111 আছে. তাই 'এ' ~ Ox20 আমাকে কি দিতে হবে সঙ্গে anded? আমরা সত্যিই সম্পর্কে চিন্তা করা প্রয়োজন শুধুমাত্র বিট, এই এক যেহেতু, এই বিট সব 1 থেকে সেট করা হয়, তারপর আমরা ঠিক কি 'এ' ছিল পেতে যাচ্ছেন, ছাড়া, সম্ভবত, কি এই বিট. এটি একটি 1 যদি, এখন এটি একটি 0 নির্ধারণ করা যাচ্ছে না এই যা কিছু থাকে, এই 0 হতে যাচ্ছে সঙ্গে anded কারণ. তাই 'এ' ~ Ox20 আমাকে দিতে যাচ্ছে & কি? [ছাত্র উত্তর, শ্রবণাতীত] এবং 'একটি' এবং কি - এটা 'এ' এর. এবং 'একটি' & ~ Ox20 আমাকে দিতে যাচ্ছে কি? 'এ' এই বর্তমানে একটি 1 কারণ. এই 0 দিয়ে Anding, এটি একটি 0 করতে হবে এবং এখন আমরা একটি 'এ' পেতে যাচ্ছেন. দুটোই ', এ' এবং এই ধরনের শেষ কিন্তু না অন্তত, আমরা XOR আছে. এটা অনেক মত আছে বা, এটি একচেটিয়াভাবে অর্থ বা ছাড়া. এর মানে আপনি সাধারণত হিসাবে অথবা বাস্তব জগতে মনে ভালো হয়. সুতরাং আপনি হয় 'এক্স' বা 'Y', কিন্তু না উভয় না. এখানে ^ 1 1 0 হতে যাচ্ছে. সত্য কারণ, এই - এটি যৌক্তিক সত্য এবং মিথ্যা দিয়ে যেমন কাজ করে না , bitwise ও এবং বা না কিন্তু সত্য ^ সত্য মিথ্যা. শুধুমাত্র এক তাদের মধ্যে সত্য যদি আমরা কেবল সত্য ফিরে চাই না. সুতরাং ^ 1 1 0. কি ^ 1 0 সম্পর্কে কি? 1. ^ 0 1 ^ 0 0 0 হয়, 1. তাই সব পরিস্থিতির অধীন, 0 bitwise কিছু 0 0 হবে. 1 bitwise কিছু 0 বা 0 bitwise 1, এটা যদি | অথবা ^, এটি একটি 1 হবেন, এবং তা ও যদি এটা 0 হবেন. এবং 1 bitwise 1 1 নয় যেখানে শুধুমাত্র ক্ষেত্রে একচেটিয়া বা দিয়ে থাকে. এটা 0110 এর. সুতরাং এখানে এখন, XOR ব্যবহার করে - তাই আমরা ফিরে 20 করেন. 'এ' ^ Ox20 আমরা তুলনা করছি এইসব 2 বিট. সুতরাং একটি 1 ^ 0 আমাকে কি দিতে হবে? একটি এক. 'এ' ^ Ox20 আমাকে দিতে হবে? একটি ছোট হাতের. 'একটি' ^ Ox20 আমাকে দিতে হবে? ক্যাপিটাল এ কারণ এই কাজ করা হয় যাই হোক না কেন, Ox20 সঙ্গে এই XORing কার্যকরভাবে এই বিট যা কিছু আলোকসম্পাতের হয়. এই একটি হল 0, এটি এখন একটি 1 হয়ে যাচ্ছে. এই একটি 1 যেহেতু, ^ 1 1 0. সুতরাং আমাদের 'একটি' 'এ' হয়ে উঠেছে, এবং আমাদের 'এ' 'একটি' পরিণত হয়েছে. সুতরাং XOR ধরো আলোকসম্পাতের মধ্যে সত্যিই সুবিধাজনক উপায়. আপনি শুধু অক্ষর একটি স্ট্রিং উপর বারবার চাই এবং প্রতি একক চরিত্রের ক্ষেত্রে বিকল্প, Ox20 সঙ্গে আপনি শুধু XOR সবকিছু. এখন আমরা স্থানান্তর বাকি আছে. বাম স্থানান্তর শুধু, মূলত, যাচ্ছে মধ্যে, বা বাম সংখ্যার সব ধাক্কা, এবং তাদের পিছনে 0 এর সন্নিবেশ. তাই আমরা এখানে 00001101 আছে. আমরা ডান থেকে 3 0 এর মধ্যে ধাক্কা চলুন এবং আমরা 01101000 পেতে. Nonbinary ভাষায়, আমরা যে সত্যিই 13 বাম স্থানান্তরিত 3 সঙ্গে, আমাদের 104 যা দেয় তার আচরণ যে দেখতে. সুতরাং বাম নাড়াচাড়া, আমরা এখানে দেখতে, এক্স << Y মূলত এক্স * 2 ^ Y হয়. ^ 3 13 * 2, ^ 3 2 তাই * 8 13 104 হয়, 8. আপনি শুধু সাধারণ বাইনারি, কিভাবে প্রতিটি অবস্থান ঠিকানা সম্পর্কে যদি মনে করেন আমরা ডান থেকে শুরু করা যায়, তাহলে 1 এর জায়গায়, তারপর 2 এর জায়গা, 4 এর জায়গা. তাই ডান থেকে 0 এর মধ্যে ধাক্কা দিয়ে, আমরা শুধু, 8 এর জায়গায় 4 এর জায়গায় ছিল যে জিনিষ ঠেলাঠেলি করছি এবং 16 এর জায়গায় 8 এর জায়গায় ছিল যে জিনিস. প্রতিটি শিফ্ট মাত্র 2 দ্বারা multiplies. হাঁ? আপনি 5 দ্বারা স্থানান্তরিত হলে [ছাত্র] কি হবে? [বাউডেন] আপনি 5 দ্বারা স্থানান্তরিত যদি আপনি শুধু সংখ্যা হারাবে. অবশ্যম্ভাবীভাবেই, এটা একই জিনিস. ভালো লেগেছে, ইন্টিজার শুধুমাত্র 32 বিট আছে, আপনি 2 বড় ইন্টিজার যোগ সুতরাং, যদি তা শুধু একটি পূর্ণসংখ্যা মধ্যে মাপসই করা হবে না. সুতরাং এখানে একই জিনিস. আপনি 5 দ্বারা স্থানান্তরিত হলে, আমরা শুধু যে এক হারাবে. এবং যে "প্রায়" আমি দ্বারা অর্থ কি ধরনের আপনি খুব বেশী দূরে নামান, আপনি বিট হারান যেখানে. রাইট শিফট বিপরীত হতে যাচ্ছে, আমরা শেষ বন্ধ 0 এর গুঁতা চলুন যেখানে এবং আমাদের উদ্দেশ্যে, বাম থেকে 0 এর মধ্যে পূরণ করুন. তাই এই কাজ, আমরা মূলত আমরা ইতিমধ্যে সম্পন্ন করেছে কি reversing করছি. এবং আমরা, ডানে তিনটি 0 এর মাত্র বন্ধ নিপতিত দেখুন এবং আমরা ডান থেকে 1101 সমস্ত উপায় push করা. এই কার্যকরভাবে, X / 2 ^ y, ও যা, 104 3 করছে. সুতরাং এখন, এখানে, এটি একটি অনুরূপ ধারণা. কেন এটা ঠিক প্রায় X / 2 ^ Y, এবং না আসলে এক্স / 2 ^ Y? আমি 4 দ্বারা স্থানান্তরিত ছিল, আমি একটি 1 নষ্ট হতো না. মূলত, শুধু সাধারণ পূর্ণসংখ্যা বিভাগের কি আপনি মনে, মনে করি. সুতরাং, 5/2 ভালো 2. এটা 2.5 না. এটা এখানে একই ধারণা. আমরা 2 দ্বারা বিভক্ত, যখন আমরা পথ ধরে বিজোড় বিট হারাতে পারেন. তাই এখন - যে bitwise জন্য এটি. এটা আপনাকে জানতে হবে সব. আমরা বর্গ দেখেছি ব্যবহারের ক্ষেত্রে মনে রাখবেন, মত একটি বিট মাস্ক, bitwise অপারেটরদের জন্য দরকারী অথবা আপনি বিট মাস্ক জন্য তাদের ব্যবহার. ক্যাপিটাল অক্ষর এবং ছোট হাতের অক্ষর, ধর্মান্তর খুবই prototypical উদাহরণ. ঠিক আছে, তাই ওভারফ্লো আক্রমণের বাফার. যে কেউ এই ফাংশন সঙ্গে ভুল ছিল কি মনে পড়ে? আমরা 12 বাইট একটি অ্যারের, 12 অক্ষর, ঘোষিত লক্ষ্য করুন এবং তারপর আমরা 12 অক্ষর সম্পূর্ণ পংক্তি বার আমাদের বাফারের মধ্যে কপি করুন. সুতরাং সমস্যা এখানে কি? কেন 12 - ম্যাজিক নম্বর 12 প্রায় কাছাকাছি অবিলম্বে হিসাবে পপ আউট করা উচিত? বারের অধিক 12 অক্ষরের হতে হবে কি না? কি বার অক্ষর লক্ষ লক্ষ হয় তাহলে কি হবে? আমার মনে হয় এটি. বার যথেষ্ট, যদি এটা সম্পূর্ণ হবে - 'সি', 'গ' এটি শুধুমাত্র 12 অক্ষর ছিল না যত্ন; 'গ' এটা যে অনেক বাইট মাপসই পারে না গ্রাহ্য করে না. এটা ঠিক সম্পূর্ণভাবে গৃহস্থালি মুছে ফেলা হবে, আমরা তার জন্য বরাদ্দ করেছি 12 বাইট, এবং মেমরির মধ্যে এটি অতীতের সবকিছু আসলে যে বাফার যাও অন্তর্গত নয় এমন যাই হোক না কেন স্ট্রিং বার করে দিয়ে. তাই এই আমরা বর্গ দেখেছি ছবি ছিল আমরা আমাদের স্ট্যাকের উদ্ভিন্ন আছে. আপনি এই ছবি ব্যবহৃত বা আবার তাদের সঙ্গে পরিচিত হয়. আমরা আমাদের স্ট্যাকের উদ্ভিন্ন করেছেন, মেমরি অ্যাড্রেস শীর্ষে 0 থেকে আরম্ভ হয় এবং নীচে 4 বিলিয়ন চান নিচে বাড়া. আমরা কোথাও মেমরির মধ্যে আমাদের অ্যারের 'গ' আছে তারপর আমরা ডান এটা নীচে বার আমাদের ইশারা আছে, এবং তারপর আমরা এই সংরক্ষিত ফ্রেম আমাদের ফিরতি ঠিকানা মধ্যে পয়েন্টার এবং আমাদের মূল রুটিন এর স্ট্যাকের আছে. ফিরতি ঠিকানা কি মনে রাখুন? প্রধান একটি ফাংশন বার কল, একটি ফাংশন foo বিন্যাস কল যখন এটি আছে অবশ্যম্ভাবীরূপে, আয় বার. সুতরাং যখন বার আয়, তারা এটা বলা যে foo বিন্যাস ফিরে যাচ্ছে যে জানা প্রয়োজন. তাই ফিরতি ঠিকানা যখন ফাংশন আয় ফিরে এটা যে ফাংশন এর ঠিকানা. , সুবিধামত, কারণ বাফার ওভারফ্লো আক্রমণের জন্য গুরুত্বপূর্ণ যে কারণ হ্যাকার যে ফিরতি ঠিকানা পরিবর্তন করতে চান. পরিবর্তে ফিরে foo বিন্যাস যাচ্ছে, আমি ফিরে হ্যাকার আমাকে ফিরে যেতে চায় যেখানেই যান যাচ্ছি. এবং, সুবিধামতো, হ্যাকার ঘন ঘন ফিরে যেতে চায় যেখানে আমরা মূলত ছিল বাফার শুরু হয়. তাই আবার,, লিটল ভারতীয় বিজ্ঞপ্তি. প্রয়োগ একটি লিটল ভারতীয় ব্যবস্থার একটি উদাহরণ, তাই একটি পূর্ণসংখ্যা অথবা একটি পয়েন্টার বিপরীত বাইট দিয়ে সংরক্ষণ করা হয়. তাই আমরা এখানে দেখুন - এই? হ্যাঁ. আমরা Ox80, OxC0, Ox35, OxO8 দেখুন. হেক্সাডেসিমেল সংখ্যা মনে রাখুন? আমরা, লিটল ভারতীয় ইন হেক্সাডেসিমেল সংখ্যার বিপরীত না 2 হেক্সাডেসিমেল সংখ্যা একটি একক বাইট আপ করা, এবং আমরা বাইট বিপরীত কারণ. কেন আমরা, মত, 80530CO8 সংরক্ষণ করবেন না যে. আমরা ডান থেকে শুরু,, পরিবর্তে, 2 ডিজিটের প্রতিটি জোড়া সঞ্চয়. যে ঠিকানা শুরুর ঠিকানা বোঝায় আমরা আসলে প্রথমেই মধ্যে কপি চেয়েছিলেন আমাদের বাফারের মধ্যে. দরকারী যে কারণে কি যদি, কারণ আক্রমণকারী পরিবর্তে শুধুমাত্র ছিল একটি স্ট্রিং থাকার, ঘটেছে মত একটি নিরীহ স্ট্রিং, তাদের নাম বা কিছু, কি যদি পরিবর্তে, স্ট্রিং না কিছু কিছু নির্বিচারে কোড ছিল যে তারা এটা করতে চেয়েছিলেন যাই হোক না কেন হয়নি? সুতরাং তারা পারে - আমি কোন কুল কোড মনে করতে পারেন না. এটা যদিও, কিছু হতে পারে. কোন বিপর্যয়মূলক কোড. তারা চেয়েছিলেন, তারা শুধু seg ফল্ট এ কিছু করতে পারে, কিন্তু যে অর্থহীন হবে. তারা সাধারণত আপনার সিস্টেম হ্যাক করার তা করে. ঠিক আছে. CS50 লাইব্রেরি. এটি মূলত, GetInt, GetString, ঐ সমস্ত কর্ম আমরা আপনার জন্য প্রদান করা হয়. তাই আমরা গৃহস্থালি * স্ট্রিং আছে, এবং যে আমরা দূরে blew যে বিমূর্ততা এর সেমিস্টারে সময় কিছু সময়ে. একটি পংক্তি অক্ষর শুধু একটি অ্যারের যে মনে রাখুন. সুতরাং এখানে আমরা GetString একটি সংক্ষেপিত সংস্করণ দেখতে. আপনি আসলে এটি বাস্তবায়িত কিভাবে মনে রাখা এটি ফিরে উচিত. মূল বিবরণ আছে, আমরা একটি সময়ে একটি একক চরিত্র পেতে বিজ্ঞপ্তি শুধু আমাদের কীবোর্ড এ টাইপ মত, যা মান থেকে. সুতরাং একটি সময়ে একটি অক্ষর, এবং আমরা অনেকগুলি অক্ষর পেতে, তাই ঢ + 1 টি ক্ষমতা তার চেয়ে অনেক বেশী হলে, তারপর আমরা আমাদের বাফার ক্ষমতা বৃদ্ধি প্রয়োজন. তাই আমরা এখানে আমাদের বাফারের মাপ দ্বিত্ব করছি. এবং যে রাখে; আমরা আমাদের বাফার মধ্যে অক্ষর সন্নিবেশ আমরা একটি নতুন লাইন বা ফাইল বা যাই হোক না কেন শেষ প্রাপ্ত না হওয়া পর্যন্ত, যা ক্ষেত্রে, আমরা স্ট্রিং এবং তারপর বাস্তব GetString সঙ্গে সঙ্গে শেষ করেছেন আমরা অত্যধিক স্মৃতি বরাদ্দ হলে তা ফিরে যান এবং একটি বিট সঙ্কুচিত করব মত, মেমরি shrinks. সুতরাং আমরা যে দেখাবেন না, কিন্তু মূল ধারণা এটি একটি সময়ে একটি একক চরিত্রের মধ্যে পড়তে হয়েছে. এটা ঠিক একবারে পুরো জিনিস মধ্যে পড়তে পারে না, তাদের বাফার শুধুমাত্র একটি নির্দিষ্ট আকারের কারণ. এটি বাফারের মধ্যে সন্নিবেশ করার চেষ্টা করে যে স্ট্রিং অত্যন্ত বড় তাই আপনি যদি, তারপর ওভারফ্লো করবে. তাই আমরা এখানে প্রতিরোধ যে শুধুমাত্র একটি একক চরিত্রের মধ্যে পড়া দ্বারা একটি সময়ে এবং আমরা প্রয়োজন যখনই ক্রমবর্ধমান. সুতরাং GetInt এবং অন্যান্য CS50 লাইব্রেরি ফাংশন GetString ব্যবহার ঝোঁক তাদের বাস্তবায়নের মধ্যে. তাই আমি এখানে গুরুত্বপূর্ণ বিষয় হাইলাইট. এটি একটি স্ট্রিং পেতে GetString কল. GetString স্মৃতি ফিরে আসতে ব্যর্থ হন, getString কিছু mallocs মনে রাখবেন, যাতে আপনি GetString কল যখনই আপনি (অপাচ্য) আপনি যে যে স্ট্রিং মুক্ত করা উচিত নয়. এটা কিছু malloc ব্যর্থ হলে তাই এখানে,, আমরা শুধু একটি পতাকা হিসাবে INT_MAX ফিরে যে, আরে, আমরা আসলে একটি পূর্ণসংখ্যা পেতে সক্ষম ছিল না. আপনি আমি আপনি ফিরে যাই হোক না কেন উপেক্ষা, অথবা উচিত আপনি একটি বৈধ ইনপুট হিসাবে এই বিবেচনা করা উচিত নয়. অবশেষে, যে সফল হয়নি অভিমানী, আমরা যে বিশেষ পতাকা দিয়ে sscanf ব্যবহার যার মানে, প্রথম একটি পূর্ণসংখ্যা মেলে, তারপর যে পূর্ণসংখ্যা পর কোন অক্ষর মেলে. সুতরাং আমরা এটা 1 সমান করতে চান বিজ্ঞপ্তি. সুতরাং sscanf আয় সফলভাবে কতজন ম্যাচে করেছেন তাহলে কি হবে? এটি সফলভাবে একটি পূর্ণসংখ্যা মিলেছে যদি এটা 1 ফিরে আসবে, এটি একটি পূর্ণসংখ্যা মিল পাওয়া যায়নি যদি এটি 0 ফিরে আসবে, এবং এটি 2 ফিরে আসবে এটি মিলেছে যদি একটি পূর্ণসংখ্যা কিছু অক্ষর দ্বারা অনুসরণ. তাই আমরা 1 কিছু কিন্তু মেলে যদি আমরা পুনরায় চেষ্টা লক্ষ্য করা. সুতরাং আমরা প্রবেশ করানো হলে 1, 2, 3, সি, বা 1, 2, 3, এক্স, তারপর 1, 2, 3 পূর্ণসংখ্যা মধ্যে সংরক্ষণ করতে হবে, এক্স, চরিত্র সংরক্ষিত করতে হবে আমরা শুধুমাত্র একটি পূর্ণসংখ্যা চান, কারণ, sscanf 2 ফিরে আসবে, এবং আমরা পুনরায় চেষ্টা করবে. দ্রুত এইচটিএমএল, HTTP সিএসএস মাধ্যমে প্রবাহিত. হাইপারটেক্সট মার্কআপ ল্যাঙ্গুয়েজ ওয়েব গঠন এবং শব্দার্থবিদ্যা হয়. এখানে আমরা HTML ট্যাগ আছে যেখানে বক্তৃতা থেকে উদাহরণ. আমরা মাথা ট্যাগ, শরীরের ট্যাগ, আছে আমরা, আমরা আসলে একটি শুরু ও বন্ধ ট্যাগ আছে না যেখানে খালি ট্যাগ উদাহরণ আছে আমরা শুধু লিঙ্ক এবং ইমেজ আছে. কোন ক্লোজিং ছবিটি ট্যাগ নেই; ট্যাগ কি প্রয়োজন সবকিছু accomplishes যে কেবলমাত্র একটি ট্যাগ আছে. লিঙ্ক একটি উদাহরণ; আমরা আপনার সিএসএস সাথে সংযুক্ত আছে দেখতে পাবেন, স্ক্রিপ্ট আপনি একটি বহিস্থিত জাভাস্ক্রিপ্ট লিঙ্ক কিভাবে একটি উদাহরণ. এটি এইচটিএমএল একটি প্রোগ্রামিং ভাষা নয়, বেশ সহজবোধ্য, এবং মনে রাখবেন. এখানে, আপনি এটা করতে কি একটি ফর্ম সংজ্ঞায়িত বা অন্তত কিভাবে মনে রাখবেন? যেমন একটি ফর্ম একটি কর্ম এবং একটি পদ্ধতি আছে. আপনি শুধুমাত্র কখনও দেখতে পাবেন পদ্ধতি GET এবং পোষ্ট হয়. তাই GET জিনিস URL টি স্থাপন করা হয় যেখানে সংস্করণ. এটা URL টি স্থাপন করা না যেখানে পোস্ট. পরিবর্তে, ফর্ম থেকে কোনো তথ্য HTTP-র অনুরোধে আরো লুকানো ঢোকানো হয়. HTTP-র অনুরোধ যায় যেখানে সুতরাং এখানে, কর্ম সংজ্ঞায়িত করে. এটি যাচ্ছে কোথায় google.com / অনুসন্ধান করে. পদ্ধতি. GET এবং পোষ্ট মধ্যে পার্থক্য মনে রাখবেন, আপনি বুকমার্ক কিছু করতে চান এবং, শুধু একটি উদাহরণ হিসাবে বলা. আপনি একটি পোষ্ট URL টি বুকমার্ক করতে পারবে না তথ্য URL-এ অন্তর্ভুক্ত নেই কারণ. HTTP-র, এখন, হাইপারটেক্সট ট্রান্সফার প্রোটোকল. হাইপারটেক্সট ট্রান্সফার প্রোটোকল, আপনি এটি হস্তান্তর আশা করবে হাইপারটেক্সট মার্কআপ ল্যাঙ্গুয়েজ, এবং এটা আছে. কিন্তু এটি আপনি ওয়েবে খুঁজে পেতে কোন ইমেজ স্থানান্তর, আপনি কোনো ডাউনলোড একটি HTTP অনুরোধ হিসাবে শুরু. সুতরাং HTTP-র মাত্র ওয়ার্ল্ড ওয়াইড ওয়েব এর ভাষা. এবং এখানে আপনি একটি HTTP অনুরোধ এই ধরনের স্বীকৃতি প্রয়োজন. পাশ দিয়ে এখানে HTTP/1.1 ঠিক সেই সংস্করণ বলছেন প্রোটোকলের আমি ব্যবহার করছি. আপনি তা দেখতে পাবেন এটা প্রায় কাছাকাছি সবসময় HTTP/1.1 হতে যাচ্ছে. তারপর আমরা এই আপনাকে দেখতে হতে পারে যে, বিকল্প পোষ্ট হচ্ছে, পেতে যে ছিল দেখতে. এবং আমি দেখার চেষ্টা ছিল যে URL-www.google.com/search?q = বাজে কথা, বাজে কথা, বাজে কথা ছিল. তাই মনে রাখবেন যে এই, প্রশ্ন চিহ্ন প্রশ্ন = বাজে বাজে বাজে কথা, একটি ফর্ম জমা হয় যে পণ্যদ্রব্য সাজান. এটা আমার কাছে ফিরে আসতে পারে প্রতিক্রিয়া ভালো কিছু দেখাবে. আবার, যে হতে যাচ্ছে যা প্রোটোকল, দিয়ে শুরু, অবস্থা কোড দ্বারা অনুসৃত. এখানে 200 ঠিক আছে. এবং পরিশেষে, আমি আসলে জানতে চাওয়া যে ওয়েব পেজে অনুসরণ করা হবে. সম্ভাব্য অবস্থা কোড আপনি দেখতে হতে পারে, এবং আপনি তাদের মধ্যে বেশ কিছু জানা উচিত. 200 ঠিক আছে তাহলে সম্ভবত আগে দেখা যায়. 403 নিষিদ্ধ, 404 পাওয়া যায়নি, 500 অভ্যন্তরীণ সার্ভার সমস্যা আপনি একটি ওয়েবসাইটে যান এবং কিছু ভাঙা বা তাদের পিএইচপি কোড বিপর্যস্ত হলে, সাধারণত হয় প্রয়োগ আমরা আছে, যেহেতু যে বড় কমলা বক্স যে আসে আপ এবং ভালো, কিছু ভুল হয়, বলছেন, এই কোড কাজ করছে না এই ফাংশন এর খারাপ. সাধারণত ওয়েবসাইট, আপনি ফাংশন আসলে খারাপ বুদ্ধিমান কি চাই না তাই এর পরিবর্তে তারা শুধু আপনি 500 সার্ভারের অভ্যন্তরীণ ত্রুটি দেব. TCP / IP এর HTTP-র অধীন 1 স্তর. ইন্টারনেট ওয়ার্ল্ড ওয়াইড ওয়েব এর বাইরে আছে যে মনে রাখুন. ভালো লেগেছে আপনি HTTP-র মাধ্যমে যেতে না একটি অনলাইন খেলা খেলা যদি, এটি একটি ভিন্ন মাধ্যমে যাচ্ছে - এটি এখনও ইন্টারনেট ব্যবহার এর, কিন্তু এটি HTTP-র ব্যবহার করে না. HTTP-র TCP / IP এর উপর নির্মিত প্রোটোকলের শুধু একটা উদাহরণ. আইপি আক্ষরিক ইন্টারনেট প্রটোকল মানে. প্রতিটি কম্পিউটারের একটি IP ঠিকানা আছে; তারা যারা 4 অঙ্ক জিনিস 192.168.2.1, বা যাই হোক না কেন চাই; যে একটি স্থানীয় এক হতে থাকে. কিন্তু যে একটি IP ঠিকানা প্যাটার্ন. সুতরাং DNS-র, ডোমেন নাম পরিষেবা, যে একটি প্রকৃত IP ঠিকানার সাথে google.com ভালো জিনিস অনুবাদ কি. সুতরাং আপনি একটি URL মধ্যে যে IP ঠিকানা টাইপ করুন যদি, যে গুগল থেকে আপনি আনতে হবে, কিন্তু আপনি সেগুলো মনে রাখা না ঝোঁক. আপনি পরিবর্তে google.com স্মরণ ঝোঁক. আমরা শেষ জিনিস এই আইপি থেকে বিভিন্ন TCP অংশ যেখানে পোর্ট হয়. বিভিন্ন TCP আরো আছে. আপনি আপনার ওয়েব ব্রাউজার চলমান আছে, মত, চিন্তা করুন. হতে পারে আপনি কিছু ইমেইল অ্যাপ্লিকেশন চলমান আছে; হতে পারে আপনি ইন্টারনেট চলমান ব্যবহার করে এমন কিছু অন্যান্য প্রোগ্রাম আছে. তারা সব ইন্টারনেট ব্যবহার করার প্রয়োজন, কিন্তু আপনার কম্পিউটার শুধুমাত্র 1 ওয়াইফাই কার্ড বা যাই হোক না কেন আছে. সুতরাং পোর্ট আমরা আপ বিভক্ত করতে সক্ষম হন যে উপায় এই অ্যাপ্লিকেশনগুলি ইন্টারনেট ব্যবহার করতে পারবেন না. প্রতিটি আবেদন, এটা শুনতে পারেন যে 1 নির্দিষ্ট পোর্টের পায় এবং ডিফল্টরূপে, HTTP-র পোর্ট 80 ব্যবহার করে. কিছু ইমেইল পরিষেবাগুলি 25 ব্যবহার. কম সংখ্যাযুক্ত বেশী সংরক্ষিত করা ঝোঁক. আপনি সাধারণত নিজের জন্য উচ্চ সংখ্যাযুক্ত বেশী পেতে সক্ষম. সিএসএস, ক্যাসকেডিং স্টাইল শীট. CSS এর সঙ্গে আমরা শৈলী ওয়েব পেজ, না এইচটিএমএল দিয়ে. আপনি আপনার সিএসএস লাগাতে পারেন 3 জায়গা আছে. এটা শৈলী ট্যাগ এর মধ্যে, বা একটি সম্পূর্ণ পৃথক ফাইলে এবং তারপর ইন লিঙ্ক, ইনলাইন হতে পারে এবং এখানে সিএসএস শুধু একটি উদাহরণ. আপনি এই প্যাটার্ন চিনতে হবে, প্রথম উদাহরণে আমরা শরীরের ট্যাগ মেলা, করছি যেখানে এবং এখানে আমরা শরীরের ট্যাগ কেঁদ্রীকরণ করছি. দ্বিতীয় উদাহরণে, আমরা জিনিস মিলে হয় আইডি পাদচরণ সঙ্গে, এবং আমরা যে কিছু শৈলী প্রয়োগ করছেন. বাঁদিকে যে আইডি পাদচরণ টেক্সট প্রান্তিক লক্ষ্য করুন, শরীরের টেক্সট প্রান্তিক কেন্দ্র যেহেতু. পাদলেখ শরীরের ভিতরে হয়. এটা পরিবর্তে, টেক্সট প্রান্তিককরণ শরীরের টেক্সট প্রান্তিককরণ কেন্দ্র বলছেন, যদিও বাকি হবে. এই পুরো Cascading অংশ. আপনি থাকতে পারে - আপনি শরীরের জন্য শৈলী নির্দিষ্ট করতে পারেন, এবং তারপর শরীরে জিনিস আপনি আরো নির্দিষ্ট শৈলী নির্দিষ্ট করতে পারেন, এবং জিনিষ আপনি আশা হিসাবে কাজ. আরো নির্দিষ্ট সিএসএস specifiers প্রাধান্য করা. আমি যে এটা মনে করি. [আলি Nahm] পরিষ্কার উচ্চ সবাই. আমি শুধু আপনার মনোযোগ পেতে পারে. আমি আলী এবং আমি সত্যিই দ্রুত পিএইচপি এবং এসকিউএল দিয়ে যেতে যাচ্ছি. তাই আমরা শুরু করতে পারবেন. পিএইচপি পিএইচপি জন্য সংক্ষিপ্ত: হাইপারটেক্সট Preprocessor. আপনি সব জানা উচিত হিসাবে এবং, এটি একটি সার্ভার সাইড স্ক্রিপ্টিং ভাষা আছে, এবং আমরা ওয়েবসাইটের ফিরে শেষ জন্য এটি ব্যবহার, এবং এটি কম্পিউটেশন, পিছনে দ্য দৃশ্য অংশ অনেক আছে কিভাবে. সিনট্যাক্স. এটা সি, আশ্চর্য, আশ্চর্য চাই না. আমি এগিয়ে সরাতে পারেন না - এটা সবসময় আপনি দেখতে পারেন,, দিয়ে শুরু হয়েছে. আপনি ধনুর্বন্ধনী নতুন ধরণের প্রয়োজন দেখতে পারেন এবং তারপর আপনার কাছে? পিএইচপি প্রয়োজন. তার মানে আপনি আপনার পিএইচপি টেক্সট, আপনার পিএইচপি কোড ফ্রেমে আছে কিভাবে সর্বদাই. সুতরাং এটি ঠিক আপনার ধরনের প্রথম এটা করা যেখানে সি, মত হতে পারে না. আপনি সবসময় এটা ঘেরা প্রয়োজন. এবং এখন, প্রধান বাক্য গঠন সব ভেরিয়েবল $ অক্ষর দিয়ে শুরু করা প্রয়োজন. আপনি আপনি তাদের সংজ্ঞা যখন এটা করতে হবে; আপনি এটি করতে হবে আপনি পরে তাদের উল্লেখ করছি. আপনি সবসময় যে $ প্রয়োজন. এটা অনেক সুন্দর, আপনার নতুন ভালো বন্ধু না. আপনি না - সি অসদৃশ, আপনি তা হল ভেরিয়েবল ধরন কি ধরনের করা হবে না. আপনি $ প্রয়োজন যখন সুতরাং, আপনি, ভালো করা হবে না int-x বা স্ট্রিং Y, ইত্যাদি, ইত্যাদি. তাই সামান্য পার্থক্য. এই ফলে, এটা পিএইচপি একটি স্বাস্থ্যহীন টাইপ করার প্রচেষ্টা করে. পিএইচপি একটি স্বাস্থ্যহীন টাইপ ভাষা, এবং এটা স্বাস্থ্যহীন ভেরিয়েবলের টাইপ করা হয়েছে. অন্য কথায়, যে আপনি পরিবর্তনশীল ধরনের বিভিন্ন ধরণের মধ্যে সুইচ করতে পারেন. আপনি কোন int হিসাবে আপনার 1 নম্বর সংরক্ষণ করতে পারেন, আপনি একটি স্ট্রিং হিসাবে এটি সংরক্ষণ করতে পারেন, এবং আপনি একটি float হিসাবে এটি সংরক্ষণ করতে পারেন, এবং এটি সমস্ত যে সংখ্যা 1 হতে হবে. আপনি বিভিন্ন ফর্ম মধ্যে এটি সংরক্ষণ করছেন যদিও, এটি এখনও এর - পরিবর্তনশীল ধরনের এখনও শেষ পর্যন্ত অধিষ্ঠিত হয়. সুতরাং আপনি এখানে তাকান, আপনি pset 7 থেকে স্মরণ হলে, আপনি অনেক সম্ভবত এই সঙ্গে বিষয় ছিল. দুই সমান চিহ্ন, 3 সমান চিহ্ন, 4 সমান চিহ্ন. ঠিক আছে, কোন 4 সমান চিহ্ন আছে, কিন্তু 2 এবং 3 আছে. আপনি মান পরীক্ষা করে 2 সমান চিহ্ন ব্যবহার. এটা ধরনের জুড়ে চেক করতে পারেন. সুতরাং আপনি প্রথম উদাহরণ এ দেখতে পারেন যদি, আমি num_int == num_string আছে. সুতরাং আপনার কোন int এবং আপনার স্ট্রিং উভয়, টেকনিক্যালি, 1, কিন্তু তারা বিভিন্ন ধরনের করছি. কিন্তু ডবল সমান জন্য, এটা এখনও পাস করব. যাইহোক, ট্রিপল সমান জন্য, এটা মান হিসেবে বিভিন্ন ধরনের পরীক্ষা করা হবে. যে, এটা এখানে যে দ্বিতীয় ক্ষেত্রে পাস যাচ্ছে না এর মানে হল যে আপনি পরিবর্তে 3 সমান চিহ্ন ব্যবহার করছেন যেখানে. সুতরাং যে আপনি সব এখন দেখানো হয়েছে যে একটি প্রধান পার্থক্য. স্ট্রিং সংযুক্তকরণের আপনি পিএইচপি ব্যবহার করতে পারেন অন্য একটি শক্তিশালী জিনিস. এটি মূলত শুধু এই কুশলী ডট স্বরলিপি এবং যে আপনি একসঙ্গে স্ট্রিং আবদ্ধ যাবে কিভাবে. তাই আপনি যদি বিড়াল আছে এবং আপনি কুকুর আছে, এবং আপনি একসাথে 2 স্ট্রিং লাগাতে চান, আপনি সময়ের ব্যবহার করতে পারেন, এবং যে কিভাবে এটি কাজ করে ধরনের. আপনি শুধু পরের একে অপরকে তাদের স্থাপন করতে পারেন, আপনি নীচের উদাহরণে এখানে দেখতে পারেন, আমি স্ট্রিং 1, স্থান স্ট্রিং 2 echo আছে যেখানে. পিএইচপি যেমন তাদের প্রতিস্থাপন জানতে হবে. অ্যারেগুলির. এখন, পিএইচপি, অ্যারে 2 বিভিন্ন ধরণের আছে. আপনি নিয়মিত অ্যারে আছে, এবং আপনি এছাড়াও মিশুক অ্যারে আছে, এবং আমরা এই মুহূর্তে তাদের মাধ্যমে যেতে চলুন. নিয়মিত অ্যারে, শুধু এই সি আছে এবং যাতে আপনি সংখ্যা নির্ধারণ করা হয় যে সূচক আছে. ঠিক এখন আমরা শুধু একটা তৈরি করতে যাচ্ছে এবং রাখা করছি - তাই এই আমরা একটি খালি অ্যারে তৈরি কিভাবে হয়, তাহলে আমরা চলুন সূচক সংখ্যা 0 পুরা. আমরা সংখ্যা 6, মূল্য 6 রাখা চলুন. আপনি এখানে নীচে এটা দেখতে পারেন. Where's - সূচক সংখ্যা 1 এ আমরা মূল্য সংখ্যা 4 করা যাচ্ছেন এবং যাতে আপনি একটি 6 আছে দেখতে পারেন, একটি 4, আছে এবং তারপর আমরা জিনিস মুদ্রণ করছি যে, আমরা চেষ্টা এবং সূচক সংখ্যা 0 সংরক্ষিত মান প্রিন্ট করার সময়, তারপর আমরা প্রিন্ট আউট হওয়ার 6 মূল্য দেখতে পাবেন. কুল? সুতরাং যে আপনার জন্য নিয়মিত অ্যারে এর. তাহলে আপনি এখন নিয়মিত অ্যারে জিনিষ যোগ করতে পারেন আরেকটি উপায় আপনি শুধু শেষে তাদের লিখবেন যাবে না. তার মানে আপনি নির্দিষ্ট সূচক উল্লেখ করতে হবে না মানে. আপনি সংখ্যা দেখতে পারেন, এবং তারপর বর্গাকার বন্ধনী উল্লিখিত কোন সূচক আছে. এবং এটা জানতে হবে - পিএইচপি শুধু তালিকা, পরের বিনামূল্যে স্পট শেষে এটি যোগ করতে জানতে হবে. তাই আপনি, যে 0 স্থানে অধিকার আছে 1 দেখতে পারেন 2 প্রথম স্থানে সঠিক সেখানে গিয়েছিলাম. 3 যায় - পাশাপাশি সেখানে যোগ করা হয়. সুতরাং যে ধরনের ইন্দ্রিয় তোলে. আপনি শুধুমাত্র ক্রমাগত এটি যোগ করছি, এবং তারপর আমরা, সংখ্যা 1 হাজার সূচী অনুনাদী করছি এটা মান 2 প্রিন্ট আউট হবে. তারপর আমরা মিশুক অ্যারে যে অ্যারে আছে. পরিবর্তে সংখ্যাসূচক সূচকগুলি থাকার মিশুক অ্যারে,, কি তারা তারা স্ট্রিং দ্বারা যে সূচক আছে. আপনি পরিবর্তে, দেখতে পারেন - আমি ঐ সমস্ত সংখ্যা সূচকের পরিত্রাণ, এবং এখন এটি key1, key2, key3, এবং তারা সব তারা স্ট্রিং করছি যে বোঝান উদ্ধৃতি চিহ্ন মধ্যে আছেন. সুতরাং আমরা এই একটি উদাহরণ হতে পারে. এই যেমন আমরা TF আছে, এবং যে সূচী নাম. আমরা, ক্যালোরি খাওয়া, সূচিতে, নাম হিসেবে "আলী" রাখা চলুন আমরা পরিবর্তে একটি স্ট্রিং এর কোন int এই সময় লাগাতে পারেন, এবং তারপর ইনডেক্স পছন্দ, আমরা এটি ভেতরে একটি সম্পূর্ণ অ্যারে লাগাতে পারেন. সুতরাং এই ধরনের হয় - এটা আমরা ছিল কিভাবে একটি অনুরূপ ধারণা সংখ্যার সূচক, কিন্তু এখন আমরা প্রায় সূচকের পরিবর্তন করতে পারেন পরিবর্তে স্ট্রিং হিসাবে তাদের আছে. এছাড়াও আপনি শুধু পৃথকভাবে এরকম পাশাপাশি এটা করতে পারেন আপনি এক খণ্ড মধ্যে এটি সব করতে পারেন. তাই আপনি, যে অ্যারের যে TF দেখতে পারেন এবং তারপর আমরা এক দৈত্য গুরুবন্ধনী সেট সেগুলি সেট. সুতরাং যে জিনিস গতি বাড়াতে পারেন. এটা না চেয়ে রচনাশৈলীসংক্রান্ত পছন্দের আরো. আমরা loops আছে. সি ইন আমরা ভালো কাজ যে loops আছে. আমরা আমাদের অ্যারের ছিল, এবং আমরা তালিকার শেষে সূচক 0 থেকে গিয়েছিলাম, এবং আমরা ডান, এটি সমস্ত মুদ্রণ? , সমস্যা মিশুক অ্যারে জন্য, হল ছাড়া আমরা যারা সাংখ্যিক সূচক অগত্যা জানি না এখন আমরা স্ট্রিং সূচক আছে. এখন আমরা আবার, আপনি আশা pset 7 ব্যবহার, যা foreach loops, ব্যবহার. Foreach loops শুধু তালিকার প্রতি একক অংশ জানতে হবে. এবং এটা আপনি যে ঠিক সংখ্যাগত সূচী জানা নেই. সুতরাং আপনি অ্যারে করা, আপনি foreach সিনট্যাক্স আছে, তাই এটা foreach এর. , তাই আমার অ্যারের pset বলা হয়, এবং তারপর হিসাবে শব্দ, হিসাবে এবং তারপর আপনি যে আপনি ব্যবহার করতে যাচ্ছেন যে এই স্থানীয় অস্থায়ী পরিবর্তনশীল রাখা শুধু নির্দিষ্ট রাখা যাচ্ছে যে নির্দিষ্ট জিনিস জন্য - এক ইনস্ট্যান্সের বা অ্যারের এক অধ্যায়. , Pset NUM 1 রাখা হবে, এবং তারপর হয়তো এটা সংখ্যা 6 রাখা হবে এবং তারপর এটি সংখ্যা 2 রাখা হবে. কিন্তু অ্যারের মধ্যে যে এর প্রতি একক মূল্য দিয়ে যেতে নিশ্চিত এর. আপনি পিএইচপি জানা উচিত যে দরকারী ফাংশন প্রয়োজন হয়, প্রস্থান, খালি, প্রতিধ্বনি, তাই যে, আপনি নির্দিষ্ট ফাইল সহ করছেন তা নিশ্চিত করে তোলে. আমি অত্যন্ত আপনি pset 7 এ এবং যারা ফাংশন তাকান সুপারিশ. আপনি যাদের জানা থাকতে পারে, তাই আমি স্পষ্টভাবে ঠিক, যারা সব কি করছেন, জানতে চাই. এবং এখন আমরা সত্যিই দ্রুত সুযোগ দিয়ে যেতে চলুন. সুযোগ ইন, পিএইচপি, সি ভিন্ন, একটি ভীতু ধরনের জিনিস এবং তাই আমরা দ্রুত এটা মাধ্যমে যেতে চলুন. সুতরাং আসুন আমরা আমরা সেখানে আছে যে তীর থেকে আরম্ভ হয় বলা যাক. এবং আমরা $ আমি দিয়ে শুরু করতে যাচ্ছেন. সুতরাং পরিবর্তনশীল 'আমি', 0 হতে যাচ্ছে এবং আমরা শুধু ওইদিকে যে বড় সাদা বাক্সে এটা মুদ্রণ রাখা চলুন. আমরা i0 সঙ্গে শুরু করতে যাচ্ছেন, এবং তারপর আমরা তা echo চলুন. সুতরাং 0 আছে. এবং তারপর আমরা, এর জন্য লুপ দ্বারা এটি বাড়ায় চলুন এবং তারপর এটি 1 এর মান হতে যাচ্ছে. , এক কম 3, তাই এটি লুপ জন্য যে সহ্য করে যাচ্ছে এবং তারপর আমরা আবার ছাপা দেখতে চলুন. আমরা, 2 আবার এটি বাড়ায় চলুন এবং 2 কম 3, তাই এটি লুপ জন্য পাস করব, এবং এটি 2 প্রিন্ট করব. তারপর আপনি 3 3 কম নয় নোট করব, তাই আমরা লুপ জন্য আউট বিরতি পাবেন. তাই এখন আমরা প্রস্থান করেছি, এবং তারপর আমরা aFunction ঢোকা চলুন. ঠিক আছে. তাই আপনি যদি এই পরিবর্তনশীল আমরা তৈরি করেছি যে খেয়াল করা আছে 'আমি' পরিবর্তনশীল, স্থানীয়ভাবে scoped না. যে এটি লুপ স্থানীয় না এর মানে হল যে, এবং যে পরিবর্তনশীল আমরা এখনও অ্যাক্সেস এবং পরে পরিবর্তন, এবং এটা এখনও কার্যকর হবে পারেন. আপনি এখন ফাংশন ঢোকা সুতরাং, যদি আপনি, আমরা 'আমি' ভেরিয়েবল ব্যবহার দেখতে পাবেন এবং আমরা 'আমি' + + 'বাড়ায় চলুন. আপনি যে 'আমি' ভেরিয়েবলের একটি কপি যে, সি এর উপর ভিত্তি করে, প্রথম দিকে মনে হবে. এটা সঠিক, যা একটি সম্পূর্ণ ভিন্ন জিনিস. আমরা এটি প্রিন্ট যখন সুতরাং, আমরা প্রিন্ট আউট করতে যাচ্ছে, যা 'আমি' + প্রিন্ট করতে যাচ্ছেন যে 4, দুঃখিত - এবং তারপর আমরা চলুন. তারপর আমরা যে ফাংশন আউট শেষ হয়ে যাচ্ছেন, এবং আমরা যে তীর ডান এখন যেখানে হতে যাচ্ছেন. যে তারপর, কিন্তু, ফাংশন 'আমি' র মান পরিবর্তন করে, যদিও এর মানে হল যে, এটা বাইরে ফাংশন পরিবর্তন হয়নি, ফাংশন একটি পৃথক সুযোগ আছে, কারণ. যে, আমরা 'আমি' প্রতিধ্বনি, এটি ফাংশন সুযোগ মধ্যে পরিবর্তন হয়নি যে মানে এবং আমি তখন আমরা আবার 3 মুদ্রণ চলুন. সি আর পিএইচপি সুযোগ সম্পর্কে বিভিন্ন জিনিস এখন পিএইচপি এবং HTML এ. পিএইচপি ওয়েব পেজ গতিশীল করতে ব্যবহৃত হয়. এটা ধরনের জিনিস আলাদা করে তোলে. আমরা এইচটিএমএল থেকে এটি আলাদা আছে. এইচটিএমএল, আমরা সবসময় ঠিক, রব দেখিয়েছেন কিভাবে মত একই স্ট্যাটিক জিনিস আছে পিএইচপি, যেহেতু, আপনি ব্যবহারকারী কে উপর ভিত্তি জিনিস পরিবর্তন করতে পারেন. আমি এই আছে সুতরাং, যদি আমি, "আপনি যত ছবি -" আছে এবং তারপর নাম, এবং আমি নাম পরিবর্তন করতে পারেন. তাই এই মুহূর্তে নাম, জোসেফ হয় এবং এটা "আমার সম্পর্কে" আছে কিন্তু তারপর আমি টমি আছে নাম পরিবর্তন করতে পারেন. এবং যে একটি ভিন্ন জিনিস হবে. আমি তখন আমরা তার সম্পর্কে বিভিন্ন জিনিস পরিবর্তন করতে পারেন, এবং এটি নামের উপর ভিত্তি করে ভিন্ন কন্টেন্ট দেখাবে. সুতরাং পিএইচপি ধরনের আপনার ওয়েবসাইটের মধ্যে কি করছেন পরিবর্তন করতে পারেন. এখানে একই. এখনও, তারা বিভিন্ন কন্টেন্ট আছে মনে রাখবেন, আপনি টেকনিক্যালি এখনও পৃষ্ঠের যে একই ওয়েব পাতা ব্যবহার করা হয় যদিও. এইচটিএমএল জেনারেট. আপনি এটা করতে পারেন যে 2 বিভিন্ন উপায় আছে. সুতরাং আমরা এখন যে অধিকার দিয়ে যাবেন. প্রথম উপায় আপনার আছে, হল - হাঁ, দুঃখিত. সুতরাং আপনি ঠিক, পিএইচপি লুপ জন্য আপনার নিয়মিত আছে এবং তারপর আপনি পিএইচপি echo এবং আপনি এইচটিএমএল ইকো. রব এইচটিএমএল স্ক্রিপ্ট আপনাকে দেখিয়েছি কি ব্যবহার এবং তারপর শুধুমাত্র ওয়েব পেজ থেকে এটি প্রিন্ট আউট পিএইচপি মুদ্রণ ব্যবহার করে. বিকল্প উপায় আপনি পিএইচপি এবং এইচটিএমএল আউট আলাদা হিসাবে যদি এটা করতে হয়. তাই আপনি, লুপ জন্য শুরু হয় যে পিএইচপি একটি লাইন থাকতে পারে তারপর আপনি একটি পৃথক জিনিস মধ্যে HTML লাইন থাকতে পারে, এবং তারপর আপনি একটি পিএইচপি সঙ্গে, আবার, লুপ শেষ. সুতরাং এটি ধরনের এটি পৃথক এর. বাম দিকে, আপনি আপনার থাকতে পারে যে সব - এটি পিএইচপি মাত্র 1 খণ্ড. ডান উপর আপনি, আপনি PHP 'র একটি লাইন আছে দেখতে পারেন আপনি এইচটিএমএল একটি লাইন আছে, এবং আপনি আবার PHP 'র একটি লাইন আছে. সুতরাং তারা কি করছেন সেটিকে খুঁজে পৃথক. এবং আপনি যে উপায় হয়, তাদের মধ্যে হয়, যদি নোট করব তারা এখনও ইমেজ প্রিন্ট আউট, ইমেজ, ইমেজ, তাই যে এইচটিএমএল এখনও একই ভাবে ছাপা হয়. এবং তারপর আপনি এখনও 3 ইমেজ আপনার ওয়েবসাইটে দেখা দেখতে পাবেন. সুতরাং এটি একই জিনিস করছেন 2 বিভিন্ন উপায় আছে. এখন আমরা ফরম এবং অনুরোধ. রব, আপনি দেখিয়েছেন হিসাবে সেখানে এইচটিএমএল ফরম, এবং আমরা ঠিক এই মাধ্যমে অশান্তি হবে. আপনি একটি কর্ম আছে এবং আপনি একটি পদ্ধতি আছে, এবং আপনার কর্ম ধরনের আপনি এটা পাঠান চলুন যেখানে আপনি দেখায়, এবং পদ্ধতি কিনা এটি একটি GET অথবা একটি পোষ্ট হতে যাচ্ছে. এবং একটি অনুরোধ পান, রব বলেন, আপনি একটি আকারে এটা করা চলুন মানে হল একটি POST রিকোয়েস্ট আপনি একটি URL-এ দেখতে পাবেন না, যেহেতু এবং আপনি একটি URL হিসাবে এটি দেখতে পাবেন. তাই সামান্য পার্থক্য. তবে, একটি অনুরূপ জিনিস যে এক জিনিস পোষ্ট পেতে সমানভাবে অনিরাপদ হয়. তাই আপনি, ঠিক কারণ আপনি ইউআরএল তা দেখতে না যে মনে হতে পারে যে, পোষ্ট আরো নিরাপদ মানে কিন্তু আপনি এখনও আপনি পাঠানোর করছি যে তথ্য আপনার কুকি মধ্যে এটি দেখতে পারেন. তাই মনে করি না এক বা অন্যান্য. খেয়াল করা আরেকটা জিনিস আপনার কাছে অধ্যায় ভেরিয়েবল আছে. আপনি না আপনার ব্যবহারকারী আইডি তথ্য পেতে pset 7 এই ব্যবহার. কি আপনি এই মিশুক অ্যারে ব্যবহার করতে পারেন ছিল, $ _SESSION, এবং তারপর আপনি বিভিন্ন জিনিষ অ্যাক্সেস করতে সক্ষম হন এবং পৃষ্ঠা জুড়ে বিভিন্ন জিনিস সঞ্চয়. শেষ জিনিস, আমরা এসকিউএল, গঠিত অনুসন্ধান ভাষা আছে এবং এই উপাত্ত পরিচালনার জন্য একটি প্রোগ্রামিং ভাষা. ঠিক, উপাত্ত কি কি? তারা টেবিল সংগ্রহ করছি, এবং প্রতিটি টেবিলের অবজেক্টের একই ধরণের থাকতে পারে. সুতরাং আমরা আপনার অর্থ pset ব্যবহারকারীদের একটা টেবিল ছিল. এবং কেন তারা দরকারী? এটি স্থায়ীভাবে তথ্য জমা করার একটি উপায় কারণ. এটা জিনিস ট্র্যাকিং এবং জিনিষ পরিচালনার একটি উপায় এবং প্রকৃতপক্ষে বিভিন্ন পেজ এবং পালন ট্র্যাক এটা এইজন্য. যেহেতু আপনি শুধু যে এক তাৎক্ষণিক মুহূর্তে এটি সংরক্ষণ করা হলে এবং তারপর পরে এটি ব্যবহার, আপনি সংরক্ষণ করেছি কিছু যে অ্যাক্সেস করতে পারবে না. আমরা আমরা এসকিউএল কমান্ড জন্য ব্যবহার 4 প্রধান বিষয় আছে. আমরা নির্বাচন, সন্নিবেশ, মুছে ফেলা, এবং আপডেট আছে. যারা আপনাকে বলছি আপনার ব্যঙ্গ জন্য জানতে জন্য সত্যিই গুরুত্বপূর্ণ. আমরা দ্রুত মুহূর্তে ওভার নির্বাচন যাবেন. মূলত, আপনি একটি ডাটাবেস থেকে সারি নির্বাচন করছি. সুতরাং আপনি এখানে ডান, যদি - আমরা এইসব 2 ভিন্ন জিনিস আছে, এবং আমরা ক্লাস টেবিল থেকে নির্বাচন করতে চান যেখানে সন্ত্রস্ত - সন্ত্রস্ত কলামে মান 1 হয়. আপনি এখানে দেখতে পারেন সুতরাং, আমরা, বর্গ নামের এই 2 জিনিষ আছে CS50 এবং Stat110, এবং আমরা ক্লাস ID-র ও স্লোগান আছে. সুতরাং আমরা যে সমস্ত তথ্য নির্বাচন করতে চান. তারপর আপনি, এটা কোন ধরনের যে সন্ত্রস্ত কলামের বাইরে অবচয় যে অধিকার এখানে দেখতে পারেন সবকিছুর 1, এবং তারপর এটি বর্গ আইডি, ক্লাস নাম এবং এটি বাছাই করতে পারেন যে স্লোগান আছে যেখানে. আপনি এই কোডে কিভাবে ঠিক করব? আপনি পিএইচপি ব্যবহার আছে. সুতরাং যে ধরনের পিএইচপি এবং এসকিউএল একে অপরের সাথে সম্পর্কিত হয় কিভাবে. এখন আমরা আমাদের কোড আছে, এবং আমরা আমাদের প্রশ্নের সাথে ফাংশান ব্যবহার করতে যাচ্ছেন আমরা pset 7 করেছিল, এবং আমরা এসকিউএল কোয়েরি চালানো চলুন হিসেবে. তারপর আমরা আছে চলুন - আমরা সবসময় মিথ্যা যদি সারি এর ট্রিপল সমান যদি চেক আছে. তাই আবার, আপনি টাইপ এবং মান পরীক্ষা করতে, এটা কাজ করে না এবং তারপর যদি, তাহলে আমরা pset 7 করেছিল হিসাবে, স্বাভাবিক হিসাবে, ক্ষমাপ্রার্থী করতে চান. অন্যথা, আপনি ঐ কুশলী সঙ্গে সবকিছু মাধ্যমে লুপ চান foreach আমরা শুধু ওভার গিয়েছিলাম যে loops. , আমরা মাধ্যমে looping করছি এবং আমরা অতীতে এটি তৈরি করেছি এখন যে আসুন আমাদের প্রশ্নের সাথে পাশ অনুমান করা যাক, এখন আমরা আমাদের foreach লুপ আছে. এবং প্রথম সারিতে এটা আছে, তাই এখানে সারি অধিকার এখানে, এর তা boxed এর. এটা অর্জিত যে সমস্ত তথ্য আউট মুদ্রণ যাচ্ছে. সুতরাং নীচে আউট মুদ্রণ যাচ্ছে "ওয়ানা এইচটিএমএল শিখুন" এটি লুপ জন্য প্রথম সম্পন্ন কারণ তারপর এটা,, পরের সারিতে যেতে যাচ্ছে এবং তারপর, তাই এটা, এটা দ্বিতীয় লাইন আউট মুদ্রণ যাচ্ছে STAT110 হতে যাচ্ছে, যা সব মারার খুঁজুন. গত এক জিনিস এসকিউএল দুর্বলতা হয়. আমি ডেভিড এই প্রথম বক্তৃতায় অল্প ছোঁয়া জানি. আপনি পরে এই পড়তে পারেন. এটা সত্যিই মজার. এসকিউএল ইনজেকশন চতুর জিনিস এক ধরনের. এর আপনি সঠিক আপনার প্রশ্নের সাথে মধ্যে যারা ভেরিয়েবল সোঁটা বলা যাক, আপনি যে প্রথম লাইন দেখতে পারেন. সুতরাং এটি ঠিক আছে, সূক্ষ্ম বলে মনে হয়? আপনাকে কেবল ব্যবহারকারী নাম নির্বাণ করছি এবং আপনার SQL কোয়েরি যাও পাসওয়ার্ড, এবং আপনি তা বন্ধ অর্ণবপোত এবং আপনার তথ্য টেবিলের মধ্যে যা কিছু পেতে চান. এটা বেশ সহজ মনে হয়. সুতরাং, কেউ রাখে বলে দেয় পাসওয়ার্ড জন্য, এই বা টেক্সট এখানে ডান - আসলে লাল বক্সের মধ্যে হতে হবে. সুতরাং আসুন তারা মধ্যে যে পাসওয়ার্ড করা যে বলা যাক - যে তারা লিখতে কি. সুতরাং তারা নির্বাণ বা "1" = 1 করছি. আছে একটি নিরীহ পাসওয়ার্ড ধরনের. এখন আসুন শুধু এটি প্রতিস্থাপন করা যাক, এবং আপনি এখন যে SQL কোয়েরি মধ্যে নোট করব, আপনি নোট পাবেন, কারণ এটি সর্বদা সত্য যাও মূল্যায়ণ করা যে আপনি SQL কোয়েরি এই সমস্ত তথ্য নির্বাচন করতে পারেন অথবা আপনি শুধু = 1 1 থাকতে পারে. সুতরাং যে সর্বদা সত্য যাও নির্ণয় করা যাচ্ছে. যে হ্যাকার আপনার সিস্টেমের মধ্যে ভাঙ্গতে পারে এর মানে হল এ কারণে যে, সত্যিই কাজ করে যাচ্ছে না. এই সমাধান আপনি PDO সিস্টেম ব্যবহার আছে যে, যা, আপনি প্রশ্ন চিহ্ন ব্যবহার করতে হবে এর মানে হল যে কি আপনি pset 7 ব্যবহার বলছি, যা আপনি কিছু লাগাতে চান যেখানে স্থানে একটি প্রশ্ন চিহ্ন ব্যবহার করতে যাচ্ছেন যেখানে, এবং তারপর, আপনি একটি কমা আছে চলুন, এবং তারপর আপনি পরে হবে আপনার স্ট্রিং পরে, আপনি চান যে বিভিন্ন ভেরিয়েবল আপনার প্রশ্ন চিহ্ন মধ্যে প্রতিস্থাপন. সুতরাং আপনি এখন আমি এই লাল প্রশ্ন চিহ্ন আছে এখানে নোট পাবেন. আমি পরে যে অনুক্রমে তাদের প্রতিস্থাপন জানি তাই তারপর আমি আমার স্ট্রিং পরে ভেরিয়েবল করা. কেউ ভালো যদি এটি আছে যে, নিশ্চিত যে করতে হবে এবং তারা, নিশ্চিত করতে হবে যে, বা 1 = 1 অবস্থায় আছে ফিরে শেষ পর্যন্ত, এটা আসলে এসকিউএল কোয়েরি বিরতি হবে তা নিশ্চিত করুন. ঠিক আছে, পিএইচপি এবং এসকিউএল একটি ঘূর্ণিঝড়, যে প্রায় কাছাকাছি এটি তাই. আপনি সব শুভেচ্ছা, এবং এখন যাও Ore যাও [Oreoluwatomiwa Babarinsa] ঠিক আছে সবাই. কিছু জাভাস্ক্রিপ্ট ধরে যেতে সময় এবং কিছু অন্যান্য বিষয় খুব তাড়াতাড়ি যাতে আমরা আপনাকে আজ রাতে আপ রাখা না. জাভাস্ক্রিপ্ট. হ্যাঁ. জাভাস্ক্রিপ্ট purportedly, একটি শীতল জিনিস ধরনের. আপনি সত্যিই জাভাস্ক্রিপ্ট সম্পর্কে জানা প্রয়োজন জিনিষ, এটা সাজানোর মত আপনার ওয়েব অ্যাপ্লিকেশন কাজ করা যাচ্ছে কি ক্লায়েন্ট প্রান্তের শেষ. আপনি শুধু সার্ভারের দিকে সব সময় যত্ন নিতে না চান কিছু জিনিস আছে. সমস্ত সামান্য মিথস্ক্রিয়া, এক জিনিস হাইলাইট কিছু উধাও হয়ে যায়, যার ফলে. আপনি সত্যিই আপনার সার্ভারের সাথে যে জন্য সব সময় কথা বলার আছে না চান. এবং যে কিছু সার্ভার পাশ দিয়ে যা করতে এমনকি সম্ভব নয়. আমরা জাভাস্ক্রিপ্ট ভালো কিছু প্রয়োজন কেন. জাভাস্ক্রিপ্ট সম্পর্কে দুর্দান্ত জিনিস: এটি পরিবর্তনশীল টাইপ করা হয়. কি এই মানে হল আপনার প্রোগ্রাম জানি না প্রয়োজন হয় আপনি এটা লিখতে হলে কি, ঠিক, ভেরিয়েবল হয়. এটা চলমান এর হিসাবে এটি শুধু সাজানোর এটা চিন্তা করব. এটি সম্পর্কে শীতল হয় যে অন্যান্য জিনিস: এটি একটি কোঁকড়া বক্রবন্ধনী ভাষা আছে, যা সিনট্যাক্স C এবং পিএইচপি অনুরূপ মানে. আপনি জাভাস্ক্রিপ্ট শিখছে তা হলে অনেক rework যা করতে হবে না. এখানে আমরা জাভাস্ক্রিপ্ট সামান্য বিট আছে. অধিকার এখানে আকর্ষনীয় ব্যাপার হল যে, আপনি এটি তাকান, হয় আমরা মাথা ট্যাগে অধিকার আছে জাভাস্ক্রিপ্ট একটি বিট আছে. কি মূলত শুধুমাত্র একটি জাভাস্ক্রিপ্ট ফাইল অন্তর্ভুক্ত করা হয় না. এই কমান্ডের সাহায্যে আপনি আপনার প্রোগ্রামে জাভাস্ক্রিপ্ট অন্তর্ভুক্ত করতে পারে একটি পদ্ধতি. তারপর দ্বিতীয় সামান্য বিট, আসলে কিছু ইনলাইন জাভাস্ক্রিপ্ট হয় খুব সিএসএস সঙ্গে ইনলাইন শৈলী অনুরূপ, এবং আপনি শুধু খুব তাড়াতাড়ি সেখানে কিছু কোড লেখার. জাভাস্ক্রিপ্ট অ্যারে আছে. খুব দরকারী, কাছাকাছি তথ্য রাখা শুধু অন্য উপায়. অত্যন্ত সুন্দর এবং সহজ সিনট্যাক্স. আপনি সবকিছু এবং অ্যাক্সেস সবকিছু একসাথে রাখা বর্গাকার বন্ধনী ব্যবহার. খুব জটিল কিছুই নেই. সাধারণ জাভাস্ক্রিপ্ট এবং স্ক্রিপ্টিং ভাষা সম্পর্কে শীতল জিনিস আপনি অ্যারে মাপ সম্পর্কে চিন্তা করতে হবে না যে. আপনি শুধুমাত্র array.length এবং এটি ব্যবহার ট্র্যাক রাখতে পারবেন, এবং এ অ্যারে বাড়া বা আপনি এটি প্রয়োজন হিসাবে সঙ্কুচিত করতে পারেন. সুতরাং আপনি এমনকি, কোন ধরণের সম্পর্কে চিন্তা করতে হবে না ওহ না, আমি আরো জিনিষ, বা যে মত কিছু বরাদ্দ করা প্রয়োজন. জিনিস এখানে বস্তু কিছু বলা আছে. এটি একটি অবজেক্ট ওরিয়েন্টেড ভাষা, তাই এটা হয়েছে মূলত,, দলের তথ্য আপনার জন্য একটি পথ একসাথে, একটি struct থেকে কিছুটা অনুরূপ, কিন্তু আপনি একটি struct মত অথবা একটি মিশুক অ্যারে সিনট্যাক্স মধ্যে এটি ব্যবহার করতে পারবেন. এটি বেশ সহজ এবং আপনি কি এই সঙ্গে কাজ করতে পারেন একসাথে গ্রুপ তথ্য হল আপনি সম্পর্কিত যে তথ্য একটি গুচ্ছ আছে. এটি আপনাকে একটি গাড়ী বর্ণনা প্রয়োজন সবকিছুর কারণ, আপনি বিভিন্ন জায়গায় একটি গুচ্ছ মধ্যে এটা আছে, দরকার নেই. আপনি শুধুমাত্র জাভাস্ক্রিপ্ট মধ্যে 1 বস্তুর মধ্যে দাম ধরা যেতে পারে. আপনি সম্ভবত জানেন, iterating ঐ ক্লান্তিকর কাজগুলো এক. আপনি শুধু আবার একটি ওভার ওভার এটা. আপনি গাড়ির প্রত্যেক বস্তুর সঙ্গে কথা বলার প্রয়োজন অথবা আপনি একটি তালিকা বা যে মত কিছু প্রতিটি আইটেমের মধ্য দিয়ে যেতে হবে. সুতরাং জাভাস্ক্রিপ্ট, পিএইচপি, একটি foreach সিনট্যাক্স অনুরূপ আছে. এই ক্ষেত্রে, এটি লুপ জন্য না. আপনি কেবল বস্তুর উপর এই ব্যবহার করতে চান. আপনি অ্যারে নেভিগেশন এই ব্যবহার যদি যে ঘটতে কিছু সমস্যা আছে. সাধারণভাবে যদিও, যে খুবই দরকারী, সেগুলো এক আপনি উপরি অনেক বাছা কারণ আপনি নিজেকে দ্বারা আপনার বস্তুর সবকিছুই থামা করতে হবে না, কারণ. আপনি সব কি নাম স্মরণ করতে হবে না. আপনি ঠিক সাজানোর এই সিনট্যাক্স তাদের ফিরে পেতে. এই যে, জন্য সহ, আপনি শুধু মনে রাখতে চান আপনি টেবিল হ্যাশ একটি অনুরূপ ভাবে, সব কি ফিরে পেয়ে থাকেন যে. আপনি যে থেকে মনে রাখবেন যদি আপনি একটি স্ট্রিং স্থাপন করা হবে, আপনি কিছু খুঁজে পেতে পারেন যে এটি সঙ্গে যুক্ত মান থাকতে হবে. কি আপনি এই সঙ্গে কাজ করতে পারেন, আপনি, ঠিক আছে বলতে পারেন হয় আমি একটা গাড়ী রাখা, এবং আমি একটি ফেরারী বলা. সুতরাং আপনি পরে আবার স্ট্রিং ফেরারী মধ্যে লাগাতে পারেন, এবং আপনি যে খুঁজে পেতে পারেন. এবং যদি আপনি লুপ জন্য, সঙ্গে একটি লুপ মধ্যে তা করতে পারে. তাই শুধু বস্তু সম্পর্কে আরো. আপনি মনে রাখা প্রয়োজন এই থেকে কি জিনিস , আপনি এই সঙ্গে যখনই আপনি সিনট্যাক্স মত বস্তুর struct ব্যবহার করতে পারেন কি আপনার একটি পংক্তি হিসাবে ব্যবহার করা যাচ্ছে একটি বৈধ পরিবর্তনশীল নাম নয় যদি ছাড়া. আপনি যে আছে তাকান সুতরাং, যদি আমরা স্পেস দিয়ে কি আছে. হ্যাঁ, আপনি object.key করা হলে, স্থান, সঙ্গে, স্থান, শূণ্যস্থান, যে শুধু চিহ্নগুলি সিন্টেক্সের জানার জন্য না. সুতরাং আপনি শুধুমাত্র বন্ধনী সিনট্যাক্স এই সাজানোর সঙ্গে তা করতে পারে. এছাড়াও, জাভাস্ক্রিপ্ট খুব সুযোগ জিনিস পিএইচপি হল. আপনি সুযোগ অ্যাড্রেসিং এর মধ্যে 2 টি উপায় আছে. আপনি একটি পরিবর্তনশীল সামনে var থাকতে পারে না, এবং যে মাত্র এই আন্তর্জাতিক মানে. আপনি যে কোন জায়গা থেকে তা দেখতে পারেন. আপনি যদি একটি যদি বিবৃতিতে এই করা ছিল এমনকি যদি, কোথাও আপনার কোড মধ্যে যে বিন্দু পরে আপনি যে পরিবর্তনশীল দেখতে পারে. আরেকটি বিষয় যদিও, এটা আপনি ইন করছি যাই হোক না কেন ফাংশন সীমাবদ্ধ আছে, var সঙ্গে হল আপনি যদি একটি ফাংশন মধ্যে পারব না, ভাল, এটা বিশ্বব্যাপী এর. আপনি যদি একটি ফাংশন আছে কিন্তু যদি এটা যে ফাংশন মধ্যে শুধুমাত্র দৃশ্যমান হবে. আমি হাঁ, একটি উদাহরণ আছে, কিন্তু নেই. এটা ঐ জিনিস এক যেখানে আপনি, আপনি বৈশ্বিক হতে চান কি ভেরিয়েবল পরিচালনা করতে পারেন কি ভেরিয়েবল আপনি স্থানীয় হতে চান, কিন্তু আপনি এই সম্পর্কে সচেতন হওয়া প্রয়োজন না, আপনি সি কি সূক্ষ্ম দানা নিয়ন্ত্রণ ধরণ আছে না, কারণ, কিছু লুপ জন্য একটি মধ্যে ঘোষিত হয়, এটি লুপ জন্য যে থাকতে যাচ্ছে যেখানে. আমরা আসলে জন্য জাভাস্ক্রিপ্ট ব্যবহার যত্নশীল জিনিস অধিকার, ওয়েব পেজ সাধিত হয়? আমি বলতে চাচ্ছি, যে কেন আমরা এই কাজ করছি না. আমরা DOM কিছু বলা ব্যবহার, যে কাজের জন্য. ডকুমেন্ট অবজেক্ট মডেল. মূলত, এটি কী জন্য এটি সব আপনার HTML লাগে হয় এবং একে অপরের মধ্যে নেস্টেড যে বস্তুর এক গুচ্ছ মধ্যে মডেল এটি. আপনি ভালো কিছু দিয়ে শুরু. আপনি সেখানে আউট কোড একটি গুচ্ছ যে ধরণের আছে, আমার জন্য অধিকার, আছে - আপনি যে নিপূণভাবে খুব কঠিন হতে চাই মনে হবে, আপনি লেখার একটা গুচ্ছ মাধ্যমে পার্সিং করা চাই, কারণ এবং জিনিস সরাইয়া টুকরা হচ্ছে. এবং এটি সঠিকভাবে কি ফরম্যাট না হয় তাহলে কি হবে? খারাপ ব্যাপার ঘটতে হবে. সুতরাং, জাভাস্ক্রিপ্ট আপনার জন্য এই যত্ন নেয়, এবং আপনি একটা চমৎকার তথ্য কাঠামো পেতে আপনি শুধু একটি নথি আছে আমার, বাকি এক মত, এবং যে ভিতর আপনি, এইচটিএমএল কিছু বলা আছে এবং যে ভিতরে আপনি একটি মাথা এবং শরীরের আছে এবং যে মাথার ভিতর আপনি, ইত্যাদি,, ইত্যাদি ইত্যাদি একটি শিরোনাম আছে. এই, এটা ঠিক যে, তাই একটি ওয়েব পাতা সাধিত সহজসাধ্য ওহ, আমি এই বস্তুর কথা বলতে চান. আপনি আপনার নিজের তৈরি করা অন্য বস্তুর সাথে কথা বলতে হবে একটি অনুরূপ ভাবে সাজানোর. ভালো লেগেছে আমি বলেন, সব DOM নথির বস্তুর হয়. উভয় ক্ষেত্রেই, এটা শুধু একটা জায়গা এবং তারপর আপনি জিনিষ খুঁজে পেতে এটি মধ্যে যেতে পারেন এবং আপনি এটা করতে পারেন - এই পর্যন্ত আছে, এরকম পুরানো শৈলী, কি যদি বার এবং যেখানে তারপর নাম, সম্ভবত আপনি বলতে পারেন এবং এই একটা সময় পরে খুব জবরজং পায়. তাই সম্ভবত আপনি তা করতে না চান. আমরা আছে এটা কেন আমরা এই পরে সম্পর্কে কথা বলতে যাচ্ছেন পরের জিনিস. এখানে কী জিনিস, যে ঠিক আছে, আপনি সঠিক, এই সব উপাদান আছে? তাই হয়তো আমি যখন পাতা লোড কিছু এর রং পরিবর্তন করতে পারেন. তাই কি? কি আমার ইউজার কিছু ক্লিক তাহলে কি হবে? আমি মনে করি তারা কিছু ক্লিক করা হলে এটি আকর্ষণীয় কিছু করে যেতে চাই. আমরা ঘটনা আছে কেন. আপনি মূলত, আপনার DOM মধ্যে কোন উপাদান খুঁজে পেতে পারেন, এবং তারপর আরে, বলে. , এই লোড বা কেউ এটি ক্লিক করা হলে অথবা তারা মাউস এটি উপর, এটা দিয়ে কিছু করতে হলে. এবং কি আপনি যদি আপনি আপনার জন্য এই সব ব্যবস্থা যে ফাংশন আছে. এই ফাংশন ইভেন্ট হ্যান্ডলার হয়. কি they're - এটি বলার অপেক্ষা রাখে না শুধু একটি অভিনব উপায়, এই ঘটনা ঘটে যখন এই ফাংশন শুধুমাত্র মৃত্যুদন্ড কার্যকর করা হয়. সুতরাং এটা যে ঘটে ইভেন্ট পরিচালনা. এই কমান্ডের সাহায্যে আপনি একটি ইভেন্ট হ্যান্ডলার খুঁজে রাখা হবে না. আমি কিছু বোতাম আছে, এবং আপনি এটি ক্লিক করা হলে, এটি explodes. সুতরাং বাটন ক্লিক না. এই অধিকার, এটা সমীপবর্তী এক উপায়? , আপনি একটি বাটন ট্যাগ আছে, এবং ক্লিক করলে আপনি যে একটি স্ট্রিং আছে ওহ, যাইহোক, আমি আমার জন্য এই exploding জিনিস করে. অন্যথা, এটি শুধু আপনি শুধু তৈরি একটি নিয়মিত বোতাম মত. এছাড়াও আপনি এই অন্য উপায় কি করতে পারেন, আমরা jQuery সম্পর্কে কথা বলার পরে DOM উপাদান দখল, কিন্তু এর দ্বারা আমরা যে সংরক্ষণ করব. JQuery: এটা ক্রস ব্রাউজার যে একটি লাইব্রেরি রয়েছে. আপনি প্রশংসনীয় অনেক কিছু এটি ব্যবহার করতে পারেন. এবং এটা ঠিক আপনার সাথে কাজ করার জন্য সরঞ্জাম অনেক আপনি. জাভাস্ক্রিপ্ট, শক্তিশালী, যখন আপনার প্রয়োজন সরঞ্জাম নেই কারণ সত্যিই একটি ওয়েব অ্যাপ্লিকেশন মোকাবেলা বাক্সের বাইরে আপনাকে যা করতে চাইতে পারেন. সুতরাং, একটা অনেক সহজসাধ্য আপনি ফাংশন অনেক দেয় আপনি সাধারণতঃ বহুবার এবং উপর, নিজেকে লিখতে হবে যে বাক্সের বাইরে. এবং শুধুমাত্র জিনিস খুব সহজ করে তোলে. এছাড়াও আপনি ঐ সমস্ত উপাদান গ্রহণ করা যাক যা নির্বাচক, আছে আপনার DOM আরো অনেক কিছু থেকে সহজভাবে পরিবর্তে এইসব খুব দীর্ঘ ফাংশান কল ব্যবহার করতে হচ্ছে. এই নির্বাচক আরও. আপনি, এর কথা বলা যাক আছে আপ আছে, আছে আমি আইডি সঙ্গে একটি উপাদান পেতে চাই "শিলা." ওয়েল, jQuery, এটা কেবল $ এবং তারপর একটি আধা কেজি আছে একটি স্ট্রিং, এবং তারপর এর "শিলা." এটা খুবই সহজ এবং এই সমস্যা মোকাবেলা প্রথাগত জাভাস্ক্রিপ্ট উপায় তুলনায় অনেক দ্রুততর. এবং আপনি ক্লাস এবং উপাদান ধরনের জন্য একই জিনিস আছে. jQuery হয় - শীতল বৈশিষ্ট্য হল যে আপনি ধরণের কম্প্রেস করতে পারেন আপনার DOM আপনার জিজ্ঞাস্য ডাউন খুব, খুব দ্রুত. এখন আমরা ফিরে ইভেন্ট হ্যান্ডলিং করতে থাকেন, এবং এই আপনি jQuery এক ইভেন্ট হ্যান্ডেল করবে না. তাই আমরা এখানে চলুন আমরা ঠিক আছে, বলছে না. আমি একটি স্ক্রিপ্ট ট্যাগ আছে, ডান? তাই আমি এই ইনলাইন জাভাস্ক্রিপ্ট আছে. আমরা কি করতে যাচ্ছেন আমরা সব অধিকার বলে, চলুন না. নথি, দলিল লোড করা হয়েছে, যার মানে যখন প্রস্তুত , আমরা যে ফাংশন করতে যেতে যাচ্ছে, এবং আমরা, ঠিক আছে বলে যাচ্ছেন এই ফাংশন আসলে অন্য কিছু করছে. এটি মূলত ঠিক আছে, আমার আইডি দিয়ে উপাদান পেতে, বলছে "myid." এবং তারপর এই যদি আপনি এটি ক্লিক করা হলে executes যে একটি ফাংশন হ্যান্ডলার দিতে. মূলত এই কি আছে, এটা বলছেন, সব অধিকার. , পাতা লোড হয়, তাই আমি, এই উপাদান খুঁজে পাওয়া যাচ্ছে না এটি এই হ্যান্ডলার দিতে, এবং এটি মূলত আপনার জন্য আপনার পৃষ্ঠা পর্যন্ত নির্ধারণ করা হবে. এবং এই যে আপনি ইভেন্ট হ্যান্ডলিং সম্পর্কে ভাবতে চান না. আপনি ঠিক, আমার মনে হয় ঠিক আছে, কিছু পরিস্থিতিতে, আমি ঘটতে কি চান চান? আপনি, ঠিক আছে, আমি এই জিনিস নিশ্চিত এই জিনিস আলোচনা করা প্রয়োজন, আমার মনে হয় না চান এই জিনিস বাজে বাজে বাজে কথা, আপনি শুধু ঘটনা পদ জিনিস কথা বলতে চান না. এই ঘটনার পরে, এই ঘটনার পরে. এই ঘটনার পরে, যে ঘটবে. বিষয় অন্যান্য জিনিসের ট্রিগার এবং যদি, দারুণ. তবে আপনি যদি জটিল কোড চেষ্টা করে যেতে চাই না যেখানে আপনি একই সময়ে একাধিক জিনিষ triggering করছি আপনি শুধু নিজের একটি মাথা ব্যাথা দিতে যাচ্ছেন কারণ. ঠিক আছে. এখন আমরা আমাদের পাতা ঘটনা হ্যান্ডেল পেতে পারেন, কিন্তু এর আমার ইউজার একটি বাটন ক্লিক করে বলা যাক. কি, আমি ফিরে সার্ভারে যে অনুরোধ পাঠাতে চান একটি নতুন পৃষ্ঠা পুনরায় লোড হচ্ছে কারণ কিন্তু আমি পৃষ্ঠাটি পুনরায় লোড করতে চাই না প্রতি একক সময় ধরনের ক্লান্তিকর পায়, এবং আমি কেন প্রয়োজন আবার হেডারের নিচে টানা, এবং আবার পাদচরণ করতে, এবং সমস্ত পৃষ্ঠার উপাদান আবার শুধু অভিবাদন বা সময় রিফ্রেশ? আমরা Ajax মত কিছু আছে সুতরাং যে কেন. আমরা কি Ajax সঙ্গে এখানে করতে পারেন, আমরা, ঠিক আছে বলতে পারেন হয় আমি সার্ভারে কিছু তথ্য পাঠাতে চান, এবং আমি তাই আমি আমার পাতা আপডেট করতে পারেন একটি প্রতিক্রিয়া পেতে চান, হয়তো বা শুধু অগত্যা ব্যবহারকারীকে কিছু দেখাতে না কিছু আলগোরিদিমিক গণনা করবেন. কি আপনি এই কাজ করতে প্রয়োজন? হ্যাঁ, আপনি যে আপনি কথা বলার প্রয়োজন একটি URL প্রয়োজন. আপনার সার্ভার ঠিক magically কোথাও না থেকে রেডিও শোনা যাবে না. আপনি আপনার জন্য এই তথ্য প্রেরণ করছেন একটি নির্দিষ্ট স্থানে করতে হবে. আর আপনার কাছে পাঠানোর জন্য কিছু তথ্য প্রয়োজন, অথবা হয়ত এটা একটা dataless প্রশ্নের সাথে. আপনি ঠিক হেই, আমি জীবিত, বা যে ভালো কিছু নই, ফিরে সার্ভার ping এবং বলতে চাই. এবং তারপর আপনি মূলত সাফল্যের সাথে পরিচালনা করা একটি ফাংশন যে চাই. এর আপনি আপনার সার্ভার থেকে কিছু তথ্য ফিরে পেতে শুরু করা যাক বলতে, এবং আপনি তাদের পেজে ব্যবহারকারীর শিরোনাম পরিবর্তন করতে চান. সুতরাং আপনি তথ্য ফিরে পেতে চাই, এবং আপনি পর্দায় যে ধাক্কা হবে. পাতা প্রস্তুত হলে কি হবে,, হয় আপনি greeter নামক এই বোতাম জন্য ক্লিক ফাংশন উপর তৈরি. যে বাটন push করা হয় যখন কি এই তারপর না হয়, আপনি greetings.php কথা বলতে, আপনি একটি পোষ্ট অনুরোধ করা এবং আপনি আরে, আমার আপনার পাতা থেকে কিছু পেতে, বলে. আমরা সত্যিই, যে বর্ণনা করতে প্রয়োজন, কিন্তু greetings.php না এর ঠিক বলা যাক, "ওহে দুনিয়া." পেছন দেয় সুতরাং আমরা, "ওহে দুনিয়া" এই ফিরে পেতে এবং এই সাফল্যের উপর কিছুই গোলমাল অভিমানী, তাহলে আমরা এই লক্ষ্য জায়গা যান আমরা নির্দিষ্ট এবং আমরা ঠিক আছে প্রতিক্রিয়া বিদ্ধ করে. এবং এই একটি Ajax প্রশ্নের সাথে স্থাপনের একটি খুব সহজ উপায়. অত্যন্ত দ্রুত, রব সাজানোর, ইতিমধ্যে এই উল্লেখ করেছে জিনিস ভুল হয়ে যেতে পারে, খারাপ ব্যাপার ঘটতে পারে, তাই আপনার এই HTTP প্রতিক্রিয়া কোড সঙ্গে নিজেকে পরিচিত করতে চান. কি এই হয় সবকিছু ঠিক গিয়েছিলাম, 200, মত, ঠিক আছে. অন্য কিছু, খারাপ জিনিস ঘটেছে. সাধারণভাবে আপনার মনে রাখতে চান জিনিস. কিন্তু এই সব জানতে চমৎকার. এবং পরিশেষে, একবার আমরা যে সব মাধ্যমে সর্বস্বান্ত করেছি, আমরা ডিজাইন সম্পর্কে খুব দ্রুত কথা বলার প্রয়োজন এবং তারপর আমরা আপনাকে সব ছেড়ে দেওয়া যাবে. ডিজাইন. আপনার মনে রাখতে চান থিংস. নিজেকে এই প্রশ্ন জিজ্ঞাসা করুন: কে এই ব্যবহার করা হবে? তারা কি জন্য এটি ব্যবহার করা হবে? আমার ব্যবহারকারীদের কি সম্পর্কে যত্ন? তারা কি যত্ন সম্পর্কে না? আপনাকে কেবল একটি অ্যাপ্লিকেশন করতে এবং এটা হত্তয়া যাক না চান এবং এই দৈত্য, এমনকি আপনি শেষ করতে পারেন না যে সব অপগিত জিনিস হয়ে. আপনি ঠিকানা চাই বিযুক্ত লক্ষ্য এবং পরিকল্পনা এবং জিনিষ করাতে চাই. এটি অনায়াস করুন. এই সব, মূলত, বলছেন এটা সহজ ব্যবহারকারী এটি ব্যবহার করার জন্য করা; আসলে, এটা এই স্লাইড ভালো লেখার একটা দৈত্য ফোঁটা হয় না. আপনি শুধু এটা কেউ যেতে জন্য এটি খুব সহজ যেখানে কিছু হতে চাই এবং তারা কি করতে চান না. আপনি তাদের 5 পৃষ্ঠা নেভিগেট আছে না চান আপনার সাইটের আপনার মৌলিক ফাংশন পেতে. গুগল আগে 5 পৃষ্ঠাগুলি ছিল এমনকি আপনি কিছু অনুসন্ধান করতে পারে, কেউ এটা ব্যবহার করেন. এবং সর্বশেষে, কাগজ প্রোটোটাইপ, ফোকাস গ্রুপ. ভাল নকশা এবং টেস্টিং অনুশীলন আছে. যদি আপনি এটি আপনার জন্য কাজ করে মনে শুধু কারণ, অন্য কেউ এটি কাজ মনে করে না মানে. তবে হাঁ, যে এটি. [CS50.TV]