গুগল ম্যাপস এপিআই টিউটোরিয়াল (Google Maps API Tutorial)

Huge Sell on Popular Electronics

গুগল ম্যাপ কি?

গুগল ম্যাপ হলো গুগল কর্তৃক প্রচলিত ডেস্কটপ এবং মোবাইল ওয়েবের জন্য একটি ম্যাপিং অ্যাপ্লিকেশন এবং প্রযুক্তি সেবা যা স্যাটেলাইট থেকে তোলা ছবি, রাস্তার ম্যাপ এবং স্ট্রিট ভিউ পার্সপেক্টিভ এর সাথে সাথে গাড়ি, বাইসাইকেল এবং পায়ে হেটে চলা অথবা জনপরিবহণের উপযোগী রুট প্ল্যান (যাতায়াতের পথ) সরবরাহ করে।

গুগল ম্যাপ অ্যাপ্লিকেশনের মাধ্যমে আপনি আপনার ওয়েব সাইটে ম্যাপ দেখাতে পারবেন।

গুগল ম্যাপ এপিআই

এই টিউটোরিয়ালটিতে গুগল ম্যাপ API ( Application Programming Interface ) সম্পর্কে এবং ওয়েব সাইটে গুগল ম্যাপ যোগ করার ব্যাপারে আলোচনা করা হবে। গুগল ম্যাপ এপিআই আপনাকে ম্যাপকে কাস্টমাইজ এবং এটিতে তথ্য যোগ করতে দেয়। এখানে, একটি API হলো কতগুলো পদ্ধতি বা টুলের সমাহার যা সফটওয়্যার অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। গুগল ম্যাপ এপিআই এর মাধ্যমে ওয়েব ডেভলাপাররা বিভিন্ন পদ্ধতিতে ওয়েব পেজে ম্যাপ এমবেড বা যুক্ত করতে পারেন। বর্তমানে বিভিন্ন ধরণের ম্যাপ এপিআই প্রচলিত রয়েছে। এই টিউটোরিয়ালে সেগুলো সম্পর্কে আলোচনা করা হবে।

 

Go here to see a Google Maps of Dhaka, Bangladesh

https://www.google.ca/maps/place/Dhaka,+Bangladesh/@23.7806364,90.4193257,11z/data=!3m1!4b1!4m2!3m1!1s0x3755b8b087026b81:0x8fa563bbdd5904c2

 

Resources for PMP Certification

Huge Sell on Popular Electronics

পিএমপি সার্টিফিকেট পরীক্ষার জন্য তথ্যঃ
রিদওয়ান বিন শামিম

পিএমপি সার্টিফিকেট পরীক্ষাটি প্রকল্প পরিচালক হওয়ার ক্ষেত্রে খুব ভাল একটি সহায়ক বিশেষ করে কোন ব্যক্তির অভিজ্ঞতার পাশাপাশি খুবই প্রয়োজনীয় হতে পারে যদি সে কোন সফটওয়ার কোম্পানি বা এই জাতীয় কোম্পানির প্রকল্প পরিচালক হতে চায়। কিন্তু এ ক্ষেত্রে শুধু মাত্র প্রাতিষ্ঠানিক সার্টিফিকেট হয়ত প্রকল্প পরিচালক হিসেবে সফল হওয়ার পুরোপুরি নিশ্চয়তা দেয় না। তবে এটি নিশ্চিতভাবেই অনেক সাহায্য করে, বিশেষ করে থিওরিগুলো বিভিন্ন সমস্যাকে বিভিন্ন দৃষ্টিকোণ থেকে দেখতে সাহায্য করে থাকে।

SEO Miscellaneous Techniques

Huge Sell on Popular Electronics

এস ই ও করার বিভিন্ন টিপস
স্বর্ণা আখতার

এস ই ও করার ক্ষেত্রে কিছু কিছু টিপস বা পদ্ধতি আছে সেগুলো সাধারণত বিশেষ কোন কাঠামোতে অন্তর্ভুক্ত করা যায় না। তবে সেগুলোও সমানভাবে গুরুত্বপূর্ণ। নিচে এমনই কিছু বিষয়াবলী সম্পর্কে সংক্ষেপে আলোচনা করা হল।

যে বিষয়গুলি মনে রাখা জরুরি,

১. ওয়েবপেজ এ কোন লুকায়িত বিষয়বস্তু রাখবেন না।
২. ইমেজ এর সাথে কিওয়ার্ডস মিল না রেখে বিষয়বস্তু নির্বাচন করবেন না।
৩. মেটা ট্যাগ ঠাসাঠাসি করে নির্বাচন করবেন না।
৪. ব্ল্যাক পদ্ধতি অনুসরণকারী সাইট এর সাথে লিঙ্ক বিনিময় কাজে অংশ নিবেন না।
৫. ভুল কিওয়ার্ডস নির্বাচন করে ভিজিটরদের প্রতারিত করার চেষ্টা করবেন না।
৬. অতিরিক্ত গ্রাফিক্স এর ব্যবহার না করা।
৭. কোন নকল বিষয়বস্তু বা লেখা ওয়েবসাইট প্রকাশ করবেন না। সবসময় অদ্বিতীয় কিছু লেখার চেষ্টা করবেন।
৮. একই সার্চ ইঞ্জিন বারবার আপনার সাইট সাবমিট করার চেষ্টা করবেন না।
৯. বেশি সংখ্যক ডায়নামিক পেজের ব্যবহার হতে বিরত থাকুন।
১০. ওয়েব পেজগুলোকে বেশি সংখ্যক কোড দ্বারা প্রভাবিত করবেন না।

যে কাজগুলো করতে হবে,

১. পেজের লগ তৈরি করুন এবং মনে রাখতে হবে যে প্রত্যেকটি পেজ যেন ২০০ এর অধিক শব্দ না থাকে যেটা কিনা গুগল এর সাথে সঙ্গতিপূর্ণ হবে।
২. কিছু সংখ্যক সাইট ম্যাপ তৈরি করুন যেমন, Help, FAQ, About Us, Link to Us, Copyright, Disclaimer, Privacy Policy pages on mandatory basis.

৩. প্রত্যেকটি পেজে হোম পেজ এর লিঙ্ক রাখুন এবং নিশ্চিত করুন যেন ন্যাভিগেশন তা সহজ হয়।
৪. আপনার সাইটে কোন অসম্পূর্ণ লিঙ্ক আছে কিনা সেটা পরিক্ষা করুন। কারন, সেগুলো আপনার ওয়েবসাইট এর রাঙ্ক কমিয়ে দিতে পারে।

Attach in a word document
এস ই ও করার বিভিন্ন টিপস
স্বর্ণা আখতার

এস ই ও করার ক্ষেত্রে কিছু কিছু টিপস বা পদ্ধতি আছে সেগুলো সাধারণত বিশেষ কোন কাঠামোতে অন্তর্ভুক্ত করা যায় না। তবে সেগুলোও সমানভাবে গুরুত্বপূর্ণ। নিচে এমনই কিছু বিষয়াবলী সম্পর্কে সংক্ষেপে আলোচনা করা হল।

যে বিষয়গুলি মনে রাখা জরুরি,

১. ওয়েবপেজ এ কোন লুকায়িত বিষয়বস্তু রাখবেন না।
২. ইমেজ এর সাথে কিওয়ার্ডস মিল না রেখে বিষয়বস্তু নির্বাচন করবেন না।
৩. মেটা ট্যাগ ঠাসাঠাসি করে নির্বাচন করবেন না।
৪. ব্ল্যাক পদ্ধতি অনুসরণকারী সাইট এর সাথে লিঙ্ক বিনিময় কাজে অংশ নিবেন না।
৫. ভুল কিওয়ার্ডস নির্বাচন করে ভিজিটরদের প্রতারিত করার চেষ্টা করবেন না।
৬. অতিরিক্ত গ্রাফিক্স এর ব্যবহার না করা।
৭. কোন নকল বিষয়বস্তু বা লেখা ওয়েবসাইট প্রকাশ করবেন না। সবসময় অদ্বিতীয় কিছু লেখার চেষ্টা করবেন।
৮. একই সার্চ ইঞ্জিন বারবার আপনার সাইট সাবমিট করার চেষ্টা করবেন না।
৯. বেশি সংখ্যক ডায়নামিক পেজের ব্যবহার হতে বিরত থাকুন।
১০. ওয়েব পেজগুলোকে বেশি সংখ্যক কোড দ্বারা প্রভাবিত করবেন না।

যে কাজগুলো করতে হবে,

১. পেজের লগ তৈরি করুন এবং মনে রাখতে হবে যে প্রত্যেকটি পেজ যেন ২০০ এর অধিক শব্দ না থাকে যেটা কিনা গুগল এর সাথে সঙ্গতিপূর্ণ হবে।
২. কিছু সংখ্যক সাইট ম্যাপ তৈরি করুন যেমন, Help, FAQ, About Us, Link to Us, Copyright, Disclaimer, Privacy Policy pages on mandatory basis.

৩. প্রত্যেকটি পেজে হোম পেজ এর লিঙ্ক রাখুন এবং নিশ্চিত করুন যেন ন্যাভিগেশন তা সহজ হয়।
৪. আপনার সাইটে কোন অসম্পূর্ণ লিঙ্ক আছে কিনা সেটা পরিক্ষা করুন। কারন, সেগুলো আপনার ওয়েবসাইট এর রাঙ্ক কমিয়ে দিতে পারে।

Random Short Notes on Project Management

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপনার উপর কিছু কথাঃ
রিদওয়ান বিন শামীম

সঙ্ঘবদ্ধতার বিন্যাস একটি বড় গুন যা একটি দলকে কর্মক্ষেত্রে একসাথে করে রাখে। মানসম্মত উৎপাদন নীতিমালা একটি সংগঠনকে তার মান ঠিক রাখতে সহায়তা করে,লক্ষ্য ঠিক করতে সাহায্য করে। মানসম্মত সেবা বা পন্যের যে নীতিমালা এক একটি সংগঠনে তা এক এক রকম হতে পারে। এই ব্যপারটির সাথে জড়িয়ে আছে শিডিউল পারফরমান্স, কস্ট বাজেটিং, ঝুঁকি পর্যবেক্ষণ ও নিয়ন্ত্রণ ইত্যাদি নানা বিষয়ও ।

 

এরপর আসে প্রকল্পের প্রাথমিক নেটওয়ার্ক ডায়াগ্রামের কথা, যা কাজের ধারা ও তার নির্ভরতাগুলো পর্যায়ক্রমে প্রকাশ করে। প্রকল্প পর্যবেক্ষণ ও নিয়ন্ত্রণ সার্বিক কর্মকাণ্ডের উপর নির্ভর করে। প্রকল্প ব্যবস্থাপনার ক্ষেত্রে সব সময় দেখতে হবে কতটুকু কাজ হয়েছে আর এর পর কি কাজ করতে হবে। যেমন পরিকল্পনা গ্রহনের পর কর্মপ্রণালী ঠিক করতে হয়, এর পর যথোপযুক্ত লোক নিয়ে কাজে হাত দিতে হয়।

 

প্রকল্প বাজেট ঃ সম্ভাব্য বাজেট, শিডিউল ও রিসোর্স ক্যালেন্ডার এগুলো প্রকল্প বাজেটের অন্তর্গত বিষয়। বাধ্যতামূলক নির্ভরতাঃ প্রকল্প নেটওয়ার্ক ডায়াগ্রাম তৈরিতে দরকারি, যেমন কোন সফটওয়ার রান করানোর আগে তা লিখতে হয়।

 

মাইলস্টোন চার্ট ঃ মাইলস্টোন চার্ট প্রকল্প নেটওয়ার্কের আরেকটি পদ্ধতি যেটি একটি প্রকল্পের কেবল প্রধান বিষয় গুলো দেখায়, যেখানে গান্ট চার্ট (Gantt chart) নামের আরেকটি পদ্ধতি আছে যা প্রকল্পের সবকিছু খুঁটিয়ে দেখায়। প্রকল্পের স্কোপ স্টেটমেন্ট নামের ডায়াগ্রাম সদৃশ ডকুমেন্ট তৈরির পর কাজের ব্রেকডাউন স্ট্রাকচার তৈরি হয়, এরপর তৈরি হয় একটিভিটি লিস্ট। এরপর প্রকল্পের নেটওয়ার্ক ডায়াগ্রাম তৈরি করতে হয় যা প্রকল্পের কাজের ধারার সাথে মিলিয়ে করতে হয়।প্রকল্পে এবার ঠিক করতে হয় ক্রিটিকাল পাথ, তারপর প্রোজেক্ট শিডিউল করতে হয়।

 

রান চার্টঃ প্রথাগত কর্মপ্রণালী দেখায় ও মান নিয়ন্ত্রণ করতে সাহায্য করে। মান নিয়ন্ত্রণ ও সুযোগ যাচাই উতপ্রতভাবে জড়িত। কোয়ালিটি কন্ট্রোল নির্ভুলতা, সম্ভাব্যতা ও উপযোগিতা নিশ্চিত করে, দেখতে সাহায্য করে এই ধরণের আর কোন প্রকল্প হচ্ছে কিনা।

 

 

বেনিফিট কস্ট রেসিওঃ বেনিফিট কস্ট রেসিও ১.৫ মানে হল প্রকল্পটি ১.৫ গুন আয় করবে। একটিভিটি লিস্ট হল প্রধান ইনপুট যা একটিভিটি পরিমাপ করবে। লাইফ সাইকেল কস্টিংঃ লাইফ সাইকেল কস্টিং হল মালিকের প্রারম্ভিক খরচ, উৎপাদন খরচ ও অন্যান্য খরচের যোগফল। এটির সাথে আছে কন্ট্রোল একাউন্ট প্ল্যান। এক্সপেক্টেনসি থিওরি হল এবিষয়ে আরেকটি থিওরি যার মূল হল লক্ষ্য অর্জনে অনুপ্রেরণার ভূমিকা। যদি কর্মীরা বিশ্বাস করে লক্ষ্য অর্জন সম্ভব, তাহলেই কেবল রিওয়ার্ড মোটিভেশন পদ্ধতি কাজে লাগবে, এটাই এক্সপেক্টেনসি থিওরির মূল কথা। এগুলোই মূলত প্রকল্প ব্যবস্থাপনার মূল বিষয়।

Random Information on Project Management (PMI)

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপনার উপর কিছু তথ্যঃ
রিদওয়ান বিন শামীম

প্রকল্প ব্যবস্থাপকরা কাজের ক্ষেত্রে সংঘটিত ক্রুটির একটি তালিকা করেন তাদের সংঘটিত হওয়ার সংখ্যার উপর ভিত্তি করে। তারা সাধারণত এটি করেন পারেটো চার্ট নামক একটি পদ্ধতির মাধ্যমে। এ পদ্ধতিতে সবচেয়ে কমন ভুলগুলো তালিকার উপরের দিকে থাকে, এর পর ধীরে ধীরে ক্রমশ অপেক্ষাকৃত কম ভুলগুলো দিয়ে সাজিয়ে তালিকা সম্পন্ন করা হয়।

 

প্রকল্প ব্যবস্থাপকরা কোন প্রক্রিয়া বা পদক্ষেপ গ্রহন করবেন কিনা তা একটি কন্ট্রোল চার্টের মাধ্যমে নিশ্চিত হন,

 

তারা পূর্বপরিকল্পনা ও বর্তমান অগ্রগতির মধ্যে তুলনা করতে ভ্যরিএন্স এনালাইসিস(Variance Analysis) নামক একটি পদ্ধতি ব্যবহার করেন।

 

এক্ষেত্রে অর্ডার অফ মেগনিচিউড এস্টিমেট নামক আরেকটি পদ্ধতি ব্যবহার করা হয় প্রকল্পের খরচের নিয়ন্ত্রণ অর্থাৎ কস্ট ম্যনেজমেন্টের জন্য।

 

বিভিন্ন আলাদা সংগঠনের সাথে যোগাযোগ রক্ষার জন্য আনুষ্ঠানিক, লিখিত যোগাযোগ বেশি সফল হয়ে থাকে।

 

প্রকল্প কর্ম তালিকা হল অফিসিয়ালি প্রকল্পের মূল ভিত্তি, যার মাধ্যমে ক্রমিক ভাবে কাজ সম্পন্ন করা হয়।

 

ডেলফি পদ্ধতি হল সুদক্ষ কর্মীদের থেকে উপদেশ ও কাজের ধারা সম্পর্কে ধারণা লাভ করার একটি বিখ্যাত পদ্ধতি, যেটা কর্মীরা নিজেদের মধ্যে সাধারণত তথ্য শেয়ার না করে অর্থাৎ গোপন করেও করে থাকে।

 

কর্ম অনুমোদন পদ্ধতি সঠিক সময়ে ও সঠিকভাবে কাজ সম্পন্ন হওয়া নিশ্চিত করে। যারা অর্থাৎ যে ব্যক্তি বা দল প্রকল্পটি করছে তাদের পূর্বেই কাজের সময় ঠিক করে নিতে হয়।

 

প্রকল্প ব্যবস্থাপনার ক্ষেত্রে সব স্টেকহোল্ডারদের সকল প্রকল্প পরিকল্পনা জানানোর দরকার নাই কারণ কিছু স্টেকহোল্ডার সরাসরি প্রকল্পের বিরুদ্ধাচরণ করতে পারে।

 

যদি কাউকে প্রকল্প ব্যবস্থাপনার দায়িত্ব দেয়া হয় কিন্তু তার তেমন কোন পূর্ব অভিজ্ঞতা নেই প্রকল্প চালানোর, তাহলে সে প্রকল্প পরিচালনার উপর পূর্ববর্তী ঘটনা ইত্যাদির ইতিহাস জেনেও অনেক কিছু শিখতে পারে।

 

প্রকল্পের ব্যয়ের সিংহভাগ খরচ করা হয় প্রকল্পের পরিকল্পনা বাস্তবায়নের ক্ষেত্রে। প্রকল্পটি নিষ্ঠার সাথে সম্পন্ন হওয়া প্রাথমিক ভাবে প্রকল্প ব্যবস্থাপকের উপর নির্ভর করে। এভাবেই প্রকল্প ব্যবস্থাপনার কাজ এগিয়ে যায়।

পিএইচপি ৫ ফাংশন (PHP 5 Functions)

Huge Sell on Popular Electronics

সুদীপ্ত সাহা
PHP এর মূল শক্তি হিসেবে এর ফাংশনকেই বিবেচনা করা হয়। কারণ এর প্রায় ১০০০ বিল্ট-ইন ফাংশন রয়েছে।

PHP ইউজার ডিফাইন্ড ফাংশন

বিল্ট-ইন ফাংশনের পাশাপাশি PHPতে ইউজার ডিফাইন্ড ফাংশনও তৈরি করা যায়।
ফাংশন হচ্ছে কিছু স্টেটমেন্টের একটি ব্লক যা কোন প্রোগ্রামে যতবার ইচ্ছা ততবার ব্যবহার করা যায়। কোন একটি পেজ লোড হওয়ার সময়েই ফাংশন রান করে না। ফাংশনকে রান করানোর জন্য ফাংশনকে কল করতে হয়।

PHP তে ইউজার ডিফাইন্ড ফাংশন তৈরি করা

ইউজার ডিফাইন্ড ফাংশন তৈরি করার জন্য “function” ওয়ার্ড দ্বারা ফাংশনকে ডিক্লেয়ার করতে হয়।

সিনট্যাক্স


 function functionName() {
     code to be executed;
 }

নোটঃ ফাংশনের নাম লেটার অথবা আন্ডারস্কোর দ্বারা শুরু করতে হয়, নাম্বার দ্বারা শুরু করা যায়না।

টিপসঃ ফাংশনের এমন নাম দেয়া উচিৎ যেন তা ফাংশনের কাজকে বোঝায়।

নিচের উদাহরণে "writeMsg()" নামের একটি ফাংশন তৈরি করা হয়েছে। শুরুর দ্বিতীয় বন্ধনী { দ্বারা ফাংশনের শুরুকে বোঝানো হয় এবং শেষের দ্বিতীয় বন্ধনী } দ্বারা ফাংশনের শেষকে বোঝানো হয়েছে। এই ফাংশনের আউটপুট হবেঃ Hello world!

ফাংশনকে কল করার জন্য শুধু এর নামটি লিখলেই হয়ঃ

উদাহরণঃ


<?php
 function writeMsg() {
     echo "Hello world!";
 }
 
 writeMsg(); // call the function
 ?>

 

PHP ফাংশন আর্গুমেন্ট

আর্গুমেন্টের সাহায্যে ফাংশনে ডাটা পাস করা যায়। আর্গুমেন্ট ভ্যারিয়েবল হিসেবে কাজ করে। ফাংশন নেমের পড়ে বন্ধনীর ভেতরে আর্গুমেন্ট ডিক্লেয়ার করা হয়। আপনি আপনার ইচ্ছামতো আর্গুমেন্ট সেট করতে পারবেন, শুধু একটি কমা ব্যবহার করে আর্গুমেন্টগুলোকে আলাদা করতে হয়।

নিচের উদাহরণে ($fname) নামের একটি আর্গুমেন্ট তৈরি করা হয়েছে। familyName() ফাংশনকে কল করার সময় একটি নামও পাস করতে হবে, যা ফাংশনের মধ্যে রান করে ভিন্ন ভিন্ন ফার্স্টনেম এবং একই লাস্টনেমের আউটপুট শো করবে।

উদাহরণঃ


<?php
 function familyName($fname) {
     echo "$fname Refsnes.<br>";
 }
 
 familyName("Jani");
 familyName("Hege");
 familyName("Stale");
 familyName("Kai Jim");
 familyName("Borge");
 ?>

 

নিচের উদাহরণে ($fname and $year) নামের দুইটি আর্গুমেন্ট তৈরি করা হয়েছে।
উদাহরণঃ


<?php
 function familyName($fname, $year) {
     echo "$fname Refsnes. Born in $year <br>";
 }
 
 familyName("Hege", "1975");
 familyName("Stale", "1978");
 familyName("Kai Jim", "1983");
 ?>

 

PHP ডিফল্ট আর্গুমেন্ট ভ্যালু

কিভাবে একটি ডিফল্ট প্যারামিটার ব্যবহার করতে হয় তা নিচের উদাহরণে দেখানো হয়েছে। যদি আমরা কোন আর্গুমেন্ট ছাড়া ফাংশন setHeight() ব্যবহার করি তাহলে এটি আর্গুমেন্টকে ডিফল্ট ভ্যালু হিসেবে গ্রহণ করবে।

উদাহরণঃ


<?php
 function setHeight($minheight = 50) {
     echo "The height is : $minheight <br>";
 }
 
 setHeight(350);
 setHeight(); // will use the default value of 50
 setHeight(135);
 setHeight(80);
 ?>

 

PHP ফাংশন রিটার্নিং ভ্যালু

ফাংশনের কোন ভ্যালুকে রিটার্ন করানোর জন্য return স্টেটমেন্ট ব্যবহার করতে হয়।

উদাহরণঃ


<?php
function sum($x, $y) {
 $z = $x + $y;
 return $z;
}
echo "5 + 10 = " . sum(5, 10) . "<br>";
echo "7 + 13 = " . sum(7, 13) . "<br>";
echo "2 + 4 = " . sum(2, 4);
?>

 

Microsoft Project and Project Management

Huge Sell on Popular Electronics

Microsoft Project ও প্রকল্প ব্যবস্থাপনাঃ
রিদওয়ান বিন শামীম

Microsoft Project এর আওতায় প্রকল্প তৈরি করা যায়। সেই প্রকল্পের আওতায় আবার বিভিন্ন কাজ বা টাস্ক করা যায়। এরকম প্রতিটা টাস্কের জন্য সাধারণত নাম, সময়, শুরুর সময়, শেষ হওয়ার সম্ভাব্য সময় , ধারা ইত্যাদি নির্দিষ্ট করে দেয়া যায়। এ ধরণের কাজে পূর্বের অভিজ্ঞতা সম্পন্ন লোকদের কাজে লাগানো যেতে পারে।

 

 

টাস্ক গুলোর মধ্যে রিলেশন বুঝাতে SF (Start-Finish), FS(Finish-Start), SS, FF ইত্যাদি অনেক টার্ম ব্যবহার করা হয়। টাস্ক সম্পন্ন করার পর সেগুলোকে অনেক ধরণের ফরমেটে আমরা পেতে পারিঃ গান্ট চার্ট, ট্র্যাকিং গান্ট চার্ট, নেটওয়ার্ক ডায়াগ্রাম ইত্যাদি। এদের মধ্য থেকে অনেক সময় অনেক জটিল পদ্ধতিও বেছে নিতে হয়।প্রতিটি টাস্কের জন্য আলাদা আলাদা ভাবে খরচ ও রিসোর্স বেছে নেয়াও যায়। এছাড়াও প্রকল্পের অর্থনৈতিক লাভ ও উন্নতিও পর্যবেক্ষণ করা যায়। প্রকল্পের অগ্রগতির উপর রিপোর্টও লিখা যায়। এভাবে অর্থনৈতিক অগ্রগতি বিশ্লেষণ করা যায়। মাইলস্টোন বা জিরো ডিওরেশনের টাস্কও থাকে যা শুরু থেকে সময় গননা করা হয়, কোন প্রকল্পের বিচ্ছিন্ন অংশ হিসেবে ধরা হয়।

 

Microsoft Project এর আওতায় ওয়ার্ক ব্রেকডাউন কাঠামো (Work Breakdown Structure :WBS), এড অন প্রোডাক্ট Add-on product (WBS Chart Pro) ইত্যাদি ফরম্যাট তৈরি করা যায় ও দেখা যায় মাইক্রোসফট প্রোজেক্ট ফাইলের আন্ডারে। অথবা WBS code ব্যবহার করেও এসমস্ত সুবিধা পাওয়া যায়। অনেক গুলো প্রজেক্টের কাজ গুছিয়ে রাখার জন্য Microsoft Project Server এর সাহায্য নেয়া যায়। কাজের সুবিধার জন্য আমরা ম্যাক্রোর সহায়তাও নিতে পারি। আমরা কাষ্টোমাইজ করার জন্য VBA এবং Active Scripting এর সাহায্য নিতে পারি। মাইক্রোসফটের প্রকল্পের জন্য প্রকল্পের প্ল্যানকে Microsoft power point বা Microsoft word ইত্যাদিতে রূপান্তরিত করে প্রেজেন্টেশন তৈরি করা সম্ভব। প্রকল্প ব্যবস্থাপনার ক্ষেত্রে শিডিউল, বাজেট, উপাত্ত ব্যবস্থাপনা ,অগ্রগতি লক্ষ্য রাখা ও প্রতিবেদন তৈরি করা ইত্যাদিও জরুরী।

 

Microsoft Project এর জন্য টাস্ক তৈরি করতে যেসব তথ্য দিতে হবে তা হল আলাদা ভাবে প্রতিটি টাস্কের নাম, টাস্কের সময় ও টাস্কের সীমাবদ্ধতা। এরপর টাস্কের খরচের বাজেট করতে হবে, কর্মী নিয়োগ দিয়ে তাদের নরমাল ও ওভারটাইম দুই ধরণের বেতন ধরে। লক্ষ্য রাখার জন্য কাজের অগ্রগতি, সীমাবদ্ধতা ও পরিবর্তন ইত্যাদি ধরে প্রকল্পের উদ্দেশ্য ও সুযোগ নিশ্চিত করতে হবে। এরপর দেখতে হবে কোন সফটওয়ার কাজে লাগানো যায় কিনা। পরবর্তী সময়ে জনগনের মতামতের ভিত্তিতে প্রকল্পে পরিবর্তন আনতে হতে পারে, টাস্ক গুলোকে খণ্ড খণ্ড করে ভাগও করতে হতে পারে। ক্যালেন্ডারের মাধ্যমে কাজের শিডিউলকে আরও সময়ানুবর্তী করা যেতে পারে। ডেটলাইন, শর্ত ইত্যাদি দেয়া যেতে পারে।

 

প্রোজেক্ট ২০০৭ নতুন প্রকল্প, যাতে অনেক নতুন চার্ট, ক্যালেন্ডার, টাস্ক ড্রাইভার, শেয়ারপয়েন্ট সার্ভিস ও আরও অনেক সুবিধা যোগ করা হয়েছে।

How to Manage Projects with Dot Project

Huge Sell on Popular Electronics

যেভাবে ডটপ্রজেক্টের মাধ্যমে কোন প্রকল্প চালাতে হয়ঃ
রিদওয়ান বিন শামীম

ডটপ্রজেক্ট একটি সফটওয়ার যার মাধ্যমে কোন প্রকল্পের ব্যবস্থাপনাগত দিকগুলো নিয়ন্ত্রণ করা যায়। আপাতত আমরা এর পরিচিতিমূলক দিক গুলো নিয়ে আলোচনার পাশাপাশি এর সাথে টেকনিক্যাল কিছু বিষয় নিয়েও আলোচনা করব। এর পর আমাদের ওয়েব সাইটে আপনারা এবিষয়ে ভিডিও টিউটোরিয়ালও পাবেন।

 

যেভাবে ডটপ্রজেক্ট ইন্সটল করতে হয়ঃ

প্রথমে আনজিপ করে সার্ভারে ডটপ্রজেক্টের জন্য নতুন ফোল্ডার খুলতে হয়।

এরপর সার্ভারে ডটপ্রজেক্ট ফাইল কপি করতে হয়।

এবার ডাটাবেস সার্ভারে নতুন ডাটাবেস খুলতে হবে, নাম ও পাসওয়ার্ড দিয়ে।

যে কোন একটি ব্রাউজার থেকে ডটপ্রজেক্ট এর ইন্সটল ফোল্ডার নির্দেশ করিয়ে দিতে হবে।যেমন,http://justetc.net/dotproject/install ইত্যাদি।

এরপর ডাটাবেসে প্রবেশের তথ্য দিতে হবে।

 

ডটপ্রজেক্ট ফিচারগুলোর সারসংক্ষেপঃ

ডটপ্রজেক্টে মূলত বিভিন্ন কোম্পানি, প্রোজেক্ট, টাস্ক, ক্যালেন্ডার, ফাইল, কন্টাক্ট, ফোরাম, টিকেট, ইউজার এডমিন, সিস্টেম এডমিন ইত্যাদি থাকে।

 

যেভাবে ডটপ্রজেক্ট দ্বারা প্রকল্প নিয়ন্ত্রণ করা হয়ঃ প্রজেক্টের আন্ডারে থাকে প্রপোজাল ট্যাব, যার থেকে প্রজেক্ট শুরু করা হয়। প্রপোজাল স্ট্যাটাস দিয়ে নতুন প্রপোজাল শুরু করা যায়। প্রয়োজনে প্রাসঙ্গিক টাস্ক তৈরি করা যায় দরকার হলে। প্রয়োজনে টাস্ক তৈরি করার ক্ষেত্রে অন্য লোকের নিয়োগ দিতে হতে পারে। অভিজ্ঞ লোকের সাথে যোগাযোগ রেখে কাজ করতে হয়। প্রপোজাল, প্রপোজাল ডকুমেন্ট, প্রপোজাল আউটলাইন তৈরি হয়ে গেছে তাই এখন প্রকল্পের বিস্তারিত পরিকল্পনা জরুরী।

 

প্রকল্পের বিস্তারিত পরিকল্পনাঃ প্রজেক্টস এর ভেতরের ‘ইন প্ল্যানিং’ ট্যাব ব্যাবহার করতে হবে। এরপর প্রপোজাল প্রোজেক্টকে প্ল্যানিং প্রোজেক্ট এর ভেতর আনতে হবে। এডিট প্রোজেক্ট অপশন দিয়ে স্ট্যাটাস পরিবর্তন করে দিতে হবে। নতুন প্রজেক্ট করে ইন প্ল্যানিং ট্যাবে রাখা যেতে পারে। প্ল্যানিং নিজেই একটা প্রকল্প, এর সাথে অনেক টাস্ক, যোগাযোগ ইত্যাদির সমন্বয় করতে হতে পারে। প্ল্যানিং এর সময় আমরা পুরো প্রকল্পর ধাপে ধাপে কাজ গুলো ভাগ করে ফেলব। উদ্দেশ্য ও লক্ষ্য আলাদা করে মানব সম্পদ, মান, ক্রেতা ইত্যাদি সব ঠিক করে প্রয়োজনীয় যোগাযোগ ও অন্যান্য কাজ শুরু করে দিতে হবে।

 

প্রকল্প এগিয়ে নেয়াঃ প্রকল্পের প্ল্যানিং ও শুরুর অন্যান্য কাজ হয়ে যাওয়ার পর সময় ,খরচ ও মানবসম্পদ বিষয়ক সিদ্ধান্ত নিতে হবে। CPM model for Time Management এর মাধ্যমে এই ধাপ গুলো করা যায়। এরপর কাজের ধারা, প্রকল্পের মান বজায় থাকছে কিনা ইত্যাদিও দেখতে হয়। ওয়াটার ফল, এগাইল বেসড মডেল এসবের দ্বারা মান নিশ্চিত করা হয়। প্রয়োজনে প্যারেন্ট প্রোজেক্ট ইত্যাদি ব্যাবহার করতে হয় এ ধাপগুলো সম্পন্ন করার জন্য। ঝুঁকি ও চ্যালেঞ্জ ইত্যাদির একটি লিস্ট করে তাও নিয়ন্ত্রণ করা হয়। এরপর একে একে দেখতে হয় সব পূর্বশর্ত পুরন হয়েছে কিনা, সব টাস্ক ১০০% হয়েছে কিনা, কোয়ালিটি, রিসোর্স ও শর্ত পুরন হয়েছে কিনা। এরপর ক্রেতা ও ভোক্তার চাহিদা মিলিয়ে দেখে চূড়ান্ত ভাবে প্রকল্প সমাপন ঘোষণা করা হয়।
http://Bangla.SaLearningSchool.com

Some Topics on Project Communication Management

Huge Sell on Popular Electronics

প্রকল্প যোগাযোগ ব্যবস্থাপনা বিষয়ে কিছু কথাঃ
রিদওয়ান বিন শামীম

বড় প্রকল্পের জন্য পূর্ব পরিকল্পিত ও নিখুঁত যোগাযোগ ব্যবস্থার প্রয়োজন আছে। যদিও পরিস্থিতির উপর ভিত্তি করে যে কোন পরিকল্পনা পরিবর্তিত হতে পারে।

 

প্রকল্প যোগাযোগ ব্যবস্থাপনার মূল সারসংক্ষেপঃ

প্রকল্প যোগাযোগ অনেক গুরুত্বপূর্ণ একটি বিষয়, এটি অনেক চাতুর্যপূর্ণ ও রাজনৈতিক হতে পারে, প্রোজেক্ট রেকর্ড গ্রহন, প্রেরণ, সংরক্ষণ ও বণ্টন বিষয়ক হতে পারে, এবং যোগাযোগের ক্ষেত্রে সাধারণত চারটি নিয়ম মেনে চলেঃ

কি যোগাযোগ,

কার সাথে,

কখন ও

কীভাবে।

 

মাশরুম প্রোজেক্ট ম্যানেজমেন্টঃ তথ্য গোপন রেখে কাজ শেষ করার প্রবনতা এই ধরণের কাজের ধারায় পরে।

 

যোগাযোগ ব্যবস্থাপনার উপধারাগুলোঃ

যোগাযোগ পরিকল্পনা,

সম্পাদন,

পর্যবেক্ষণ ও

নিয়ন্ত্রণ

মূলত এই ক্ষেত্র গুলো যোগাযোগ পরিকল্পনার উপধারা সমুহ।

 

যোগাযোগের এই ধারা গুলো পারস্পরিক শেয়ার ও প্রকাশের মাধ্যমে শরিকদের মধ্যে গোলযোগের সম্ভবনাকে কমিয়ে আনা সম্ভব। একই সাথে দলগত অনুপ্রেরণা বাড়িয়ে তোলা সম্ভব।

 

প্রকল্প ব্যবস্থাপক বা প্রোজেক্ট ম্যনেজারের ভুমিকাঃ বেশিরভাগ সময় যোগাযোগ রক্ষা করা, মূলত সিদ্ধান্ত নেয়ার চেয়েও যোগাযোগ রক্ষা করা বেশি দরকার হতে পারে। যোগাযোগ পরিকল্পনা, ফলাফল, সময়, মিডিয়া, ওয়েব, ই মেইল, কোন তথ্য কাকে ইত্যাদি কাজ প্রোজেক্ট ম্যানেজারকেই করতে হয়। যাদের সাথে কাজ করতে হবে এমন সংস্থার পরিবেশগত দিক, প্লানিং, সম্ভবনা ইত্যাদি বিষয়েও তাকে সিদ্ধান্ত নিতে হতে পারে।

 

প্রোজেক্ট ম্যনেজারের প্রধান মাধ্যম বা টুলসঃ যোগাযোগ চ্যানেল, যা মূলত যোগাযোগ প্রকরণগুলোকে ঠিক রাখে। N সঙ্খক লোক n(n-1)/2 সঙ্খক উপায়ে যোগাযোগ করতে পারে এরকম একটি হিসাব আছে এই বিষয়ে। এক্ষেত্রে একটি সাবসেট নির্ধারণ করা হয়, মাঝে মাঝে অফিশিয়াল যোগাযোগ চ্যানেল ঠিক করা লাগতে পারে। আর যোগাযোগের ক্ষেত্রে অনলাইন যোগাযোগ, ভিডিও কনফারেন্স ইত্যাদিও মাধ্যম হিসাবে জনপ্রিয় হয়ে উঠছে।

 

যোগাযোগ ব্যবস্থাপনার পরিকল্পনাঃ এর মধ্যে আছে কাকে জানাতে হবে, কি জানাব, কাকে পাঠানো যায়, তথ্য প্রেরণের মাধ্যম, আপডেট রাখার জন্য কি করতে হবে ইত্যাদি।

 

তথ্য বণ্টনঃ তথ্য বণ্টনের জন্য প্রকল্প ব্যবস্থাপক সাধারণত যোগাযোগের মডেল ব্যবহার করেন, যে মডেলে কয়েকটি বিষয়ের দিকে খেয়াল রাখতে হয়, মনোযোগ দিয়ে তথ্য শোনা, তথ্য সংরক্ষণ, ভাষাগত দিক ইত্যাদি।

 

যোগাযোগের মাধ্যমগুলো হলঃ

প্রথাগত লেখা বা ফরমাল রাইটিং,

সাধারণ লেখা,

প্রথাগত মৌখিক যোগাযোগ ও সাধারণ মৌখিক যোগাযোগ।

 

পর্যবেক্ষণ ও নিয়ন্ত্রণ করাঃ

মূলত প্রকল্পের অগ্রগতি সম্পর্কে স্টেক হোল্ডারদের জানানো ও নিয়মিত অবহিত রাখার জন্য রিপোর্ট দেয়ার পদ্ধতি।

 

এখানে মূলত প্রকল্প ব্যবস্থাপনার যে তথ্য দেয়া হয়েছে তা PMI and PMBOK(Project Management Body of Knowledge) থেকে নেয়া হয়েছে।

http://Bangla.SaLearningSchool.com

Project Risk Management

Huge Sell on Popular Electronics

রিস্ক কি?
PMI এর মতে, Risk বলতে প্রকল্পের একটি অনিশ্চিত ঘটনা - প্রকল্পের  উপর ইতিবাচক বা নেতিবাচক প্রভাব রয়েছে এমন বুঝায় ।

 

Risk Management Plan includes:

Risk Management Plan এর জন্য প্রয়োজনীয় সরঞ্জাম এবং পন্থাঃ

ঝুঁকি ব্যবস্থাপনা
সনাক্তকরণ এবং ঝুঁকি ব্যবস্থাপনার জন্য সম্পদ নিয়োগ
ঝুঁকি বিভাগ
ঝুঁকি সম্ভাব্যতা এবং প্রভাব
ঝুঁকি প্রতিবেদন এবং ট্র্যাকিং বিন্যাস

 

ঝুঁকি ব্যবস্থাপনা প্রসেস:

ঝুঁকি সনাক্তকারী
ঝুঁকি বিশ্লেষণ
ঝুঁকি প্রতিক্রিয়া পরিকল্পনা
ঝুঁকি Monitoring ও কন্ট্রোল

 

ঝুঁকি সনাক্তকারী প্রক্রিয়া:
ঝুঁকি সনাক্তকারী প্রক্রিয়া আউটপুট:
ঝুঁকি নিবন্ধন - চিহ্নিত ঝুঁকি তালিকা
ঝুঁকির মূল কারণ সংক্রান্ত একটি তালিকা
সম্ভাব্য প্রতিক্রিয়া একটি প্রাথমিক তালিকা

ঝুঁকি বিশ্লেষণ
ঝুঁকি সনাক্তকরণ প্রক্রিয়া আউটপুট ইনপুট হিসেবে ব্যবহার করা হয়.
গুণগত ঝুঁকি বিশ্লেষণ: ঝুঁকি অগ্রাধিকার প্রতিটি উদ্দেশ্য জন্য একটি সম্ভাবনা ও প্রভাব ম্যাট্রিক্স উপর ভিত্তি করে

পরিমাণজ্ঞাপক ঝুঁকি বিশ্লেষণ:
প্রতিটি প্রকল্পের উদ্দেশ্য পূরণের সম্ভাব্যতা মূল্যায়ন
সামগ্রিক প্রকল্পের উদ্দেশ্য উপর তাদের মোট প্রভাব উপর ভিত্তি করে ঝুঁকি অগ্রাধিকার.

ঝুঁকি রেসপন্স প্ল্যান
প্রতিটি ঝুঁকি জন্য অগ্রাধিকার উপর নির্ভর করে:
কোনো পদক্ষেপ নিন
কিছু ঘটনা ঘটলে ব্যবস্থা গ্রহণ করা
ব্যবস্থা গ্রহন করা

ধন্যবাদ , আশা করি বিষয়টি বুঝতে পেরেছেন 🙂

Project Cost Management – Part 2

Huge Sell on Popular Electronics

প্রকল্প মূল্য ব্যবস্থাপনাঃ ২য় পর্ব।
রিদওয়ান বিন শামীম।

 

প্রকল্প মূল্য ব্যবস্থাপনার উপর কিছু সংজ্ঞা নিয়ে আলোচনা করছি,

অর্জিত মূল্যঃ এটি হল প্রকল্পের জন্য খরচ করা অর্থ, ডবল এন্ট্রি একাউন্টিঙের মত প্রতিটি খরচের জন্য পুঞ্জিত অর্থ সঞ্চিত থাকে।

বাজেটেড এট কমপ্লেসন (BAC)ঃ প্রকল্প সম্পাদনের জন্য মূলত কত অর্থ বরাদ্দ ছিল তার হিসাব।

প্ল্যানড ভ্যলুঃ কোন নির্দিষ্ট সময় পর্যন্ত প্রকল্পের কতটুকু কাজ সম্পন্ন হয়েছে তা হিসেব করে প্ল্যানড ভ্যলু।

(Planned Value = Planned% complete*BAC)।

অর্জিত মূল্য (EV): কোন নির্দিষ্ট সময়ের মধ্যে প্রকল্পের কতটুকু কাজ হয়েছে তা অর্জিত মূল্য দ্বারা বোঝানো হয়।

প্রকৃত খরচঃ নির্দিষ্ট সময় পর্যন্ত ব্যয়কৃত অর্থ।

কস্ট ভেরিএন্স বা CV ঃ অনুমিত খরচ ও প্রকৃত খরচের পার্থক্য, CV = EV – AC।

শিডিউল ভেরিএন্স বা SV: অনুমিত শিডিউল ও প্রকৃত শিডিউলের মধ্যে পার্থক্য, অর্থাৎ SV=EV-PV।

কস্ট পারফরমেন্স ইনডেক্স CPI: এটি খরচের একটি হার যেখানে প্রকৃত ব্যয় অনুমিত ব্যয়কে সমর্থন করে। CPI কোন নির্দিষ্ট সময়ের জন্য হয়ে থাকে, CPI = EV/AC।

কুমুলেটিভ সিপিআইঃ প্রকল্প শুরু থেকে কোন নির্দিষ্ট সময় পর্যন্ত সিপিআইকে কুমুলেটিভ সিপিআই বলে।

CCPI = CEV/CAC।

শিডিউল পারফরমেন্স ইনডেক্স SPIঃ নির্দিষ্ট সময় পর্যন্ত যদি প্রকল্প অনুমিত হারে সম্পন্ন হয় তবে তাকে শিডিউল পারফরমেন্স ইনডেক্স বলে।

কাজ সম্পন্ন হওয়ার সার্বিক অনুমান,EAC: কোন নির্দিষ্ট সময় পর্যন্ত সম্পন্ন কাজের হার দেখে পুরো প্রকল্পের সম্ভাব্যতা আন্দাজ করাকে সার্বিক অনুমান হিসেবে ধরা হয়। EAC = BAC/CCPI।

কাজ সম্পন্ন হতে সার্বিক অনুমান,ETC: এ ক্ষেত্রে পূর্বের পরিসংখ্যান দেখে আন্দাজ করা হয় আর কত অর্থ পুরো প্রকল্পে খরচ হতে পারে।

ভারিএন্স অফ কমপ্লেসন VAC: অনুমিত ব্যয় ও প্রকৃত ব্যয়ের পার্থক্য, VAC = BAC – EAC।

 

প্রকল্প ব্যয়ের উপর ভাল ধারণা পেতে প্রকল্প ব্যবস্থাপককে এই বিষয় গুলোতে জ্ঞান থাকতে হবে। কিসে কত খরচ হল, কীভাবে কি করব ইত্যাদি জানতে এগুলো জানা থাকতে হবে।

Project Cost Management – Part 1

Huge Sell on Popular Electronics

প্রকল্প মূল্য ব্যবস্থাপনাঃ (১ম পর্ব)
রিদওয়ান বিন শামীম

প্রকল্প মূল্য ব্যবস্থাপনার কিছু ধারণা এখানে দেয়া হল।

প্রথমেই আলোচনা করতে হয় মূল্য বিষয়ক কয়েকটি ধাপ নিয়ে,ক্রয়মূল্য, প্রক্রিয়ার খরচ, কাজ শেষ হওয়ার পর্যন্ত খরচ ইত্যাদি।

 

মূল্য প্রকৌশলঃ

কোন প্রকল্প থেকে আমরা যে বিষয় গুলো আশা করে থাকি সে গুলো হল,

খরচ কমানো,

মূল্য বৃদ্ধি করা,

মান বৃদ্ধি করা,

শিডিউল সংক্ষিপ্ত করা ও

প্রকল্পের সম্ভাব্যতা কমতে না দেয়া ইত্যাদি।

 

মূল্য নির্ধারণ করাঃ প্রকল্প সম্ভবনা নির্ণয়ের পর কাজের খণ্ডাংশের কাঠামো যখন নিরুপিত হয় তখন মূল্য নির্ধারণ করা যায়। এ প্রক্রিয়াটি কিন্তু বারবার পুনরাবৃত্তি করা যায়।

 

মূল্য নির্ধারণের টুলসঃ

পূর্বের বিভিন্ন কাজ পর্যবেক্ষণ করে একই রকমের বিভিন্ন মূল্য অনুমান করা হয়।

 

প্রতিটা কাজের (atomic task) জন্য খরচের আলাদা হিসাব করা হয়, সময়ও নির্ধারণ করা হয়। একে বোটম আপ এস্টিমেট বলা হয়।

 

স্থিতি মাপক হিসাব বলে আরেকটি পদ্ধতি আছে, এক মাইল রাস্তা বানাতে যদি ৪০০,০০০ টাকা লাগে তাহলে ১০ মাইল রাস্তা বানাতে ১০x৪০০,০০০ টাকা লাগবে- এটি স্থিতি মাপক হিসাব।

 

রিজার্ভ এনালাইসিস হল প্রকল্পের স্লিপেজের সাপেক্ষে এক প্রকার বাফার কস্ট, মানের জন্য হিসাবঃ অভীষ্ট মান লাভের জন্য যে অনুমিত হিসাব তাকে আউটপুট হিসেবে ধরা হয়, এটি হল কাজের জন্য অনুমিত হিসাবের ফলাফল।

 

কস্ট বাজেটিংঃ এটি হল খরচ ও তারিখের পরিকল্পনা, কখন কিসের উপর কত খরচ করা হবে তা এর উপর নির্ভর করে, এটিকে কস্ট বেস লাইনও বলা হয়ে থাকে। কর্মসূচি নির্বাচন ও শিডিউল নির্ধারণের পর বাজেটিং সম্পন্ন হয়। কর্মকাণ্ডের সময় ও রিসোর্স বাছাইও এর মধ্যে পড়ে। কাজ সম্পাদনের সময় কাজের খরচ একসাথে হিসাব করে খরচের হিসাবের পরিমাপ, ব্যবস্থাপনা ও নিয়ন্ত্রণ সম্পন্ন করতে হয়। এরপর রিসার্ভ এনালিসিসে খেয়াল রাখতে হয় যাতে খরচ বেশি হলেও তা যেন সমস্যা না করে। সরাসরি ও সহজ সুত্র গুলো কাজে লাগাতে প্যারামেট্রিক হিসাব ব্যবহার করতে হয়। প্রকল্প অর্থায়নের জন্য লিমিট রিকনসিলিয়েসন পদ্ধতি ব্যবহার করতে হয়।

 

মূল্য নিয়ন্ত্রণঃ পর্যবেক্ষণ, নিয়ন্ত্রণ ও সমন্বয় সাধন মূল্য নিয়ন্ত্রণের প্রধান ক্ষেত্র, যেটি স্থায়ী চক্রাকারে হতে পারে আবার মাসিক বা ২ সপ্তাহের চক্র হিসেবেও হতে পারে। মূল্য পরিবর্তনের নিয়ন্ত্রণ ব্যবস্থা, বেস লাইনের পরিবর্তন , পারফরমেন্সের বিশ্লেষণ, কস্ট পারফরমেন্সের ইনডেক্স, প্রাপ্ত চূড়ান্ত মূল্য, বর্তমান ও অতীত মূল্য থেকে ভবিষ্যতের মূল্য আন্দাজ করা , সেই তথ্য প্রকাশ করা, প্রকরণ ব্যবস্থাপনা ইত্যাদি মূল্য নিয়ন্ত্রণের অন্তর্ভুক্ত, যার ফলাফল হল মূল্য হিসাব আপডেট ও কস্ট বেস লাইন আপডেট ।

পিএইচপি ৫ অ্যারে (PHP 5 Arrays)

Huge Sell on Popular Electronics

আক্তারুজ্জামান

Department of CSE , University of Chittagong

 

একটি single ভেরিয়েবলে একের অধিক মান স্টোর করতে অ্যারে ব্যাবহার করা হয়।

উদাহরনঃ


<?php
$cars = array("Volvo", "BMW", "Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>

 

অ্যারে কি? (What is Array?)

অ্যারে হল একটি বিশেষ ভেরিয়েবল যা একই সময়ে একের অধিক মান ধারণ করতে পারে। নিচের আলোচনা থেকে অ্যারে সম্পর্কে পরিস্কার ধারনা পাওয়া যাবে।

নির্দিষ্ট কিছু আইটেম এর একটি লিস্ট কল্পনা করা যাক (উদাহরণস্বরূপ কিছু দেশের নামের একটি লিস্ট)। এখন এই লিস্টিটি যদি আমরা কোন একটি single ভেরিয়েবলে store করতে চাই তাহলে নিচের মত হবে-


$country1 = ”Bangladesh”;
$country2 = ”India”;
$country3 =”Pakistan”;
$country4 =”Nepal”;
$country5 =”Sri Lanka”;


 

এইখানে মাত্র ৫ টা দেশের একটি লিস্ট দেওয়া হয়েছে। কিন্তু কি হবে যদি আপনার ৩০০ টা দেশের একটি লিস্ট থাকে ? কিভাবে আপনি নির্দিষ্ট কোন দেশের নাম সন্ধান করবেন? এই সমস্যা সামাধানের জন্য মূলত array ব্যাবহার করা হয়। অ্যারের মাধ্যমে একটি single ভেরিয়েবলে অনেকগুলো ডাটা জমা রাখা যায় এবং প্রতিটা আইটেমের নির্দিষ্ট একটি ইনডেক্স নাম্বার থাকে, যাতে করে যে কোন আইটেম কে সহেজে এক্সেস করা যায়।

 

পিএইচপি তে অ্যারে তৈরি করা (Create an Array in PHP)

PHP তে array() ফাংশন টা ব্যাবহার করে একটি অ্যারে তৈরি করা হয়।


array();

 

পিএইচপি তে সাধারণত তিন ধরণের array রয়েছে।

  • Indexed Arrays
  • Associative Arrays
  • Multidimensional Arrays

নিচে এই তিন ধরণের array নিয়ে বিস্তারিত আলোচনা করা হয়েছে।

 

পিএইচপি ইনডেক্সেড অ্যারে (PHP Indexed Arrays)

পূর্ন সংখ্যার index/key নিয়ে যেই অ্যারে তৈরি করা হয় ওইটিকে ইনডেক্সেড অ্যারে বলে। দুভাবে ইনডেক্সেড অ্যারে তৈরি করা যায়।
ইনডেক্স নিচের মত অটোমেটিকেলি assign করা যেতে পারে (এখেত্রে index সবসময় 0 থেকে আরম্ভ হয়) :


$countries = array(“Bangladesh”,”India”,”Pakistan”,”Nepal”);

 

অথবা index নিচের মত ম্যানুয়ালি assign করা যেতে পারেঃ


 $countires[0] = “Bangladesh”;
 $countries[1] = ”India”;
 $countries[2] = ”Pakistan”;

 

নিচের উদাহরণটিতে countries নামের একটি indexed array আছে, যেইখানে তিনটা মান assign করা হয়েছে এবং পরে মান তিনটি একটি টেক্সটের ভিতর প্রিন্ট করা হয়েছে।


< ?php
 $countries = array("Bangladesh", "India", "Pakistan");
 echo $countries[0].", ".$countries[1]." and ".$countries[2]". " are three neighboring 
      countries";
 ?>

 

এই কোডটির আউটপূট হবে :


Bangladesh, India and Pakistan are three neighboring countries.


 

PHP Associative Arrays (অ্যাসোসিয়েটিভ অ্যারে)

এতক্ষন পূর্ণ সংখ্যার index/key নিয়ে বলা হয়েছে, তবে ইনডেক্স হিসেবে string ও ব্যাবহার করা যায় আর এইভাবে তৈরি অ্যারে কে associative array বলে। যেমন:


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 echo "Peter is " . $age['Peter'] . " years old.";
 ?>

 

এই কোডটির আউটপূট হবেঃ


Peter is 35 years old.


 

Multidimensional Arrays (মাল্টিডাইমেনশনাল অ্যারে )

PHP advanced সেকশনে মাল্টিডাইমেনশনাল অ্যারে নিয়ে বিসদ ভাবে আলোচনা করা হয়েছে।

 

Project Schedule Development: Part of Project Time Management

Huge Sell on Popular Electronics

প্রকল্পের সময়সূচী গঠনঃ সময় ব্যবস্থাপনার একটি অংশ
রিদওয়ান বিন শামীম

প্রকল্পের স্থিতিকাল, শেষ হওয়ার তারিখ, কাজের সময়সূচী ঠিক করা ইত্যাদি এই অংশে আলোচিত হয়।

 

সময়সূচী গঠনে ইনপুটঃ

কাজের তালিকা,

কাজের সংগঠন প্রণালী,

প্রকল্পের শিডিউল নেটওয়ার্ক ডায়াগ্রাম অর্থাৎ সবগুলো কাজের সময়ের মধ্যে স্থিতি, কাজের স্থিতিকাল, কাজের রিসোর্সের দরকারি বিষয়, রিসোর্সের ক্যালেন্ডার ইত্যাদি সময়সূচী গঠনে ইনপুট হিসেবে কাজ করে।

 

সময়সূচী গঠনে টুলসঃ

ক্রিটিকাল পাথ মডেল (CPM) নামক একটি পদ্ধতি ব্যপক ভাবে ব্যবহার করা হয় প্রকল্পের স্থিতিকাল নির্ধারণের ক্ষেত্রে। এছাড়াও সার্বিক শিডিউলের কোন পরিবর্তন না করেও ব্যক্তিগত কর্মকাণ্ডের সূচির কোন পরিবর্তন আনতে হলে এই সিপিএম মডেল দ্বারাই তা করা হয়।

 

ক্রাশিং ও ফাস্ট ট্র্যাকিংঃ প্রকল্পে আরও রিসোর্স যোগ করলেও সার্বিক ভাবে যেন সময় বেশি না লাগে সেটা ঠিক করতে ক্রাশিং পদ্ধতি ব্যবহার করা হয়। [Note: Fred's theory: Adding resources to an already delayed project will/may increase the delay] ফাস্ট ট্র্যাকিং এর মাধ্যমে অনেকগুলো কাজ এক সাথে সমান্তরাল ভাবে করা সম্ভব হয়। যদি কোন প্রয়োজনীয় রিসোর্স না পাওয়া যায় তখন পরিস্থিতি অনুকুলে রাখতে রিসোর্স লেভেলিং পদ্ধতি ব্যবহার করা হয়। এটি অনেকটা ক্রিটিকাল পাথ মডেল এর মতই, ক্রিটিকাল পাথ মডেলে ফ্লোট নামের একটি কনসেপ্ট ব্যবহার করা হয়। সিপিএম মডেল প্রথমে কাজের মোট সময় হিসাব করে তারপর হিসাব করে ফ্লোট, অর্থাৎ প্রকল্পের ক্ষতি না করে প্রতিটা কাজের ক্ষেত্রে কতটা কাজ কমানো যায় সেটা। সিপিএম মডেল নিশ্চিত করে, কোন কাজের পরিমাপ যেন তাদের ফ্লোটের পরিমান না ছাড়িয়ে যায়।

 

ক্রিটিকাল চেইন মেথডঃ ক্রিটিকাল চেইন মেথডে প্রতিটি কাজের শুরু ও শেষ হওয়ার জন্য সর্বশেষ অনুমিত সময় আলাদা ভাবে ঠিক করা হয়, এরপর কাজগুলোর মধ্যে বাফার অনুমিত হয়, কাজের লক্ষ্যমাত্রা কখনো এই বাফারকে ছাড়িয়ে যায় না।

 

কোম্পানি ক্যালেন্ডারঃ কোম্পানি ক্যালেন্ডার ছুটির তালিকা ও অন্যান্য দিন যেগুলোতে প্রকল্পের কাজ হবে না তা ঠিক করে। এছাড়াও লিড ও লেগ নামক পদ্ধতিও প্রকল্প সময়সূচী গঠনের অন্যতম টুলস।

 

সিপিএম মডেল ব্যবহারঃ

কাজের ধারাঃ সিপিএম মডেল প্রকল্পের কাজ ও সময় বোঝাতে অ্যারো, নড ও কানেক্টর ব্যবহার করে অ্যারো ডায়াগ্রাম পদ্ধতি ব্যবহার করে থাকে। এরপর ক্রিটিকাল পাথ তৈরি করে ও ফ্লোট হিসাব করে। এরপর দ্রুত কাজ শুরু ও শেষ করার জন্য সময় হিসাব করতে হয়, Early start date + duration - 1 । হিসাব করতে হয় বিলম্বে শুরু ও শেষ হওয়ার সম্ভবনাও, Late start date + duration - 1 । এরপর ফ্রি ফ্লোট ও নেভিগেট ফ্লোট হিসাব করতে হয়। এই সবগুলো ভ্যালু হিসাব করলে তা শিডিউল নিয়ন্ত্রণকে অনেক এগিয়ে নেয়।

 

Professional Responsibilities for Project Managers: A Quick Review

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপকদের পেশাগত দায়িত্বঃ
রিদওয়ান বিন শামীম

প্রকল্প ব্যবস্থাপকদের সাধারণ দায়িত্ব হল যেকোনো পরিস্থিতিতে সরাসরি এবং নৈতিকভাবে আইনানুগ পন্থায় সমস্যার সমাধান করা। পরিষ্কারভাবে সরাসরি কথা বলা ও কাজ করা। দ্রুত,সরাসরি ও নিয়মনিষ্ঠ ভাবে কাজ করতে পারা। কোন বিষয় এড়িয়ে যাওয়ার চেয়ে সরাসরি তার মোকাবেলা করাই প্রকল্প ব্যবস্থাপকদের কাজ।

 

পেশাগত দায়িত্ব কয়েকটি বিষয় নিয়ে সমন্বিতঃ

পেশার প্রতি দায়িত্ব,

জনগন ও সেবাগ্রহীতার প্রতি দায়িত্ব ।

 

পেশার প্রতি দায়িত্ব মূলত সংগঠনের সকল নিয়ম ও নীতিমালা মেনে চলা, পেশাগত দক্ষতাকে এগিয়ে নিয়ে যাওয়া ।

 

অন্যদিকে জনগন ও সেবাগ্রহীতার প্রতি দায়িত্ব হল সঠিক ও সম্পূর্ণ, প্রয়োজনীয় ও নিয়মতান্ত্রিক তথ্য তাদের কাছে পৌঁছে দেয়া। পেশাগত সেবার দায়িত্ব পালন করা। প্রয়োজনে তথ্যের সংবেদনশীলতা ও গোপনীয়তা রক্ষা করা। সেইসাথে মুনাফার প্রত্যাশা যেন জনস্বার্থ বিঘ্নিত না করে তা দেখতে হবে, উৎকোচ বা এজাতীয় কিছু নেয়া চলবে না।

 

পেশাগত দায়িত্বকে মূলত পাঁচ ভাগে ভাগ করা যায়ঃ

নিষ্ঠা ও পেশাদারিত্ব,

জ্ঞানের অন্বেষণে অনুপ্রেরণা,

ব্যক্তিগত উপযোগিতা বৃদ্ধি,

স্টেকহোল্ডারদের মুনাফার বিষয়ে সতর্ক থাকা,

স্টেকহোল্ডার ও টিমের ভেতরে যোগাযোগ ঠিক রাখা।

 

নিষ্ঠা ও পেশাদারিত্বঃ

সবসময় সঠিক কাজটি করা,নিজ দেশের আইন ও নিয়ম মেনে। যদি অন্য কোন দেশের কোন বিষয়ের সাথে প্রকল্পটির কোন সম্পর্ক থাকে তাহলে তা ভাল করে জেনে নিয়মমাফিক সম্পন্ন করতে হবে । সংগঠনের নীতিমালার মধ্যে থেকে কাজ করতে হবে। কাজের ক্ষেত্রে নিষ্ঠাবান হতে হবে। প্রকল্পের কর্মপ্রণালী অনুযায়ী কাজ করে যেতে হবে। পিএমআই (PMI) ৪৪টি কর্মপ্রণালী এজন্য উপযোগী বলে মত প্রকাশ করেছে যেগুলো ঝুঁকি কমায় , সময় ও খরচের দিক থেকেও লাভবান করে। সেই সাথে অন্যদের প্রতি সম্মান ও সৌহার্দ্য বজায় রাখাও জরুরী।

 

জ্ঞানের অন্বেষণে অনুপ্রেরণাঃতথ্য আদানপ্রদান করা ও পরস্পর বিনিময় করার মাধ্যমে এই প্রক্রিয়া ঠিক রাখা হয়। তথ্য শেখানো, পাবলিশ করা ও প্রচার করার জন্য এগুলো দরকার হয়।

 

ব্যক্তিগত উপযোগিতা বৃদ্ধিঃব্যক্তিগত উন্নতির সাথে সাথে নিজের ভুলগুলো সংশোধন করাও প্রয়োজন।

 

স্টেকহোল্ডারদের মুনাফার বিষয়ে সতর্ক থাকাঃ মুনাফা কমবেশি বা ভিন্নমুখী হতে পারে। এ ধরণের সঙ্কট নিষ্ঠার সাথে মোকাবেলা করতে হবে,এক্ষেত্রে সৎও থাকতে হবে। অবশ্যই ক্রেতার স্বার্থ আগে দেখতে হবে। স্টেকহোল্ডার ও টিমের ভেতরে যোগাযোগ ঠিক রাখাঃ যোগাযোগ সচ্ছ হতে হবে, সাংস্কৃতিক ব্যবধান সম্মানের সাথে দেখতে হবে, অলসতা ও অসাবধানতা কোন ভাবেই বরদাস্ত করা যাবে না। সামাজিক, অর্থনৈতিক ও পরিবেশগত ভারসাম্য বজায় রাখতে হবে, এই মানদণ্ডগুলো বিঘ্নিত করে কোন প্রকল্প সঠিকভাবে সম্পন্ন হওয়া সম্ভব না। এগুলো অবশ্যই প্রকল্প ব্যবস্থাপককে লক্ষ্য রাখতে হবে।
http://Bangla.SaLearningSchool.com

Initiate a Project

Huge Sell on Popular Electronics

একটি প্রকল্প যেভাবে শুরু হবেঃ
রিদওয়ান বিন শামীম

অনেক কারণে আমাদেরকে নতুন প্রকল্প চালু করতে হয় ।যেসব কারণে সাধারণত প্রকল্প শুরু করা হয় সেগুলো তিন ধরনের হয়ে থাকে,

বাণিজ্যিক কারনে,

সুযোগ সৃষ্টি হওয়ায় এবং

সমস্যা তৈরি হওয়ায়।

 

যেমন কোন সরকার তাদের বিমান খাতটিকে নিরাপত্তা প্রক্রিয়ার সাথে সংযুক্ত করতে চায় সেক্ষেত্রে তাকে কোন কোম্পানি খুঁজে বের করতে হবে যারা ই কমার্স ওয়েব সাইট তৈরি করে কাজ শুরু করবে। এটা বাণিজ্যিক কারণের একটি উদাহরণ।

 

আবার কোন পণ্য চাহিদা বেড়ে গেলেও সুযোগ সৃষ্টি হয় নতুন প্রকল্প শুরু করার, যেমন আইফোন বিষয়ক প্রকল্পগুলো এরকম উদাহরণ হতে পারে।

 

সমস্যা মোকাবেলার জন্যও নতুন প্রকল্প নেয়া হয় যেমন, দুর্ঘটনা এড়াতে বিমান কর্তৃপক্ষ সমস্যা চিহ্নিত করে তা প্রতিরোধে নতুন প্রকল্প শুরু করতে পারে।

যেভাবে প্রকল্প নির্বাচন করা হয়ঃ

অনেক গুলো সমস্যা থেকে গুরুত্ব অনুসারে একটি সমস্যা প্রকল্পের জন্য নির্বাচন করা হয়। কিন্তু সেটা কীভাবে?

প্রথমে স্ক্রলিং মডেল তৈরি করে উপাত্ত দ্বারা সম্ভাব্য লাভ ক্ষতি নিরূপণ করে দেখা হয় কোন প্রকল্প বেশি লাভজনক হবে।তারপর খরচের খতিয়ান নিরূপণ করে ইকোনমিক মডেল তৈরি করা হয়। যাতে থাকে খরচের বেনিফিট রেসিও, ক্যাশ ফ্লো,ইন্টারনাল রিটার্ন রেট, প্রেসেন্ট ভ্যালু এবং নেট প্রেসেন্ট ভ্যালু,অপরচুনিটি কসট,ডিসকাউন্টেড ক্যাশ ফ্লো এবং রিটার্ন অফ ইনভেস্টমেন্ট ইত্যাদি দেখা হয়।

 

এরপর দেখতে হবে প্রকল্পটি সফল হবে কিনাঃএটি আন্দাজ করার জন্য অনেক গাণিতিক পদ্ধতি আছে, প্রকল্পের স্টেকহোল্ডারদের সম্পর্কে আইডিয়া রাখতে হবে, কারণ একটি প্রকল্প থেকে অনেকে লাভবান হবে অনেকে তেমন লাভবান হবে না। স্টেকহোল্ডারদের এই দুটি গ্রুপকেই মানিয়ে রাখতে হবে।

এরপর যেভাবে কাজ এগিয়ে যাবেঃ

প্রজেক্টের কাজের উন্নয়নের জন্য প্রথমেই খেয়াল রাখতে হবে কন্ট্রাক্ট,

কাজের স্টেটমেন্ট,

এন্টারপ্রাইজের পরিবেশগত দিক ও অরগানাইজেসনাল প্রসেস এসেটের উপরে।

 

প্রকল্প পরিকল্পনার সফলতার জন্য দরকারঃ

প্রকল্প নির্বাচন প্রক্রিয়া,

ব্যবস্থাপনা ,

তথ্য ও দক্ষ কর্মীর সঞ্চালনা।

প্রকল্পের পরিকল্পনার ফলাফলের জন্য লক্ষ রাখতে হবেঃ

প্রকল্প বিবেচনা, বর্ণনা এবং প্রয়োজনীয়তার দিকে।

সম্ভাব্যতা, উচ্চ মানের শিডিউল ও বাজেটের দিকেও নজর রাখতে হবে।

 

এরপর প্রকল্পের বিভিন্ন স্তরের উন্নয়ন ও কাজের অগ্রগতি খেয়াল রেখে প্রিলিমিনারি প্রোজেক্ট স্কোপ স্টেটমেন্ট ও ডেভেলপিং প্রোজেক্ট স্কোপ স্টেটমেন্ট ইত্যাদি প্রস্তুত করতে হয়। প্রিলিমিনারি প্রোজেক্ট স্কোপ স্টেটমেন্ট লিস্টে যা থাকা উচিত তা হলঃ লক্ষ্য, পণ্য বা সেবার ধরণ,বৈশিষ্ট্য ও সেটার উপযুক্ত ভোক্তা,প্রারম্ভিক কাজের লিপিবদ্ধ বিবরণী, শিডিউল,কর্মীদের দল ও তাদের তথ্য,প্রকল্পের ঝুঁকি, সম্ভাব্য খরচের হিসাব ইত্যাদি। এভাবেই প্রকল্পের কাজ সম্পন্ন হয়ে থাকে।

http://Bangla.SaLearningSchool.com

উইন্ডোজ 8.1 টিউটোরিয়াল: স্টার্ট স্ক্রিণ (All about Start)

Huge Sell on Popular Electronics

উইন্ডোজ 8.1 টিউটোরিয়াল: 11 এর 3

Start Screen হচ্ছে আপনার পিসি দিয়ে যা কিছু করবেন তার শুরুর ধাপ। আপনি একে চিন্তা করতে পারেন Start Menu হিসেবে কিন্তু এটি বর্তমানে সম্পূর্ণ পর্দা জুড়ে বিস্তৃত এবং আপনি একে আপনার অ্যাপলিকেশন, বন্ধু এবং ছবি দিয়ে নিজেরমত করে নিতে পারেন।

স্টার্ট স্ক্রিণ

একই জায়গায় আপনার অ্যাপলিকেশন, বন্ধু-বান্ধব এবং ওয়েবসাইট

Start হচ্ছে আপনার পিসির হৃদয় - এখান থেকে আপনি আপনার অ্যাপলিকেশন এবং ডেস্কটপ প্রোগ্রাম চালাতে পারবেন, আপনার পছন্দের ওয়েবসাইট এবং ফাইল এ যেতে পারবেন।

Start Screen এর টাইলস গুলো কোন অ্যাপলিকেশন খোলা ছাড়াই আপনাকে আপনার বন্ধুদের সাম্প্রতিকতম তথ্য (আপডেট), নতুন ইমেইল, অ্যাপ্লিকেশন এর নটিফিকেশন এবং ক্যালেন্ডারের সাহায্যে আপনার পরবর্তী করণীয় দেখাবে। কারণ প্রত্যেক পিসি ব্যবহারকারী তাদের মাইক্রোসফট একাউন্ট দিয়ে Sign in করতে পারে, প্রত্যেকে তাদের টাইলস, রং এবং ব্যাকগ্রাউন্ড নিজের মত করে সাজিয়ে নিতে পারে।

শুরু করার পদ্ধতি

আপনার পিসির যেকোন স্থান থেকে পুরানো ডেস্কটপ ফিরে যাবার উপায়।
a
পর্দার নিচের দিকে বাম পাশের Start বাটনে b টোকা দিন বা ক্লিক করুন।

c
আপনার কীবোর্ড এর উইন্ডোজ প্রতিকে b চাপ দিন।

d
Charm খুলুন এবং Start এ টোকা দিন বা ক্লিক করুন। কিভাবে Charm খুলবেন তা জানতে দেখুন “খুজুন, শেয়ার করুন, প্রিন্ট করুন এবং আরো

আপনার সকল অ্যাপলিকেশন দেখা

e
Apps View এর মাধ্যমে আপনি আপনার সকল অ্যাপলিকেশন এবং প্রোগ্রাম দেখতে পারবেন। Apps View দেখার জন্য আপনার হাতের আঙুলের সাহায্যে Start Screen এর মাঝ বরাবর থেকে উপরের দিকে স্লাইড করুন অথবা Start Screen এর নিচের দিকে বাম পাশের অ্যারো f এ ক্লিক করুন।

আপনি চাইলে আপনি যখন প্রথম Sign in করবেন তখন আপনি App View এ প্রবেশ করতে পারেন। শেখার জন্য দেখুন “পিসিকে নিজের মতো করে সাজানো

যখন আপনি Windows Store থেকে নতুন অ্যাপলিকেশন ইনস্টল করবেন, এটি Apps View এ দেখা যাবে। তারপর যদি আপনি দ্রুততার সাথে এটিতে প্রবেশ করতে চান তাহলে একে Start Screen বা Desktop Taskbar এর সাথে পিন করে রাখতে পারেন ।

যেসকল অ্যাপলিকেশন আপনি প্রায়ই ব্যবহার করেন সেগুলোকে পিন করে রাখা

দ্রুততার সাথে খোলার জন্য আপনি আপনার পছন্দের অ্যাপলিকেশনগুলোকে Start Screen বা Taskbar এর সাথে পিন করে রাখতে পারেন এবং Tiles এ এক নজরে আপডেটগুলো দেখতে পারেন।

ধাপ 1
g
Apps View দেখার জন্য আপনার হাতের আঙুলের সাহায্যে Start Screen এর মাঝ বরাবর থেকে উপরের দিকে স্লাইড করুন অথবা Start Screen এর নিচের দিকে বাম পাশের অ্যারো Arrow এ ক্লিক করুন।

ধাপ 2
h
যে অ্যাপলিকেশন কে পিন করতে চান তার উপর চাপ দিন বা ধরে রাখুন বা রাইট ক্লিক করুন। আপনি একাধিক অ্যাপলিকেশন বাছাই করতে পারেন এবং সবগুলোকে একই সাথে পিন করতে পারেন।

ধাপ 3
i
Pin to Start অথবা Pin to taskbar এর উপর টোকা দিন বা ক্লিক করুন । যে অ্যাপলিকেশনগুলো পিন করেছেন তা Start Screen এর শেষে বা ডেস্কটপ টাস্কবারে দেখা যাবে।

স্টার্ট থেকে অ্যাপলিকেশন আনপিন করা

আপনি যদি সিদ্ধান্ত নিয়ে থাকেন যে আপনার Start Screen এ একটি টাইল আর থাকবে না, আপনি একে Start থেকে আনপিন করতে পারেন। অ্যাপলিকেশন আনপিন করা অ্যাপলিকেশন আনইনস্টল করা থেকে ভিন্নতর - যদি আপনি একটি অ্যাপলিকেশন কে Start Screen থেকে আনপিন করেন, অ্যাপলিকেশনটি সার্চ করলে (খোজা হলে) তখনও দেখা যাবে এবং এটি App View এও দেখা যাবে।

Start থেকে একটি অ্যাপ আনপিন করা
1. শুরুর পর্দায় যে Tiles কে আনপিন করতে চান তার উপর চাপ দিন বা ধরে রাখুন বা রাইট ক্লিক করুন।
আপনি একাধিক অ্যাপলিকেশন বাছাই করতে পারেন এবং সবগুলোকে একই সাথে আনপিন করতে পারেন। আপনার নির্বাচন বাদ দেওয়ার জন্য Start Screen এর উপর অথবা Apps View ফাঁকা স্থানে এ টোকা দিন বা ক্লিক করুন, অথবা Customize এ টোকা দিন বা ক্লিক করুণ।
2. Unpin from Start এ টোকা দিন বা ক্লিক করুন।
আপনি যে অ্যাপ্লিকেশনগুলোকে বাছাই করেছিলেন তা Start Screen থেকে মুছে যাবে, কিন্তু তখনও অ্যাপ ভিউ এ দেখা যাবে এবং সার্চ (খোঁজা হলে) করলে পাওয়া যাবে।

Start Screen কে সংগঠিত করুন
আপনার Start Screen আপনারই, একে সংগঠিত করুন এবং সাজান। আপনি Tiles গুলোর আকার পরিবর্তন করতে পারেন এবং যেখানে চান সেখানে সরাতে পারেন। যেমন, আপনি যে Tiles বেশি ব্যবহার করেন তা বড় এবং যেটি কম ব্যবহার করেন সেটিকে ছোট করতে পারেন। আপনার কাছে সবচেয়ে যেভাবে ভাল দেখা যায় সেভাবে আপনি আকার পরিবর্তন করতে পারেন এবং সাজাতে পারেন। আপনি ইচ্ছা করলে একসাথে Tiles এর গুচ্ছ (Group) তৈরি করতে পারেন এবং আরো বেশি দক্ষতার সাথে ব্যবহার করতে পারেন। আপনি সাজাতে পারেন টাইলস, অ্যাপলিকেশনগুলোতে সহজে প্রবেশের জন্য Start Screen কে পরিবর্তন করতে পারেন, সাজাতে পারেন ফোল্ডার, ওয়েবসাইট এবং অধিকাংশ সময় যাদের সাথে যোগাযোগ করা হয় তাদের।

Start Screen এর একটি টাইল সরাতে
1। শুরুর পর্দায় যে টাইলস কে সরাতে চান তার উপর চাপ দিন বা ক্লিক করুন এবং ধরে রাখুন।
2। যেখানে এটিকে রাখতে চান সেখানে এটিকে টেনে নিয়ে যান।

Tiles কে ছোট বড় করা
1। শুরুর পর্দায় যে Tiles কে ছোট বড় করতে চান তার উপর চাপ দিন বা ক্লিক করুন এবং ধরে রাখুন।
2। Resize এ টোকা দিন বা ক্লিক করুন।
3। আপনার চাহিদাপত সাইজ পছন্দ করুন।

টাইলস এর গ্রুপ (গোষ্ঠী) তৈরি করা
1। Start Screen এ যে  গুলোকে গোষ্ঠীভুত করতে চান তার উপর চাপ দিন এবং ধরে রাখুন বা ডান ক্লিক করুন।
2। একটি খালি জায়গায় টেনে নিয়ে যান এবং এদের পেছনে একটি দুসর বার দেখা যাবে, এদেরকে ছেড়ে দিন। এটি একটি নতুন গোষ্ঠী তৈরি করবে।
3। যদি আপনি গ্রুপ এর একটি নাম দিতে চান Name group এ টোকা দিন বা ক্লিক করুন এবং একটি নতুন নাম দিন। যখন আপনি একটি গ্রুপ তৈরি করে ফেলবেন তখন আপনি এটিকে Start Screen এর যেকোন স্থানে সরাতে পারবেন।

একটি গ্রুপকে সরাতে
1। Start Screen এর জুম আইকনে ক্লিক করুণ।
2। গ্রুপটিতে চাপ দিন ও টেনে নিয়ে যান অথবা ক্লিক করুন ও টেনে নিয়ে যান যেখানে আপনি নিতে চান।
যখন আপনি গ্রুপটিকে সরিয়ে ফেলেছেন, তখন জুম আগের অবস্থায় আনার জন্য স্ক্রিণের যেকোন স্থানে টোকা দিন বা ক্লিক করুন ।

ভিসুয়াল ওয়েব ডেভেলপার ব্যবহার না করে আবেদন প্রকাশ করা । ASP.NET MVC – Publishing the Website

Huge Sell on Popular Electronics

ভিসুয়াল ওয়েব ডেভেলপার ব্যবহার না করে আবেদন প্রকাশ করা

কি খবর সবার? সবাই ভালতো? আজ আমি অনেক গুরুত্বপুর্ণ একটা বিষয় নিয়ে বিস্তারিত আলোচনা করবো ।হ্যাঁ আজ আমরা দেখব কীভাবে ভিসুয়াল ওয়েব ডেভেলপার ব্যবহার না করে আবেদন প্রকাশ করা যায় ।

ভিসুয়াল ওয়েব ডেভেলপার ব্যবহার না করে আবেদন প্রকাশ করাঃ/Publish Your Application Without Using Visual Web Developer
একটি ASP.NET MVC আবেদন Webmatrix , ভিসুয়াল ওয়েব ডেভেলপার বা ভিসুয়াল স্টুডিও কমান্ড ব্যবহার করে একটি দূরবর্তী সার্ভারে(remote server) প্রকাশ করা যায়।
এই ফাংশন কপি আপনার সব MVC , ওয়েব পেজ, razor , সাহায্যকারী , এবং ( একটি ডাটাবেস ব্যবহার করা হয় ) এসকিউএল সার্ভার কম্প্যাক্ট যা আপনার সব আবেদন ফাইল , কন্ট্রোলার , মডেল , ছবি, এবং সমস্ত আবশ্যক ডিএলএল ফাইল কপি করে।
আবার কখনও কখনও আপনি এই অপশনটি ব্যবহার করতে নাও চাইতে পারেন। কারণ হিসেবে বলতে পারি, হয়তো আপনার হোস্টিং প্রদানকারী শুধুমাত্র FTP সমর্থন করে? বা, হতে পারে আপনার ইতিমধ্যে ক্লাসিক এএসপি এর উপর করে একটি ওয়েব সাইট আছে ? বা, হতে পারে আপনি ফাইল নিজের জন্য কপি করতে চাইছেন ? আবার এও হতে পারে, যে আপনি প্রথম পাতা, এক্সপ্রেশন ওয়েব বা অন্য কিছু প্রকাশনা সফটওয়্যার ব্যবহার করতে চান?
আপনি কী কোন সমস্যায় আছেন? যদি হ্যাঁ হয়। তাহলে চিন্তা করার কিছু নেই। আপনি তা সমাধান করতে পারবেন।

একটি ওয়েব কপি সঞ্চালনের জন্য , আপনাকে জানতে হবে কিভাবে সঠিক ফাইল অন্তর্ভুক্ত করতে হয়, কোন DDL ফাইল কপি এবং কোথায় তাদের সঞ্চয় করে রাক্তে হবে।
নিচের পদক্ষেপগুলি অনুসরণ করুন :
1. ASP.NET এর সর্বশেষ সংস্করণ ব্যবহার করুনঃ/1. Use the Latest Version of ASP.NET
ASP.NET ব্যবহার করার আগে, নিশ্চিত করুন আপনার হোস্টিং কম্পিউটার এ ASP.NET এর সর্বশেষ সংস্করণ (4.0) রান করা আছে.

2. কপি ওয়েব ফোল্ডার/2. Copy the Web Folders
আপনার development কম্পিউটার থেকে আপনার ওয়েবসাইট ( সব ফোল্ডার এবং কন্টেন্ট) আপনার দূরবর্তী(remote) হোস্টিং কম্পিউটার (সার্ভার) এ একটি অ্যাপ্লিকেশন ফোল্ডারে কপি করুন। আপনার App_Data ফোল্ডার পরীক্ষা তথ্য ধারণ করে (test data), App_Data ফোল্ডারে কপি করবেন না (নিচে এসকিউএল তথ্য দেখুন)

3. এখন DLL ফাইলটি কপি করুন/3. Copy the DLL Files
দূরবর্তী সার্ভারে আপনার আবেদন root- র মধ্যে একটি বিন ফোল্ডার তৈরি করুন (যদি আপনার সাহায্যকারী ইনস্টল করা থকে , তাহলে আপনার ইতিমধ্যে একটি bin ফোল্ডার আছে)
ফোল্ডার থেকে সবকিছু দূরবর্তী সার্ভারে আপনার আবেদন এর bin ফোল্ডারে কপি করুনঃ

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies

4. SQL সার্ভার কম্প্যাক্ট ডিএলএল ফাইল কপি করুন/4. Copy the SQL Server Compact DLL Files

যদি আপনার অ্যাপ্লিকেশন এ একটি SQL সার্ভার কম্প্যাক্ট ডাটাবেস ( App_Data ফোল্ডারে একটি .sdf ফাইল) থাকে, তাহলে আপনাকে এসকিউএল সার্ভার কম্প্যাক্ট ডিএলএল ফাইল কপি করতে হবে।
আপনার ফোল্ডার থেকে দূরবর্তী সার্ভারে আপনার আবেদন এর bin ফোল্ডারে কপি সবকিছু করুনঃ

C:\Program Files (x86)\Microsoft SQL Server Compact Edition\v4.0\Private

উদাহরণঃ
xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.data>
<DbProviderFactories>
<remove invariant="System.Data.SqlServerCe.4.0" />

<add invariant="System.Data.SqlServerCe.4.0"
name="Microsoft SQL Server Compact 4.0"
description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.1,Culture=neutral, PublicKeyToken=89845dcd8080cc91" />

</DbProviderFactories>
</system.data>
</configuration>

5 . এবার এসকিউএল সার্ভার ডেটা কম্প্যাক্ট কপি করুন/5. Copy SQL Server Compact Data

App_Data ফোল্ডারে যা test data ধারণ করে সেখানে কি .sdf কোন ফাইল আছে?
আপনি কি দূরবর্তী সার্ভারে test data প্রকাশ করতে চান?
সম্ভবত না ।
যদি আপনি এসকিউএল ডাটা ফাইল ( .sdf ফাইল) কপি করুন , তাহলে আপনি ডাটাবেসের মধ্যে সবকিছু মুছে দিন, এবং তারপর সার্ভার আপনার উন্নয়ন কম্পিউটার থেকে empty .sdf ফাইল কপি করুন ।

দেখছেন তো? খুব মজার তাই না। সবাই ভাল থাকুন। আজ এই পর্যন্তই। আর কোথাও না বুঝতে পারলে কমেন্ট করতে ভুলবেন না কিন্তু ।

সার্চ ইঞ্জিন অপটিমাইজেশনঃ ওয়েবসাইট ভেরিফাই করা । SEO – Verifying Web Site

Huge Sell on Popular Electronics

রিদওয়ান বিন শামিম

কোন একটি ওয়েবসাইট ডিজাইন ও ডেভলাপ করার পর কীভাবে বোঝা যাবে সব HTML syntax ঠিকভাবে ব্যবহার করা হয়েছে কিনা? কারণ সার্চ ইঞ্জিন গুলো সাধারণত ভুল HTML syntax এর জন্য কোন অভিযোগ করে না। অনেক এসইও এক্সপার্ট বলেন সার্চ ইঞ্জিন অপটিমাইজেশন HTML/XHTML ভেরিফিকেসনের উপর নির্ভর করে না। কিন্তু আমরা আলোচনা করব কী কী কারণে W3C Compliance হতে পারে । কয়েকটি কারণে HTML/XHTML ভেরিফিকেসনের প্রয়োজন হয়।একটি সাইটের মান নির্ভর করে সেটি কীভাবে লেখা হয়েছে তার উপর। সেটিকে syntactically নির্ভুল হতে হবে। সার্চ ইঞ্জিন কোন সাইটের কন্টেন্ট ইনডেক্সে সাজাতে গিয়ে HTML tags সঠিক ভাবে না পেলে কনফিউজড হয়ে যায়, একারনেই অনেক সাইটের ইনডেক্সই ঠিকভাবে সাজানো নয়। অনেক HTML tags থাকলে অনেক সময় তা depreciated হয়ে যায় ও অনেক সার্চ ইঞ্জিন তা পড়তে পারে না।

মূলত HTML Code এর সৌন্দর্য, প্রক্রিয়া করার ধরণই দক্ষ ওয়েব ব্যবহারকারীকে আকৃষ্ট করে। আলোচনা করা যাক W3C Compliance নিয়ে, W3C হল World Wide Web Consortium যা ১৯৯৪ সাল থেকে ওয়েবপেজ ও ওয়েবসাইট গঠন ও সৃষ্টি নিয়ে দিকনির্দেশনা দিয়ে যাচ্ছে। HTML/XHTML Validator ও CSS Validator এর মাধ্যমে W3C থেকে HTML/XHTML ও CSS ফাইল যা ওয়েবে প্রকাশ করা হবে তা ভ্যালিডেটেড করা হয়। ভ্যালিডেটেড করার সময় সঙ্গত কারণে অনেকসময় ভুলও হতে পারে। সব ভ্যালিডেশন XHTML DTD নামক মানদণ্ড প্রকরণ HTML দ্বারা করা হয়। W3C Compliance এর নিয়ম গুলো হল, XHTML declaration statements এর মাধ্যমে প্রতিটি XHTML পেজ শুরু করতে হয়,


<DOCTYPE html PUBLIC 
"-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">

  • প্রতিটা ট্যাগ বন্ধ হতে হয়। হেড ও বডি ট্যাগ বাধ্যতামূলক, এম্পটি ট্যাগে terminating slash ব্যবহার করতে হয়, এম্পটি ট্যাগে ইন্ড ট্যাগ ব্যবহার করতে হয় না, যেমন

<BR> is now <br />.
<HR> is now <hr />.
<IMG SRC="--"> is now <img src="--" />

  • এখন সব ট্যাগ লোয়ার কেস হবে, তবে attributes এর ক্ষেত্রে নয় কেবল ট্যাগের ক্ষেত্রে। যেমন, XHTML DTD তে নিচের উদাহরণ গুলোঃ

<FONT color="#ffffcc"> is invalid
<font color="#ffffcc"> is valid
<font color="#FFFFCC"> is also valid

  • attribute values কে double quotes এর মধ্যে রাখতে হয়।
  • ট্যাগ নেস্টেড হওয়ার দরকার নেই,

<b><i>Text</b></i> This is invalid
<b><i>Text</i></b> This is valid

  • <pre> ট্যাগ img, object, big, small, sub, বা sup.ইত্যাদি ধারন করে না,
  • একটি <form> ট্যাগ অন্য একটি <form> ট্যাগের মধ্যে থাকতে পারে না।
  • কোডের  মধ্যে & থাকলে &amp; কোড ব্যবহার করতে হয়,
  • যে কোন সিএসএস কোড থাকলে তা লোয়ার কেস হবে।

এসইও এর জন্য কনটেন্টই সেরা । SEO – Content is the King

Huge Sell on Popular Electronics

কনটেন্টই মূলত এই সাইটে আপনি কি কি দেখাতে চান। যেমন টেক্সট, গ্রাফিক্স, এমনকি অন্যান্য ওয়েবসাইটের লিঙ্ক। আপনার সাইডে অত্যধিক গ্রাফিক্স ব্যবহার করা উচিত নয় কারণ এতে করে আপনার ওয়েব সাইড লোড হতে সময় নিবে।

আপনার ওয়েবসাইডকে সার্চ ইঞ্জিন ফ্রেন্ডলি কিভাবে করবেন তার জন্য হাজার হাজার লেখা, বই এবং ফোরাম সাইড পাবেন। কিন্তু শেষ পর্যন্ত আপনাকে একটি নিয়ম অব্যশই মানতে হবে যে, স্বতন্ত্র, উচ্চ মানের কনটেন্ট।

স্বতন্ত্র, উচ্চ মানের কনটেন্ট

যখন মানুষ কোন তথ্যের জন্য কোন ওয়েবসাইডে যায়, তখন সে উক্ত ওয়েবসাইড হতে অন্যদের থেকে স্বতন্ত্র কিছু পেতে চায়। বর্তমান সময়ে, সার্চ ইঞ্জিন খুব স্মার্ট হয়েছে এবং তারা ব্যাকরণ এবং শব্দগুচ্ছ সম্পূর্ণ বুঝতে সক্ষম হয়েছে।

এসইও কনটেন্ট লিখন (কপি লেখা)

এসইও কনটেন্ট লেখার ক্ষেত্রে আপনাকে নিম্নলিখিত বিষয় গুলো অব্যশই মেনে চলতে হবে।

  1. কনটেন্ট সুনির্দিষ্ট লোকদের জন্য লিখতে হবে।
  2. কীওয়ার্ড ডেনসিটির জন্য সার্চ ইঞ্জিন নীতিমালা অনুসরণ করতে হবে।
  3. শিরোনাম অব্যশই আকর্ষণীয় এবং ভিজিটরদের কাছে আকর্ষক হতে হবে।
  4. বিভ্রান্তিকর, দ্ব্যর্থক, এবং জটিল ভাষা ব্যবহার করা যাবে না।
  5. আপনার ওয়েব পেজকে সংক্ষিপ্ত করতে হবে।

ভাল কনটেন্ট এর অন্যান্য উপকারিতা

এটা শুধু এসইও নয় এর মাধ্যমে আপনি আপনার মনের চিন্তা শক্তি অন্যের কাছে উপস্থাপন করতে পারবেন। অনেক কারণেই আপনার সাইট জনপ্রিয় হতে পারে।

  • আপনার সাইডে যদি স্বতন্ত্র কিছু থাকে তবে লোকজন আপনার সাইডে ভিজিট করার জন্য অন্যকে উপদেশ দিবে।
  • অন্যান্য ওয়েবমাষ্টার আপনার সাইডের লিংক অন্য সাইডে দিবে।

উপসংহার

সৃজনশীল স্বতন্ত্র কনটেন্ট খুব কষ্টসাধ্য এবং সময় সাপেক্ষ। কিন্তু শেষ পর্যন্ত, এসইও এর নিয়ম আপনার কনটেন্টকে একটি ভাল অবস্থানে নিয়ে যাবে। এটা শুধু সার্চ ইঞ্জিন এর জন্য নয় বরং এটা আপনার মূল্যবান ভিজিটরের জন্য। ভিজিটর হচ্ছে আপনার ওয়েবসাইডের একটি সম্পদ। তাই কনটেন্ট এর জন্য আমাদের কঠোর পরিশ্রম ও সময় দিতে হবে।

সার্চ ইঞ্জিন অপটিমাইজেশনঃ অপটিমাইজড এঙ্কর । SEO – Optimized Anchor

Huge Sell on Popular Electronics

রিদওয়ান বিন শামিম

 

সার্চ ইঞ্জিন অপটিমাইজেশনে সমস্ত টেক্সট লিঙ্কে বর্ণনামূলক এঙ্কর টেক্সট ব্যবহার করা উচিৎ। বেশিরভাগ সার্চ ইঞ্জিন এঙ্কর টেক্সটকে সম্ভাব্য লিঙ্ক হিসাবে দেখে। এঙ্করের একটি উদাহরণ হলঃ


<a href="otherpage.htm" title="Anchor Title">Anchor Text</a>

এঙ্করের কয়েকটি গুরুত্বপূর্ণ বিষয় হল

  • এঙ্কর খুব গুরুত্বপূর্ণ তাই ভাল কীওয়ার্ড ব্যবহার করা উচিৎ।
  • এঙ্কর টাইটেল দর্শকের কাছে balloon ব্যবহার করার সুযোগ দেয় ও লিখিত টেক্সট দৃশ্যমান করে তুলে।
  • এঙ্কর টেক্সট সাবধানে নির্বাচন করা উচিৎ এটি শুধু সার্চ ইঞ্জিন নয় ন্যাভিগেশনের জন্যও গুরুত্বপূর্ণ।
  • otherpage.htm অন্য কোন পেজে যাওয়ার জন্য ব্যবহার করা হয়। এটি অন্য কোন সাইটে যাওয়ার ক্ষেত্রেও ব্যবহার করা হয়, আর এজন্যই মনে রাখতে হবে, সেই সাইটটি যেন ঠিক থাকে, নাহলে ব্রোকেন লিঙ্ক হয়ে যাবে, যা সার্চ ইঞ্জিনের রেঙ্কিং এর জন্য খারাপ হতে পারে। এই কোডটি

<a href="otherpage.htm" title="Anchor Title">
<img src="image.gif" alt="keywords" />
</a>

এক ধরণের কোড যেখানে এঙ্কর টেক্সটের বদলে ইমেজ ব্যবহার করা হয়, এক্ষেত্রে অল্ট ট্যাগ (alt tag) খুব সাবধানে ব্যবহার করা হয়। এই অল্ট ট্যাগে কী ওয়ার্ডও খুব সাবধানে ব্যবহার করা উচিৎ।

এসইও – টাইটেল অপটিমাইজেশান । SEO – Title Optimization

Huge Sell on Popular Electronics

নয়ন চন্দ্র দত্ত

 

কি খবর সবার? সবাই ভালতো । আজ আমি অনেক গুরুত্বপুর্ণ একটা বিষয় এসইও - টাইটেল অপ্টিমাইজেশান নিয়ে বিস্তারিত আলোচনা করবো । তাহলে চলুন শুরু করা যাক ...। চলুন
প্রথমেই আমরা এসইও কী, এর ব্যবহার এবং পরিচিতি দেখি...।

সার্চ ইঞ্জিন অপটিমাইজেশান

সার্চ ইঞ্জিন অপ্টিমাইজেশান (ইংরেজি: Search Engine Optimization) বা সংক্ষেপে এসইও (SEO) হলো একটি পদ্ধতি যার মাধ্যমে একটি ওয়েবসাইট বা ওয়েবপেজকে সার্চ ইঞ্জিন ব্যবহারকারীদের সার্চ বা অনুসন্ধান ফলাফলের তালিকায় প্রথম দিকে দেখানোর চেষ্টা করা হয়। সাধারণত একটি সার্চ ইঞ্জিনের ওয়েব ক্রাউলার বা সার্চ রোবট বিভিন্ন সময় কিংবা কোনো নির্দিষ্ট সময় ওয়েবে থাকা বিভিন্ন ওয়েবসাইট ঘুরে বেড়ায় এবং তখনকিছু নির্দিষ্ট বৈশিষ্ট্য খুঁজে বেড়ায়। ওয়েবসাইটের সেই সকল বৈশিষ্ট্য নিশ্চিত করে ওয়েবসাইটকে সার্চ রোবটের কাছে তথ্যসমৃদ্ধ করার কাজটিই মূলত প্রকৃত চ্যালেঞ্জ হয়ে থাকে এসইও'র। রোবট সাধারণত একটি ওয়েবসাইট ক্রাউল করার বা ঘুরে বেড়ানোর সময় যে বিষয়গুলোতে দৃষ্টিপাত করে, সেগুলো হচ্ছেঃ

  • ওয়েবসাইটের টাইটেল বা নাম
  • ওয়েবসাইটের ডেসক্রিপশন বা বিবরণ
  • ওয়েবসাইটের মেটা ট্যাগ
  • ওয়েবসাইটের সাইট ম্যাপ
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর টাইটেল বা নাম
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর অল্ট বিবরণ
  • ওয়েবসাইটে ব্যবহৃত ছবিগুলোর ক্যাপশন ইত্যাদি

এই বিষয়গুলো নিশ্চিত করে ওয়েবসাইটকে সার্চ ইঞ্জিনের কাছে দৃষ্টিগোচর করার কাজটিই এসইও'র মূল কাজ বলে পরিগণিত হয়। আজ আমরা দেখব এসইও এর টাইটেল অপ্টিমাইজেশান সম্বন্ধে-

এসইও - টাইটেল অপটিমাইজেশান

একটি HTML টাইটেল ট্যাগ হেড ট্যাগ এর ভিতরে থাকে। পেজ টাইটেল (পেজের জন্য হেডিং দিয়ে বিভ্রান্ত করা যাবে না) আপনার ব্রাউজার উইন্ডোর টাইটেল বারের মধ্যে যা প্রদর্শন করা হয় এবং আপনি যখন একটি পেজ বুক্মার্ক করেন তখন যা প্রদর্শন করে অথবা আপনার ব্রাউজারে পছন্দের তালিকায় যা যোগ করা হয়।

এটি ওয়েব পেজ এর একটি জায়গায় আপনার কীওয়ার্ড অবশ্যই উপস্থিত থাকতে হবে। আপনার ওয়েবসাইটের প্রতিটি পেজের টাইটেলের মধ্যে কীওয়ার্ডের সঠিক ব্যবহার গুগল এর জন্য অত্যন্ত গুরুত্বপূর্ণ - বিশেষ করে হোমপেজের জন্য। আপনি যদি আপনার সাইট অপটিমাইজের জন্য কিছু না করে থাকেন তাহলে এটি করতে অবশ্যই মনে রাখবেন!

এখানে একটি ওয়েব পেজ -এর টাইটেল ডিজাইন করার সময় কিছু বিবেচ্য বিষয় উল্লেখ করা হয়েছে:

  1. টাইটেল ৯ ওয়ার্ড বা ৬০ অক্ষর দ্বারা গঠিত উচিত
  2. টাইটেলের খুব প্রারম্ভে কীওয়ার্ড ব্যবহার করুন
  3. আপনার কোম্পানীর নাম যদি খুব ভালোভাবে পরিচিত না হয় তাহলে টাইটেলে আপনার কোম্পানীর নাম অন্তর্ভুক্ত করবেন না

টাইটেল তৈরী করার জন্য সর্বোত্তম উপায়

এখানে পেজের টাইটেল তৈরি করার জন্য কিছু পদ্ধতি দেওয়া হয়েছে যা আপনি অনুসরণ করতে পারেনঃ

  1. প্রতিটি পেজের জন্য একটি ইউনিক টাইটেল রাখতে হবে।
  2. সম্বব হলে, প্রতিটি পেজের প্রতিটি টাইটেল এ প্রাথমিক কীওয়ার্ড ফ্রেজ ব্যবহার করার চেষ্টা করুন।
  3. আপনার হোম পেজের টাইটেল প্রাথমিক কীওয়ার্ড ফ্রেজ দিয়ে আরম্ব করুন যা সেরা সেকেন্ডারি কীওয়ার্ড ফ্রেজ অনুসরণ করে।
  4. আপনার নির্দিষ্ট পণ্য, সেবা, বা কন্টেন্ট পাতায় আপনার প্রধান কীওয়ার্ড ফ্রেজ আরো সুনির্দিষ্টভাবে ব্যবহার করুন।
  5. যদি আপনার কোম্পানীর নাম অন্তর্ভুক্ত করতে হয় তাহলে টাইটেল এর শেষে করুন
  6. কীওয়ার্ডের জন্য বহুবচন বা একবচন এর সেরা ফর্ম ব্যবহার করুন যা WordTracker এর অনুসন্ধান এর ক্ষেত্রে বেশি ব্যবহৃত হয়।
  7. টাইটেলে আপনার কীওয়ার্ড 2 থেকে 3 এর অধিক পুনরাবৃত্তি করবেন না।
  8. এটি নিশ্চিত করুন যে <title> ট্যাগ আপনার পেজের <head> বিভাগের প্রথম উপাদান।  এটি Google এর জন্য পেজটি খুঁজে পাওয়া সহজ করে।

আজকের মত এই পর্যন্ত। আশা করি সবার খুব ভাল লেগেছে । পরবর্তি টিউটোরিয়ালে এসইও নিয়ে আরো অনেক কিছু লিখব। সবাই ভাল থাকবেন আর কোন জায়গায় বুঝতে কোন সমস্যা হলে নিশ্চই কমেন্ট করবেন ।

সার্চ ইঞ্জিন অপটিমাইজেশন মেটা ট্যাগ । SEO – Optimized Metatags

Huge Sell on Popular Electronics

রিদওয়ান বিন শামিম।

 

সার্চ ইঞ্জিন অপটিমাইজেশনে দুটি মেটা  ট্যাগ থাকে, মেটা ডেসক্রিপশন ট্যাগ ও মেটা কীওয়ার্ড ট্যাগ। কিছু কিছু সার্চ ইঞ্জিনে মেটা ডেসক্রিপশন ট্যাগকে সার্চ রেজাল্টে দেখানো হয় কিন্তু মেটা কীওয়ার্ড ট্যাগকে সার্চ ইঞ্জিনে দেখা যাবে না। অনেক এসইও এক্সপার্ট  মেটাট্যাগের ধারণা ত্যাগ করতে শুরু করছেন যদিও তারা নিজেদের কিছু সাইটে এখনও এটি ব্যবহার করে থাকেন। গুগলের জন্য মেটা ডেসক্রিপশন ট্যাগ সার্চ ইঞ্জিন রেজাল্ট পেজে (SERPs)  তেমন প্রভাব রাখতে পারে না, তবে সার্চ ইঞ্জিন রেজাল্ট পেজে লিস্টিং এর ক্ষেত্রে কাজে লাগতে পারে। ইয়াহু বলে তারা কোন পেজকে রেঙ্কিং করতে  মেটা কীওয়ার্ড ট্যাগ ব্যবহার করে অর্থাৎ, ইয়াহু সহ আরও কিছু সার্চ ইঞ্জিন এখনও মেটা কীওয়ার্ড ট্যাগ ব্যবহার করে থাকে। কোন ওয়েব পেজের হেড সেকশনে নিচের কোড মেটা ট্যাগের জন্য আমরা ব্যবহার করতে পারি।


KEYPHRASE1 etc.          about 30 to 40 unique words">
<meta name="description"   content="An accurate, keyword-rich description    about 150 characters">

মেটা ডেসক্রিপশন ট্যাগের জন্য কিছু গুরুত্বপূর্ণ বিষয় হল, মেটা ডেসক্রিপশন ট্যাগে কীওয়ার্ড ব্যবহার করা উচিৎ। কোন শব্দ বেশি রিপিট করা উচিৎ নয়, কিন্তু multiplesyntaxes কীওয়ার্ড হিসেবে ব্যবহার করা যায়। একক কোন ওয়েবপেজে ডেসক্রিপশন মেটাট্যাগে  ১৫০ এর বেশি ক্যারেকটার ব্যবহার করা উচিৎ নয়। প্রতি পেজের জন্য আলাদা মেটা ডেসক্রিপশন ট্যাগ ব্যবহার করা উচিৎ কারণ ভাল টাইটেল ও বর্ণনা আপনার সাইটটিকে খুঁজে পেতে সহায়ক হতে পারে। মেটা কীওয়ার্ড ট্যাগের জন্য সিনোনেম ও ইউনিক কীওয়ার্ড  ব্যবহার করা উচিৎ, একই ফ্রেজ বারবার ব্যবহার করার দরকার নেই তবে ভিন্ন ফ্রেজের জন্য একই শব্দ একাধিকবার ব্যবহার করা যেতে পারে।  এগুলো ছাড়াও রোবট মেটাট্যাগ নামের আরেকটি ট্যাগ আছে যা এরকম দেখায়ঃএধরনের ট্যাগ দ্বারা আপনি কোন পেজকে ইনডেক্স আকারে না চাইলে  রোবট বা স্পাইডারকে আপনি বলতে পারেন যে আপনি কোন পেজকে ইনডেক্স আকারে চান না। বা লিঙ্ক ফলোইন না চাইলে সেটিও বলতে পারেন।

পিএইচপি ফিল্টারস (PHP Filters)

Huge Sell on Popular Electronics

অনিরাপদ উৎস থেকে ডাটাকে বৈধ করার জন্য আমরা পিএইচপি ফিল্টার ব্যবহার করে থাকি। ওয়েব অ্যাপ্লিকেশান এর জন্য পিএইচপি ফিল্টার একটি গুরুত্ত পূর্ণ বিষয়। পিএইচপি ফিল্টার extension বানানো হয়েছে ডাটাকে খুব সহজে এবং তারাতারি ফিল্টার করার জন্য।

 

কেন ফিল্টার ব্যবহার করা হয়

প্রায় সব ওয়েব অ্যাপ্লিকেশান বাইরের ইনপুট এর উপর নির্ভরশীল। যা একজন ইউজার বা ওয়েব অ্যাপ্লিকেশান এর মাধ্যমে আসতে পারে। ফিল্টার ব্যবহার করার মাধ্যমে আমরা সেই ডাটাগুলোকে বৈধ করতে পারি।

বাইরের ডাটা গুলো কি রকম হতে পারে

ফর্ম ব্যবহার করে কোন ডাটা নেওয়ার জন্য, কুকিস, ওয়েব সার্ভিসেস ডাটা, সারভার variables, ডাটাবেস query করার মাধ্যমে।

ফাংশন এবং ফিল্টার

filter_var() একটি নির্দিষ্ট variable কে ফিল্টার করার জন্য
filter_var_array() অনেকগুলো variable ফিল্টার করার জন্য
filter_input একটা ইনপুট variable কে ফিল্টার করার জন্য
filter_input_array অনেকগুলো ইনপুট variable কে ফিল্টার করার জন্য

আমরা filter_var() ফাংশন ব্যবহার করে একটি integer কে বৈধ করব।


< ?php
 $int = 123;
if(!filter_var($int, FILTER_VALIDATE_INT)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

FILTER_VALIDATE_INT ব্যবহার করা হয়েছে variable কে ফিল্টার করার জন্য যদি integer টি বৈধ হয় তাহলে ফলাফল আসবে "Integer is valid"
যদি আমরা integer এর পরিবর্তে 123abc ব্যবহার করি তাহলে output আসবে Integer is not valid।

Validating এবং Sanitizing

বৈধ ফিল্টার

১। ইউজার এর ইনপুট গুলোকে বৈধ করার জন্য
২। নির্দিষ্ট গঠন অনুজায়ে ডাটা তৈরি করার জন্য (যেমন ইমেইল অথবা URL এর ক্ষেত্রে)

Sanitizing ফিল্টার

১। কোন নির্দিষ্ট characters কে অনুমোদন দেওয়ার জন্য
২। কোন গঠন বৈশিষ্ট্য মেনে চলে না
৩। সবসময় স্ট্রিং রিটার্ন করে

filter_var() ফাংশন ব্যবহার করে আমরা integer কে বৈধ করব।


< ?php
 $var=300;
$int_options = array(
 "options"=>array
 (
 "min_range"=>0,
 "max_range"=>256
 )
 );
if(!filter_var($var, FILTER_VALIDATE_INT, $int_options)) {
 echo("Integer is not valid");
 } else {
 echo("Integer is valid");
 }
 ?>

এই কোড এ options ব্যবহার করতে হবে একটি array এর ভিতর options নাম দিয়ে যদি ফ্লাগ ব্যবহার করা হত তাহলে array লাগত না। আমাদের integer ছিল 300 যা রেঞ্জ এর মধ্যে মিলে না সুতরাং এর ফলাফল আসবে "Integer is not valid"।

 

ইনপুট ডাটা বৈধ করা

filter_input() ফাংশন ব্যবহার করার মাধ্যমে আমার ডাটা বৈধ করব প্রথমে আমরা চেক করব ডাটা আসলে ইনপুট করা হয়েছে কিনা


< ?php
 if(!filter_has_var(INPUT_GET, "email")) {
 echo("Input type does not exist");
 } else {
 if (!filter_input(INPUT_GET, "email", FILTER_VALIDATE_EMAIL)) {
 echo "E-Mail is not valid";
 } else {
 echo "E-Mail is valid";
 }
 }
 ?>

GET মেথড ব্যবহার করে ইনপুট (ইমেইল) চেক করবে যে তা বৈধ কিনা

Sanitize ইনপুট

ফর্ম কে URL এ পাঠানোর মাধ্যমে আমরা একে বুজবো
প্রথমে আমরা চেক করব ইনপুট ডাটা ফাকা আছে কিনা
তারপর আমরা filter_input() ফাংশন ব্যবহার করে ডাটা কে sanitize করব।


< ?php
 if(!filter_has_var(INPUT_POST, "url")) {
 echo("Input type does not exist");
 } else {
 $url = filter_input(INPUT_POST,
 "url", FILTER_SANITIZE_URL);
 }
 ?>

উপড়ের উধাহরন টি যদি POST মেথড ব্যবহার করা হয়

প্রথমে চেক করবে ইনপুট URL post টাইপ এর কিনা, যদি ইনপুট variable exists করে তাহলে character অনুজায়ে sanitize করবে এবং $url এ variable জমা করবে। যদি ইনপুট variable এর স্ট্রিং http://bangla.salearningschøøool.comএর মতন হয় আমরা sanitize করার পর পাব http://bangla.salearningschool.com

একটি ফর্মে একাধিক ইনপুট থাকতে পারে সে ক্ষেত্রে আমরা filter_var or filter_input এর পরিবর্তে filter_var_array or the filter_input_array ব্যবহার করব। এই উধাহরন এ আমরা filter_input_array() ফাংশন ব্যবহার করব তিনটা GET variables এর ক্ষেত্রে এই তিনটি হল নাম, বছর , ইমেইল।


< ?php
 $filters = array
 (
 "name" => array
 (
 "filter"=>FILTER_SANITIZE_STRING
 ),
 "age" => array
 (
 "filter"=>FILTER_VALIDATE_INT,
 "options"=>array
 (
 "min_range"=>1,
 "max_range"=>120
 )
 ),
 "email"=> FILTER_VALIDATE_EMAIL
 );
$result = filter_input_array(INPUT_GET, $filters);
if (!$result["age"]) {
 echo("Age must be a number between 1 and 120.
");
 } elseif(!$result["email"]) {
 echo("E-Mail is not valid.
");
 } else {
 echo("User input is valid");
 }
 ?>

নেম ইনপুট ফিল্ড একটি array এর মধ্যে রাখা হয়েছে এবং ফিল্টার সেট করা হয়েছে । এরপর যে array গুলো সেট করা হয়েছে তাদেরকে filter_input_array() ফাংশন এর মাধ্যমে গেট মেথড ব্যবহার করে ডাকা হবে। এরপর ইনপুটশ গুলো বৈধ কিনা তা চেক করবে।

 

Filter Callback

filter_callback ফিল্টার ব্যবহার করে ইউজার defined করা সম্ভব। সেই ক্ষেত্রে আমাদের ডাটা filtering এ পূর্ণ নিয়ন্ত্রণ থাকবে। নিচের উধাহরণটিতে আমরা user created ফাংশন ব্যবহার করেছি সকল "_" থেকে whitespace এ পরিবর্তন করার জন্য।


< ?php
 function convertSpace($string) {
 return str_replace("_", " ", $string);
 }
$string = "Peter_is_a_great_guy!";
echo filter_var($string, FILTER_CALLBACK,
 array("options"=>"convertSpace"));
 ?>

 

এর ফলাফল আসবে

Peter is a great guy!

 

উপড়ের উধারণটিতে সকল "_" পরিবর্তন করা হয়েছে whitespace এ এবং filter_var() ফাংশন কে কল করা হয়েছে FILTER_CALLBACK দ্বারা

 

এসইও – প্রাসঙ্গিক ফাইলের নাম । SEO – Relevant Filenames

Huge Sell on Popular Electronics

সার্চ ইঞ্জিনে আপনার সাইটের অবস্থান প্রাসঙ্গিক ফাইলের নামের উপর অনেকটা নির্ভর করে । অনেক গবেষণার মাধ্যমে জানা গেছে যে, গুগল সাধারণত প্রাসঙ্গিক ফাইলের নামের উপর অধিকতর গুরুত্ব দিয়ে থাকে। সুতারাং, পেজের নামকরনের পূর্বে আপনাকে মনে রাখতে হবে পেজটা সাধারণত কোন বিষয়ের উপর লেখা।

গুগলে কোন কিওয়ার্ড লিখে সার্চ দিলে আপনার ওয়েবসাইট এর পেজ যদি সেই একই কিওয়ার্ড থাকে তাহলে টা সার্চ ইঞ্জিন এ প্রদর্শিত হবে।

 

ফাইল এর নামকরন যেভাবে করবেন

  1. ফাইল এর নামে সাধারনত বিষয়বস্তুর উপর নির্ভর করবে সেটা সংক্ষিপ্ত না বর্ণনামূলক হবে।
  2. পেজ টাইটেল এ যে কিওয়ার্ড করবেন, ফাইল নাম এ ঠিক একই কিওয়ার্ড ব্যবহার করার চেষ্টা করবেন।
  3. জেনারিক ফাইলের নাম যেমন, “job.htm, service.htm”  এগুলো ব্যবহার করা হতে বিরত থাকবেন।
  4. নামের বিভিন্ন অংশগুলোকে যদি পৃথককরনের প্রয়োজন পরে তাহলে আন্ডার স্কর বাদ দিয়ে হাইফেন ব্যবহার করার চেষ্টা করুন।
  5. সম্ভব হলে শুধুমাত্র ২ টা কিওয়ার্ডস ব্যবহার করুন।

 

ফাইল নামের উদাহরন

কিছু কিছু আদর্শ নামের উদাহরন নিম্নে উল্লেখ করা হল,

  • slazenger-brand-balls.html
  • wimbledon-brand-balls.html
  • wilson-brand-balls.html

লক্ষ্য করবেন যে, ফাইল নামের এ বিভিন্ন অংশ হাইফেন দ্বারা সংযুক্ত আছে।

 

ফাইল নামের শেষের অংশ

ফাইল নামের শেষের অংশ যেমন, .htm, .php, .html ইত্যাদি আপনার সাইট এর জন্য গুগল রাঙ্ক এ কোন অবস্থান নির্ণয়ে অবদান রাখে না। এটা শুধু ওয়েব সার্ভার কে বলে দেয়, ফাইল টি সাধারনত কিভাবে খুলবে।

 

যে বিষয়গুলি অবশ্যই মনে রাখতে হবে

  1. ফাইলএর নাম ছোট, সংক্ষিপ্ত এবং প্রাসঙ্গিক রাখার চেষ্টা সবসময় করতে হবে।
  2. ফাইলের নামে ৩-৪ টা কিওয়ার্ডস ব্যবহার করার চেষ্টা করুন এবং লক্ষ্য রাখুন সেগুলো যেন সার্চ ইঞ্জিনেও প্রকাশিত হয়।
  3. উপ- ডিরেক্টরি গুলোতে যথাসম্ভব ছোট নাম ব্যবহার করার চেষ্টা করবে।
  4. ফাইলের আকার ১০১ কিলোবাইটে সীমাবদ্ধ রাখার চেষ্টা করুন। গুগল সাধারণত নির্দিষ্ট আকারের বড় ফাইল প্রকাশ করে না।

 

এসইও অনুকূল কীওয়ার্ড । SEO – Optimized Keywords

Huge Sell on Popular Electronics

এসইও- কীওয়ার্ড অপটিমাইজড

একটি কীওয়ার্ড একটি শব্দ। কীওয়ার্ড ব্যবহার করে একজন ব্যক্তি সার্চ ইঞ্জিন এর মাধ্যমে কোন তথ্য বা ওয়েব সাইড খূঁজে পায়। অধিকাংশ মানুষ দুই থেকে পাঁচ শব্দ গঠিত বাক্যাংশ সার্চ ইঞ্জিন এর অনুসন্ধান লিখে থাকে। বাক্যাংশ, শব্দ বাক্যাংশ, প্রশ্নের সাথে বাক্যাংশকে শুধু কীওয়ার্ড বলা যেতে পারে। ভাল শব্দ বাক্যাংশ নির্দিষ্ট এবং বর্ণনামূলক হয়ে থাকে।

কীওয়ার্ড সম্পর্কিত নিম্নলিখিত ধারণা একটি ওয়েবপেজ নিখুঁত ভাবে খুঁজে পেতে সাহায্য করে।

কীওয়ার্ড ফ্রিকোয়েন্সি

একটি কীওয়ার্ড একটি ওয়েবসাইট শিরোনাম বা বর্ণনার সাথে মিল রেখে প্রদর্শিত করে। আপনি চাইবেন না যে আপনি "স্প্যামিং" বা শব্দ ঠাসাঠাসির জন্য আপনার সাইটটি আগে প্রদর্শিত না হয়, একটি কীওয়ার্ড এর পুনরাবৃত্তি সার্চ ইঞ্জিনে বিরূপ প্রভাব ফেলে।

সাধারণভাবে একটি অনুচ্ছেদ বা আর্টিকেলে আপনার কীওয়ার্ড ৩-৭ বার পর্যন্ত হতে পারে এটা স্বাভাবিক এতে করে এসইও-অপটিমাইজেশন এর উপর খারাপ কোন প্রভাব পরবে না।

কীওয়ার্ড প্রক্সিমিটি

একটি অনুসন্ধান শব্দ কীওয়ার্ড এর সাথে সমন্বয় করা যেতে পারেকিওয়ার্ড প্রক্সিমিটি বলতে অনুসন্ধান শব্দসমষ্টি এর সাথে প্রতিটি পৃথক শব্দের পার্থক্য বোঝায়। কিছু ক্ষেত্রে, এর কীওয়ার্ড হিসাবে অনুরূপ অর্থের সাথে মিল বোঝায়। সার্চ ইঞ্জিন, যে কীওয়ার্ড এর সাথে মিল পায় সেই ওয়েবপেইজ আপনার কাছে উপস্থাপন করে।

কীওয়ার্ড এর বৈশিষ্ট্য

এটি একটি ওয়েবপেইজ তাড়াতাড়ি বা দ্রুততার সাথে খোঁজে পায়। শিরোনামে এবং একটি পৃষ্ঠার প্রথম অনুচ্ছেদের (প্রথম ২০ শব্দ) মধ্যে কীওয়ার্ড ব্যবহার করলে সবচেয়ে ভাল হয়।

কীওয়ার্ড বসানো

একটি ওয়েবপেজে কিভাবে এবং কোথায় কীওয়ার্ড স্থাপন করা হবে সেই বিষয়টি খুব গুরুত্বপূর্ণ। উদাহরণস্বরূপ, পেজ শিরোনামের মধ্যে বা হেডিং ট্যাগ-এ কীওয়ার্ড বসালে অধিকাংশ সার্চ ইঞ্জিনে এটি আরো বেশি ভাল কাজ করে।

কীওয়ার্ড এর ব্যবহার

কীওয়ার্ড কিভাবে ব্যবহার করবেন তার একটি তালিক দেওয়া হলো।

  • Keywords in thetag(s) or other headline tags.
  • Keywords in the keywords link tags.
  • Keywords in the body copy.
  • Keywords in alt tags.
  • Keywords in <!-- insert comments here> comments tags.
  • Keywords in the URL or website address.

কীওয়ার্ড খোঁজা

আপনার ওয়েব সাইটের জন্য কীওয়ার্ড খুঁজে বের করার বিভিন্ন উপায় আছে। তার মধ্যে সবচেয়ে ভাল হলো Google Keyword Tool ব্যবহার করা।

শব্দ স্টেমিং কি?

গুগল এর একটি বৈশিষ্ট্য হলো এটি স্টেমিং ব্যবহার করে। যেখানে এক বচন শব্দ এবং বহু বচন শব্দ সকল ধরনের শব্দ ধরতে পারে ।

এসইও কৌশল ও কার্যপদ্ধতি । SEO – Tactics & Methods

Huge Sell on Popular Electronics

নয়ন চন্দ্র সরকার

 

এসইও এর প্রকারভেদ

এস ই ও এর কার্যাবলী সাধারণত দুই ভাগে বিভক্ত করা যেতে পারে। যেমন,

  1. হোয়াইট হ্যাট এস ই ও
  2. ব্ল্যাক হ্যাট এস ই ও

হোয়াইট হ্যাট এসইও

এস ই ও এর কার্যাবলীগুলোর মধ্যে যদি নিম্নোক্ত বিষয়গুলি অন্তর্ভুক্ত থাকে, তাহলে তাকে হোয়াইট হ্যাট এস ই ও বলা যেতে পারে,

  1. যেটা গুগল এর নির্দেশনাসমূহ মেনে চলে ।
  2. যেটাতে কোন প্রতারনার পন্থা অবলম্বন করা হয় না ।
  3. এটা নিশ্চিত করে যে, গুগল সার্চ এ যে বিষয়বস্তু সমূহ প্রদর্শন করবে, ওয়েবসাইট এর বিষয়বস্তুসমূহ ঠিক একই হবে।
  4. এটা নিশ্চিত করবে যে, ওয়েবসাইট এর বিষয়বস্তুসমূহ প্রধানত ব্যবহারকারীদের জন্যই তৈরি করা হয়েছে, শুধুমাত্র গুগল এর সার্চ ইঞ্জিন এ ভাল অবস্থান পেতে নয়।
  5. যেটা ওয়েবপেজ এর ভাল গুনাগুন নিশ্চিত করে।
  6. যেটা ওয়েব পেজ এ ভাল মানের বিষয়বস্তুর নিশ্চয়তা বিধান করে।

একজন ওয়েব ডেভেলপার এর জন্য হোয়াইট হ্যাট এস ই ও এর পথ অনুসরণ করা উচিত। কারন, এটা তুলনামুলকভাবে কষ্টসাধ্য হলেও ভবিষ্যতে ওয়েবসাইট এর উন্নতি সাধনে সহায়তা করে।

ব্ল্যাক হ্যাট এসইও

যদি একজন অনুসন্ধান ইঞ্জিন অপটিমাইজার তাঁর ওয়েবপেজ এর সার্বিক উন্নয়নে নিম্নোক্ত পথসমুহ অবলম্বন করে, সেই পদ্ধতিকে ব্ল্যাক হ্যাট এস ই ও বলে অভিহিত করা যেতে পারে,

  1. গুগল এর নির্দেশনা সমূহ উপেক্ষা করে ওয়েবসাইট এর রাঙ্ক বৃদ্ধিতে কাজ করলে।
  2. যদি ব্যবহারকারিকে অন্যকোন ওয়েবসাইট থেকে নিজের ওয়েবসাইট এ নিয়ে আসার চেষ্টা করা হয় , যার মান পূর্বোক্ত ওয়েবসাইট এর সমান বা কম মানের অধিকারী।
  3. কি ওয়ার্ড এ মেটা ট্যাগ এর পুনরাবৃত্তি ঘটালে।
  4. ওয়েবসাইট এর ঠিকানার সাথে মিল না রেখে বিষয়বস্তু নির্ধারণ করলে।
  5. এইচ টি এম এল কোড ব্যবহার করে ওয়েব পেজ এর কোন বিষয়বস্তু গোপন করলে।

সর্বোপরি, আপনার ওয়েবসাইট এর উন্নয়েনে হোয়াইট হ্যাট এস ই ও এর কৌশল সমূহ অনুসরন করা উচিত। আপনি ওয়েবপেজ এর উন্নয়নে যেটাই অনুসরণ না কেন, গুগল অবশ্যই সেটা জানতে পারবে এবং সে অনুযায়ী বাবস্থা গ্রহণ করবে।

 

সার্চ ইঞ্জিন অপটিমাইজেশন কি? What is SEO?

Huge Sell on Popular Electronics

মোঃ কামাল হসেন

সার্চ ইঞ্জিন অপটিমাইজেশন (Search Engine Optimization) এমন একটি পদ্ধতি যার মাধ্যমে যে কেউ সার্চ ইঞ্জিন ব্যাবহার করে একটি ওয়েব সাইটকে বিনামূল্যে সকলের কাছে পৌছে দিতে পারে। সার্চ ইঞ্জিন অপটিমাইজেশন (Search Engine Optimization) - কে সংক্ষেপে SEO এসইও বলে। ইন্টারনেটের ব্যবহার যত বাড়ছে সার্চ ইঞ্জিন অপটিমাইজেশন (Search Engine Optimization) বা এসইও এর জনপ্রিয়তা তত বাড়ছে। অনেকে একে ফ্রিল্যান্সিং কাজ হিসেবে ব্যবহার করছেন। এছাড়া যারা ব্লগ পরিচালনা করছেন তাদের ব্লগের পরিচিতি বাড়ানোর প্রয়োজন তো আছেই। ইন্টারনেটে ব্যবসা বাণিজ্য করে টিকে থাকার জন্য এসইও (SEO) এর গুরুত্ব অপরিসীম।

সার্চ ইঞ্জিন অপটিমাইজেশনের প্রধান প্রধান উদ্দেশ্য গুলোর মধ্যে রয়েছে-

  • একটি সাইটকে সকলের কাছে সহজে পৌছে দেওয়া।
  • ওয়েব সাইটের জন্য প্রিয়তা বৃদ্ধি করা।
  • সাইটের ভিজিটর বা ট্রাফিক বৃদ্ধি করা।
  • বিভিন্ন ধরনের অনলাইন থেকে আয় করার পণটাটফরম হিসেবে কাজ করে।
  • তথ্য বিনিময় ও প্রতিযোগিতায় টিকে থাকার শক্ত ভিত হিসেবে কাজ করে।

সার্চ ইঞ্জিন কিভাবে কাজ করে

সার্চ ইঞ্জিনগুলো তৈরি হয়েছে, মানুষের তথ্য খুজে পাওয়ার জন্য। সেজন্য কোন কিছু সার্চ দিলে যাতে সবচাইতে সেরা তথ্য খুজে পাওয়া যায় সেজন্য সার্চইঞ্জিন সাইটগুলো কিছু পোগ্রাম তৈরি করে রাখে। যেটি সকল সাইটগুলোর মধ্যে কিছু বিষয় তুলনা করে সেরা সাইটগুলোকে সার্চের সামনে নিয়ে আসে। সেরা সাইট নির্বাচন করার জন্য তারা দেখে ওয়েবসাইটটির মানসম্মত কিনা, ওয়েবসাইটের তথ্য সকলের জন্য প্রয়োজনীয় কিনা, ওয়েভসাইটটি কেমন জনপ্রিয়। এগুলোসহ আরও কিছু বিষয় নিয়ে ফলাফল প্রদর্শন করে।

ক্রলিং

ওয়েব ক্রলিং এর মাধ্যমে। গুগলবট যখন একটি পেজ সংগ্রহ করে তখন এই পেজে পাওয়া লিংকগুলো তার ক্রলিং তালিকায় যোগ হয়। এই পদ্ধতিতে একটি লিংক অসংখ্যবার আসে। কিন্তু গুগলবট সেগুলো বাদ দিয়ে একটি তালিকা তৈরী করে যাতে সবচেয়ে কম সময়ে পুরো ওয়েবকে কভার করা সম্ভব। এ ব্যবস্থাকে বলে ডিপ ক্রলিং। কোন পেজ কত দ্রুত পরিবর্তন হয় সটা ঠিক করা গুগলবট এর অন্যতম প্রধান দায়িত্ব।

গুগল ডাটাবেজকে আপডেট রাখার ক্ষেত্রে এটি সবচেয়ে জরুরী। গুগলবট কোন পেজে পরিবর্তনের একটা ফ্রেকোয়েন্সী বের করে এবং সেই হিসেবে ঠিক করা হয় যে গুগলবট কত সময় পর পর কোন পেজ ক্রলিং করবে। কারণ যেই পেজ মাসে একবার পরিবর্তন হয় সেটা কয়েকঘন্টা পরপর ক্রলিং করা সময় নষ্ট ছাড়া কিছুই না। ডাটাবেজ আপডেট করার এই ক্রলিংকে ফ্রেশ ক্রলিং বলে।

ইন্ডেক্স

গুগল ইন্ডেক্স - এর কাজ তুলনামূলক সহজ। গুগলবট ইনডেক্সারকে ক্রলিং করা পেজগুলোর ফুল টেক্সট দেয়। ইনডেক্সার সার্চ টার্মগুলোকে বর্ণমালা অনুসারে সাজায়। এবং কোন টার্ম কোথায় আছে তা সেভ করে রাখে। কিছু পরিবর্তন ও আনা হয় পেজগুলোতে। কিছু বিরাম চিহ্ন বাদ দেওয়া হয়। একের অধিক স্পেস থাকলে সেগুলোও বাদ দেওয়া হয়। ইংরেজির ক্ষেত্রে বড় হাতের অক্ষরগুলোকে বাদ দিয়ে ছোট হাতের অক্ষরে পরিবর্তন করা হয়।

গুগল কুয়েরী প্রসেসর

এটি সর্বশেষ অংশ। এটাই আমাদের সার্চ রেজাল্ট প্রসেসিং করে। কুয়েরী প্রসেসর কয়েকটি অংশে বিভক্ত। ইউজার ইন্টারফেস, কুয়েরী ইঞ্জিন, রেজাল্ট ফরমেটর ইত্যাদি। গুগলের ওয়েবপেজ র‍্যাংকিং সিস্টেমের নাম পেজর‍্যাংক। যে পেজের পেজর‍্যাংক যত বেশী সেটা সার্চ রেজাল্ট এ তত উপরে থাকে। গুগলবট যেহেতু টেক্সটের সাথে পেজ কোড ও ক্রলিং করে তাই ইউজার চাইলে সার্চ টার্মটির অবস্থানও নির্দিষ্ট করে দিতে পারে যে সেটা লিংকে থাকবে,টাইটেলে থাকবে না টেক্সটে থাকবে। শুধু টার্মের উপস্থিতির উপর ভিত্তি করে রেজাল্ট না দেওয়ার কারণেই গুগলের সার্চ রেজাল্টের মান এত উন্নত।

বিখ্যাত কয়েকটি সার্চ ইঞ্জিনের নাম হলো

গুগল (google), ইয়াহু (yahoo),বিং( bing) ইত্যাদি । এই সব সাইটে আপনি একটি শব্দ সার্চ বক্সে লিখে সার্চ বাটনে ক্লিক করলে , কয়েক সেকেন্ড এর মধ্য অনেক ওয়েবসাইটের লিংক চলে আসে, যেসব লিংকে গেলে কাঙ্ক্ষিত ফলাফল পাওয়া যায় ।

সার্চ ইঞ্জিন অপটিমাইজেশন ওয়েব ডেভলপারদের জন্য একটি খুবই গুরুত্বপূর্ণ বিষয়। কোয়ালিটি ট্রাফিক সার্চ ইঞ্জিন থেকে ব্লগে আসে ফলে ব্লগ বিজ্ঞাপন ফ্রেন্ডলি হয়ে উঠে ফলে পাঠক সন্তুষ্ট হয় এবং ব্লগার বিজ্ঞাপন থেকে উপকৃত হয়। প্রক্রিয়াটি শুধুমাত্র এইটুকুর মধ্যে সীমাবদ্ধ নয়। এর থেকে আরো অনেক সুবিধা পাওয়া যায়।

সার্চ ইঞ্জিন অপটিমাইজেশন মুলত দুই ধাপের মাধ্যমে হয়ে থাকে-

  1. অন পেজ অপটিমাইজেশন
  2. অফ পেজ অপটিমাইজেশন

১) অন পেজ অপটিমাইজেশন

ব্লগ বা ওয়েব পেজের মধ্যে আমরা যে সকল অপটিমাইজেশন করে থাকি তাকেই অন-পেজ অপটিমাইজেশন বলা হয়। অন পেজ অপটিমাইজেশনের মধ্যে গুরুত্বপূর্ণ হল সঠিক কিওয়ার্ড খোঁজা এবং এর ব্যাবহার, মেটা ট্যাগের ব্যবহার, টাইটেলে ট্যাগের ব্যবহার, বর্ণনা ট্যাগের ব্যবহার, কী ওয়ার্ড সমৃদ্ধ কনটেন্ট বনানো এবং এক্সএমএল সাইটম্যাপ যুক্ত করণ ইত্যাদি।

২) অফ পেজ অপটিমাইজেশন

অফ পেইজ অপটিমাইজেন একটি খুবই গুরুত্বপূর্ণ এবং স্থায়ী সার্চ ইঞ্জিন অপটিমাইজেন যার মাধ্যমে প্রতিযোগিতামুলক রেঙ্কিং এ একটি সাইটকে সার্চ ইঞ্জিনের প্রথম সারিতে অন্তর্ভুক্ত করা যায়। সাধারনত উন্নত ব্যাকলিংক, আর্টিকেল মার্কেটিং, ফোরাম পোস্টিং, ইত্যাদির মাধ্যমে অফ পেইজ অপটিমাইজেশন করা হয়। অফ পেইজ অপটিমাইজেশন শুধুমাত্র একটি পাতায় নয় এর সঠিক ব্যাবহার আপনার পুরো ব্লগের উপরে পরবে অর্থাৎ এর ফলে আপনার ব্যাকলিংক বৃদ্ধি পাবে এবং পেজ রেঙ্ক বেড়ে যাবে।

তাই চেষ্টা করা উচিত সাইট এর কন্টেনটগুলো যেন অন্যান্য সাইট থেকে একটু আলাদা হয়। এর পরে আপনি আপনার কন্টেনট অনুযায়ী কিছু জনপ্রিয় কী- ওর্য়াড আপনার কন্টেনট পেইজ এ যোগ করে দিন।

এসইও বা সার্চ ইঞ্জিন অপ্টিমাইজেশন বলতে আমরা সোজা কথায় বুঝি সার্চ ইঞ্জিনের সাথে ওয়েবসাইটের ভাল সম্পর্ক তৈরি করা। সার্চ ইঞ্জিন অপ্টিমাইজেশন ছাড়া একটা ওয়েবসাইট কখনোই পূর্ণতা পায় না কারন কোটি কোটি সাইটের অবস্থান প্রথম সারিতে তৈরি করতে হলে এর বিকল্প নেই।

এসএসপিডটনেট এমভিসি – এইচটিএমএল হেল্পার . ASP.NET MVC – HTML Helpers

Huge Sell on Popular Electronics

এসএসপিডটনেট এমভিসি - এইচটিএমএল হেল্পার
Sheikh Mahfuzur Rahman
Bangla Word: 250

এইচটিএমএল আউটপুটকে পরিবর্তন করতে এইচটিএমএল হেল্পারগুলো ব্যবহৃত হয়।

এইচটিএমএল হেল্পার/HTML Helpers

এমভিসি'তে এইচটিএমএল হেল্পারগুলো হলো অনেকটা গতানুগতিক ASP.NET ওয়েব ফর্ম কন্ট্রোলের মতো। ASP.NET তে ঠিক ওয়েব ফর্ম কন্ট্রোলের মতো এইচটিএমএল'কে মডিফাই করতে এইচটিএমএল হেল্পারগুলো ব্যবহৃত হয়। কিন্তু এইচটিএমএল হেল্পারগুলো আরও হালকা হয়ে থাকে।। ওয়েব ফর্ম কন্ট্রোলের মতো এইচটিএমএল হেল্পারগুলোর ইভেন্ট মডেল এবং ভিউ স্টেট নেই। বেশিরভাগ ক্ষেত্রে, এইচটিএমএল হেল্পার হলো একটি মেথড যা স্ট্রিং ( যেমন টেক্সট) ফেরত দেয়। এমভিসি'র মাধ্যমে আপনি আপনার নিজের হেল্পার তৈরি করতে পারবেন অথবা বিল্ট ইন এইচটিএমএল হেল্পার ব্যবহার করতে পারবেন।

স্ট্যান্ডার্ড এইচটিএমএল হেল্পার/Standard HTML Helpers

এমভিসি সবচেয়ে পরিচিত এইচটিএমএল এলিমেন্টগুলোর জন্য স্ট্যান্ডার্ড হেল্পার অন্তর্ভূক্ত করেছে, যেমন এইচটিএমএল লিংক ও এইচটিএমএল ফর্ম এলিমেন্টসমূহ।

এইচটিএমএল লিংক/HTML Links

একটি এইচটিএমএল লিংককে পরিচালনা ( render ) করার সবচেয়ে সহজ পথ হলো HTML.ActionLink() হেল্পার ব্যবহার করা। এমভিসি'র মাধ্যমে Html.ActionLink() কোন ভিউয়ের দিকে লিংক তৈরি করেনা। এটি একটি কন্ট্রোলার অ্যাকশানের দিকে লিংক তৈরি করে।

Razor Syntax:
@Html.ActionLink("About this Website", "About")
ASP Syntax:
<%=Html.ActionLink("About this Website", "About")%>

প্রথম প্যারামিটারটি হলো লিংক টেক্সট এবং দ্বিতীয় প্যারামিটারটি হলো কন্ট্রোলার অ্যাকশানের নাম।
উপরের Html.ActionLink() হেল্পারটি নিচের এইচটিএমএল'টি আউটপুট হিসেবে ফিরিয়ে দেয়ঃ
<a href="/Home/About">About this Website</a>

Html.ActionLink() হেল্পার এর কিছু সংখ্যক প্রপার্টি রয়েছেঃ

প্রপার্টি এবং ব্যাখ্যা । Properties and Explanations

.linkText লিংক টেক্সট (লেবেল)
.actionName টার্গেট অ্যাকশান

.routeValues অ্যাকশানে যে ভ্যালুগুলো পরিবাহিত (--) হয়

.controllerName টার্গেট কন্ট্রোলার

.htmlAttributes লিংক এর প্রতি অ্যাট্রিবিউটের সেট

.protocol লিংক প্রটোকল

.hostname লিংক এর হোস্ট নেম

.fragment লিংক এর অ্যাংকর টার্গেট

লক্ষ্যণীয়ঃ আপনি ভ্যালুগুলোকে কন্ট্রোলার অ্যাকশানে পাঠিয়ে দিতে পারেন। উদাহরণস্বরূপ, আপনি একটি ডাটাবেজ রেকর্ডের আইডি একটি ডাটাবেজ এডিট অ্যাকশানে পাঠিয়ে দিতে পারেনঃ

Razor Syntax C#:
@Html.ActionLink("Edit Record", "Edit", new {Id=3})
Razor Syntax VB:
@Html.ActionLink("Edit Record", "Edit", New With{.Id=3})

উপরের Html.ActionLink() হেল্পারটি নিচের এইচটিএমএল'টি আউটপুট দেয়ঃ
<a href="/Home/Edit/3">Edit Record</a>

এইচটিএমএল ফর্ম এলিমেন্ট
নিচের এইচটিএমএল হেল্পারগুলো এইচটিএমএল ফর্ম এলিমেন্টগুলোকে রেন্ডার ( মডিফাই এবং আউটপুট ) বা পরিচালনা করতে ব্যবহৃত হয়ঃ

BeginForm()
EndForm()
TextArea()
TextBox()
CheckBox()
RadioButton()
ListBox()
DropDownList()
Hidden()
Password()

ASP.NET Syntax C#:
<%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %>
<% using (Html.BeginForm()){%>
<p>
FirstName">First Name:
<%= Html.TextBox("FirstName") %>
<%= Html.ValidationMessage("FirstName", "*") %>
</p>
<p>
LastName">Last Name:
<%= Html.TextBox("LastName") %>
<%= Html.ValidationMessage("LastName", "*") %>
</p>
<p>
<label for="Password">Password:</label>
<%= Html.Password("Password") %>
<%= Html.ValidationMessage("Password", "*") %>
</p>
<p>
<label for="Password">Confirm Password:</label>
<%= Html.Password("ConfirmPassword") %>
<%= Html.ValidationMessage("ConfirmPassword", "*") %>
</p>
<p>
<label for="Profile">Profile:</label>
<%= Html.TextArea("Profile", new {cols=60, rows=10})%>
</p>
<p>
<%= Html.CheckBox("ReceiveNewsletter") %>
<label for="ReceiveNewsletter" style="display:inline">Receive Newsletter?</label>
</p>
<p>
<input type="submit" value="Register" />
</p>
<%}%>

এএসপি.নেট এমভিসি সিকিউরিটি . ASP.NET MVC – Models

Huge Sell on Popular Electronics

এএসপি.নেট এমভিসি সিকিউরিটি
Sheikh Mahfuzur Rahman
Bangla word: 75

এএসপি.নেট এমভিসি (ASP.NET MVC) সম্পর্কে শিখতে গিয়ে আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করছি। আজ এটির অষ্টম পর্ব নিয়ে আলোচনা করা হবে। এর আগের সাতটি পর্ব পড়ে না থাকলে সেগুলো প্রথমে পড়ে নিন।

পর্ব আটঃ সিকিউরিটি যোগ করা

এমভিসি অ্যাপ্লিকেশন সিকিউরিটি

সিকিউরিটি বা নিরাপত্তা যেকোন অ্যাপ্লিকেশনের অন্যতম গুরুত্বপূর্ণ অংশ। আর সেটি যদি ওয়েব অ্যাপ্লিকেশন হয় তাহলে তো কথাই নেই। এমভিসি অ্যাপ্লিকেশনে সিকিউরিটি ফিচার নিয়ে যোগ করার নিয়ম সম্পর্কে নিচে আলোচনা করা হলো।

Models Folder অ্যাপ্লিকেশন মডেলকে যেসব ক্লাস প্রতিনিধিত্ব করে সেগুলো ধারণ করে। ভিজ্যুয়াল ওয়েব ডেভলাপার সয়ংক্রিয়ভাবে একটি AccountModels.cs ফাইল তৈরি করে যা অ্যাপ্লিকেশন অথেনটিকেশনের মডেলগুলো ধারণ করে।

AccountModels একটি LogOnModel, একটি ChangePasswordModel, এবং একটি RegisterModel ধারণ করেঃ

 

ছবিতে দেখুনঃ

http://bangla.salearningschool.com/10.jpg

চেঞ্জ পাসওয়ার্ড মডেল/The Change Password Model

public class ChangePasswordModel
{

[Required]
[DataType(DataType.Password)]
[Display(Name = "Current password")]
public string OldPassword { get; set; }

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2}      characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "New password")]
public string NewPassword { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm new password")]
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }

}

লগঅন মডেল/The Logon Model

public class LogOnModel
{

[Required]
[Display(Name = "User name")]
public string UserName { get; set; }

[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }

}

রেজিস্টার মডেল/The Register Model

public class RegisterModel
{

[Required]
[Display(Name = "User name")]
public string UserName { get; set; }

[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email address")]
public string Email { get; set; }

[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }

[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }

}

ডাটা ভাণ্ডার ( রিপোর্ট, এনালাইসিস ) কিভাবে ডিজাইন করবেন । Logical Design for Data Warehouse

Huge Sell on Popular Electronics

ডাটা ভাণ্ডার ( রিপোর্ট, এনালাইসিস ) কিভাবে ডিজাইন করবেন । Logical Design for Data Warehouse

ডাটা ভাণ্ডার ( রিপোর্ট, এনালাইসিস ) ডিজাইন সম্পর্কিত ধারনাগুলো । Data warehouse design, key terms, key keywords

Huge Sell on Popular Electronics

ডাটা ভাণ্ডার ( রিপোর্ট, এনালাইসিস ) ডিজাইন সম্পর্কিত ধারনাগুলো । Data warehouse design, key terms, key keywords

উইন্ডোজ ৮.১ টিউটোরিয়াল : শুরু করা যাক (Get started)

Huge Sell on Popular Electronics

শুরু করা যাক উইন্ডোজ 8.1

যদি আপনি উইন্ডোজ 8.1 বা উইন্ডোজ আর টি 8.1 সম্পর্কে বিস্তারিত জানতে চান তাহলে এই টউটোরিয়ালের 11 পৃষ্ঠা হচ্ছে শুরু করার সর্বোত্তম জায়গা। কিন্তু আপনি যদি আরো বিস্তারিতভাবে জানতে চান দেখুন উইন্ডোজের সাথে পরিচিত হউন...

প্রথম যা জানতে হবে

1। অনলাইনে প্রবেশ

ইমেইল চেক করা, পছন্দনিয় সাইটগুলো পরিদর্শন করা, বন্ধুদের স্ট্যাটাস আপডেট এ মন্তব্য করা – ইন্টারনেট কানেকশনের উপর ভিত্তি করে অনেক কিছুই আপনি করতে পারেন। পথ খুঁজে বের করুণ আপনি কিভাবে অনলাইনে প্রবেশ করবেন এবং যখন আপনি পাবলিক নেটওয়পাক এ থাকবেন তখন কিভাবে আপনার তথ্য নিরাপদ রাখবেন ।

শিখুন কিভাবে অনলাইনে প্রবেশ করবেন

2। মাইক্রোসফট একাউন্ট

আপনার পিসিতে মাইক্রোসফট এর একাউন্ট খুলুন এবং আপনি উইন্ডোজ স্টোর, ই-মেইল, সোসিয়াল নেটওয়ার্ক সাইট এবং আরো অনেক কিছুতে সয়ংক্রিয়ভাবে যুক্ত হয়ে যাবেন। নিশ্চিত হয়ে নিন যে আপনার একটি একাউন্ট আছে এবং খুঁজে বের করুন আপনার পিসি যারা ব্যবহার করে তাদের একাউন্ট কিভাবে তৈরি করে দেবেন।

মাইক্রোসফট একাউন্ট সম্পর্কে জানুন

চারপাশে আপনার পথ খুঁজে বের করা

3। Start সম্পর্কে সবকিছু

Start Screen হচ্ছে আপনার পিসি দিয়ে যা কিছু করবেন তার শুরুর ধাপ। আপনি একে চিন্তা করতে পারেন স্টার্ট মেনু হিসেবে কিন্তু এটি বর্তমানে সম্পূর্ণ পর্দা জুড়ে বিস্তৃত এবং আপনি একে আপনার অ্যাপ্লিকেশন, বন্ধু এবং ছবি দিয়ে নিজেরমত করে নিতে পারেন।

Start Screen সম্পর্কে জানুন

4। পরিচিত ডেস্কটপ

আপনি যেই ডেস্কটপ সম্পর্কে জানেন এবং পছন্দ করেন তা এর মধ্যেও আছে। আপনি প্রোগ্রাম ব্যবহার করতে পারেন এবং উইন্ডোজ স্টোর এর অ্যাপ্লিকেশন নিয়ে খেলতে পারেন - সবকিছুই আপনি আপনার ডেস্কটপ থেকে করতে পারবেন। আপনার পছন্দনীয় অ্যাপ্লিকেশন টাস্কবার এ যোগ করুন এবং বাছাই করুন আপনার পছন্দের থিম এবং ব্যাকগ্রাউন্ড।

"ডেস্কডট সম্পর্কে জানুন

5। আপনার পিসির চারপাশ

প্রয়োজনীয় নেভিগেশন সম্পর্কে শিখুন, সেইসাথে কিভাবে শুরুতে ফিরে যেতে হয়, দুটি অ্যাপ্লিকেশনের মধ্যে কিভাবে একটি থেকে আরেকটিতে যেতে হয়, কিভাবে পাশাপাশি অ্যাপ্লিকেশন ব্যবহার করতে হয়। টাচ অথবা মাউস এবং কীবোর্ড ব্যবহারে আরো দক্ষ হউন এবং শিখুন অধিক ব্যবহৃত কীবোর্ড শর্টকাট সম্পর্কে।

শিখুন আপনার পিসির সবকিছু

6। খুঁজা, শেয়ার করা, প্রিন্ট করা এবং আরো

কোন ব্যাপার না আপনি আপনার পিসির কোথায় আছেন, আপনি প্রাথমিক কাজ সম্পাদনের জন্য চার্ম ব্যবহার করতে পারেন। দেখুন কিভাবে ওয়েবে এবং আপনার পিসিতে কোন কিছু খুঁজে বের করতে হয়, ছবি বা ওয়েবসাইট কিভাবে শেয়ার করতে হয়, কিভাবে  ‍Start এ ফিরে যেতে হয়, কিভাবে প্রিন্ট করতে হয় এবং অন্যান্য ডিভাইস ব্যবহার করতে হয় এবং কিভাবে সেটিং পরিবর্তন করতে হয়।

চার্ম সম্পর্কে জানুন

7। অ্যাপ্লিকেশন সংগ্রহ করা এবং ব্যবহার করা

উইন্ডোজ স্টোর এ আপনার প্রয়োজনীয় অ্যাপ্লিকেশন খুঁজুন। এখানে প্রচুর সংখ্যক অ্যাপ্লিকেশন আছে যা থেকে আপনি আপনার পছন্দেরটি বেছে নিতে পারেন এবং এদের অনেকগুলোই ফ্রি অথবা ফ্রি ট্রাইয়াল। সেইসাথে খুঁজে নিন কিভাবে অ্যাপ্লিকেশন ব্যবহার করতে হয়, সেটিং পরিবর্তন করতে হয় এবং অ্যাপ্লিকেশন বন্ধ করতে হয়।

শিখুন কিভাবে অ্যাপ্লিকেশন সংগ্রহ ও ব্যবহার করতে হয়।

সম্পন্ন অবস্থায় পাওয়া

8। ই-মেইল সেটআপ করা

পড়ার জন্য (Read), উত্তর দেওয়ার জন্য (Replay), আপনার Inbox কে সাজিয়ে গুছিয়ে রাখার জন্য যেকোন ব্রাউজার থেকে আপনি আপনার পিসিতে Mail Application অথবা Outlook.com ব্যবহার করতে পারেন। খুজে বের করুন, কিভাবে তাদের Set up করবেন এবং আপনার একাউন্টগুলো যোগ করবেন। অথবা Outlook অ্যাপ্লিকেশনের সাহায্যে চেষ্টা করুন। এটি উইন্ডোজ আরটি 8.1 এর সাথে বিনামূল্যে প্রদান করা হয়।

ই-মেইল Set up সম্পর্কে জানুন

9। web এ ব্রাউজ করুন

Internet Explorer এর সর্বশেষ সংস্করণের সাহায্যে আপনার পছন্দের ওয়েব সাইটে প্রবেশ করুন। ব্রাউজিং এর মৌলিক স্বাদ পান এবং নতুন বৈশিষ্ট সম্পর্কেও জানুন। আপনার পছন্দের সাইটে কিভাবে দ্রুততার সাথে যাবেন তার Tips সংগ্রহ করুন এবং বিরক্তিকর বিজ্ঞাপণ থেকে পরিত্রাণ পেতে কিভাবে রিডিং ভিউ দেখবেন তা জানুন।

Internet Explorer 11 সম্পর্কে জানুন

10। আপনার পিসিকে ব্যক্তিগত রূপ প্রদান

আপনার পছন্দের ছবি, রং এবং ব্যাকগ্রাউন্ড দিয়ে আপনার পিসিকে নিজের মত করে সাজিয়ে নিন। আপনার একটি অতি পছন্দের মুখমন্ডল এর ছবি দিয়ে Account Picture তৈরি করুন। এবং দেখুন একটি স্বরণ রাখতে কষ্টকর পাসওয়ার্ড ব্যবহার না করে কিভাবে একটি ছবি কে আপনার পিসিতে প্রবেশের পাসওয়ার্ড হিসেবে ব্যবহার করতে হয়।

শিখুন একটি পিসিকে কিভাবে ব্যক্তিগত রূপ প্রদান করতে হয়

11। অনড্রাইভ

বর্তমানে আপনার ফাইলকে সংরক্ষিত করে রাখার দুটি পথ আছে: আপনি আপনার পিসিতে সংরক্ষণ করে রাখতে পারেন বা অনলাইন ক্লাউড সংগ্রহস্থল (online cloud storage) এর OneDrive এ সংরক্ষণ করে রাখতে পারেন। আপনি যখন OneDrive এ সংরক্ষণ করে রাখবেন তখন আপনি যেকোন ডিভাইস থেকে এগুলোকে ব্যবহার করতে পারবেন, সুতরাং এগুলো সবসময় আপনার সাথেই থাকবে। অন্যের সাথে শেয়ার করা বা অন্যকে সহযোগীতা করাও অত্যান্ত সহজ হবে।

OneDrive সম্পর্কে জানুন

পিএইচপি : একটি মাইএসকিউএল ডাটাবেজ তৈরি করা (PHP Create a MySQL Database)

Huge Sell on Popular Electronics

Sheikh Mahfuzur Rahman

 

একটি ডাটাবেজ এক বা তারও বেশি টেবল নিয়ে গঠিত। কোন MySQL ডাটাবেজ তৈরি বা মুঁছে দিতে চাইলে আপনার বিশেষ ধরণের আইনগত অধিকার লাগবে যা CREATE নামে পরিচিত।

MySQLi এবং PDO ব্যবহার করে একটি মাইএসকিউএল ডাটাবেজ তৈরি করা

CREATE DATABASE স্টেটমেন্ট মাইএসকিউএল-এ একটি ডাটাবেজ তৈরি করতে ব্যবহৃত হয়। নিচের উদাহরণটি "myDB" নামের একটি ডাটাবেজ তৈরি করেঃ

ঊদাহরণ (MySQLi অবজেক্ট-অরিয়েন্টেড)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = new mysqli($servername, $username, $password);
 // Check connection
 if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
 } 
 
 // Create database
 $sql = "CREATE DATABASE myDB";
 if ($conn->query($sql) === TRUE) {
     echo "Database created successfully";
 } else {
     echo "Error creating database: " . $conn->error;
 }
 
 $conn->close();
 ?>

লক্ষ্যণীয়ঃ যখন আপনি নতুন ডাটাবেজ তৈরি করেন, আপনাকে অবশ্যই MySQLi এর কাছে শুধুমাত্র প্রথম তিনটি আর্গুমেন্ট নির্দিষ্ট করে দিতে হবে (servername, username and password)।

 

টিপঃ আপনাকে যদি নির্দিষ্ট কোন পোর্ট ব্যবহার করতে হয় তাহলে ডাটাবেজ-নেম আর্গুমেন্টের জন্য একটি খালি স্ট্রিং যোগ করুন, ঠিক এই mysqli("localhost", "username", "password", "", port) এর মতো।

উদাহরণ (MySQLi Procedural)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 // Create connection
 $conn = mysqli_connect($servername, $username, $password);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
 }
 
 // Create database
 $sql = "CREATE DATABASE myDB";
 if (mysqli_query($conn, $sql)) {
     echo "Database created successfully";
 } else {
     echo "Error creating database: " . mysqli_error($conn);
 }
 
 mysqli_close($conn);
 ?>

 

লক্ষ্য করুনঃ নিচের PDO উদাহরণটি "myDBPDO" নামের একটি ডাটাবেজ তৈরি করেঃ

উদাহরণ (PDO)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 
 try {
     $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     $sql = "CREATE DATABASE myDBPDO";
     // use exec() because no results are returned
     $conn->exec($sql);
     echo "Database created successfully<br>";
     }
 catch(PDOException $e)
     {
     echo $sql . "<br>" . $e->getMessage();
     }
 
 $conn = null;
 ?>

 

টিপসঃ PDO এর একটি ব্যাপক সুবিধা হলো যেকোন সমস্যা মোকাবেলা করার জন্য, যা আমাদের ডাটাবেজ কোয়ারিগুলোতে ঘটতে পারে,  তার এটির এক্সেপশন ক্লাস রয়েছে। যদি try{ } ব্লকের ভিতর একটি এক্সেপশন ক্লাস ছুড়ে দেয়া হয় তাহলে স্ক্রিপ্টটি একজিকিউট করা বন্ধ করে দেয় এবং প্রথম catch(){ } ব্লকের ভিতর প্রবাহিত হয়। উপরের ক্যাচ ব্লকের ভিতর আমরা এসকিউএল স্টেটমেন্টটি এবং তৈরিকৃত এরর মেসেজের পাই।

 

Random Short Notes on Project Management (PMI)

Huge Sell on Popular Electronics

ব্যবস্থাপনার উপর কিছু সংক্ষিপ্ত নোটঃ
রিদওয়ান বিন শামীম

প্রকল্পের সুযোগ ব্যবস্থাপনার পরিকল্পনাঃ সুযোগ ব্যবস্থাপনার পরিকল্পনা হল মূলত নির্দিষ্ট করে কীভাবে প্রকল্পের সম্ভাব্য সুযোগের বিভিন্ন উত্থান পতনগুলো নিয়ন্ত্রণ করা যায় ও কীভাবে সুযোগের ক্ষেত্র গুলো নির্ধারণ করা যায়।এজন্যপ্রথমেই যা করতে হবে তা হল প্রকল্প শুরু করা। একটি প্রকল্প শুরু করাঃ একটি প্রকল্প শুরু করার সাথে মূলত দুই ধরণের উপাত্ত জড়িত থাকে, প্রথমটি হল প্রকল্পের কিছু নির্দিষ্ট বৈশিষ্ট্য গড়ে তোলা এবং দ্বিতীয়টি হল সম্ভাব্য প্রাথমিক সুযোগগুলোর একটি খসড়া গঠন করা।প্রকল্প ব্যবস্থাপকদের এক্ষেত্রে সরাসরি ও সততার সাথে আচরণ করতে হয়। যেকোনো পরিস্থিতিতে কোন সমস্যা এলে তাকে সোজাসুজি সেই সমস্যা মোকাবেলা করতে হয়। প্রকল্পের বৈশিষ্ট্য, যা অফিসিয়ালি একটি প্রকল্পের ভিত্তি, সেগুলো ব্যবসায়িক চাহিদা মেনে গঠন করতে হয়, সবসময় মাথায় রাখতে হয়, কেন প্রকল্পটি করা হচ্ছে অর্থাৎ প্রকল্পটির উদ্দেশ্য কি। সুযোগের খসড়া হয়ে যাওয়ার পর ও টিমের কর্মীদের কাজ শুরু হয়ে যাওয়ার পর সাধারণত প্রকল্পের যে ধারাটি শুরু করতে হয় তা হল ডবলুবিএস প্রসেস (WBS process) যা মূলত কাজের খণ্ডিত অংশগুলোর আউটপুট বা ফলাফল নির্ধারণ করে। এই আউটপুট গুলো কয়েকটি বিষয়ের সমন্বয়ে হয়ে থাকেঃ মূল্যবান সাংগঠনিক প্রক্রিয়া, প্রকল্পবিধি ও প্রাথমিক সুযোগগুলোর খসড়া ইত্যাদি। প্রকল্পের কর্ম প্রণালীর নিষ্ঠার ক্ষেত্রে প্রকল্প ব্যবস্থাপককে সব সময় খেয়াল রাখতে হয় সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের দিকে। সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের এই বিষয়গুলো ব্যবস্থাপককে একা দেখতে হয়, এগুলো টিম ওয়ার্ক নয়। এবিষয়ে কাজের ধারার বিবরণী পাওয়া যাবে ডবলুবিএস ডিকশনারিতে(in WBS dictionary)। সুযোগের গুরুত্ব নিশ্চিতকরণ হল এমন একটি প্রক্রিয়া যেখানে ক্রেতা ও অর্থ বিনিয়োগকারী যাচাই করতে চায় চূড়ান্তভাবে প্রাপ্ত পণ্য পূর্বের ধারণা করা পণ্যের মানের মতন হয়েছে কিনা।স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতিঃ স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতি প্রকল্পের খণ্ডিত অংশের বিবরণ দেয় যাতে অনেক সময় বাইরের বিক্রেতাদের অনেক বিষয়ও জড়িত থাকে।কোড অফ কন্ডাক্টের শর্তে প্রকল্প ব্যবস্থাপনার সাথে সংশ্লিষ্ট ব্যক্তিদের আরও বলা থাকে প্রকল্পের লাভ বা লভ্যাংশ নিয়ে যেকোনো ধরণের কোন্দল এড়িয়ে চলতে। ডবলুবিএস সার্ভের উদ্দেশ্যঃ ডবলুবিএস সার্ভে পুরো বিষয়টি চূড়ান্ত ভাবে খতিয়ে দেখে, এই ডবলুবিএস সার্ভের কয়েকটি উদ্দেশ্য আছে। সেগুলো হলঃ পূর্বে নিরুপিত সম্ভাব্যতা কতটুকু নির্ভুল তা জানা, নিয়ম নিষ্ঠা ও দায়িত্ববোধ মেনে চলাকে সহজ করা, প্রকল্পের সফলতার একটি মানদণ্ড তৈরি করা ইত্যাদি। এভাবেই প্রকল্প ব্যবস্থাপনার কাজ এগিয়ে চলে।
তথ্যসুত্রঃ (Andy Crowe, the PMP Exam.)

এএসপি.নেট এমভিসি – মডেল . ASP.NET MVC – Models

Huge Sell on Popular Electronics

এএসপি.নেট এমভিসি - মডেল
Sheikh Mahfuzur Rahman
Bangla Word: 300

এএসপি.নেট এমভিসি (ASP.NET MVC) শেখার জন্য আমরা একটি ইন্টারনেট অ্যাপ্লিকেশান তৈরি করছি। আজকে এর সপ্তম পার্ট নিয়ে আলোচনা করা হবে; পূর্বের ছয়টি পার্ট সম্পর্কে না পড়ে থাকলে পড়ে নিন।

সপ্তম পার্টঃ ডাটা মডেল যোগ করা

এমভিসি মডেল/MVC Model
এমভিসি মডেল শুধু পিউর ভিউ এবং কন্ট্রোলার লজিক ছাড়া সবগুলো অ্যাপ্লিকেশন লজিক ধারণ করে, যেমন বিজনেস লজিক, ভ্যালিডেশান লজিক এবং ডাটা অ্যাক্সেস লজিক। এমভিসি'র মাধ্যমে মডেলগুলো অ্যাপ্লিকেশন ডাটাকে একই সাথে ধারণ ও পরিবর্তন (manipulate) করে।

মডেল ফোল্ডার/Model Folder

মডেলগুলোর ফোল্ডার ক্লাসগুলোকে ধারণ করে যা অ্যাপ্লিকেশন মডেলকে প্রতিনিধিত্ব করে। ভিজ্যুয়াল ওয়েব ডেভলাপার সয়ংক্রিয়ভাবে একটি AccountModels.cs ফাইল তৈরি করে যা অ্যাপ্লিকেশন সিকিউরিটির জন্য মডেলগুলো ধারণ করে। AccountModels একটি LogOnModel, একটি ChangePasswordModel, এবং একটি RegisterModel ধারণ করে।

ডাটাবেজ মডেল যোগ করা/Add Database Model

এই টিউটোরিয়ালের জন্য যে ডাটাবেজ মডেলটি দরকার তা নিচের সহজ ধাপগুলো অনুসরন করে তৈরি করা যায়ঃ

Solution Explorer এ Models ফোল্ডারে রাইট-ক্লিক করুন এবং Add এবং Class সিলেক্ট করুন
ক্লাসটির নাম দিন MovieDB.cs এবং Add এ ক্লিক করুন
ক্লাসটিকে এডিট করুনঃ

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcDemo.Models
{
public class MovieDB
{
public int ID { get; set; }
public string Title { get; set; }
public string Director { get; set; }
public DateTime Date { get; set; }

}
public class MovieDBContext : DbContext
{
public DbSet<MovieDB> Movies { get; set; }
}
}

লক্ষ্যণীয়ঃ আমরা ইচ্ছাকৃতভাবে মডেল ক্লাসের নাম দিয়েছি "MovieDB" । পূর্বের অধ্যায়ে "MovieDBs" নামটিকে ( শেষে s আছে) আপনি ডাটাবেজ টেবলের জন্য ব্যবহৃত হতে দেখেছেন। এটা দেখতে অদ্ভুত দেখায়, কিন্তু এটি নামকরণের একটি রীতি যা ডাটাবেজ টেবলের সাথে মডেলটিকে কানেক্ট করতে ব্যবহার করা হয়।

একটি ডাটাবেজ কন্ট্রোলার যোগ করা

নিচের সহজ ধাপগুলো অনুসরন করে এই টিউটোরিয়ালের জন্য প্রয়োজনীয় ডাটাবেজ কন্ট্রোলারটি তৈরি করা যায়ঃ

আপনাকে প্রজেক্টকে আবার তৈরি করুনঃ Debug সিলেক্ট করুন, এবং তারপর মেন্যু থেকে Build MvcDemo সিলেক্ট করুন।
সল্যুশান এক্সপ্লোরারে, Controllers ফোল্ডারে রাইট-ক্লিক করুন, Add এবং Controller সিলেক্ট করুন
কন্ট্রোলারের নামকে MoviesController হিসেবে সেট করুন
টেমপ্লেট সিলেক্ট করুনঃ Controller with read/write actions and views, using Entity Framework
মডেল ক্লাস সিলেক্ট করুনঃ MovieDB (MvcDemo.Models)
ডাটা কন্টেক্সট ক্লাস সিলেক্ট করুনঃ MovieDBContext (MvcDemo.Models)
ভিউ সিলেক্ট করুনঃ Razor (CSHTML)
Add এ ক্লিক করুন

ভিজ্যুয়াল ওয়েব ডেভলাপাররা নিচের ফাইলগুলো তৈরি করবেঃ

Controllers ফোল্ডারে একটি MoviesController.cs ফাইল
Movies ফোল্ডারে একটি Views ফোল্ডার

ডাটাবেজ ভিউ যোগ করা
নিচের ফাইলগুলো সয়ংক্রিয়ভাবেই মুভিজ ফোল্ডারে তৈরি হয়ে যায়ঃ

Create.cshtml
Delete.cshtml
Details.cshtml
Edit.cshtml
Index.cshtml

একটি কানেকশান স্ট্রিং যোগ করা
আপনার Web.config ফাইলের <connectionStrings> এলিমেন্টে নিচের এলিমেন্টটি যোগ করুনঃ

<add name="MovieDBContext"
connectionString="Data Source=|DataDirectory|\Movies.sdf"
providerName="System.Data.SqlServerCe.4.0"/>

অভিনন্দন!

আপনাকে অভিনন্দন! আপনি আপনার অ্যাপ্লিকেশানে প্রথম এমভিসি ডাটা মডেল যোগ করেছেন।
এখন আপনি "Movies" ট্যাবে ক্লিক করতে পারবেন 🙂

উইন্ডোজ ৮.১ টিউটোরিয়াল: অনলাইনে প্রবেশ (Getting online)

Huge Sell on Popular Electronics

উইন্ডোজ ৮.১ টিউটোরিয়াল 11 এর 1

E-mail চেক করা, পছন্দনিয় সাইটগুলো পরিদর্শন করা, বন্ধুদের ‍Status update এ মন্তব্য করা – ইন্টারনেট কানেকশনের উপর ভিত্তি করে অনেক কিছুই আপনি করতে পারেন। পথ খুঁজে বের করুণ আপনি কিভাবে অনলাইনে প্রবেশ করবেন এবং যখন আপনি পাবলিক নেটওয়পাক এ থাকবেন তখন কিভাবে আপনার তথ্য নিরাপদ রাখবেন।

শিখুন কিভাবে Online এ প্রবেশ করবেন:

ইন্টারনেটের সাথে সংযুক্ত থাকা
আপনি Social update পোষ্ট করতে চান, বন্ধুকে E-mail পাঠাতে চান অথবা আপনার প্রিয় ওয়েবসাইটগুলো পরিদর্শন করতে চান, ইন্টারনেট সংযোগ হচ্ছে তার চাবি। এবং আপনার যদি উইন্ডোজ 8.1 অথবা উইন্ডোজ আরটি 8.1 পিসি থাকে তাহলে এই কাজগুলো করতে হলে আপনার ইন্টারনেট সংযোগ প্রয়োজন হবে।

বাড়িতে সংযুক্ত করণ:
আপনার যদি ISP (ইন্টারনেট সার্ভিস প্রোভাইডার) যেমন- phone বা cable কম্পানী এর মত একটি  একাউন্ট (আইডি) থাকে তাহলে ইতিমধ্যেই আপনার বাড়িতে ইন্টারনেট সংযোগ আছে। আপনি আপনার পিসিকে একটি ইথারনেট তারের (Ethernet cable) মাধ্যমে মডেম এর সাথে সংযুক্ত করতে পারেন এবং ইন্টারনেট ব্রাউজার ওপেন করে ইন্টারনেট ব্যবহার করতে পারেন। যদি আপনার আরো সহায়তার প্রয়োজন হয় তাহলে আপনি “ইন্টারনেটে সংযোগ” দেখতে পারেন।
যদি বিভিন্ন পিসি বা ডিভাইস এ একই সংযোগ শেয়ার করতে চান অথবা যদি আপনি একটি পাসওয়ার্ড সুরক্ষিত সংযোগ চান, তাহলে আপনি আপনার বাড়িতে একটি নেটওয়ার্ক সেট আপ করতে পারেন। একবার সেটআপ করার পরে, আপনি Charm থেকে আপনার নেটওয়ার্ক নির্বাচন করতে পারবেন, আরো জানতে “একটি ডিভাইস বা পিসি যোগ করুন” দেখুন।
আপনি যখন বাড়িতে সংযোগ নিবেন তখন HomeGroup তৈরি করুন, যা পিসি থেকে গান অথবা ভিডিও শুনতে অথবা ফাইল বা ডিভাইস (যেমন প্রিন্টার হিসেব) দুটি পিসির মধ্যে শেয়ার করার জন্য নিখুঁত। আরো জানতে দেখুন “HomeGroup শুরু থেকে শেষ”।

আপনি যখন বাহিরে থাকবেন তখনও সংযুক্ত থাকা
প্রচুর সংখ্যক Public Places ওয়াই-ফাই সংযোগ সেবা প্রদান করে, যেমন কফি শপ বা বিমানবন্দর। যখন আপনি কফি বা ফ্লাইট এর জন্য অপেক্ষা করছেন, আপনি আপনার ই-মেইল চেক করতে পারেন বা ওয়েব সাইট ব্রাউজ করতে পারেন।
আপনি যদি এমন জায়গায় থাকেন যেখানে Wi‑Fi নেই, আপনি মোবাইলে ব্রডব্যান্ড সংযোগ চালু করতে পারেন। মোবাইল ব্রডব্যান্ড সংযোগ একটি ইন্টারনেট সংযোগ যা আপনি নিজের সাথে নিয়ে যেতে পারেন এবং যতদুর মোবাইল ফোন সেবা চালু আছে তার সবখানেই ইন্টারনেট ব্যবহার করতে পারবেন। আপনার একটি সিম কার্ড ক্রয় করতে হবে Phone বা Cable কম্পানীর কাছ থেকে এবং তারপর পিসির সাথে কার্ডটি সংযোগ করে মোবাইল ব্রডব্যন্ড সংযোগ চালু করতে পারবেন। মোবাইল ব্রডব্যন্ড সম্পর্কে আরো জানতে দেখুন “মোবাইল ব্রডব্যান্ড শুরু থেকে শেষ”।
কিছু ইন্টারনেট সংযোগ (বিশেষ করে মোবাইল ব্রডব্যান্ড সংযোগ) সীমাবদ্ধ হয়, অর্থাৎ আপনার পরিকল্পনা (Plan) অনুসারে আপনি সর্বচ্চ প্রতি মাসে নির্দিষ্ট পরিমাণ ডাটা ব্যবহার করতে পারবেন। এই ধরনের পরিকল্পনায় আপনাকে সচেতন থাকতে হবে আপনার Plan এর বেশি ডাটা ব্যবহার করে যেন বাড়তি বিল গুনতে না হয়। আপনি এটি পরীক্ষা করতে পারবেন ডেস্কটপ এর নেটওয়ার্ক আইকন এ ক্লিক করার মাধ্যমে বা Settings Charms এর মাধ্যমে। আরো জানতে দেখুন “ Metered ইন্টারনেট সংযোগ: প্রায়ই জিজ্ঞাসিত প্রশ্ন”।

একটি নেটওয়ার্কের সঙ্গে সংযোগ

আপনি যখন প্রথম উইন্ডোজ Set up করবেন, আপনি সাথে সাথে একটি ইন্টারনেট সংযোগ এর সাথে সংযুক্ত থেকে থাকতে পারেন। যদি না থাকেন তাহলে বিদ্যমান নেটওয়ার্কের একটি তালিকা দেখতে পারেন এবং তাদের যেকোন একটির সাথে সংযোগ স্থাপন করতে পারেন।

04b755eb-5c2c-49f0-a048-4975b31799b6_7

61ec004f-77c1-4406-9f8e-5dc6785822dc_8

বিদ্যমান নেটওয়ার্কের তালিকা দেখতে

১। পর্দার ডান প্রান্তে সুইপ করে যান এবং Settings এ টোকা দিন।
(যদি আপনি মাউস ব্যবহার করতে চান তাহলে মাউস পয়েন্টার পর্দার ডান পার্শ্বের নিচের দিকে নিয়ে যেয়ে Settings এর উপর ক্লিক করুন।)
২। নেটওয়ার্ক আইকন চেক করুন। এটি আপনাকে দেখাবে আপনি সংযুক্ত আছেন কিনা এবং সংযুক্ত থাকলে সংযুক্তি কতটা শক্তিশালি।
৩। আপনি যদি সংযুক্ত না থাকেন তাহলে নেটওয়ার্ক আইকনে ক্লিক করুন (1 অথবা 2)
৪। টোকা দিন বা ক্লিক করুন আপনি যে নেটওয়ার্কে সংযুক্ত হতে চান এবং তারপর Connect এ ক্লিক করুন।
আপনাকে পাসওয়ার্ড প্রদান করার জন্য জিজ্ঞাস করতে পারে। আপনি এটি নেটওয়ার্ক এডমিন এর কাছে পাবেন। আপনি যদি বাড়িতে থাকেন তাহলে এটা পরিবারের যেকোন সদস্যের কাছেই থাকতে পারে। আপনি যদি কর্মক্ষেত্রে থাকেন আপনার আইটি এডমিন এর কাছে জিজ্ঞাস করুন। যদি আপনি  public place এ থাকেন যেমন- কফি শপ, এমন কাউকে জিজ্ঞাস করুণ যে সেখানে কাজ করে।
৫। যদি আপনি এই নেটওয়ার্কে সবসময় সংযুক্ত হতে চান তাহলে Connect automatically চেক বক্স এ ক্লিক করুন।

মোবাইলে ব্রডব্যান্ড কানেকশন ব্যবহার

মোবাইলে ব্রডব্যান্ড কানেকশন কিভাবে ব্যবহার করবেন তা জানতে দেখুন “মোবাইলে ব্রডব্যান্ড শুরু থেকে শেষ

একবার যখন Set up করবেন, উইন্ডোজ আপনাকে সংযুক্ত রাখবে - যখন আপনি চলন্ত অবস্থায় থাকবেন তখন সয়ংক্রিয়ভাবে Wi-Fi সংযোগ, মোবাইল ব্রডব্যান্ড সংযোগে পরিবর্তিত হবে। এইভাবে আপনি সংযুক্ত অবস্থায় থাকবেন, এমনকি যখন এক জায়গা থেকে অন্য জায়গায় চলন্ত অবস্থায় থাকবেন বা যাবেন তখনও সংযুক্ত থাকবেন। বা আপনার খরচ কম রাখার জন্য যেখানে Wi-Fi সংযোগ আছে সেখানে মোবাইল ব্রডব্যান্ড থেকে সয়ংক্রিয়ভাবে Wi-Fi এ সংযুক্ত হবেন ।

এয়ারপ্লেন মোড (Airplane mode)

আপনি যখন বিমানে থাকবেন, উড্ডয়ন ও অবতরণের সময় সকল ইলেকট্রনিক ডিভাইস এর পাউয়ার নিম্নগামি হয় । কিন্তু যখন আকাশে থাকবেন তখন আপনি আপনার পিসিকে Airplane mode এ নিয়ে যেতে পারেন এবং ডাউনলোডকৃত ছবি দেখতে পারেন, গেম খেলতে পারেন অথবা প্রেজেন্টেশন এর কাজ করতে পারেন। Airplane mode বিমানের নিয়ম অনুসারে আপনার পিসি থেকে যেকোন সংকেত অন্যত্র প্রেরণ বন্ধ করে দেয়।

Airplane mode ব্যবহার করতে

১। পর্দার ডান কর্ণারের দিকে যান এবং Settings এ প্রবেশ করুন।
(যদি আপনি মাউস ব্যবহার করতে চান তাহলে মাউস পয়েন্টার পর্দার ডান পার্শ্বের নিচের দিকে নিয়ে যেয়ে Settings এর উপরে ক্লিক করুণ)
২। নেটওয়ার্ক আইকনে ক্লিক করুন1
৩। যখন আপনি বিমানে থাকবেন তখন Airplane mode চালু করুন এবং যখন মাটিতে নামবেন তখন তা বন্ধ করুন।

Airplane mode
Airplane mode সম্পর্কে আরো জানতে দেখুন “Airplane mode কি?

Public Network এর গোপনীয়তা

আপনি যখন বাড়ি হতে দুরে যাবেন এবং Public Network ব্যবহার করবেন, যেমন কফি শপ অথবা বিমানবন্দর, আপনার পিসি এবং ডাটা সংরক্ষিত রাখার জন্য আপনাকে কিছু পদক্ষেপ নিতে হবে।

প্রথমবার যখন আপনি Public Network এর সাথে সংযুক্ত হবেন, তখন জিজ্ঞাসিত হতে পারেন যে, আপনি কোনো ডিভাইস খুঁজতে চান কিনা এবং সেই নেটওয়ার্কের সাথে সংযুক্ত হতে চান কিনা। বলুন না, কেননা তাহলে অন্যান্য লোকেরা আপনার পিসিকে দেখতে পারবে না যখন আপনি এই নেটওয়ার্ক এর সাথে সংযুক্ত হবেন। যদি আপনি হ্যাঁ বলে ফেলেন গাবরানোর কিছু নেই। আপনি কিভাবে আপনার Settings পরিবর্তন করবেন তা এখানো দেয়া হলো ।

Public Network এ আপনার ডাটা নিরাপদ রাখার জন্য

১। পর্দার ডান কর্ণারের দিকে যান এবং Settings এ প্রবেশ করুন।
(যদি আপনি মাউস ব্যবহার করতে চান তাহলে মাউস পয়েন্টার পর্দার ডান পার্শ্বের নিচের দিকে নিয়ে যেয়ে Settings এর উপরে ক্লিক করুণ)
2। ক্লিক Network, ক্লিক Connections এবং তারপর নেটওয়ার্ক এর নামের উপর ক্লিক করুন।
3। Find devices and content বন্ধ করুন। আপনি এখনও অনলাইনে যেতে পারবেন কিন্তু অন্যারা যারা এই Public Network ব্যবহার করছে তারা আপনার ডাটা নিয়ে যেতে পারবে না।

উইন্ডোজ ৮.১ টিউটোরিয়াল: কেন ব্যবহার করবেন? (Why Windows)

Huge Sell on Popular Electronics

উইন্ডোজ ৮.১ ব্যবহার করার সাতটি কারণ

টাচ ডেস্কটপ তৈরি করা আগে কখনোই সহজ ছিল না।

১। এটি সহজ
উইন্ডোজ ৮.১ কে আপনি আপনার পরিচিত ডেস্কটপ দিয়ে শুরু করতে পারেন অথবা Live Tiles এর মতো অ্যাপ্লিক্যাশন হিসেবে শুরু করতে পারেন। আপনি টাচ, মাউস এবং কিবোর্ড ব্যবহার করতে পারবেন - যেটা আপনার কাছে সুবিধাজনক মনে হয়। আপনি যে সকল যন্ত্রপাতি ব্যবহার করতে চান তার সবই ব্যবহার করতে পারবেন কেননা সেগুলোর প্রায় সবগুলোই উইন্ডোজ উপযোগী। সেই সাথে আপনি আপনার কম্পিউটারে, ওয়েভ সাইটগুলোতে, ক্লাউড এবং অ্যাপ্লিকেশন গুলোতে এবং একই সাথে Bing Smart Search এর মাধ্যমে যেকোন বিষয় খুঁজে পেতে পারেন - শুধুমাত্র স্ত্রিনের ডানের সার্চ Charm এ প্রবেশ করার মাধ্যমে।

২। সকল অ্যাপ্লিকেশনস

উইন্ডোজ অ্যাপ্লিকেশনস এর জগৎ
Windows Store এ আপনি নতুন আবিস্কার এর সাথে সাথে আপনার পছন্দের অ্যাপ্লিকেশন খুঁজে পাবেন। এবং Built in App আপনাকে আরো বেশি কিছু করতে সাহায্য করবে যেমন- The Food & Drink App আপনাকে রান্নার কাজে সাহায্য করবে এবং Photo App আপনাকে নতুন ভাবে আপনার তোলা ছবি সম্পাদনা করতে সহায়তা করবে।

৩। যন্ত্র (ডিভাইসেস)

বিশাল সংখ্যক যন্ত্র আছে আপনার প্রতিটি প্রয়োজন, বাসনা এর জন্য।

৪। ব্যস্ততা

Tools আপনাকে সাহায্য করবে আপনার কাজ সম্পাদনের জন্য
Office Application এর মাধ্যমে আপনি কার্য্যত আপনার কাজ করার স্বাধীনতা পাবেন যেকোন স্থানে যেকোন Device এর মাধ্যমে। যে অফিস অ্যাপ্লিকেশন আপনি জানেন এবং যাকে বিশ্বাস করেন তার মাধ্যমে ডকুমেন্ট তৈরি করুণ, Cloud এ সংরক্ষণ করুণ এবং অফিস অনলাইনের মাধ্যমে একই সাথে (রিয়েল টাইম এ) ডকুমেন্ট সম্পাদনা ও অন্যকে সহযোগীতা করুণ। সেইসাথে আপনার যখন প্রয়োজন হবে তখন Multitasking Split Screen (একই সাথে একাধিক কাজ করার জন্য স্ক্রিণকে বিভক্ত করার মাধ্যমে) আপনাকে সহায়তা করবে। এবং Bing Smart Search আপনাকে যেকোন তথ্য খুঁজে পেতে সহায়তা করবে তা সে যেখানেই থাকুক।

৫। একে ব্যক্তিগত করা

টাইলসকে আপনার পছন্দ অনুযায়ী তৈরি করুণ
কিছু অ্যাপ্লিকেশন Live Tiles আছে সুতরাং আপনি এদেরকে খোলা ছাড়াই Real time update দেখতে পারবেন। এবং আপনি গুরুত্ব অনুযায়ী Tiles এর আকার ও বসানোর স্থান নির্দারণ করে দিতে পারবেন।

ডেস্কটপ রূপান্তরিত করণ
প্রগতিপন্থী (হাইপার) ডেস্কটপ চান? আপনি নিজস্বভাবে বিশ্বের যেকোন স্থান থেকে ব্যাকগ্রাউন্ড নিয়ে ডেস্কটপকে সৌন্দর্যমন্ডিত করতে পারেন এবং উইন্ডোজ থিম এর সাহায্যে সমন্বিত করতে পারেন ছবির সেট, কালার প্যালেট, শব্দ ও নকশা। হারলে যোগ করেছেন তার নিজস্ব মাছ ধরার ছবি তাও একটা কৌতুক তৈরি করেছে।

একেবারে ঠিক না হওয়া পর্যন্ত চিমটানো

উইন্ডোজ কাস্টমাইজ করুণ এবং নিজের বানান
Start Screen এর ব্যাকগ্রাউন্ড পছন্দ করুণ, স্থাপণ করুণ আপনার পছন্দের অ্যাপ্লিকেশন, গেম ফোল্ডার, প্রোফাইল বা ওয়েবসাইট এবং আপনার প্রয়োজন অনুসারে সাজান। এটি ঠিক না হওয়া পর্যন্ত Josh একে নিয়ে খামচাখামচি করেন। অনেকটা তার রেস্টুরেন্ট এর মেনু (খাবার তালিকা) তৈরি করার মতো।

৬। সবসময়ই সংযুক্ত

আপনার ডিভাইস জুড়ে এর উইন্ডোজ
OneDrive এর মাধ্যমে আপনি প্রবেশ করতে পারবেন আপনার সঙ্গীত, সিনেমা, ফটো, ডকুমেন্ট, সেটিংস, উইন্ডোজ অ্যাপস এমনকি ব্রাউজিং ইতিহাস আপনার যন্ত্রের (ডিভাইস এর) মাধ্যমে - সেইসাথে আপনি বিনামুল্যে পাবেন ১৫ গিগাবাইট জায়গা। যা ২৫৫ ঘন্টা সঙ্গিত বা ২০,০০০ ওয়ার্ড ডকুমেন্ট বা ৩০০.০০০ ফটো রাখার জন্য যথেষ্ট - অন্য কথায় এটি যথেষ্ট পরিমাণ জায়গা।

আপনি ইচ্ছা করলে একই Microsoft Account যেকোন Device এ ব্যবহার করতে পারবেন। এর মানে হলো আপনাকে শুধুমাত্র আপনার User ID এবং Password মনে রাখতে হবে এবং স্বয়ংক্রিয়ভাবে উক্ত Device আপনার পছন্দের তালিকা ও সেটিংস অনুযায়ী আপনাকে অনুসরণ করবে।

৭। এর মজা

উইন্ডোজ XBox আপনার বিনোদন কেন্দ্র
XBox আপনার সম্পূর্ণ বিনোদন কেন্দ্র - Cloud এ, Game এ প্রবেশ করায়, সঙ্গীত, চলচ্চিত্র, আই টিউনস লাইব্রেরি এবং অন্যান্য ক্ষেত্রে - বাড়িতে এবং যেখানেই যান।

XBox গেম:
XBox গেমস এ আপনার চাহিদা অনুসারে Tiles আছে এবং প্রতিদিনই নতুন নতুন যোগ হচ্ছে। আপনি অনেক Game এর জন্য Touch Screen  ব্যবহার করতে পারেন এবং পেতে পারেন অনন্য অভিজ্ঞতা। এবং XBox সেবার মাধ্যমে আপনি আপনার বন্ধুর সাথে কথা বলতে পারেন - বিশ্বস্ততার সাথে।

পিএইচপি : মাইএসকিউএল টেবিল তৈরি (PHP Create MySQL Tables)

Huge Sell on Popular Electronics

একটি ডাটাবেস টেবিল এর নিজস্ব নাম থাকে এবং এটা কলাম ও সারি নিয়ে গঠিত হয়।

MySQLi এবং PDO ব্যবহার করে একটি মাইএসকিউএল ছক (table) তৈরি করা

মাইএসকিউএল এ টেবিল তৈরি করতে CREATE TABLE স্টেটমেন্ট ব্যাবহার করা হয়।
আমরা এখন "MyGuests" নামে একটি টেবিল তৈরি করবো যার "id", "firstname", "lastname", "email" এবং "reg_date" নামে পাঁচটি কলাম থাকবে-


CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )

 

 

উপরের টেবিল তৈরির জন্য কিছু নির্দেশনা

ডাটা টাইপ করার পরে, প্রতিটি কলামের জন্য অন্যান্য যে ঐচ্ছিক বৈশিষ্ট্যগুলি নির্দিষ্ট করতে পারেন তা নিচে দেওয়া হল :

  • NOT NULL –যে কলামকে NOT NULL করা হবে তার অবশ্যই একটা মান (value) থাকতে হবে। মান (value) না থাকলে প্রকাশ এর অনুমতি পাবে না।
  • DEFAULT value – যখন কোন মান (value) গৃহীত না হয়, তখন কোন ডিফল্ট (default) মান (value) যোগ করা ।
  • UNSIGNED – কলাম এ শুধুমাএ সংখ্যা ধারনের জন্য ব্যবহৃত হয়। শুধুমাএ সংরক্ষিত তথ্যের ইতিবাচক সংখ্যা এবং শূন্য সংখ্যার সীমা নিয়ন্ত্রণ করে।
  • AUTO INCREMENT – মাইএসকিউএল স্বয়ংক্রিয়ভাবে মান নিয়ন্ত্রণ করে।
  • PRIMARY KEY –কোন টেবিল এর সারিকে স্বতন্ত্রভাবে সনাক্ত করতে ব্যবহৃত।

যদি কোন টেবিল এ primary key কলাম থাকে (এই ক্ষেত্রে ধরলাম "id" কলামটিকে primary key করা হয়েছে) তাহলে এর মধ্যকার ডাটা এই টেবিলের সংরক্ষিত ডাটা এর মধ্যে ইউনিক হতে হবে।

নিম্নলিখিত উদাহরণ এ আমরা দেখবো পিএইচপি দ্বারা কিভাবে টেবিল তৈরি করতে হয়-

উদাহরণ (MySQLi Object-oriented)


< ?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDB";
// Create connection
 $conn = new mysqli($servername, $username, $password, $dbname);
 // Check connection
 if ($conn->connect_error) {
       die("Connection failed: " . $conn->connect_error);
 }
// sql to create table
 $sql = "CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )";
if ($conn->query($sql) === TRUE) {
        echo "Table MyGuests created successfully";
 } else {
        echo "Error creating table: " . $conn->error;
 }
$conn->close();
 ?>

 

 

উদাহরণ (MySQLi Procedural)


< ?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDB";
// Create connection
 $conn = mysqli_connect($servername, $username, $password, $dbname);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
 }
// sql to create table
 $sql = "CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )";
if (mysqli_query($conn, $sql)) {
      echo "Table MyGuests created successfully";
 } else {
      echo "Error creating table: " . mysqli_error($conn);
 }
mysqli_close($conn);
 ?>

 

 

উদাহরণ (PDO)


<?php
 $servername = "localhost";
 $username = "username";
 $password = "password";
 $dbname = "myDBPDO";
 
 try {
     $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
     // set the PDO error mode to exception
     $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 
     // sql to create table
     $sql = "CREATE TABLE MyGuests (
     id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
     firstname VARCHAR(30) NOT NULL,
     lastname VARCHAR(30) NOT NULL,
     email VARCHAR(50),
     reg_date TIMESTAMP
     )";
 
     // use exec() because no results are returned
     $conn->exec($sql);
     echo "Table MyGuests created successfully";
     }
 catch(PDOException $e)
     {
     echo $sql . "<br>" . $e->getMessage();
     }
 
 $conn = null;
 ?>

 

 

এএসপি.নেট এমভিসি – এসকিউএল ডাটাবেজ . ASP.NET MVC – SQL Database

Huge Sell on Popular Electronics

এএসপি.নেট এমভিসি - এসকিউএল ডাটাবেজ
Sheikh Mahfuzur Rahman
Bangla word: 300

এএসপি.নেট এমভিসি (ASP.NET MVC) শিখতে গিয়ে আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করছি। আজকে যার ষষ্ট পার্ট নিয়ে আলচোনা করা হবে। পূর্বের পার্টগুলো পড়ে না থাকলে প্রথমে পড়ে নিন।

ষষ্ট পার্টঃ ডাটাবেজ যোগ করা

ডাটাবেজটি তৈরি করা

ভিজ্যুয়াল ওয়েব ডেভলাপারে এসকিউএল সার্ভার কম্প্যাক্ট নামের একটি ফ্রি এসকিউএল ডাটাবেজ রয়েছে।
এই টিউটোরিয়ালের জন্য যে ডাটাবেজটি দরকার তা নিচের সহজ ধাপগুলো অনুসরণ করে তৈরি করা যায়ঃ

Solution Explorer ইউন্ডোতে গিয়ে App_Dat ফোল্ডারে রাইট-ক্লিক করুন
Add, New Item সিলেক্ট করুন
SQL Server Compact Local Database * সিলেক্ট করুন
ডাটাবেজটির নাম দিন Movies.sdf
Add বাটনে ক্লিক করুন

যদি এসকিউএল সার্ভার কম্প্যাক্ট লোকাল ডাটাবেজ অপশান হিশেবে না থাকে তাহলে এর মানে হলো আপনি আপনার কম্পিউটারে এসকিউএল সার্ভার কম্প্যাক্ট ইন্সটল করেননি। এই লিংক থেকে এটি ইন্সটল করে নিনঃ এসকিউএল সার্ভার কম্প্যাক্ট।

ভিজ্যুয়াল ওয়েব ডেভলাপার সয়ংক্রিয়ভাবে App_Data ফোল্ডারে ডাটাবেজটি তৈরি করে।

লক্ষ্যণীয়ঃ আশা করি, এই টিটোরিয়ালটি বুঝার জন্য আপনার এসকিউএল ডাটাবেজ সম্পর্কে কিছু ধারণা রয়েছে। যদি আপনি এসকিউএল সম্পর্কে প্রথমে জানতে চান তাহলে আমাদের এসকিউএল টিউটোরিয়াল পেজে ভিজিট করুন।

একটি ডাটাবেজ টেবল যোগ করা

App_Data ফোল্ডারের Movies.sdf ফাইলে ডাবল-ক্লিক করলে Database Explorer উইন্ডো খুলবে। ডাটাবেজটিতে একটি নতুন টেবল যোগ করতে Tables ফোল্ডারে রাইট-ক্লিক করুন এবং Create Table সিলেক্ট করুন।
নিচের কলামগুলো তৈরি করুনঃ

Column
Type
Allow Nulls
ID
int (primary key)
No
Title
nvarchar(100)
No
Director
nvarchar(100)
No
Date
datetime
No

কলামগুলোর ব্যাখ্যাঃ
ID হলো একটি ইন্টিজার বা পূর্ণ সংখ্যা যা কলামের প্রত্যকটি রেকর্ডকে চিহ্নিত করতে ব্যবহৃত হয়।
Title হলো একটি ১০০ অক্ষরের টেক্সট কলাম যা মুভির নাম সংরক্ষণ করে।
Director হলো একটি ১০০ অক্ষরের টেক্সট কলাম যা ডিরেক্টরের নাম সংরক্ষণ করে।
Date হলো একটি datetime কলাম যা মুভিটির রিলিজ ডেট সংরক্ষণ করে।

 

ছবিতে দেখুনঃ

http://bangla.salearningschool.com/aspnet/pic_mvc_dbexplorer.jpg

উপরোল্লিখিত কলামগুলো তৈরি করার পর আপনাকে অবশ্যই ID কলামকে টেবলের প্রাইমারি কি (primary key বা record identifier ) হিসেবে সেট করতে হবে। এটা করতে, কলামের নাম (ID) এ ক্লিক করুন এবং Primary Key সিলেক্ট করুন। তাছাড়া, Column Properties উইন্ডোতে Identity প্রপার্টিকে True তে সেট করুনঃ

টেবলে কলামগুলো তৈরি করা শেষ হলে, MovieDBs নাম দিয়ে টেবলটি সেভ করুন।

লক্ষ্যণীয়ঃ আমরা ইচ্ছাকৃতভাবে টেবলটির নাম দিয়েছি "MovieDBs" ( শেষে s রয়েছে )। পরবর্তী অধ্যায়ে আপনি ডাটা মডেলের জন্য "MovieDB" নামটি দেখবেন। এটা দেখতে অদ্ভুত দেখায়, কিন্তু এটাই নামকরণের রীতি যা আপনাকে কন্ট্রোলারটিকে ডাটাবেজ টেবলটির সাথে কানেক্ট করার উপযোগী করার জন্য ব্যবহার করতে হবে।

ডাটাবেজ রেকর্ড যোগ করা/Adding Database Records

মুভি ডাটাবেজে কিছু পরীক্ষামূলক রেকর্ড যোগ করতে ভিজ্যুয়াল ওয়েব ডেভলাপার ব্যবহার করতে পারেন।
App_Data ফোল্ডারে Movies.sdf ফাইলে ডাবল-ক্লিক করুন। ডাটাবেজ এক্সপ্লোরার উইন্ডোতে MovieDBs টেবলে রাইট ক্লিক করুন এবং Show Table Data সিলেক্ট করুন।

নিচের মতো কিছু রেকর্ড যোগ করুনঃ

ID
Title
Director
Date
1
Psycho
Alfred Hitchcock
01.01.1960
2
La Dolce Vita
Federico Fellini
01.01.1960

লক্ষ্যণীয়ঃ ID কলাম অটোমেটিকভাবে আপডেট হয়। আপনার এটাকে এডিট করার দরকার নেই।

পিএইচপি – মাইএসকিউএল এ ডাটা প্রবেশ করানো (PHP Insert Data Into MySQL in Bangla)

Huge Sell on Popular Electronics

শেখ মাহফুজুর রহমান

 

MySQLi এবং PDO ব্যবহার করে মাইএসকিউএল এ ডাটা প্রবেশ করানো

একটি ডাটাবেজ এবং একটি টেবল তৈরি করার পর আমরা তাতে ডাটা যোগ করা শুরু করতে পারি।
এক্ষেত্রে যেসব সিনটেক্সট-নিয়ম অনুরসরন করতে হবেঃ

  • SQL কোয়ারিটি অবশ্যই PHP এর ভিতর কোটেড হতে হবে।
  • SQL কোয়ারির ভেতর স্ট্রিং ভ্যালুটি অবশ্যই কোটেড হতে হবে।
  • সংখ্যা বা নিউমেরিক ভ্যালুগুলো কোটেড হতে পারবেনা।
  • NULL শব্দটি কোটেড হতে পারবেনা।

INSERT INTO স্টেটমেন্টটি MySQL টেবলে নতুন রেকর্ড যোগ করার কাজে ব্যবহার করা হয়ঃ


INSERT INTO table_name (column1, column2, column3,...)
VALUES (value1, value2, value3,...)


 

এসকিউএল সম্পর্কে আরও জানতে আমাদের এসকিউএল টিটোরিয়ালটি পড়ুন।

 

পূর্বের অধ্যায়ে আমরা "MyGuests" নামের পাঁচ কলামের একটি খালি টেবল তৈরি করেছিলাম যার কলামগুলো ছিলঃ "id", "firstname", "lastname", "email" and "reg_date" । এখন ঐ টেবলটিকে ডাটা দিয়ে পূর্ণ করা যাক।

লক্ষ্য রাখতে হবে, যদি একটি কলাম AUTO_INCREMENT ('id' কলামের মতো) অথবা TIMESTAMP ("reg_date" কলামের মতো) হয় তাহলে সেটিকে এসকিউএল কোয়ারি নির্দিষ্ট করে দিতে হয়না; MySQL সয়ংক্রিয়ভাবে ভ্যালু যোগ করে নিবে।

নিচের উদাহরণগুলো "MyGuests" টেবলে নতুন রেকর্ড যোগ করেঃ

উদাহরণ (MySQLi অবজেক্ট-অরিয়েন্টেড)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

 

উদাহরণ (MySQLi প্রসিডুরাল)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";

if (mysqli_query($conn, $sql)) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}

mysqli_close($conn);
?>

 

উদাহরণ (PDO)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo "New record created successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

 

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৫]:: ASP.NET Web Forms দিয়ে ডাটা লিস্ট কনট্রোল

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৫]:: ASP.NET Web Forms দিয়ে ডাটা লিস্ট কনট্রোল
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা রিপিট লিস্ট কনট্রোল শিখেছিলাম । এই পর্বে আমরা শিখবো ASP.NET Web Forms দিয়ে ডাটা লিস্ট কনট্রোল করা । শুধুই কনট্রোল আর কনট্রোল তাই নাহ? ;)

ডাটা লিস্ট কনট্রোলে ডাটাসেট বাইন্ড করা
ডাটা লিস্ট কনট্রোল হলো রিপিটার কন্ট্রোলের মত, যেটা কন্ট্রোলের জন্য বাউন্ড করা লিস্টে রিপিটেড লিস্টগুলোকে দেখায় । কিন্তু ডাটা লিস্ট কনট্রোল ডাটা আইটেমের চারিদিকে নিজে নিজে একটা টেবিল তৈরি করে থাকে । ডাটা লিস্ট কনট্রোল সাধারণত ডাটাবেজ টেবিল, XML file অথবা অনেকগুলো আইটেম এর সাথে বাউন্ড হয়ে থাকে ।
এখানে উদাহরণ হিসেবে “cdcatalog.xml” ফাইলকে দেখাচ্ছি ।

xml version=”1.0″ encoding=”ISO-8859-1″?>

<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>

এটাকে এখন cdcatalog.xml এই নামে সেভ করে ওপেন করেই দেখুন না ।

প্রথমে “System.Data” নামে কোনো নেমস্পেস কে ইম্পোর্ট করতে হবে । ডাটাসেট অবজেক্ট এর কাজের জন্য এই নেমস্পেসকে দরকার পড়বে । .aspx পেজের সবার উপরে নিচের কোডটুকু যোগ করে নেই ।

<%@ Import Namespace=”System.Data” %>

তারপর XML file এর জন্য একটা ডাটাসেট তৈরী করে নেই । পেজটি যখন প্রথম লোড নিবে তখন ডাটাসেট থেকে XML file টি লোড নিবে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
end if
end sub

এখন আমরা .aspx page এ আরেকটা রিপিটার কনট্রোল তৈরী করবো । এর ভিতরে <HeaderTemplate> টি প্রথমে এবং একবারই সম্পাদন করবে । অবশ্য <ItemTemplate> এলিমেন্ট টি ডাটাসেটের রেকর্ড এর উপর নির্ভর করে রিপিট হতে পারে । কিন্তু <FooterTemplate> এলিমেন্ট টি কিন্তু একবারই সম্পাদিত হয়ে নিচের মত আউটপুট দিবে ।

<html>
<body>

<form runat=”server”>
<asp:DataList id=”cdcatalog” runat=”server”>

<HeaderTemplate>

</HeaderTemplate>

<ItemTemplate>

</ItemTemplate>

<FooterTemplate>

</FooterTemplate>

DataList>
form>

</body>
</html>

তারপর আমরা ডাটাসেট তৈরির জন্য স্ক্রিপ্ট যোগ করবো । এটাকে তখন রিপিটার কনট্রোলের mycdcatalog ডাটাসেটের সাথে বাইন্ড করবো । তারপর <HeaderTemplate> ব্যবহার করবো হেডার টেবিল দেখানোর জন্য, <ItemTemplate> ব্যবহার করবো ডাটা আইটেম দেখানোর জন্য এবং <FooterTemplate> ব্যবহার করবো টেক্সট দেখানোর জন্য । ডাটা লিস্টে “both” অ্যাট্রিবিউট যোগ করে টেবিল বর্ডার দেখাতে সক্ষম হবো ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:DataList id=”cdcatalog”
gridlines=”both” runat=”server”>

<HeaderTemplate>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
“<%#Container.DataItem(“title”)%>” of
<%#Container.DataItem(“artist”)%> –
$<%#Container.DataItem(“price”)%>
</ItemTemplate>

<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>

DataList>
form>

</body>
</html>

স্টাইলের ব্যবহারঃ
আপনি আপনার ইচ্ছামত করে স্টাইল যোগ করে নিতে পারবেন ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:DataList id=”cdcatalog”
gridlines=”both” runat=”server”>

<HeaderTemplate>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
“<%#Container.DataItem(“title”)%>” of
<%#Container.DataItem(“artist”)%> –
$<%#Container.DataItem(“price”)%>
</ItemTemplate>

<FooterTemplate>
Copyright Hege Refsnes
</FooterTemplate>

</asp:DataList>
</form>

</body>
</html>

<AlternatingItemTemplate> এর ব্যবহার
<ItemTemplate> এলিমেন্টের পরিবর্তে আমরা <AlternatingItemTemplate> এলিমেন্ট ব্যবহার করতে পারি নিচের মত করে ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:DataList id=”cdcatalog”
runat=”server”
cellpadding=”2″
cellspacing=”2″
borderstyle=”inset”
backcolor=”#e8e8e8″
width=”100%”
headerstyle-font-name=”Verdana”
headerstyle-font-size=”12pt”
headerstyle-horizontalalign=”center”
headerstyle-font-bold=”True”
itemstyle-backcolor=”#778899″
itemstyle-forecolor=”#ffffff”
alternatingitemstyle-backcolor=”#e8e8e8″
alternatingitemstyle-forecolor=”#000000″
footerstyle-font-size=”9pt”
footerstyle-font-italic=”True”>

<HeaderTemplate>
My CD Catalog
</HeaderTemplate>

<ItemTemplate>
“<%#Container.DataItem(“title”)%>” of
<%#Container.DataItem(“artist”)%> –
$<%#Container.DataItem(“price”)%>
</ItemTemplate>

<AlternatingItemTemplate>
“<%#Container.DataItem(“title”)%>” of
<%#Container.DataItem(“artist”)%> –
$<%#Container.DataItem(“price”)%>
</AlternatingItemTemplate>

<FooterTemplate>
© Hege Refsnes
</FooterTemplate>

</asp:DataList>
</form>

</body>
</html>

আসলেই ডিজাইন টা হলো নিজের মনের মত । আপনি যদি কোডিং একটু ভালো বুঝতে পারেন তাহলে আপনার মনের মত করে সবকিছু সাজাতে পারবেন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৪]:: ASP.NET Web Forms দিয়ে রিপিটেড লিস্ট কনট্রোল

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৪]:: ASP.NET Web Forms দিয়ে রিপিটেড লিস্ট কনট্রোল
লেখকঃ মোস্তাফিজুর ফিরোজ ।

এক জিনিস বার বার যদি আসে তাহলে কেমন লাগে? খুবই বিরক্ত তাই না? আসুন আজ আমরা তাই ASP.NET Web Forms দিয়ে রিপিটেড লিস্ট কনট্রোল করা শিখবো । তাহলে আর মেজাজ গরম হবে না ।

রিপিটার কন্ট্রোলে ডাটাসেট বাইন্ড
রিপিটার কনট্রোল হল কন্ট্রোলে বাউণ্ড হওয়া লিস্টের রিপিট লিস্ট দেখানো । রিপিটার কনট্রোল সাধারণত ডাটাবেজ টেবিল, XML file অথবা অনেকগুলো আইটেম এর সাথে বাউন্ড হয়ে থাকে । এখন আমি দেখাবো XML file কে কিভাবে একটি রিপিটার কন্ট্রোলের সাথে বাইন্ড করা যায় ।
এখানে উদাহরণ হিসেবে “cdcatalog.xml” ফাইলকে দেখাচ্ছি ।

xml version=”1.0″ encoding=”ISO-8859-1″?>

<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
</catalog>

এটাকে এখন cdcatalog.xml এই নামে সেভ করে ওপেন করেই দেখুন না ।

প্রথমে “System.Data” নামে কোনো নেমস্পেস কে ইম্পোর্ট করতে হবে । ডাটাসেট অবজেক্ট এর কাজের জন্য এই নেমস্পেসকে দরকার পড়বে । .aspx পেজের সবার উপরে নিচের কোডটুকু যোগ করে নেই ।

<%@ Import Namespace=”System.Data” %>

তারপর XML file এর জন্য একটা ডাটাসেট তৈরী করে নেই । পেজটি যখন প্রথম লোড নিবে তখন ডাটাসেট থেকে XML file টি লোড নিবে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
end if
end sub

এখন আমরা .aspx page এ আরেকটা রিপিটার কনট্রোল তৈরী করবো । এর ভিতরে <HeaderTemplate> টি প্রথমে এবং একবারই সম্পাদন করবে । অবশ্য <ItemTemplate> এলিমেন্ট টি ডাটাসেটের রেকর্ড এর উপর নির্ভর করে রিপিট হতে পারে । কিন্তু <FooterTemplate> এলিমেন্ট টি কিন্তু একবারই সম্পাদিত হয়ে নিচের মত আউটপুট দিবে ।

<html>
<body>

<form runat=”server”>
<asp:Repeater id=”cdcatalog” runat=”server”>

<HeaderTemplate>

</HeaderTemplate>

<ItemTemplate>

</ItemTemplate>

<FooterTemplate>

</FooterTemplate>

</asp:Repeater>
form>

</body>
</html>

তারপর আমরা ডাটাসেট তৈরির জন্য স্ক্রিপ্ট যোগ করবো । এটাকে তখন রিপিটার কনট্রোলের mycdcatalog ডাটাসেটের সাথে বাইন্ড করবো । তারপর <%#Container.DataItem(“fieldname”)%> মেথডের মাধ্যমে <ItemTemplate> section এর সাথে রিপিটার কনট্রোল এবং এইচটিএমএল ট্যাগের বাইণ্ড করবো ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:Repeater id=”cdcatalog” runat=”server”>

<HeaderTemplate>
<table border=”1″ width=”100%”>
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem(“title”)%></td>
<td><%#Container.DataItem(“artist”)%></td>
<td><%#Container.DataItem(“country”)%></td>
<td><%#Container.DataItem(“company”)%></td>
<td><%#Container.DataItem(“price”)%></td>
<td><%#Container.DataItem(“year”)%></td>
</tr>
</ItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
form>

</body>
</html>

<AlternatingItemTemplate> এর ব্যবহার
<ItemTemplate> এলিমেন্টের পরিবর্তে আমরা <AlternatingItemTemplate> এলিমেন্ট ব্যবহার করতে পারি নিচের মত করে ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:Repeater id=”cdcatalog” runat=”server”>

<HeaderTemplate>
<table border=”1″ width=”100%”>
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem(“title”)%></td>
<td><%#Container.DataItem(“artist”)%></td>
<td><%#Container.DataItem(“country”)%></td>
<td><%#Container.DataItem(“company”)%></td>
<td><%#Container.DataItem(“price”)%></td>
<td><%#Container.DataItem(“year”)%></td>
</tr>
</ItemTemplate>

<AlternatingItemTemplate>
<tr bgcolor=”#e8e8e8″>
<td><%#Container.DataItem(“title”)%></td>
<td><%#Container.DataItem(“artist”)%></td>
<td><%#Container.DataItem(“country”)%></td>
<td><%#Container.DataItem(“company”)%></td>
<td><%#Container.DataItem(“price”)%></td>
<td><%#Container.DataItem(“year”)%></td>
</tr>
</AlternatingItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
</form>

</body>
</html>

<SeparatorTemplate> এর ব্যবহার
আবার <ItemTemplate> এলিমেন্টের পরিবর্তে আমরা <SeparatorTemplate> এলিমেন্ট ব্যবহার করতে পারি নিচের মত করে ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycdcatalog=New DataSet
mycdcatalog.ReadXml(MapPath(“cdcatalog.xml”))
cdcatalog.DataSource=mycdcatalog
cdcatalog.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:Repeater id=”cdcatalog” runat=”server”>

<HeaderTemplate>
<table border=”0″ width=”100%”>
<tr>
<th>Title</th>
<th>Artist</th>
<th>Country</th>
<th>Company</th>
<th>Price</th>
<th>Year</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem(“title”)%></td>
<td><%#Container.DataItem(“artist”)%></td>
<td><%#Container.DataItem(“country”)%></td>
<td><%#Container.DataItem(“company”)%></td>
<td><%#Container.DataItem(“price”)%></td>
<td><%#Container.DataItem(“year”)%></td>
</tr>
</ItemTemplate>

<SeparatorTemplate>
<tr>
<td colspan=”6″><hr /></td>
</tr>
</SeparatorTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
</form>

</body>
</html>

দেখলেন তো নিজের ইচ্ছামত কত রকমের ট্যাগ ব্যবহার করা যাচ্ছে । আপনি একটু ভালভাবে প্র্যাকটিস করলে নিজের মত করে পরিবর্তন করে ব্যবহার করতে পারবেন । তাহলে এবার একটু মেজাজ ঠান্ডা হয়েছে তো ?

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৩]:: ASP.NET Web Forms দিয়ে XML File তৈরী করে লিস্ট কনট্রোল

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৩]:: ASP.NET Web Forms দিয়ে XML File তৈরী করে লিস্ট কনট্রোল
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা ASP.NET Web Forms এর পোল লিস্টে SortedList Object এর ব্যবহার শিখেছিলাম । আজ আমরা শিখবো কিভাবে ASP.NET Web Forms দিয়ে XML File বাইন্ড করে লিস্ট কনট্রোল করা যায় ।

XML File
XML File কি সেটা আর নতুন করে বলার কিছুই নেই । যারা এইচটিএমএল ভালো শিখেছেন তারা আরো ভালো বুঝতে পারবেন । তাহলে আসুন “countries.xml” নামে আমরা একটা XML File তৈরী করি ।

xml version=”1.0″ encoding=”ISO-8859-1″?>

<countries>

<country>
<text>Norway</text>
<value>N</value>
</country>

<country>
<text>Sweden</text>
<value>S</value>
</country>

<country>
<text>France</text>
<value>F</value>
</country>

<country>
<text>Italy</text>
<value>I</value>
</country>

</countries>

এবার এটাকে ঐ নামে সেভ করে ব্রাউজার দিয়ে ওপেন করে দেখুন কেমন দেখায় ।

লিস্ট কনট্রোলে ডাটাসেট বাইন্ড করা
প্রথমে “System.Data” নামে কোনো নেমস্পেস কে ইম্পোর্ট করতে হবে । ডাটাসেট অবজেক্ট এর কাজের জন্য এই নেমস্পেসকে দরকার পড়বে । .aspx পেজের সবার উপরে নিচের কোডটুকু যোগ করে নেই ।

<%@ Import Namespace=”System.Data” %>

তারপর XML file এর জন্য একটা ডাটাসেট তৈরী করে নেই । পেজটি যখন প্রথম লোড নিবে তখন ডাটাসেট থেকে XML file টি লোড নিবে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath(“countries.xml”))
end if
end sub

RadioButtonList এ ডাটা বাইন্ডিং এর জন্য আগে আপনাকে .aspx পেজে RadioButtonList কন্ট্রোল তৈরী করে নিতে হবে ।

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” AutoPostBack=”True” />
form>

</body>
</html>

তারপর নিচের স্ক্রিপ্ট যোগ করে নিতে হবে ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath(“countries.xml”))
rb.DataSource=mycountries
rb.DataValueField=”value”
rb.DataTextField=”text”
rb.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server”
AutoPostBack=”True” onSelectedIndexChanged=”displayMessage” />
</form>

</body>
</html>

ব্যবহারকারীরা যখন RadioButtonList control এর যেকোনো আইটেমে ক্লিক করে তখন দেখানোর জন্য আমরা কিছু টেক্সট sub routine মেনুতে যোগ করে দিতে পারি নিচের মত করে ।

<%@ Import Namespace=”System.Data” %>

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New DataSet
mycountries.ReadXml(MapPath(“countries.xml”))
rb.DataSource=mycountries
rb.DataValueField=”value”
rb.DataTextField=”text”
rb.DataBind()
end if
end sub

sub displayMessage(s as Object,e As EventArgs)
lbl1.text=”Your favorite country is: ” & rb.SelectedItem.Text
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server”
AutoPostBack=”True” onSelectedIndexChanged=”displayMessage” />
<p><asp:label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

তাহলে দেখলেন তো কত সহজে হয়ে গেলো । সবকিছু একবারে পানির মত তাই নাহ? আসলেই তাই ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১২]:: ASP.NET Web Forms এর পোল লিস্টে SortedList Object এর ব্যবহার

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১২]:: ASP.NET Web Forms এর পোল লিস্টে SortedList Object এর ব্যবহার
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আগের দুটি পোস্ট যদি আমরা ভালভাবে বুঝতে পারি তাহলে আমাদের আজকের পোস্টটি বুঝতে খুব সুবিধা হবে । আজ আমরা ASP.NET Web Forms এর পোল লিস্টে SortedList Object এর ব্যবহার শিখবো ।

SortedList Object কি?
SortedList Object হলো ArrayList object এবং Hashtable object এর সমন্বয় । এটাও key অথবা value এর জোড়া সংগ্রহ করে রাখে । Add() method এর মাধ্যমে আমরা SortedList Object এ আইটেম যোগ করতে পারি । TrimToSize() method এর মাধ্যমে SortedList তার ফাইনাল সাইজে পরিণত হয় । তাহলে কোডটা কেমন হয় একটু দেখে নেইঃ

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
end if
end sub
</script>

ডাটা বাইন্ডিং
SortedList object নিম্নলিখিত টেক্সট এবং ভেলু জেনারেট করতে পারে ।
asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox

RadioButtonList এ ডাটা বাইন্ডিং এর জন্য আগে আপনাকে .aspx পেজে RadioButtonList কন্ট্রোল তৈরী করে নিতে হবে ।

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” AutoPostBack=”True” />
form>

</body>
</html>

তারপর নিচের স্ক্রিপ্ট যোগ করে নিতে হবে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
rb.DataSource=mycountries
rb.DataValueField=”Key”
rb.DataTextField=”Value”
rb.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” AutoPostBack=”True” />
</form>

</body>
</html>

ব্যবহারকারীরা যখন RadioButtonList control এর যেকোনো আইটেমে ক্লিক করে তখন দেখানোর জন্য আমরা কিছু টেক্সট sub routine মেনুতে যোগ করে দিতে পারি নিচের মত করে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New SortedList
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
rb.DataSource=mycountries
rb.DataValueField=”Key”
rb.DataTextField=”Value”
rb.DataBind()
end if
end sub

sub displayMessage(s as Object,e As EventArgs)
lbl1.text=”Your favorite country is: ” & rb.SelectedItem.Text
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server”
AutoPostBack=”True” onSelectedIndexChanged=”displayMessage” />
<p><asp:label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

দেখছেন তো কত সোজা । বেশি করে প্র্যাকটিস করুন আরো সোজা মনে হবে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১১]:: ASP.NET Web Forms এর পোল লিস্টে Hashtable Object এর ব্যবহার

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১১]:: ASP.NET Web Forms এর পোল লিস্টে Hashtable Object এর ব্যবহার
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা পোল তৈরী করা শিখেছিলাম । আজ আমরা Hashtable Object যোগ করে এই পোলের অপশন গুলোকে বিভিন্ন ভাবে সাজানো শিখবো ।

Hashtable তৈরী
Hashtable Object সাধারণতঃ key অথবা value এর জোড়া সংগ্রহ করে রাখে । keys গুলো সূচী তৈরির কাজে ব্যবহার করা হয় । যাতে তাড়াতাড়ি সার্চ করলে পরে খুব সহজে পাওয়া যায় । Add() method এর মাধ্যমে আমরা Hashtable এ আইটেম যোগ করতে পারি । তাহলে কোডটা কেমন হয় একটু দেখে নেইঃ

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
end if
end sub
</script>

ডাটা বাইন্ডিং
Hashtable object নিম্নলিখিত টেক্সট এবং ভেলু জেনারেট করতে পারে ।
asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox

RadioButtonList এ ডাটা বাইন্ডিং এর জন্য আগে আপনাকে .aspx পেজে RadioButtonList কন্ট্রোল তৈরী করে নিতে হবে ।

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” AutoPostBack=”True” />
form>

</body>
</html>

তারপর নিচের স্ক্রিপ্ট যোগ করে নিতে হবে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
rb.DataSource=mycountries
rb.DataValueField=”Key”
rb.DataTextField=”Value”
rb.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” AutoPostBack=”True” />
</form>

</body>
</html>

ব্যবহারকারীরা যখন RadioButtonList control এর যেকোনো আইটেমে ক্লিক করে তখন দেখানোর জন্য আমরা কিছু টেক্সট sub routine মেনুতে যোগ করে দিতে পারি নিচের মত করে ।

<script runat=”server”>
sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New Hashtable
mycountries.Add(“N”,”Norway”)
mycountries.Add(“S”,”Sweden”)
mycountries.Add(“F”,”France”)
mycountries.Add(“I”,”Italy”)
rb.DataSource=mycountries
rb.DataValueField=”Key”
rb.DataTextField=”Value”
rb.DataBind()
end if
end sub

sub displayMessage(s as Object,e As EventArgs)
lbl1.text=”Your favorite country is: ” & rb.SelectedItem.Text
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server”
AutoPostBack=”True” onSelectedIndexChanged=”displayMessage” />
<p><asp:label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

এভাবে আপনি আপনার পছন্দমত বিভিন্ন টেক্সট যোগ করে দেখাতে পারেন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১০]:: ASP.NET Web Forms দিয়ে ভোটিং অথবা পোল লিস্ট বানানো

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১০]:: ASP.NET Web Forms দিয়ে ভোটিং অথবা পোল লিস্ট বানানো
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আমরা সবাই চাই আমাদের সাইটে একটা পোল লিস্ট থাকুক যার মাধ্যমে আমরা আমাদের সাইটের ইউজারদের রিভিউ নিতে পারবো । তাই আসুন আজ ASP.NET Web Forms দিয়ে ভোটিং অথবা পোল লিস্ট বানানো শিখে নেই ।

ভোটিং লিস্ট তৈরী
ভোটিং লিস্ট বানানো কে ArrayList ও বলা হয়ে থাকে । ArrayList হলো অনেকগুলো একক ডাটার মানের আলাদা আলাদা কালেককশন । আসুন আমরা চারটি দেশের নাম দিয়ে ArrayList তৈরী করলে তার কোডগুলো কেমন হবে ।

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add(“Norway”)
mycountries.Add(“Sweden”)
mycountries.Add(“France”)
mycountries.Add(“Italy”)
end if
end sub
</script>

যদি এটাতে ১৬টি দেশের নাম থাকতো কিন্তু আমরা প্রথম চারটিকে দেখাতে চাইতাম তাহলে এর সাথে TrimToSize() কোড যোগ করতে হত । তাহলে কোডটি কেমন হত দেখা যাকঃ

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add(“Norway”)
mycountries.Add(“Sweden”)
mycountries.Add(“France”)
mycountries.Add(“Italy”)
mycountries.TrimToSize()
end if
end sub
</script>

আপনি Sort() মেথড ব্যবহার করে alphabetically অথবা numerically সাজাতে পারেন ।

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add(“Norway”)
mycountries.Add(“Sweden”)
mycountries.Add(“France”)
mycountries.Add(“Italy”)
mycountries.TrimToSize()
mycountries.Sort()
end if
end sub
</script>

আপনি যদি লিস্টটা উলটো করে সাজাতে চান তাহলে Sort() ট্যাগের পর Reverse() মেথড ব্যবহার করতে পারেন ।

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add(“Norway”)
mycountries.Add(“Sweden”)
mycountries.Add(“France”)
mycountries.Add(“Italy”)
mycountries.TrimToSize()
mycountries.Sort()
mycountries.Reverse()
end if
end sub
</script>

ArrayList এ ডাটা বাইন্ডিং
ArrayList স্বয়ংক্রিয়ভাবে নিম্নলিখিত ধরণের টেক্সট এবং মান বের করতে পারে ।

asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox

RadioButtonList এ ডাটা বাইন্ডিং এর জন্য আগে আপনাকে .aspx পেজে RadioButtonList কন্ট্রোল তৈরী করে নিতে হবে ।

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” />
form>

</body>
</html>

তারপর নিচের স্ক্রিপ্ট যোগ করে নিতে হবে ।

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
dim mycountries=New ArrayList
mycountries.Add(“Norway”)
mycountries.Add(“Sweden”)
mycountries.Add(“France”)
mycountries.Add(“Italy”)
mycountries.TrimToSize()
mycountries.Sort()
rb.DataSource=mycountries
rb.DataBind()
end if
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”rb” runat=”server” />
</form>

</body>
</html>

এভাবে আমরা বিভিন্ন কোড যোগ করে আমাদের পোলকে বিভিন্ন ভাবে সাজাতে পারি । এভাবে আপনি নিজেই প্র্যাকটিস করে আপনার মত করে সাজিয়ে নিন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৯]:: ASP.NET Web Forms দিয়ে ডাটা বাইন্ডিং করা

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৯]:: ASP.NET Web Forms দিয়ে ডাটা বাইন্ডিং করা

লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত দুই পর্বে আমরা কি শিখেছিলাম মনে আছে ? মনে না থাকলে একবার দেখে আসুন । থাক এত কষ্ট করতে হবে না, আমি মনে করাই দিচ্ছি । কিন্তু এই পর্বে আপনাকে খুব মনোযোগ দিতে হবে কিন্তু । আজকের পর্বটা খুব গুরুত্বপূর্ণ কিন্তু । তার আগে মনে করায় দেয় আগের দুই পর্বে আমরা TextBox এবং পুশ বাটন বানানো শিখেছিলাম । আজ আমরা ASP.NET Web Forms দিয়ে ডাটা বাইন্ডিং শিখবো ।

ডাটা বাইন্ডিং কি ?
আসলেই তাইতো ডাটা বাইন্ডিং কি জিনিস আবার ? খায় নাকি মাথায় দিতে হয়? :P আমরা ওয়েব ডিজাইন বিষয়ের ভিতরে আছি তাহলে খাওয়া বা মাথায় দেওয়ার বিষয় আসছে কেনো তাই নাহ? তাহলে জেনে নেই আগে ডাটা বাইন্ডিং টা কি । আমরা ডাটা বাইন্ডিং কে সাধারণতঃ লিস্ট পূরণ করার কাজে ব্যবহার করে থাকি । এই ডাটা গুলো কোনো ডাটাবেজ, XML file অথবা কোনো স্ক্রিপ্ট থেকে সংগ্রহ করা হয়ে থাকে ।

ডাটা বাইন্ডিং কি কি সাপোর্ট করে?
এবার আসুন জেনে নেই ডাটা বাইন্ডিং কি কি সাপোর্ট করে থাকে । ডাটা বাইন্ডিং নিম্নের কনট্রোল লিস্টগুলোকে নিয়ন্ত্রণ করতে ব্যবহার করা হয়ে থাকে ।

asp:RadioButtonList
asp:CheckBoxList
asp:DropDownList
asp:Listbox

এই সকল আইটেমগুলোকে আরেকটি asp:ListItem controls নামে নিম্নলিখিতভাবে নিয়ন্ত্রণ করা হয়ে থাকে ।

<html>
<body>

<form runat=”server”>
<asp:RadioButtonList id=”countrylist” runat=”server”>
<asp:ListItem value=”N” text=”Norway” />
<asp:ListItem value=”S” text=”Sweden” />
<asp:ListItem value=”F” text=”France” />
<asp:ListItem value=”I” text=”Italy” />
</asp:RadioButtonList>
</form>

</body>
</html>

ডাটা বাইন্ডিং এর জন্য আমরা কোনো ডাটাবেজ, XML file অথবা কোনো স্ক্রিপ্ট থেকে আলাদা আলাদা ভাবে সংগ্রহ করে থাকি । ইমপোর্টেড সোর্স থেকে ডাটা সংগ্রহ করা হলে আমরা এইচটিএমএল থেকে ডাটাগুলোকে কোনো পরিবর্তন ছাড়া আলাদা করে সংগ্রহ করতে পারি ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৮]:: ASP.NET Web Forms দিয়ে পুশ বাটন বানানো

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৮]:: ASP.NET Web Forms দিয়ে পুশ বাটন বানানো
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আগের পর্বে আমরা শিখছিলাম ASP.NET Web Forms দিয়ে TextBox বানানো । আর এই পর্বে আমরা দেখবো ASP.NET Web Forms দিয়ে কিভাবে পুশ বাটন বানানো যায় ।

বাটন কনট্রোল
বাটন কনট্রোল হলো একটি পুশ বাটন দেখানো । পুশ বাটন হলো একটি সাবমিট বাটন অথবা একটি কমান্ড বাটন তৈরী করা । ডিফল্টভাবে একে সাবমিট বাটন বলে ।
সাবমিট বাটনের কোনো কমান্ড নাম থাকে না এবং এটা ক্লিক করা হলে সার্ভারের পরের পেজে নিয়ে যেতে সাহায্য করে । যখন বাটনটা ক্লিক করা হয় তখন ইভেন্ট হ্যান্ডেলার তার কাজের পারফরমেন্স দেখাতে সক্ষম হয় ।

কিন্তু কমান্ড বাটনের একটা কমান্ড নাম থাকে এবং এটা একটা পেজে অনেকগুলো বাটন তৈরিতে সাহায্য করে থাকে ।

আসুন একটা উদাহরণের সাহায্যে বুঝে নেই ।

<html>
<body>

<form runat=”server”>
<asp:Button id=”b1″ Text=”Submit” runat=”server” />
form>

</body>
</html>

পুশ বাটনে স্ক্রিপ্ট যোগ করা
সাধারণত বাটনে ক্লিক করে ফর্ম সাবমিট করা হয় । আসুন তাহলে এবার একটা বাটনে একটি TextBox কন্ট্রোল, একটি বাটন কন্ট্রোল এবং একটি লেবেল কন্ট্রোল যোগ করা হলে স্ক্রিপ্টটি কেমন দেখায় ।

<script runat=”server”>
Sub submit(sender As Object, e As EventArgs)
lbl1.Text=”Your name is ” & txt1.Text
End Sub
</script>

<html>
<body>

<form runat=”server”>
Enter your name:
<asp:TextBox id=”txt1″ runat=”server” />
<asp:Button OnClick=”submit” Text=”Submit” runat=”server” />
<p><asp:Label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

উপরের কোড দুটো ভালভাবে খেয়াল করলে আমরা আসল পার্থক্য বুঝতে পারবো । এটার সাথে আগের TextBox বানানোর সময় আমরা যেমন স্ক্রিপ্ট যোগ করছিলাম তার সাথে অনেক মিল আছে । তাই একটু চেষ্টা করলেই সব ভালভাবে শিখে ফেলতে পারবেন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৭]:: ASP.NET Web Forms দিয়ে TextBox বানানো

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৭]:: ASP.NET Web Forms দিয়ে TextBox বানানো
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আমরা চাই আমাদের সাইটে একটা TextBox থাকুক যেখানে আমাদের ইউজাররা তাদের প্রশ্ন অথবা কোনো সমস্যা আমাদেরকে টেক্স আকারে মেসেজ করতে পারে । তাই আজকে আমরা শিখবো ASP.NET Web Forms দিয়ে TextBox কনট্রোল করে কিভাবে TextBox বানানো যায় ।

TextBox কনট্রোল কি?
TextBox কনট্রোল হলো একটি TextBox তৈরী করা যার সাহায্যে ইউজাররা টেক্সট পাঠাতে পারে । TextBox কনট্রোল এর জন্য আপনাকে কিছু এট্রিবিউট এবং প্রোপার্টিজ ব্যবহার করতে হবে । আসুন একটা কোডের উদাহরণ দেই তাহলেই বুঝতে পারবেন ।

<html>
<body>

<form runat=”server”>

A basic TextBox:
<asp:TextBox id=”tb1″ runat=”server” />
<br /><br />

A password TextBox:
<asp:TextBox id=”tb2″ TextMode=”password” runat=”server” />
<br /><br />

A TextBox with text:
<asp:TextBox id=”tb4″ Text=”Hello World!” runat=”server” />
<br /><br />

A multiline TextBox:
<asp:TextBox id=”tb3″ TextMode=”multiline” runat=”server” />
<br /><br />

A TextBox with height:
<asp:TextBox id=”tb6″ rows=”5″ TextMode=”multiline”
runat=”server” />
<br /><br />

A TextBox with width:
<asp:TextBox id=”tb5″ columns=”30″ runat=”server” />

form>

</body>
</html>

এই কোডটা একটু ভালভাবে পর্যবেক্ষণ করলেই বুঝতে পারবেন ।

স্ক্রিপ্ট যোগ করা
আমরা চাইলে এই TextBox এর ভিতরে অনেকগুলো স্ক্রিপ্ট যোগ করতে পারি । আসুন তাহলে আর ভিতর একটি TextBox কন্ট্রোল, একটি বাটন কন্ট্রোল এবং একটি লেবেল কন্ট্রোল যোগ করতে চাইলে স্ক্রিপ্টটা কেমন হবে ।

<script runat=”server”>
Sub submit(sender As Object, e As EventArgs)
lbl1.Text=”Your name is ” & txt1.Text
End Sub
</script>

<html>
<body>

<form runat=”server”>
Enter your name:
<asp:TextBox id=”txt1″ runat=”server” />
<asp:Button OnClick=”submit” Text=”Submit” runat=”server” />
<p><asp:Label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

এই স্ক্রিপ্টের ভিতর একটি TextBox কন্ট্রোল, একটি বাটন কন্ট্রোল এবং একটি লেবেল কন্ট্রোল যোগ করা আছে । আপনি কোডগুলো ভালভাবে দেখলে বুঝতে পারবেন ।

এবার আসুন তাইলে শুধু একটি TextBox কন্ট্রোল এবং একটি লেবেল কন্ট্রোল যোগ করলে স্ক্রিপ্টটা কেমন হবে ।

<script runat=”server”>
Sub change(sender As Object, e As EventArgs)
lbl1.Text=”You changed text to ” & txt1.Text
End Sub
</script>

<html>
<body>

<form runat=”server”>
Enter your name:
<asp:TextBox id=”txt1″ runat=”server”
text=”Hello World!”
ontextchanged=”change” autopostback=”true”/>
<p><asp:Label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

আপনি যখন এই .aspx ফাইলের TextBox মান পরিবর্তন করবেন অথবা TextBox এর বাইরে ক্লিক করবেন অথবা Tab key চাপবেন তখন এই সাবরুটিনের মানগুলো সম্পাদন করে দেখাবে ।

উপরের উদাহরণ দুটো একটু ভালভাবে খেয়াল করলে আমাদের কোডগুলো বুঝতে হবে । তাই একটু সময় বেশি নিয়ে ভালভাবে চর্চা করতে থাকুন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৬]:: ASP.NET Web Forms দিয়ে একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৬]:: ASP.NET Web Forms দিয়ে একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা শিখেছিলাম ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার । আজ আমরা শিখবো একসাথে ফর্মের অনেক কোডের নিয়ন্ত্রণ । এজন্য আগে আপনাকে ViewState এর নিয়ন্ত্রণ সম্পর্কে জানতে হবে ।

ViewState এর নিয়ন্ত্রণ
যখন একটি ফর্ম classic ASP আকারে নিবেদন করা হয় তখন ফর্মের সকল মান চলে যায় । ধরুন আপনি একটি ফর্মের সাথে অনেক তথ্য যোগ করে পাঠালেন আর এরর রিপোর্ট আসলো । তাহলে বুঝতেই পারছেন আপনার কেমন মেজাজ গরম হবে । আপনার মেজাজ গরম না হলেও আমার কিন্তু খুব মেজাজ গরম হবে । তাই আবার ব্যাক করে এসে দেখলেন আবার সব ফর্ম পূরণ করা লাগছে । তাহলে বুঝতে হবে এই সাইট আপনার ViewState পুরাপুরি নিয়ন্ত্রণ করতে পারেনি ।

আবার অনেক সাইটে দেখবেন এমন এরর রিপোর্ট দেখালেও ব্যাক করলে ফর্মে আপনার পূরণ করা সকল তথ্য দেখতে পারবেন । এটা কে করলো? তাইতো । খুব খুশি তাই নাহ? এটা ঐ পেজের ASP .NET ধারণ করে রেখেছে । তার মানে ঐ পেজের ViewState পুরাপুরি নিয়ন্ত্রণ করতে সক্ষম হয়েছে । ঐ পেজে একটা <form runat=”server”> ট্যাগ হিডেন করা আছে যা আপনার সকল তথ্য সংরক্ষণ করে রেখেছে । তাহলে আসুন দেখি ঐ পেজের সোর্স কোড কেমন হয়ঃ

<form name=”_ctl0″ method=”post” action=”page.aspx” id=”_ctl0″>
<input type=”hidden” name=”__VIEWSTATE”
value=”dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=” />

…..some code

form>

ViewState এর নিয়ন্ত্রণ হলো ASP.NET Web Forms এর ডিফল্ট সেটিংস । আপনি যদি এটাকে নিয়ন্ত্রণ না করতে চান তাহলে .aspx পেজের উপরে একটি <%@ Page EnableViewState=”false” %> অথবা EnableViewState=”false” এই ট্যাগ যোগ করতে পারেন ।

তাহলে দেখেন পুরাতন পদ্ধতিতে কোডগুলো কেমন দেখায়ঃ

<html>
<body>

<form action=”demo_classicasp.aspx” method=”post”>
Your name: <input type=”text” name=”fname” size=”20″>
<input type=”submit” value=”Submit”>
</form>
<%
dim fname
fname=Request.Form(“fname”)
If fname<>”” Then
Response.Write(“Hello ” & fname & “!”)
End If
%>

</body>
</html>

এটা হল পুরাতন পদ্ধতি যাতে আপনি যখন সাবমিট করবেন তখন এর ভিতরকার কোডগুলো অন্তর্নিহিত থাকবে ।

তাহলে এইবার নতুন পদ্ধতিটা দেখে নেই যে কেমন হবে কোডটাঃ

<script runat=”server”>
Sub submit(sender As Object, e As EventArgs)
lbl1.Text=”Hello ” & txt1.Text & “!”
End Sub
</script>

<html>
<body>

<form runat=”server”>
Your name: <asp:TextBox id=”txt1″ runat=”server” />
<asp:Button OnClick=”submit” Text=”Submit” runat=”server” />
<p><asp:Label id=”lbl1″ runat=”server” /></p>
</form>

</body>
</html>

আপনি এই নতুন পুরাতন দুই পদ্ধতিতেই একটি ফর্মের সকল কোড নিয়ন্ত্রণ করতে পারবেন । যেটা আপনার সুবিধা হবে সেটাই প্র্যাকটিস করবেন । তাহলে আজ এটাই শিখতে থাকুন ভালো করে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৫]:: ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৫]:: ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার
লেখকঃ মোস্তাফিজুর ফিরোজ ।

কি খবর সবার? আজ আমরা ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগের ব্যবহার শিখবো ।

ASP.NET Web Forms দিয়ে এইচটিএমএল ফর্ম ট্যাগ
সকল সার্ভারের কন্ট্রোলের জন্য একটি <form> ট্যাগ ব্যবহার করা হয় । আর এই

ট্যাগের ভিতর একটা runat=”server” উপাদান থাকে । এই runat=”server” নির্দেশ করে এই ফর্মটা অবশ্যই সার্ভারে প্রসেসড হবে । এটা আরো নির্দেশ করে যে সার্ভারে থাকা সকল স্ক্রিপ্ট এই সার্ভারেই নিয়ন্ত্রিত হবে ।

<form runat=”server”>

…HTML + server controls

</form>

এই ফর্মের সবকিছুই পেজ নিজে নিয়ন্ত্রিত করবে । আপনি চেঞ্জ করে দিলেও এটা ওর নিজের মতই কাজ করবে। আপনি যদি নাম এবং আইডি এট্রিবিউট উল্লেখ করে না দেন তাহলে ASP.NET নির্ধারণ করে নিবে ।

একটি .aspx পেজে মাত্র একটি

কন্ট্রোল ট্যাগ থাকবে ।

আপনি যদি .aspx পেজের সোর্স কোডে দেখেন ফর্মের কোনো নাম, কাজ অথবা আইডি এট্রিবিউট উল্লেখ করা না থাকে তাহলে এটাতে ASP.NET নিজে অ্যাড করে নিবে যা দেখতে নিচের কোডের মত হবে ।

<form name=”_ctl0″ method=”post” action=”page.aspx” id=”_ctl0″>

…some code

</form>

একটি ফর্ম সাবমিট
একটি বাটনে ক্লিকের মাধ্যমে আপনি সাধারণত ফর্ম সাবমিট করতে পারবেন । বাটন সার্ভার কোডটি নিচের মত হয়ঃ

<asp:Button id=”id” text=”label” OnClick=”sub” runat=”server” />

এখানে id এট্রিবিউট এই বাটনের জন্য একটা ইউনিক নাম এবং text এট্রিবিউট একটি নির্দিষ্ট লেবেলকে নির্দেশ করে । আর OnClick ইভেন্ট একটি subroutine কে সম্পাদিত হওয়ার জন্য নির্দেশ করবে ।

আজ তাহলে ফর্ম সাবমিট পর্যন্তই থাক । পরের পর্বে শিখবো আরো নতুন কিছু ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৪]:: ASP.NET Web Forms দিয়ে ইভেন্ট হ্যান্ডেল

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৪]:: ASP.NET Web Forms দিয়ে ইভেন্ট হ্যান্ডেল
লেখকঃ মোস্তাফিজুর ফিরোজ ।

কেমন আছেন সবাই? টিউটোরিয়াল প্র্যাকটিস সবার কেমন চলছে ? আশাকরি অনেক ভালো । আর না বুঝতে পারলে কমেন্ট করতে কিন্তু ভুলবেন না । তাহলে কিন্তু না বুঝতে পারলে আপনারই ক্ষতি বেশি হবে । আজ আমি দেখাবো ASP.NET Web Forms দিয়ে কিভাবে ইভেন্ট হ্যান্ডেল করা যায় ।

ইভেন্ট হ্যান্ডেল কি?
আসলেই তো ইভেন্ট হ্যান্ডেলটা কি? হুম । টাইটেল টায় যদি না বুঝেন আগে তাহলে ভিতরে কি শেখানো হবে তা বুঝবেন কিভাবে তাই নাহ ।
একটা ইভেন্টে দেয়া কোডগুলোকে রুটিন মাফিক সম্পাদিত করাই হলো ইভেন্ট হ্যান্ডেল । আর তাই এই ASP.NET Web Forms কে এখানে বলা হয় ইভেন্ট হ্যান্ডেলার । তাই একটি ইভেন্ট হ্যান্ডেল হলো একটি সাবরুটিন(subroutine) ।

আসুন একটা কোড এর ঊদাহরণ থেকে দেখিঃ

<%
lbl1.Text=”The date and time is ” & now()
%>

<html>
<body>
<form runat=”server”>
<h3><asp:label id=”lbl1″ runat=”server” /></h3>
form>
</body>
</html>

এখন যদি এই কোডটা আপনাকে দেখিয়ে বলা হয় এই কোডটা কখন সম্পাদিত হবে তাহলে এর উত্তর অবশ্যই হবে আপনি জানেন না তাই নাহ । :P
ভয় নেই আপনাকে আর না জেনে থাকা লাগবে না । আস্তে আস্তে সব বুঝিয়ে দিচ্ছি ।

পেজ লোড ইভেন্ট
পেজ লোড (Page_Load) ইভেন্ট হলো অনেকগুলো ইভেন্টের সমষ্টি যেটা ASP.NET কে বুঝতে সাহায্য করে থাকে । যখন একটি পেজ লোড হয় তখন পেজ লোড (Page_Load) ইভেন্ট কাজ শুরু করে দেয় । ASP.NET অটোমেটিক্যালি তার সাবরুটিন পেজ লোড (subroutine Page_Load) কে সংকেত প্রেরণ করে এবং তার কোডগুলো এর সাথে সম্পাদিত হয় ।
আসুন একটা উদাহরণ দেখি তাহলেই বুঝতে পারবেন ।

<script runat=”server”>
Sub Page_Load
lbl1.Text=”The date and time is ” & now()
End Sub
</script>

<html>
<body>
<form runat=”server”>
<h3><asp:label id=”lbl1″ runat=”server” /></h3>
</form>
</body>
</html>

মনে রাখবেন পেজ লোড ইভেন্ট অন্য কোনো অবজেক্টকে রেফারেন্স দেয় না এবং এই ইভেন্টগুলোর একটা রুটিন করে সম্পাদন করে, তাই এদের ভিতর কোনো সমস্যা হয় না ।

Page.IsPostBack Property
যখনই পেজ লোড করা হয় তখনই পেজ লোড সাবরুটিন প্রতিবার রান করে । যদি আপনি এই Page_Load subroutine কে মাত্র প্রথমবারের জন্য রান করাতে চান তাহলে আপনাকে এই কোডের ভিতর Page.IsPostBack property ব্যবহার করতে হবে । যদি এই Page.IsPostBack property ভুল হয় তাহলে পেজটি শুধু প্রথমবার লোড নিবে । আর যদি ঠিক হয় তাহলে পেজটি সার্ভারে পোস্টেড ব্যাক করবে ।
একটা উদাহরণ থেকেই না হয় বুঝি ঃ

<script runat=”server”>
Sub Page_Load
if Not Page.IsPostBack then
lbl1.Text=”The date and time is ” & now()
end if
End Sub

Sub submit(s As Object, e As EventArgs)
lbl2.Text=”Hello World!”
End Sub
</script>

<html>
<body>
<form runat=”server”>
<h3><asp:label id=”lbl1″ runat=”server” /></h3>
<h3><asp:label id=”lbl2″ runat=”server” /></h3>
<asp:button text=”Submit” onclick=”submit” runat=”server” />
</form>
</body>
</html>

এই উদাহরণে যখন পেজটি লোড নিবে তখন “The date and time is….” ম্যাসেজটি প্রথমবার লোড নিবে । যখন একজন ইউজার সাবমিট বাটনে ক্লিক করবে তখন “Hello World!” ম্যসেজটিকে সাবরুটিন লোড হয়ে দ্বিতীয় লেবেলে দেখাবে । কিন্তু প্রথম লেবেলের তারিখ এবং সময়ের পরিবর্তন করবে না । তাহলে এর আসল কাজ টা বুঝতে পারলেন । দেখা হবে পরের পোস্টে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ৩]:: ASP.NET Web Forms দিয়ে সার্ভার কনট্রোল

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ৩]:: ASP.NET Web Forms দিয়ে সার্ভার কনট্রোল
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আজ আমরা দেখবো ASP.NET Web Forms দিয়ে কিভাবে সার্ভার কনট্রোল করা হয় । যেটার মাধ্যমে আমরা বুঝতে পারবো Classic ASP এর তুলনায় ASP.NET কতটা শক্তিশালী ।

সার্ভার কনট্রোল হলো ট্যাগ যেটা সার্ভারকে বুঝাতে সাহায্য করে ।

Classic ASP এর লিমিটেশনঃ

<html>
<body bgcolor=”yellow”>
<center>
<h2>Hello Firoz.me!</h2>
<p><%Response.Write(now())%></p>
</center>
</body>
</html>

এই কোড কিন্তু আগের পর্বেই দেখিয়েছি । এই কোডই Classic ASP এর লিমিটেশন তুলে ধরবে । যেখানে আউটপুট দেখানোর দরকার হয় সেখানে code block প্রতিস্থাপন করা হয় । এই Classic ASP তে executable code কে এইচটিএমএল থেকে আলাদা করা যায় না । এটাই পেজকে পড়া এবং নিয়ন্ত্রণ করাকে আরো বেশি কঠিন করে ফেলে ।

ASP.NET দিয়ে সার্ভার কনট্রোল
ASP.NET সার্ভারের “spaghetti-code” সমস্যার সমাধান করে । আগেই বলেছি, সার্ভার কনট্রোল হলো ট্যাগ যেটা সার্ভারকে বুঝাতে সাহায্য করে । তিন প্রকারের সার্ভার কন্ট্রোল আছে ।
১। HTML Server Controls – Traditional HTML tags
২। Web Server Controls – New ASP.NET tags
৩। Validation Server Controls – For input validation

ASP.NET দিয়ে এইচটিএমএল সার্ভার কনট্রোল
এইচটিএমএল সার্ভার কনট্রোল হলো এইচটিএমএল ট্যাগ যেটা সার্ভারকে বুঝাতে সাহায্য করে ।
ASP.NET এ এইচটিএমএল এলিমেন্টস ফাইলগুলো টেক্সট হিসেবে আচরণ করে । এই এলিমেন্টসকে প্রোগ্রাম হিসেবে কাজ করানোর জন্য =”server” ট্যাগ এইচটিএমএল এলিমেন্টস এ জোগ করা হয় । এই ট্যাগ সার্ভার কন্ট্রোল করার জন্য যোগ করা হয় । এই ট্যাগটা run time এ সুনিপুনভাবে সার্ভার কনট্রোল করে ।

<script runat=”server”>
Sub Page_Load
link1.HRef=”http://www.firoz.me”
End Sub
</script>

<html>
<body>

<form runat=”server”>
<a id=”link1″ runat=”server”>Visit Firoz.me!</a>
form>

</body>
</html>

উপরের executable code এইচটিএমএল এর সাথে রুপান্তরিত হয় ।

ASP.NET দিয়ে ওয়েব সার্ভার কনট্রোল
ওয়েব সার্ভার কনট্রোল হলো স্পেশাল ASP.NET ট্যাগ যেটা সার্ভারকে বুঝাতে সাহায্য করে ।
ওয়েব সার্ভার তৈরির জন্য একটা syntax ব্যবহার করা হয় ।
<asp:control_name id=”some_id” runat=”server” />

তাহলে কোডটি দাড়াচ্ছে ঃ
<script runat=”server”>
Sub submit(Source As Object, e As EventArgs)
button1.Text=”You clicked me!”
End Sub
</script>

<html>
<body>

<form runat=”server”>
<asp:Button id=”button1″ Text=”Click me!”
runat=”server” OnClick=”submit”/>
</form>

</body>
</html>

উপরের কোডে আমরা .aspx ফাইলে একটা বাটন সার্ভার কন্ট্রোল ঘোষণা করা হয় । এরপর আমরা একটা event handler তৈরী করি যেটা Click event কে টেক্সট থেকে একটা বাটনে পরিণত করে ।

ASP.NET দিয়ে সার্ভার কনট্রোল বৈধকরণ
সার্ভার কনট্রোল বৈধকরণ করার জন্য নতুন করে syntax যোগ করতে হয় ।
<asp:control_name id=”some_id” runat=”server” />

তাহলে কোডটি দাড়াচ্ছে ঃ

<html>
<body>

<form runat=”server”>
<p>Enter a number from 1 to 100:
<asp:TextBox id=”tbox1″ runat=”server” />
<br /><br />
<asp:Button Text=”Submit” runat=”server” />
</p>

<p>
<asp:RangeValidator
ControlToValidate=”tbox1″
MinimumValue=”1″
MaximumValue=”100″
Type=”Integer”
Text=”The value must be from 1 to 100!”
runat=”server” />
</p>
</form>

</body>
</html>

কি মাথা ঘুরছে তাই নাহ? তাহলে আজ এই পর্যন্তই থাক । এটুকুই ভালভাবে প্রাকটিস করতে থাকুন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ২]:: Web Forms দিয়ে এইচটিএমএল পেজ তৈরী

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ২]:: Web Forms দিয়ে এইচটিএমএল পেজ তৈরী

লেখকঃ মোস্তাফিজুর ফিরোজ ।

 

গত পর্বে আমরা ASP.NET এর ব্যাসিক ধারণা নিয়েছিলাম । আজ আমরা শিখবো কিভাবে ASP.NET Web Forms দিয়ে এইচটিএমএল পেজ তৈরী করা যায় ।

Hello Firoz পেজ তৈরী
আমরা আগে দেখিয়েছিলাম এইচটিএমএল দিয়ে কিভাবে একটা ওয়েবপেজ তৈরী করতে হয় । এইচটিএমএল আর ASP.NET একইভাবে কাজ করে । একটা সিম্পল ASP.NET পেজ এবং একটি এইচটিএমএল পেজ দেখতে একই রকম । আসেন তার একটা পরীক্ষা করে নিজেই দেখে নেই ।

<html>
<body bgcolor=”yellow”>
<center>
<h2>Hello Firoz</h2>
</center>
</body>
</html>

এবার এটাকে নোটপ্যাড দিয়ে লিখে firstpage.htm নামে সেভ করি । এবার এটাকে আপনার ব্রাউজার এর সাহায্যে ওপেন করে দেখুন কেমন দেখায় ।

আবার উপরের কোডটুকু নোটপ্যাডে আবার লিখে firstpage.aspx ফরমেটে সেভ করুন । তারপর আবার এটাকে আপনার ব্রাউজার দিয়ে ওপেন করে দেখুন কেমন দেখায়। পার্থক্যটা আপনি নিজেই ভালো বুঝতে পারবেন ।

এভাবে খুব সহজে আমরা একটা এইচটিএমএল পেজকে ASP.NET পেজে কনভার্ট করতে পারি ।

এটা কিভাবে কাজ করে?
গঠনগত দিক দিয়ে একটি ASP.NET পেজ এবং একটি এইচটিএমএল পেজ একই ।
একটি এইচটিএমএল পেজের শেষের এক্সটেনশন থাকে .htm । যখন একটি ব্রাউজার সার্ভার একটি এইচটিএমএল পেজ ওপেন করতে যায় তখন সার্ভার কোনো মডিফিকেশন ছাড়াই ঐ পেজটিকে ব্রাউজারে পাঠিয়ে দেয় ।

অপরদিকে একটি ASP.NET পেজের শেষের এক্সটেনশন থাকে .aspx । যখন একটি ব্রাউজার সার্ভার একটি ASP.NET পেজ ওপেন করতে যায় তখন সার্ভার আগে executable code থাকলে সেটাকে প্রসেস করে তারপর তার রেজাল্ট ঐ ব্রাউজারে পাঠিয়ে দেয় । আর যদি কোনো executable code না থাকে তাহলে নরম্যালি রেজাল্ট দেখায় ।

এবার আমরা কিছু executable code যোগ করে static HTML pages এবং dynamic ASP pages এর পার্থক্য দেখবো । তার আগে জানি dynamic ASP কি । Active Server Pages (ASP) তৈরী হয়েছে কিছু বছর আগে যেটা HTML pages এর সাথে ব্যবহার করা হত । আগের ভার্সনের ASP কে বলা হত Classic ASP । ASP.NET পুরাপুরি Classic ASP এর সাথে সুসঙ্গত নয় । কিন্তু অধিকাংশ Classic ASP ভালভাবেই ASP.NET পেজের সাথে কাজ করে ।

Classic ASP দিয়ে ডায়নামিক পেজ তৈরী
ASP কিভাবে ডায়নামিক কনটেন্ট এর পেজকে দেখায় সেটা বুঝানোর জন্য আগের উদাহরণের সাথে আমরা কিছু executable code যোগ করবো ।
<html>
<body bgcolor=”yellow”>
<center>
<h2>Hello Firoz.me!</h2>
<p><%Response.Write(Now())%></p>
</center>
</body>
</html>

<% –%> এই ট্যাগের ভিতরকার কোড সার্ভারে সম্পাদিত হবে ।
Response.Write হলো ASP code । এটা এইচটিএমএল এর আউটপুট স্ট্রিমের সাথে কাজ করবে ।
Now() হল একটি ফাংশন যেটা সার্ভারের বর্তমান তারিখ এবং সময় দেখাবে ।
এটা পর্যবেক্ষণের জন্য আমরা dynpage.asp নামে সেভ করে ব্রাউজারে ওপেন করবো ।

ASP .NET দিয়ে ডায়নামিক পেজ তৈরী
নিচের কোডটুকু নোটপ্যাডে লিখে dynpage.aspx নামে সেভ করি ।

<html>
<body bgcolor=”yellow”>
<center>
<h2>Hello Firoz.me!</h2>
<p><%Response.Write(Now())%></p>
</center>
</body>
</html>

এবার এটা ব্রাউজারে ওপেন করে নিজেই পার্থক্যটা দেখি ।

ASP.NET vs Classic ASP
পূর্বের উদাহরণটা ASP.NET এবং Classic ASP এর তেমন কোনো পার্থক্য দেখাতে পারে না । আধুনিক উদাহরণে এদের কোনো পার্থক্য নেই ।

পরবর্তী পোস্টে আমরা দেখাবো Classic ASP এর তুলনায় ASP.NET কতটা শক্তিশালী । তত সময় আমাদের সাথেই থাকুন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ১] : ব্যাসিক ধারণা : ASP.NET Web Forms – Tutorial

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ১] : ব্যাসিক ধারণা

লেখকঃ মোস্তাফিজুর ফিরোজ ।

কেমন আছেন সবাই? নিশ্চয়ই ভালো । ভালো থাকলেই ভালো । এখন যতটুকু ভালো আছেন, আমি যে খবর এখন আপনাদের দিব শুনলেই আরো বেশি ভালো হয়ে যাবেন । কি সেই খবর? অপেক্ষার পালা শেষ । এতদিন আপনাদের শুধু ওয়েব-ডিজাইনের বিভিন্ন শাখার ব্যাসিক ধারণা দিয়েছি । আজ থেকে আপনাদের সাথে শুরু করবো ASP.NET এর ধারাবাহিক টিউটোরিয়াল । কি আপনি রেডি তো? রেডি না থাকলে ঝটপট রেডি হয়ে নিন । কারণ আজ আপনাদের সাথে শেয়ার করবো ASP.NET এর ব্যাসিক ধারণা ।

ASP.NET কি?
ASP.NET একটি ডেভেলপমেন্ট ফ্রেমওয়ার্ক । এটি এইচটিএমএল, সিএসএস, জাভাস্ক্রিপ্ট এবং সার্ভার স্ক্রিপ্ট দিয়ে ওয়েবপেজ তৈরিতে ব্যবহার করা হয় । যার সাহায্যে আপনি তৈরী করতে পারবেন পুরো একটি ওয়েবসাইট ।

ASP.NET কি সাপোর্ট করে ?
ASP.NET তিনটি ডেভেলপমেন্ট মডেল সাপোর্ট করে ।
১। Web Pages
২। MVC (Model View Controller)
৩। Web Forms

এখন আপাতত এই তিনটি মডেল এর নাম মনে রাখলেই চলবে । পরে এগুলো নিয়ে আরো বিস্তারিত আলোচনা করবো ।

কোথা থেকে শুরু করবো ?
সবার কাছে ASP.NET শেখার শুরুতে মনে প্রশ্ন থাকে কোথা থেকে শুরু করবো । কারণ সব কিছু একসাথে শিখতে গেলে জগা-খিচুড়ি অবস্থা হয়ে যাবে । তাই আমরা Web Forms থেকেই শুরু করবো ।

Web Forms কি ?
Web Forms হলো তিনটি প্রোগ্রামিং মডেলের সমন্বয় । প্রোগ্রামিং মডেল তিনটি হলোঃ
১। ASP.NET web sites এবং web applications তৈরী ।
২। Web Pages
৩। MVC (Model, View, Controller)

Web Forms হলো সবচেয়ে পুরাতন প্রোগ্রামিং মডেল । এটা HTML, server controls এবং server code দিয়ে তৈরী করা ওয়েবপেজের চালনা করে থাকে ।
Web Forms সার্ভারে সংকলন এবং সম্পাদন করা থাকে । এটি সার্ভারে থেকেই এইচটিএমএল কে জেনারেট করে ওয়েবপেজ দেখাতে সাহায্য করে থাকে ।

Web Forms এর একটি ডেভেলপমেন্ট টুলস হলো Visual Studio Express । Visual Studio Express হলো Microsoft Visual Studio এর একটি ফ্রী ভার্সন । আপনি যদি Visual Studio Express আপনার কম্পিউটারে ইন্সটল করে থাকেন তাহলে আপনি পরবর্তী টিউটোরিয়ালে অনেক ভালো বুঝতে পারবেন ।
কোথায় পাবেন এই Visual Studio Express?
আপনি নিচের ঠিকানা থেকে ডাউনলোড করে নিতে পারেনঃ

১। Visual Web Developer 2012 (If you have Windows 7 or Windows 8)ঃ http://www.microsoft.com/web/handlers/webpi.ashx?command=getinstallerredirect&appid=VWDOrVs11AzurePack

২। Visual Web Developer 2010 (If you have Windows Vista or XP)ঃ http://www.microsoft.com/web/gallery/install.aspx?appid=VWDorVS2010SP1Pack

আপনার পিসির কনফিগারেশন অনুয়ায়ী আপনার Visual Studio Express টি ডাউনলোড করে নিন ।

আজ এই পর্যন্ত । কোথাও না বুঝতে পারলে কমেন্ট করতে কিন্তু ভুলবেন না । দেখা হবে পরবর্তী পোস্টে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ২২]:: ASP.NET Web Forms এর Validation Server Controls ট্যাগের বর্ণনা

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ২২]:: ASP.NET Web Forms এর Validation Server Controls ট্যাগের বর্ণনা
লেখকঃ মোস্তাফিজুর ফিরোজ ।

কেমন শিখলেন ASP.NET ? শিখতে শিখতে ASP.NET এর সবই শিখে ফেললাম । আজ আমরা ASP.NET এর শেষ পর্বে পৌছে গেছি । তাই আজ ASP.NET Web Forms এর Validation Server Controls ট্যাগের বর্ণনা শিখলেই ASP.NET এর সবই শেখা হয়ে যাবে ।

Validation Server Controls
Validation Server Control সাধারণত ইনপুট কনট্রোলের ডাটার ভেলিডেশন করার জন্য ব্যবহার করা হয় । যদি ডাটা ভেলিডেশন না হয় তাহলে ব্যবহারকারীরা এরর মেসেজ দেখতে পায় ।

ভেলিডেশন সার্ভার কনট্রোলের জন্য নিচের syntax ব্যবহার করা হয় ।
<asp:control_name id=”some_id” runat=”server” />

Validation Server Control ট্যাগের বর্ণনা

CompareValidator = ইনপুট কনট্রোলের ভেলু নির্ধারণ করে ।
CustomValidator = মেথড লিখতে সাহায্য করে যার সাহায্যে ভেলু প্রবেশ করানো যায় ।
RangeValidator = ব্যবহারকারীরা যে ভেলু প্রবেশ করায় তার মাঝামাঝি দুটো ভেলু হিসেব করে ।
RegularExpressionValidator = যেকোনো ভ্যালু এর সাথে এটা মিলে যাবে তার নিশ্চয়তা প্রদান করা হয় ।
RequiredFieldValidator = ইনপুট কনট্রোলের জন্য একটা জায়গা তৈরি করে ।
ValidationSummary = একটি পেজের সকল validation errors এর রিপোর্ট প্রদর্শন করে ।

আর এর ভিতরেই কিন্তু ASP.NET এর সকল পর্ব শেষ হয়ে গেলো । আমি আমার সাধ্য মত আপনাদের বোঝানোর চেষ্টা করেছি । কতটুকু বুঝতে পারলেন সেটা আপনাদের উপরই নির্ভর করবে । আর আপনাদের শেখার উপরই নির্ভর করবে আমার সকল টিউটোরিয়ালের সার্থকতা । তাই কোথাও না বুঝতে পারলে কমেন্ট করতে ভুলবেন না । দেখা হবে আবার কোনো নতুন ধারাবাহিক টিউটোরিয়াল নিয়ে । ততদিন এটা প্র্যাকটিস করতে থাকুন । ভাল থাকবেন এবং আমার জন্যও দোয়া করবেন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ২১]:: ASP.NET Web Forms এর Web Server Controls ট্যাগের বর্ণনা

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ২১]:: ASP.NET Web Forms এর Web Server Controls ট্যাগের বর্ণনা
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা শিখেছিলাম ASP.NET Web Forms এর HTML Server Control ট্যাগের বর্ণনা । আজ আমরা শিখবো ASP.NET Web Forms এর Web Server Controls ট্যাগের বর্ণনা । আপনি রেডি তো ? ;)

Web Server Controls
Web Server Controls হল সার্ভারের বোঝার জন্য স্পেশাল ASP.NET ট্যাগ ।
HTML server controls এর মত Web Server Controls এ ও HTML ইলিমেন্টস গুলো ASP.NET এর ভিতর সাধারণ টেক্সট আকারেই থাকে । এটাকে প্রোগামেবল করার জন্য এতে runat=”server” এলিমেন্ট যোগ করা হয়ে থাকে । এখানে runat=”server” এলিমেন্ট প্রকাশ করে এটা একটা সার্ভার কনট্রোল ।
Web Server Controls তৈরী করার জন্য নিচের মত একটা syntax ব্যবহার করা হয় ।
<asp:control_name id=”some_id” runat=”server” />

Web Server Control ট্যাগের বর্ণনা

AdRotator = ছবিগুলোর ধারাবাহিকতা দেখায় ।
Button = পুশ বাটন দেখায় ।
Calendar = একটি ক্যালেন্ডার দেখায় ।
CalendarDay = একটি দিনের ক্যালেন্ডার কনট্রোল দেখায় ।
CheckBox = একটি চেক বক্স প্রদর্শন করে ।
CheckBoxList = multi-selection check box group তৈরী করে ।
DataGrid = একটি গ্রিডে ডাটার উৎসের ক্ষেত্র দেখায় ।
DataList = টেমপ্লেট ব্যবহার করে ডাটা উৎসের আইটেমগুলোকে দেখায় ।
DropDownList = drop-down list তৈরী করে ।
HyperLink = HyperLink তৈরি করে ।
Image = ছবি প্রদর্শন করে ।
ImageButton = clickable image তৈরি করে ।
Label = প্রোগ্রামাবেল static content দেখায় ।
LinkButton = hyperlink button তৈরি করে ।
ListBox = single- or multi-selection drop-down list তৈরি করে ।
ListItem = লিস্টের ভিতর আইটেম তৈরি করে ।
Literal = প্রোগ্রামাবেল static content দেখায় ।
Panel = অন্যদের কন্ট্রোল করে ।
PlaceHolder = কোড জমা রাখার জন্য জায়গা রেখে দেয় ।
RadioButton = Radio Button তৈরি করে ।
RadioButtonList = Radio Button গ্রুপ তৈরি করে ।
BulletedList = বুলেট ফরমেটে লিস্ট তৈরি করে ।
Repeater = রিপিট লিস্ট তৈরি করে কনট্রোলের জন্য ।
Style = কন্ট্রোলের স্টাইল তৈরি করে ,
Table = টেবিল তৈরি করে ।
TableCell = টেবিলের একক সেল তৈরি করে ।
TableRow = টেবিলের সারি তৈরি করে ।
TextBox = TextBox তৈরি করে ।
Xml = Xml ফাইল দেখায় ।

আপনারা এই ট্যাগ গুলো এবং এদের কাজ মুখস্থ করে ফেলার চেষ্টা করবেন । তাহলে আপনাদের কোডিং করতে অনেক সুবিধা হবে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ২০]:: ASP.NET Web Forms এর HTML Server Control ট্যাগের বর্ণনা

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ২০]:: ASP.NET Web Forms এর HTML Server Control ট্যাগের বর্ণনা
লেখকঃ মোস্তাফিজুর ফিরোজ ।

শিখতে শিখতে আমরা কিন্তু প্রায় শেষ পর্যায়ে । আজ আমরা শিখবো ASP.NET Web Forms এর HTML Server Control ট্যাগের বর্ণনা করা ।

HTML Server Controls
HTML সার্ভার কনট্রোল হলো HTML ট্যাগ যেটা সার্ভারকে বুঝাতে সাহায্য করে ।
HTML ইলিমেন্টস গুলো ASP.NET এর ভিতর সাধারণ টেক্সট আকারেই থাকে । এটাকে প্রোগামেবল করার জন্য এতে runat=”server” এলিমেন্ট যোগ করা হয়ে থাকে । এখানে runat=”server” এলিমেন্ট প্রকাশ করে এটা একটা সার্ভার কনট্রোল ।

উল্লেখ্য, সকল এইচটিএমএল সার্ভার কনট্রোল গুলো runat=”server” এট্রিবিউটের সাথে <form> ট্যাগ আকারে থাকতে হবে ।
ASP.NET এর ভিতরকার সকল এইচটিএমএল এলিমেন্টস গুলো ভালভাবে ট্যাগ দ্বারা শেষ হতে হবে ।

HTML Server Control ট্যাগের বর্ণনা

HtmlAnchor = HTML element কনট্রোল করে ।
HtmlButton =
HtmlForm =

HTML element কনট্রোল করে ।

HtmlGeneric = ,

, প্রভৃতি HTML server কনট্রোল করে ।

HtmlImage = HTML element কনট্রোল করে ।
HtmlInputButton = , , এবং HTML elements কনট্রোল করে ।
HtmlInputCheckBox = HTML element কনট্রোল করে ।
HtmlInputFile = HTML element কনট্রোল করে ।
HtmlInputHidden = HTML element কনট্রোল করে ।
HtmlInputImage = HTML element কনট্রোল করে ।
HtmlInputRadioButton = HTML element কনট্রোল করে ।
HtmlInputText = এবং HTML elements কনট্রোল করে ।
HtmlSelect =
HtmlTable = HTML element কনট্রোল করে ।
HtmlTableCell = এবং HTML elements কনট্রোল করে ।
HtmlTableRow = HTML element কনট্রোল করে ।
HtmlTextArea =

আপনারা এই ট্যাগ গুলো এবং এদের কাজ মুখস্থ করে ফেলার চেষ্টা করবেন । তাহলে আপনাদের কোডিং করতে অনেক সুবিধা হবে ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৯]:: ASP.NET Web Forms এর বিভিন্ন উদাহরণ

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৯]:: ASP.NET Web Forms এর বিভিন্ন উদাহরণ
লেখকঃ মোস্তাফিজুর ফিরোজ ।

আপনারা কতদূর শিখতে পেরেছেন জানিনা । বেশি বেশি করে প্র্যাকটিস করলে সব সমস্যা আর ভুলগুলো দূর হয়ে যাবে । তাই যত পারবেন বেশি বেশি করে প্র্যাকটিস করুন। নিজে নিজে কোডগুলো লেখা শিখুন । আজ আমি ASP.NET Web Forms এর বিভিন্ন উদাহরণ দেখাবো । আপনি এখান থেকে দেখলেই সব বুঝতে পারবেন ।

ASP.NET HTML Controls

HTMLAnchor ঃ http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlanchor
HTMLButton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlbutton
HTMLImage : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlimage
HTMLImage 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlimage2
HTMLInputbutton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlinputbutton
HTMLInputCheckbox : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlinputcheckbox
HTMLInputHidden : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlinputhidden
HTMLInputImage : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlinputimage
HTMLInputRadiobutton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmlinputradiobutton
HTMLTable : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmltable
HTMLTable 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmltable2
HTMLTextarea : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_htmltextarea

ASP.NET Web Controls

AdRotator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_adrotator
Button : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_button
Button 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_button2
Calendar : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_calendar
Calendar 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_calendar
Calendar 3 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_calendar3
Checkbox : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_checkbox
CheckboxList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_checkboxlist
DataList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_datalist1
DataList with styles : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_datalist2
DataList with : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_datalist3
DropdownList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_dropdownlist
Hyperlink : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_hyperlink
Image : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_image
ImageButton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_imagebutton
Label : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_label
LinkButton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_linkbutton
Listbox : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_listbox
Literal : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_literal
Literal 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_literal2
Panel : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_panel
Radiobutton : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_radiobutton
RadiobuttonList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_radiobuttonlist
Repeater : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_repeater1
Repeater with <AlternatingItemTemplate> : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_repeater2
Repeater with <SeparatorTemplate> : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_repeater3
Table : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_table
Table 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_table2
Textbox : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_textbox
Textbox 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_textbox2
Textbox 3 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_textbox3
XML : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_xml

ASP.NET Validation Controls

CompareValidator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_comparevalidator
CompareValidator 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_comparevalidator2
CustomValidator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_customvalidator
RangeValidator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_rangevalidator
RangeValidator 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_rangevalidator2
RegularExpressionValidator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_regularexpvalidator
RequiredFieldValidator : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_reqfieldvalidator
Validationsummary : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_validationsum
Validationsummary 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_validationsum2

ASP.NET Events

Page_Load : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_pageload
Page.IsPostBack : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_pageispostback

ASP.NET Data Binding

ArrayList RadioButtonList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_arraylist_radio1
ArrayList DropDownList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_arraylist_drop1
Hashtable RadioButtonList 1 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_hashtable_radio1
Hashtable RadiobuttonList 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_hashtable_radio2
Hashtable DropDownList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_hashtable_drop1
SortedList RadioButtonList 1 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_sortedlist_radio1
SortedList RadiobuttonList 2 : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_sortedlist_radio2
SortedList DropDownList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_sortedlist_drop1
XML RadiobuttonList : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_xml_radio1

ASP.NET Database

Database connection – Bind to a Repeater control : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_dbconn_repeater
Database connection – Bind to a DataList control : http://www.w3schools.com/aspnet/showaspx.asp?filename=demo_dbconn_datalist

এগুলো সবই কিন্তু আমি আগে দেখিয়েছি । একটু মনে করে দেখুন । কি নামগুলো সব এখন পরিচিত মনে হচ্ছে নাহ? হুম । উদাহরণ গুলো দেখুন তাহলেই সব মনে পড়বে । না দেখে আবার আমাকে তাই দোষ দিবেন না কিন্তু । ;)

এখান থেকে উদাহরণ দেখে দেখে চর্চা করুন এবং তার প্রতিফলন দেখুন । সবই খুব খুব সহজ এবং অনেক অনেক মজার ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৮]:: ASP.NET Web Forms দিয়ে ওয়েবসাইট নেভিগেশন

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৮]:: ASP.NET Web Forms দিয়ে ওয়েবসাইট নেভিগেশন
লেখকঃ মোস্তাফিজুর ফিরোজ ।

গত পর্বে আমরা মাস্টার পেজ আর কনটেন্ট পেজ কি জিনিস এবং এর ব্যবহার শিখেছি । আজ আমরা শিখবো ASP.NET Web Forms দিয়ে ওয়েবপেজ নেভিগেশন ।

ওয়েবসাইট নেভিগেশন কি?
সাধারণত একটি বড় ওয়েবসাইটের মেনু নিয়ন্ত্রণ করা অনেক কঠিন এবং অনেক সময়ের ব্যাপার । তাই ASP.NET একটি ফাইলের ভিতর সব জমা করে রাখে যাতে খুব সহজে নিয়ন্ত্রণ করা যায় । এই ফাইলটিকে বলা হয় ওয়েব সাইটম্যাপ এবং এটা প্রধান ডিরেকটরীতে জমা করে রাখা হয় ।

ASP.NET তিন ধরণের নেভিগেশন কন্ট্রোল করে থাকে ।
১। Dynamic menus
২। TreeViews
৩। Site Map Path

সাইটম্যাপ ফাইল
আমরা বুঝানোর জন্য নিচের সাইটম্যাপটিকে ব্যবহার করবো ।

xml version=”1.0″ encoding=”ISO-8859-1″ ?>
<siteMap>
<siteMapNode title=”Home” url=”/aspnet/w3home.aspx”>
<siteMapNode title=”Services” url=”/aspnet/w3services.aspx”>
<siteMapNode title=”Training” url=”/aspnet/w3training.aspx”/>
<siteMapNode title=”Support” url=”/aspnet/w3support.aspx”/>
</siteMapNode>
</siteMapNode>
</siteMap>

XML file এ অবশ্যই একটি <siteMap> ট্যাগ থাকবে ।
<siteMap> ট্যাগ শুধু মাত্র একটি <siteMapNode> থাকবে ।
প্রতি <siteMapNode> এর অনেকগুলো ওয়েব পেজ থাকতে পারে ।
প্রতি <siteMapNode> পেজ টাইটেল এবং URL নির্দেশ করবে ।

উল্লেখ্য সাইটম্যাপ ফাইল রুট ডিরেক্টরিতে থাকবে এবং URL রুট ডিরেকটরী থেকে শুরু হবে ।

ডায়নামিক মেনু
<asp:Menu> নিয়ন্ত্রণ করে সাইটের একটি আদর্শ নেভিগেশন মেনু তৈরী করবে ,
কোডের উদাহরন দেখিঃ

<asp:SiteMapDataSource id=”nav1″ runat=”server” />

<form runat=”server”>
DataSourceId=”nav1″ />
form>

<asp:Menu> উদাহরণে সার্ভারের নেভিগেশন মেনু দেখাবে ।
DataSourceId সার্ভারের ডাটার উৎস দেখাবে । id=”nav1″ টি <asp:SiteMapDataSource> এর সাথে যুক্ত হতে সাহায্য়ংক্রিয়ভাবেp:SiteMapDataSource> কনট্রোল স্বয়ংক্রিয়ভাবে ডিফল্ট সাইটম্যাপের সাথে যুক্ত হবে ।

TreeView
<asp:TreeView> control নেভিগেশন মেনুর অনেকগুলো লেভেলকে একসাথে দেখাতে সাহায্য করবে । এটা + অথবা – সিম্বলের মত দেখতে হবে ।

<asp:SiteMapDataSource id=”nav1″ runat=”server” />

<form runat=”server”>
<asp:TreeView runat=”server” DataSourceId=”nav1″ />
</form>

SiteMapPath
SiteMapPath হলো নেভিগেশন প্যাথের সকল প্যাথকে প্রধান প্যাথের সাথে দেখাবে ।

<form runat=”server”>
<asp:SiteMapPath runat=”server” />
</form>

<asp:SiteMapPath> সার্ভারের সকল প্যাথকে দেখাবে ।

তাহলে আজ শিখে ফেললেন তো ASP.NET Web Forms দিয়ে ওয়েবসাইট নেভিগেশন তৈরির মুল বিষয় । এখন শুধু চর্চা করতে থাকুন ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৭]:: ASP.NET Web Forms দিয়ে সাইটের প্রধান পেজ তৈরী

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৭]:: ASP.NET Web Forms দিয়ে সাইটের প্রধান পেজ তৈরী
লেখকঃ মোস্তাফিজুর ফিরোজ ।

ব্যাসিক জিনিস গুলো শেখা কিন্তু মোটামুটি শেষ । এখন আমরা অনেক গুরুত্বপূর্ণ বিষয়গুলো শিখবো । আজ আমরা শিখবো ASP.NET Web Forms দিয়ে প্রধান পেজ তৈরী । তাহলে বুঝতেই পারছেন আজকের এই পর্বটা কতটা গুরুত্বপুর্ণ । তাই খুব মনোযোগী হন ।

প্রধান পেজ কি?
প্রধান পেজকে বলা হয় মাস্টার পেজ । এই মাস্টার পেজ আপনার ওয়েবসাইটের অন্যান্য পেজের জন্য একটা টেমপ্লেট তৈরি করে থাকে । এটা নির্দেশ করে আপনার এই ওয়েবসাইটের অন্যান্য পেজগুলো দেখতে কেমন হবে । মাস্টার পেজ নির্দেশ করে কনটেন্ট গুলো কিভাবে বিন্যস্ত হবে । এই মাস্টার পেজ এবং কনটেন্ট পেজ নিয়েই কিন্তু প্রধান ওয়েবসাইট । কনটেন্ট পেজ আপনাকে যা যা দেখাবে সেগুলো ধারণ করে রাখে ।
যখন ব্যবহারকারীরা কনটেন্ট পেজ দেখতে চায় তখন ASP.NET মাস্টার পেজকে নিয়ন্ত্রণ করে কনটেন্ট পেজের উপাদান সমূহকে মাস্টার পেজের মত লেয়াউট করে দেখায় ।

প্রধান পেজের উদাহরণ

<%@ Master %>

<html>
<body>
<h1>Standard Header From Masterpage</h1>
<asp:ContentPlaceHolder id=”CPH1″ runat=”server”>
</asp:ContentPlaceHolder>
</body>
</html>

এটা থেকে আমরা বুঝে নিবো,
মাস্টার পেজ সাধারণত HTML page যা আর বাকি পেজের মতই দেখায় ।
@ Master ট্যাগ নির্দেশ করে এটা একটা মাস্টার পেজ ।
মাষ্টার পেজ <asp:ContentPlaceHolder> টাগের মাধ্যমে কনটেন্ট গুলো ধারন করে থাকে ।
id=”CPH1″ এট্রিবিউট একইপেজে অনেক মাস্টারপেজকে নির্দেশ করে ।
মাস্টার পেজ “master1.master” নামে সেভ করা থাকে ।

কনটেন্ট পেজের উদাহরণ

<%@ Page MasterPageFile=”master1.master” %>

<asp:Content ContentPlaceHolderId=”CPH1″ runat=”server”>
<h2>Individual Content</h2>
<p>Paragraph 1</p>
<p>Paragraph 2</p>
</asp:Content>

কনটেন্ট পেজ হলো ওয়েব এর আলাদা আলাদা কনটেন্ট পেজ ।
@ Page টাগ বুঝায় এটা একটি আদর্শ কনটেন্ট পেজ ।
এটা <asp:Content> ট্যাগের মাধ্যমে মাস্টার পেজের রেফারেন্স নেয় ।
কনটেন্ট পেজ “mypage1.aspx” নামে সেভ করা থাকে ।

কনটেন্ট পেজের কনট্রোল

<%@ Page MasterPageFile=”master1.master” %>

<asp:Content ContentPlaceHolderId=”CPH1″ runat=”server”>
<h2>W3Schools</h2>
<form runat=”server”>
<asp:TextBox id=”textbox1″ runat=”server” />
<asp:Button id=”button1″ runat=”server” text=”Button” />
</form>
</asp:Content>

এই কোডের মাধ্যমে কনটেন্ট পেজের কনট্রোল করা হয় ।
কনটেন্ট পেজ নির্দেশ করে .NET কিভাবে একটি সাধারণ পেজের সাথে যুক্ত হবে ।

তাহলে বুঝলেন তো মাস্টার পেজ আর কনটেন্ট পেজ কি জিনিস এবং এর ব্যবহার ।

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৬]:: ASP.NET Web Forms দিয়ে ডাটাবেজ কানেকশন

Huge Sell on Popular Electronics

ASP.NET টিউটোরিয়াল :[পর্বঃ ১৬]:: ASP.NET Web Forms দিয়ে ডাটাবেজ কানেকশন
লেখকঃ মোস্তাফিজুর ফিরোজ ।

যাক এইবার কন্ট্রোলের হাত থেকে একটু বাঁচলেন । এই পর্বে আমরা ASP.NET Web Forms দিয়ে ডাটাবেজ কানেকশন করা শিখবো । আর ডাটা কানেকশনের জন্য আমরা ADO.NET ব্যবহার করবো ।

ADO.NET কি?
ADO.NET তো ব্যভার করবো তাহলে আসুন আগে জেনে নেই ADO.NET টা কি জিনিস । এটা .NET Framework এর একটা অংশ । ADO.NET ডাটা অ্যাক্সেস হ্যান্ডেলের জন্য অনেকগুলো ক্লাস একসাথে ধারণ করে থাকে । এটা XML এর উপর ভিত্তি করে গঠিত হয় । এর ADO এর মত কোনো রেকর্ডসেট অবজেক্ট নাই ।

ডাটাবেজ কানেকশন তৈরী
আমরা কিন্তু আমাদের উদাহরণের জন্য Northwind database ব্যবহার করবো ।
প্রথমে তাই “System.Data.OleDb” নেমস্পেসকে ইম্পোর্ট করবো । এই নেমস্পেস যেনো আবার Microsoft Access এবং অন্যান্য OLE DB database provider এর সাথে কাজ করে থাকে । Page_Load সাবরুটিনের সাথে আমরা ডাটাবেজের কানেকশন তৈরী করবো । আমরা dbconn variable তৈরী করবো যেন সেটা নতুন OleDbConnection class আকারে ডাটাবেজকে নির্দেশ করে । তারপর ডাটাবেজ কানেকশনটি ওপেন করুন ।

<%@ Import Namespace=”System.Data.OleDb” %>

<script runat=”server”>
sub Page_Load
dim dbconn
dbconn=New OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;
data source=” & server.mappath(“northwind.mdb”))
dbconn.Open()
end sub
</script>

খেয়াল রাখবেন যেন এর ভিতর কোনো লাইনের ব্রেক না হয় ।

ডাটাবেজ কমান্ড তৈরী
নতুন OleDbCommand ক্লাসে dbcomm variable তৈরী করবো যেন OleDbCommand class, SQL queries এর বিরুদ্ধে ডাটাবেজ টেবিল তৈরী করে ।

<%@ Import Namespace=”System.Data.OleDb” %>

<script runat=”server”>
sub Page_Load
dim dbconn,sql,dbcomm
dbconn=New OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;
data source=” & server.mappath(“northwind.mdb”))
dbconn.Open()
sql=”SELECT * FROM customers”
dbcomm=New OleDbCommand(sql,dbconn)
end sub
</script>

ডাটা রিডার তৈরী
আমরা নিচের মত করে ডাটা রিডার তৈরী করতে পারি ।

<%@ Import Namespace=”System.Data.OleDb” %>

<script runat=”server”>
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;
data source=” & server.mappath(“northwind.mdb”))
dbconn.Open()
sql=”SELECT * FROM customers”
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
end sub
</script>

রিপিটার কনট্রোল দূর করার জন্য বাইন্ডিং
রিপিটার কনট্রোল দূর করার জন্য আমরা ডাটারিডারকে রিপিটার এর সাথে বাইন্ডিং করতে পারি ।

<%@ Import Namespace=”System.Data.OleDb” %>

<script runat=”server”>
sub Page_Load
dim dbconn,sql,dbcomm,dbread
dbconn=New OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;
data source=” & server.mappath(“northwind.mdb”))
dbconn.Open()
sql=”SELECT * FROM customers”
dbcomm=New OleDbCommand(sql,dbconn)
dbread=dbcomm.ExecuteReader()
customers.DataSource=dbread
customers.DataBind()
dbread.Close()
dbconn.Close()
end sub
</script>

<html>
<body>

<form runat=”server”>
<asp:Repeater id=”customers” runat=”server”>

<HeaderTemplate>
<table border=”1″ width=”100%”>
<tr>
<th>Companyname</th>
<th>Contactname</th>
<th>Address</th>
<th>City</th>
</tr>
</HeaderTemplate>

<ItemTemplate>
<tr>
<td><%#Container.DataItem(“companyname”)%></td>
<td><%#Container.DataItem(“contactname”)%></td>
<td><%#Container.DataItem(“address”)%></td>
<td><%#Container.DataItem(“city”)%></td>
</tr>
</ItemTemplate>

<FooterTemplate>
</table>
</FooterTemplate>

</asp:Repeater>
</form>

</body>
</html>

ডাটাবেজ কানেকশন বন্ধ করা
ডাটাবেজ কানেকশন বন্ধ করতে আমরা নিচের মত করে কোড ব্যবহার করতে পারি ।

dbread.Close()
dbconn.Close()

তাহলে তো শিখে গেলেন ডাটাবেজ কানেকশন কিভাবে দিতে হয় আর কিভাবে বন্ধ করতে হয় ।

পিএইচপি – টেবিলে শেষ প্রবেশকৃত রেকর্ড এর আইডি বের করা (PHP Get ID of Last Inserted Record in Bangla)

Huge Sell on Popular Electronics

auto-increment ফাংশন এর মাধ্যমে যদি আমরা টেবিলে কোন ডাটা যোগ বা পরিবর্তন করে থাকি তাহলে এর ID এর নাম্বারটি আমরা অতি দ্রুতই পেতে পারি।

Phpmyadmin এ গিয়ে "MyGuests" নামের একটি ডাটাবেস টেবিল তৈরি করি । এখানে আইডি কলাম হচ্ছে AUTO_INCREMENT ফিল্ড:


 CREATE TABLE MyGuests (
 id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 firstname VARCHAR(30) NOT NULL,
 lastname VARCHAR(30) NOT NULL,
 email VARCHAR(50),
 reg_date TIMESTAMP
 )

এবং সেভ বাটন এ ক্লিক করি। তাহলে আমাদের ডাটাবেস এবং টেবিল তৈরি হয়ে গেল।

এখন আমরা পরবর্তী পিএইচপি পেজ তৈরি করব জার মাধ্যমে আমরা ডাটা ইনপুট বা আপডেট করলে তার ID নাম্বার টা পাই।


< ?php 
$servername = "localhost";     /*সারভার নাম*/ 
$username = "username";        /*xampp server এ root ব্যবহার করা হয়*/ 
$password = "password";        /*xampp সারভার এ পাসওয়ার্ড ব্লাঙ্ক থাকে*/ 
$dbname = "myDB";              /*ডাটাবেস এর নাম*/ 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname);
                               /*এর মাধ্যমে ডাটাবেস এর সাথে connection তৈরি করা হোল */ 
// Check connection 
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
                               /*যদি connection ঠিক না থাকে তাহলে “connection failed” 
                               দেখাবে*/
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
                               /*ডাটাবেস টেবিল এর মধ্যে একটি ডাটা যোগ করা হোল*/
if ($conn->query($sql) === TRUE) 
                               /*একটি শর্ত দিয়ে দেয়া হোল যদি SQL QUERY টা ঠিক মত হয়ে থাকে 
                               তাহলে নিচের মতন হবে*/ 
{
   $last_id = $conn->insert_id;
   echo "New record created successfully. Last inserted ID is: " . $last_id;
                              /*আমাদের একটি ID auto-increment সেট করে দেওয়া হয়েছিল এই লাইন 
                              এর মাধ্যমে আমরা সেই ID টা দেখতে পারব*/
} else {                      /*যদি আমাদের ডাটাবেসের সাথে query তে ভুল থাকে তাহলে 
                              সে এরর দেখাবে মানে কোন ডাটা অ্যাড হয় নি */
   echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();                /*এই কোড এর মাধ্যমে আমরা ডাটাবেস এর connection বন্ধ করে দিব */
?>

 

নোটপ্যাড ওপেন করে এই example টুকু টাইপ করে ফাইল টি সেভ করুন php_mysql_insert_lastid.php দিয়ে। আপনার ফাইল টি localhost > htdocs> test ফোল্ডার এর ভিতর রাখুন। ব্রাউজার ওপেন করে এড্রেস বারে লিখুন localhost/test/ php_mysql_insert_lastid.php . Go বাটন এ ক্লিক করলে একটি ফলাফল আপনি খুজে পাবেন। আপনি যে ID এর মাধ্যমে ডাটা অ্যাড করেছেন সেই ID নাম্বার টা ডিসপ্লে হবে।

এএসপি.নেট এমভিসি – ভিউস . ASP.NET MVC – Views

Huge Sell on Popular Electronics

এএসপি.নেট এমভিসি - ভিউস
Sheikh Mahfuzur Rahman
Bangla word: 200

এএসপি.নেট এমভিসি (ASP.NET MVC) শিখার জন্য আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করছি। আজকের টিউটোরিয়ালে যার পঞ্চম পর্ব নিয়ে আলোচনা করা হবে।

পার্ট-ফাইভঃ অ্যাপ্লিশনটি ডিসপ্লে করার জন্য ভিউস যোগ করা

ভিউস ফোল্ডার/Views Folder
Views ফোল্ডার অ্যাপ্লিকেশনটির ডিসপ্লে বা ইউজার ইন্টারফেসের সাথে সংশ্লিষ্ট ফাইলগুলো ( যেমন HTML ফাইল ) ধারণ করে। ল্যাঙ্গুয়েজ কন্টেন্ট এর উপর নির্ভর করে এই ফাইলগুলোর যেসব এক্সটেনশান থাকতে পারে সেগুলো হলো html, asp, aspx, cshtml এবং vbhtml

ভিউস ফোল্ডার প্রত্যেক কন্ট্রোলারের জন্য একটি ফোল্ডার ধারণ করে। ভিজ্যুয়াল ওয়েব ডেভলাপার Views ফোল্ডারের ভিতরে একটি অ্যাকাউন্ট ফোল্ডার, একটি হোম ফোল্ডার এবং একটি শেয়ার্ড ফোল্ডার তৈরি করেছে।

Account ফোল্ডার ইউজার অ্যাকাউন্ট রেজিস্টার করা এবং লগিন করার পেজগুলো ধারণ করে। Home ফোল্ডার হোম পেজ এবং অ্যাবাউট পেজের মতো অ্যাপ্লিকেশন পেজগুলো সংরক্ষণ করতে ব্যবহৃত হয়। Shared ফোল্ডার কন্ট্রোলারগুলোর ( মাস্টার পেজ এবং লেআউট ) মধ্যে শেয়ার্ড ভিউগুলো সংরক্ষণ করতে ব্যবহৃত হয়।

ছবিতে ফোল্ডার গুলো দেখুন

http://bangla.salearningschool.com/aspnet/pic_mvc_views.jpg
এএসপি.নেট ফাইল টাইপসমূহ/ASP.Net File Types

Views ফোল্ডারে নিচের মতো এইচইটিএমএল ফাইল পাওয়া যায়ঃ

ফাইল টাইপ এক্সটেনশান
Plain HTML .htm or .html
Classic ASP .asp
Classic ASP.NET .aspx
ASP.NET Razor C# .cshtml
ASP.NET Razor VB .vbhtml

ইন্ডেক্স ফাইল/index.html

Index.cshtml ফাইলটি অ্যাপ্লিকেশনের হোম পেজের প্রতিনিধিত্ব (represent) করে। এটাই অ্যাপ্লিকেশনের ডিফল্ট ফাইল ( index file)। ফাইলে নিচের উপাদানগুলো  যোগ করুনঃ

@{ViewBag.Title = "Home Page";}
<h1>Welcome to W3Schools</h1>
<p>Put Home Page content here</p>

অ্যবাউট ফাইল/About File
About.cshtml ফাইলটি অ্যাপ্লিকেশনের অ্যাবাউট পেজকে প্রতিনিধিত্ব করে।
ফাইলটিতে নিচের উপাধানগুলো যোগ করুনঃ

@{ViewBag.Title = "About Us";}
<h1>About Us</h1>
<p>Put About Us content here</p>

অ্যাপ্লিকেশনটিকে চালু (run) করুন

ওয়েব ডেভলাপার মেন্যু থেকে Debug সিলেক্ট করে ডিবাগিং শুরু করুন ( অথবা F5 চাপুন )।
আপনার অ্যাপ্লিকেশনটিকে নিচের মতো দেখাবেঃ

কিভাবে এটি কাজ করে তা দেখার জন্য "Home" ট্যাব এবং "About" ট্যাবে ক্লিক করুন।

 

Application er ছবি এখানে দেখুন

http://bangla.salearningschool.com/aspnet/pic_mvc_app.jpg

অভিনন্দন!

আপনাকে অভিনন্দন! আপনি আপনার প্রথম এমভিসি অ্যাপ্লিকেশন তৈরি করে ফেলেছেন!

লক্ষ্যনীয়ঃ আপনি এখনো "Movies" ট্যাবে ক্লিক করতে পারবেন না। আমরা এই টিউটোরিয়ালের পরবর্তী অধ্যায়ে "Movies" ট্যাবের জন্য কোড যোগ করবো।

পিএইচপি প্রিপেয়ার্ড স্ট্যাটমেন্ট (PHP Prepared Statements in Bangla)

Huge Sell on Popular Electronics

ডাটাবেজ ম্যানেজম্যান্ট সিস্টেমে একটি প্রিপেয়ার্ড স্টেটমেন্ট হলো এমন একটি ফিচার যা একই বা একই ধরণের ডাটাবেজ স্টেটমেন্ট (যেমন SQL) বারবার দক্ষতার সাথে অ্যাকজিকিউট করতে ব্যবহৃত হয়। সার্ভার সাইড স্ক্রিপ্টিং ভাষা পিএইচপিতে (PHP) প্রিপেয়ার্ড স্টেটমেন্টগুলো এসকিউএল ইঞ্জেকশনের বিরুদ্ধে খুবই কার্যকর ভূমিকা রাখে। এসকিউএল ইঞ্জেকশন হলো এক ধরণের ইঞ্জেকশন কোড যা ডাটা-প্রোগ্রামগুলোতে আক্রমণ ও তথ্য চুরির কাজে ব্যবহার করা হয়।

 

প্রিপেয়ার্ড স্টেটম্যান্টস এবং বাউন্ড প্যারামিটারস

প্রিপেয়ার্ড স্টেটমেন্টগুলো সাধারণত নিচের মতো কাজ করেঃ

  1. প্রিপেয়ারঃ একটি এসকিউএল স্টেটমেন্ট টেমপ্লেট তৈরি করা হয় এবং ডাটাবেজে পাঠানো হয়। নির্দিষ্ট কতগুলো ভ্যালু অসংজ্ঞায়িত রাখা হয়, যেগুলো প্যারামিটার নামে পরিচিত এবং "?” চিহ্ন দিয়ে বুঝানো হয়। উদাহরণঃ INSERT INTO MyGuests VALUES(?, ?, ?)
  2. ডাটাবেজ এসকিউএল স্টেটমেন্ট টেমপ্লেটের উপর পার্স, কম্পাইল ও কোয়ারি অপটিমাইজেশন করে এবং তার ফলাফলটি একজিকিউট করে সংরক্ষণ করে।
  3. একজিকিউটঃ পরবর্তীতে, অ্যাপ্লিকেশনটি ভ্যালুগুলোকে প্যারামিটারে বাইন্ড করে, এবং ডাটাবেজ স্টেটমেন্টটিকে একজিকিউট করে। অ্যাপ্লিকেশনটি স্টেটমেন্টকে প্রত্যেকবার আলাদা আলাদা ভ্যালুর মাধ্যমে যতবার ইচ্ছে একজিকিউট করতে পারে।

এসকিউএল স্টেটমেন্ট সরাসরি একজিকিউট করার তুলনায় প্রিপেয়ার্ড স্টেটমেন্টের মাধ্যমে একজিকিউট করার দু'টি প্রধান সুবিধা রয়েছেঃ

  • প্রিপেয়ার্ড স্টেটমেন্ট পার্সিং টাইমকে কমিয়ে দেয় যেহেতু কোয়ারির উপর প্রস্তুতি একবারই করা হয় (যদিও স্টেটমেন্টটি অসংখ্যবার একজিকিউট করা হয়)।
  • বাউন্ড পারামিটারগুলো সার্ভারের প্রতি ব্যান্ডউইথের চাপ কমিয়ে দেয় যেহেতু আপনাকে শুধু প্যারামিটারগুলোকেই বার বার পাঠাতে হয়, পুরো কোয়ারি পাঠাতে হয়না।

প্রিপেয়ার্ড স্টেটমেন্ট এসকিউএল ইঞ্জেকশনের বিরুদ্ধে খুবই কার্যকরী কারণ প্যারামিটার ভ্যালুগুলোকে, যেগুলো পরবর্তীতে ভিন্ন প্রটোকল ব্যবহার করে পাঠানো হয়, তাদের সঠিকভাবে মুক্ত হতে হয় না। যদি এক্সটার্নাল ইনপুট থেকে প্রকৃত স্টেটমেন্ট টেমপ্লেটটিকে সংগ্রহ করা না হয়, তাহলে এসকিউএল ইঞ্জেকশন ঘটানো সম্ভব হয় না।

 

MySQLi-এ প্রিপেয়ার্ড স্টেটমেন্ট

নিচের উদাহরণটি MySQLi এ প্রিপেয়ার্ড স্টেটমেন্ট এবং বাউন্ড প্যারামিটার ব্যবহার করেঃ


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) 
        VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);

// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();

$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();

$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();

echo "New records created successfully";

$stmt->close();
$conn->close();
?>

 

উপরের উদাহরণটি থেকে ব্যাখ্যা করার কোড লাইনঃ


"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"


আমাদের SQL এ আমরা একটি প্রশ্নবোধক চিহ্ন অন্তর্ভূক্ত করেছি(?) যা আমরা একটি ইন্টিজার বা পূর্ন সংখ্যা, স্ট্রিং, ডাবল অথবা ব্লব ভ্যালু দিয়ে প্রতিস্থাপন করতে চাই।

এখন, bind_param() ফাংশনের দিকে লক্ষ্য করা যাকঃ


$stmt->bind_param("sss", $firstname, $lastname, $email);


এই ফাংশনটি প্যরামিটারগুলোকে এসকিউএল কোয়ারির দিকে বাইন্ড করে এবং ডাটাবেজকে প্যারামিটারগুলো সম্পর্কে বলে দেয়। "sss” আর্গুমেন্টটি প্যারামিটারগুলোর অনুসারে ডাটার প্রকারকে তালিকাভূক্ত করে। 's' অক্ষরটি মাইএসকিউএলকে বলে দেয় যে প্যারামিটারটি হলো একটি স্ট্রিং।

আর্গুমেন্টটি নিচের চার প্রকারের যেকোন একটি হতে পারেঃ

  • i - integer
  • d - double
  • s - string
  • b - BLOB

আমাদের প্রত্যেকটি প্যারামিটারের জন্য এগুলোর যেকোন একটি অবশ্যই লাগবে।

মাইএসকিউএলকে কি ধরনের ডাটা চাই তা বলার মাধ্যমে আমরা এসকিউএল ইঞ্জেকশনের ঝুঁকি কমিয়ে দিতে পারি।

লক্ষ্যণীয়ঃ যদি আমরা কোন এক্সটার্নাল সোর্স থেকে ডাটা ইনপুট করতে চাই (ইউজার ইনপুটের মতো) এটা খুবই গুরুত্বপূর্ণ যে আগে ডাটাকে স্যানিটাইজ এবং মিনিমাইজ করা হয়েছে।

 

PDO তে প্রিপেয়ার্ড স্টেটমেন্ট

নিচের উদাহরণটিতে PDO তে প্রিপেয়ার্ড স্টেটমেন্ট এবং প্যারামিটার ব্যবহার করা হয়েছেঃ


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
    VALUES (:firstname, :lastname, :email)");
    $stmt->bindParam(':firstname', $firstname);
    $stmt->bindParam(':lastname', $lastname);
    $stmt->bindParam(':email', $email);

    // insert a row
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Mary";
    $lastname = "Moe";
    $email = "mary@example.com";
    $stmt->execute();

    // insert another row
    $firstname = "Julie";
    $lastname = "Dooley";
    $email = "julie@example.com";
    $stmt->execute();

    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }
$conn = null;
?>

 

এএসপি ডট নেট এমভিসি-স্টাইলস অ্যান্ড লেআউট (ASP.NET MVC – Styles and Layout)

Huge Sell on Popular Electronics

এএসপি ডট নেট এমভিসি-স্টাইলস অ্যান্ড লেআউট (ASP.NET MVC - Styles and Layout)

লেখাঃ মীর তাউহীদুল ইসলাম ।
ওয়েব ডেভেলপার, ওডেস্ক

কেমন আছেন সবাই? অনেকদিন পর আবার আপনাদের সাথে দেখা । আজ আমি আপনাদের সাথে আলোচনা করবো এএসপি ডট নেট এমভিসি-স্টাইলস অ্যান্ড লেআউট নিয়ে।

এএসপি ডট নেট এমভিসি (ASP.NET MVC) শিখতে,আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করতেছি।

তৃতীয় পার্ট: স্টাইল এবং সুন্দর শৈলী যোগ করা।

লেআউট যোগ করাঃ
Layout.cshtml নামক ফাইলটি অ্যাপ্লিকেশনের প্রত্যেকটি পেইজে লেআউট উপস্থাপন করে।এটি ভিউস(দেখা) ফোল্ডারের ভিতরে শেয়ার্ড ফোল্ডারে অবস্থিত।
এখন ফাইলটি ওপেন করতে হবে এবং এর ভিতরে থাকা বিষয়বস্তু রদবদল করতে হবে যা নিম্নোক্ত কোডের মাধ্যমে দেখানো হলঃ

DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>@ViewBag.Title</title>
css")" rel="stylesheet" type="text/css" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")"></script>
</head>
<body>
<ul id="menu">
<li>@Html.ActionLink("Home", "Index", "Home")</li>
<li>@Html.ActionLink("Movies", "Index", "Movies")</li>
<li>@Html.ActionLink("About", "About", "Home")</li>
</ul>
<section id="main">
@RenderBody()

Copyright W3schools 2012. All Rights Reserved.
</section>
</body>
</html>

এইচটিএমএল সাহায্যকারীঃ/HTML Helpers
উপরের কোডটিতে এইচটিএমএল সাহায্যকারী গুলো এইচটিএমএল এর আউটপুট টিকে পরিবর্তন করার জন্য ব্যাবহার করা হয়েছে।
@Url.Content() -URL- এ কন্টেন্ট এখানে সন্নিবেশিত করা হবে।
@Html.ActionLink() -এইচটিএমএল লিংক এখানে সন্নিবেশ করা হবে।

রেজর সিনট্যাক্স(Razor Syntax)
উপরের কোডটিতে যে কোডগুলো লাল রং দ্বারা চিহ্নিত করা হয়েছে তাদের মধ্যে সি শার্প(C#)এবং রেজর মারকাপ ব্যাবহার করা হয়েছে।
@ViewBag.Title – পেজের শিরোনাম এখানে সন্নিবেশিত করা হবে।
@RenderBody()- পেজের কন্টেন্ট এখানে অনুষ্ঠিত হবে।

নোটঃ আমরা রেজর মারকাপ সম্পর্কে জানতে সি-শার্প এবং ভিজুয়াল বেসিক এর জন্য আমাদের রেজরের টউটোরিয়াল দেখতে পারি।

স্টাইল যোগ করাঃ
অ্যাপ্লিকেশনের জন্য যে স্টাইল-সিট রয়েছে তার নাম সাইট ডট সিএসএস(Site.css)।এটি কন্টেন্ট ফোল্ডারে থাকে।
এখন সাইট ডট সিএসএস(Site.css) ফাইলটিকে ওপেন করি এবং এর কন্টেন্ট গুলো রদবদল করিঃ

body
{
font: "Trebuchet MS", Verdana, sans-serif;
background-color: #5c87b2;
color: #696969;
}
h1
{
border-bottom: 3px solid #cc9900;
font: Georgia, serif;
color: #996600;
}
#main
{
padding: 20px;
background-color: #ffffff;
border-radius: 0 4px 4px 4px;
}
a
{
color: #034af3;
}
/* Menu Styles ------------------------------*/
ul#menu
{
padding: 0px;
position: relative;
margin: 0;
}
ul#menu li
{
display: inline;
}
ul#menu li a
{
background-color: #e8eef4;
padding: 10px 20px;
text-decoration: none;
line-height: 2.8em;
/*CSS3 properties*/
border-radius: 4px 4px 0 0;
}
ul#menu li a:hover
{
background-color: #ffffff;
}
/* Forms Styles ------------------------------*/
fieldset
{
padding-left: 12px;
}
fieldset label
{
display: block;
padding: 4px;
}
input[type="text"], input[type="password"]
{
width: 300px;
}
input[type="submit"]
{
padding: 4px;
}
/* Data Styles ------------------------------*/
table.data
{
background-color:#ffffff;
border:1px solid #c3c3c3;
border-collapse:collapse;
width:100%;
}
table.data th
{
background-color:#e8eef4;
border:1px solid #c3c3c3;
padding:3px;
}
table.data td
{
border:1px solid #c3c3c3;
padding:3px;
}

 

The _ViewStart File

Shared folder এর _ViewStart file এ নিচের লাইনটি থাকে যা (লাইনটি) সব ভিউ ফাইল এর সাথে যুক্ত হয়। এই লাইনটি remove করলে এই লাইনটি আপনাকে সব ভিউ ফাইল এ যোগ করতে হবে।

@{Layout = "~/Views/Shared/_Layout.cshtml";}

 

আশাকরি আমরা সবাই উপরের কোড টুকু বুঝতে পেরেছি।
আজ আর নয়।এপর্যন্তই থাক।এর পরে আবার হাজির হবো অন্য কিছু নিয়ে।সে পর্যন্ত ভাল থাকবেন।আর এ বিষয়ে আরও জানতে যেতে পারেন এই

http://Bangla.SaLearningSchool.com

পিএইচপি – মাইএসকিউএল হতে ডাটা সিলেক্ট করা (PHP Select Data From MySQL in Bangla)

Huge Sell on Popular Electronics

select statement ব্যবহার করা হয় টেবিল এর মধ্যে কোন ডাটা সিলেক্ট করে ডিসপ্লে করার জন্য
Sql syntax


SELECT column_name(s) FROM table_name


অথবা আমরা ব্যবহার করতে পারি


SELECT * FROM table_name


 

পিএইচপি দিয়ে এর ব্যবহার বোঝার জন্য আমাদের একটি টেবিল তৈরি করতে হবে নিচের মতন

মনে করি এই টেবিল এর নাম MyGuests

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

এই ক্ষেত্রে আমরা ৩ নাম্বার ডাটাটি পরিবর্তন করতে চাই

পিএইচপি কোড


< ?php               /*আমাদের ডাটাবেসের ইউজার নাম, পাসওয়ার্ড, সার্ভার নাম সেট করতে হবে*/ 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB";    //কানেকশন দিতে হবে 
$conn = new mysqli($servername, $username, $password, $dbname); 
                     // কানেকশন চেক করতে হবে ঠিক মত connect হয়েছে কিনা 
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
                    /*আমদের SQL QUERY প্রথমে ডাটাবেস এর নাম উল্লেখ করে কলামগুলোর নাম দেওয়া হয়েছে*/
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
                  /*যদি ০ এর চেয়ে বেসি রো থাকে তাহলে ডাটা ডিসপ্লে করবে*/ 
   // output data of each row
   /*sql code টেবিল এর ডাটা ডিসপ্লে করার*/
   while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "br";
   }
} else { /*যদি ডাটা না থাকে সে বলবে টেবিল এ কোন ডাটা নেই*/
       echo "0 results";
}
$conn->close();
?>

 

ASP.NET MVC – অ্যাপ্লিকেশন ফোল্ডার . ASP.NET MVC – Application Folders

Huge Sell on Popular Electronics

ASP.NET MVC - অ্যাপ্লিকেশন ফোল্ডার
লেখকঃ নয়ন চন্দ্র দত্ত

কি খবর সবার? সবাই ভালতো? আজ আমি অনেক গুরুত্বপুর্ণ একটা বিষয় নিয়ে বিস্তারিত আলোচনা করবো । সেটি হচ্ছে- ASP.NET MVC - অ্যাপ্লিকেশন ফোল্ডার।
আজ আমরা MVC - অ্যাপ্লিকেশন ফোল্ডার সম্পর্কে, এর ব্যবহার সম্পর্কে দেখব। তাহলে চলুন শুরু করা যাক ...।

ASP.NET MVC শিখতে, আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরী করছি ।
অ্যাপ্লিকেশন ফোল্ডার এক্সপ্লোরিং

MVC ফোল্ডার
একটি টাইপিক্যাল ASP.NET MVC ওয়েব অ্যাপ্লিকেশনে নিম্নলিখিত ফোল্ডার কন্টেন্ট আছেঃ

 

পোস্ট এর শেষে কিছু ছবির লিঙ্ক দেয়া আছে। ছবি দেখলে ধারণা গুলো পরিস্কার হবে।
Application information

Properties
References

Application folders
App_Data Folder
Content Folder
Controllers Folder
Models Folder
Scripts Folder
Views Folder

Configuration files

Global.asax
packages.config
Web.config

ফোল্ডারের নাম সব MVC অ্যাপ্লিকেশনে সমান ।MVC ফ্রেমওয়ার্ক ডিফল্ট নামকরণ এর উপর নির্ভর করে। কন্ট্রোলারগুলো কন্ট্রোলার ফোল্ডারে, Views, Views ফোল্ডারে এবং মডেল মডেল ফোল্ডার আছে ।
অ্যাপ্লিকেশন কোড এ আপনাকে ফোল্ডারের নাম ব্যবহার করতে হবে না ।
স্ট্যান্ডার্ড নামকরণ কোডের পরিমাণ হ্রাস এবং ডেভেলপারদের MVC প্রকল্প বোঝার জন্য এটা সহজ করে তোলে। প্রতিটি ফোল্ডারের বিষয়বস্তুর একটি সংক্ষিপ্ত সারাংশ নিম্নরূপঃ

App_Data ফোল্ডার
App_Data ফোল্ডার আবেদন তথ্য সংরক্ষণের জন্য । আমরা পরে এই টিউটোরিয়াল এ App_Data ফোল্ডারে একটি SQL ডাটাবেস যোগ করব ।

Content বা বিষয়বস্তু ফোল্ডার
বিষয়বস্তু ফোল্ডার স্টাইল শীট (CSS ফাইল), আইকন এবং ইমেজের মত স্ট্যাটিক ফাইল এ ব্যবহার করা হয়। ভিসুয়াল ওয়েব ডেভেলপার স্বয়ংক্রিয়ভাবে Content বা বিষয়বস্তু ফোল্ডারে একটি থিম ফোল্ডার যোগ করে।
থিম ফোল্ডার jQuery এর শৈলী এবং ছবির দিয়ে ভরা থাকে। এই প্রকল্পের মধ্যে আপনি থিম ফোল্ডার মুছে দিতে পারেন ।
ভিসুয়াল ওয়েব ডেভেলপার প্রকল্পে একটি স্ট্যান্ডার্ড স্টাইল শীট ফাইলও যোগ করেঃ কন্টেন্ট ফোল্ডারে Site.css ফাইলটি ।স্টাইল সিট ফাইল সম্পাদনা করার উপযুক্ত হয় যখন আপনি application স্টাইল পরিবর্তন করতে চান।
আমরা এই টিউটোরিয়াল এর পরবর্তী অধ্যায়ে স্টাইল শীট ফাইল ( Site.css ) ফাইল সম্পাদনা (edit) করব।

Controllers বা কনট্রোলার ফোল্ডার
কনট্রোলারের ফোল্ডার ব্যবহারকারীর ইনপুট এবং প্রতিক্রিয়া পরিচালনা করার জন্য দায়ী কনট্রোলার ক্লাস ধারণ করে।
MVC "কন্ট্রোলার " দিয়ে শেষ করতে সব কন্ট্রোলার ফাইলের নাম প্রয়োজন।ভিসুয়াল ওয়েব ডেভেলপার (হোম এবং About পেজের জন্য) একটি হোম কন্ট্রোলার এবং একটি অ্যাকাউন্ট কন্ট্রোলার(লগিন পেজের জন্য) তৈরি করে।
আমরা পরে এই টিউটোরিয়ালে আরও কন্ট্রোলার তৈরি করব ।

Models বা মডেল ফোল্ডার
মডেল ফোল্ডার অ্যাপ্লিকেশন মডেল প্রতিনিধিত্বকারী ক্লাসগুলো ধারণ করে। মডেল হোল্ড এবং আবেদন তথ্য নিপূণভাবে করে।
আমরা এই টিউটোরিয়ালের পরবর্তী অধ্যায়ে মডেল ( ক্লাস) তৈরী করব।

Views ফোল্ডার
Views ফোল্ডার আবেদন প্রকাশ( ইউজার ইন্টারফেস ) করা সম্পর্কিত HTML ফাইল ফোল্ডার জমা রাখে। Views ফোল্ডার প্রতিটি কন্ট্রোলার ফোল্ডারের জন্য একটি ফোল্ডার ধারণ করে।
ভিসুয়াল ওয়েব ডেভেলপার একটি অ্যাকাউন্ট ফোল্ডার, একটি হোম ফোল্ডার , এবং ( Views ফোল্ডারের ভিতরে ) একটি শেয়ার করা ফোল্ডার তৈরি করে।
নিবন্ধন ও ব্যবহারকারীর অ্যাকাউন্টে লগ ইন এর জন্য অ্যাকাউন্ট ফোল্ডার পেজ ধারণ করে থাকে।
হোম ফোল্ডার মূল পৃষ্ঠা এবং about পেজের মত আবেদন পেজ জমা রাখার জন্য ব্যবহৃত হয়।
Shared ফোল্ডার কন্ট্রোলার (মাস্টার পৃষ্ঠা এবং layout বা বিন্যাস পৃষ্ঠা) মধ্যে views শেয়ার্ড জমা রাখতে ব্যবহৃত হয়।
আমরা এই টিউটোরিয়ালের পরবর্তী অধ্যায়ে layout বা বিন্যাস ফাইল সম্পাদনা করব ।

Scripts বা স্ক্রিপ্ট ফোল্ডার
জাভাস্ক্রিপ্ট ফাইল আবেদনের জাভাস্ক্রিপ্ট ফাইল জমা রাখে ।
ডিফল্টরূপে ভিসুয়াল ওয়েব ডেভেলপার এই ফোল্ডারটি স্ট্যান্ডার্ড MVC , AJAX, এবং jQuery ফাইল দিয়ে পূর্ণ করে।

[ দ্রষ্টব্য: " Modernizr " নামে জাভাস্ক্রিপ্ট ফাইল অ্যাপ্লিকেশনে HTML5 এবং CSS3 বৈশিষ্ট্য সমর্থনের জন্য ব্যবহৃত হয় ।। ]

http://bangla.salearningschool.com/aspnet/pic_mvc_scripts.jpg

আজকের মত এই পর্যন্ত। আশা করি সবার খুব ভাল লেগেছে । আশা করছি পরবর্তি টিউটোরিয়ালে MVC - অ্যাপ্লিকেশন ফোল্ডার নিয়ে আরও বিস্তারিত আলোচনা করব। সবাই বেশি বেশি করে প্রাকটিস করবেন ।

 

ছবিতে দেখার জন্য নিচের লিঙ্ক এ যেতে পারেন

http://bangla.salearningschool.com/aspnet/pic_mvc_solution.jpg

http://bangla.salearningschool.com/aspnet/pic_mvc_content.jpg

http://bangla.salearningschool.com/aspnet/pic_mvc_controllers.jpg

http://bangla.salearningschool.com/aspnet/pic_mvc_views.jpg

http://bangla.salearningschool.com/aspnet/pic_mvc_scripts.jpg
সবাই ভাল থাকবেন আর কোন সমস্যা হলে কমেন্ট অপশনত আছেই। তাই কমেন্ট করতে বুলবেন না ।

সেঞ্চা টাচ শুরু করা । Getting Started with Sencha Touch

Huge Sell on Popular Electronics

সেঞ্চা টাচ শুরু করা ।
Ext JS 5 এবং Sencha Cmd 5 শুরু করাটা খুবই সহজ, এ দুটো ধাপ এক সাথে করার মাধ্যমে লোকাল সার্ভারে শুরু করা যাবে। . বলে নেয়া ভাল এর সাথে একটি রুবি কমান্ড ভার্সন(ruby command compatible with 1.8 or 1.9) সিস্টেম পাথে(system path)দিয়ে দেয়া থাকে।
প্রথমে টার্মিনাল বা কনসোল উইন্ডো খুলে তাতে নিচের কমান্ডগুলো লিখতে হবেঃ
sencha generate app -ext MyApp ./app
cd app
sencha app watch
আপনি যদি ফ্রেমওয়ার্কের লোকাল কপি ব্যাবহার করতে চান তাহলে এই কোডগুলিও লিখতে পারেন আগের কোডগুলোর পরিবর্তেঃ
sencha -sdk /path/to/framework generate app MyApp ./app
প্রথম ধাপটা হয়ে গেল। আপনি অলরেডি এপ্লিকেশন তৈরি করেছেন এবং একটি সার্ভারে তা চালুও করেছেন। . তাই এখন এখানে নেভিগেট করে http://localhost:1841 বা আপনার লোকাল সার্ভারে নেভিগেট করে Ext JS 5 application টি দেখে নিন।
Sencha Cmd আপনার এপ্লিকেশনে এখন সুযোগ খুঁজবজবে,এ ধরনের একটি লেখাও আপনি দেখবেনঃ“Waiting for changes…”, যা প্রমান করবে আপনার আপ্লিকেশনটি আপটুডেট।. আপনি সেটিং ও সেভ অপশনের কারনে অন্য আরও কিছু কমান্ডও দেখতে পারেন তবে প্রধান হল এটাই,“Waiting for changes…” ম্যাসেজ. প্রক্রিয়াটি কিছুটা সময় নিতে পারে তাই ধৈর্য ধরে অল্প কিছুক্ষণ অপেক্ষা করাই ভাল। আরও বিস্তারিত জানতে চাইলে এখানে দেখতে পারেন Introduction to Sencha Cmd Guide.
পরবর্তী ধাপঃ
এখন পর্যন্ত কাঠামো ছাড়া তেমন কিছু করা হয়নি এপ্লিকেশনটির, তাই এটাকে আরেকটু প্রাণবন্ত করা যাকঃ
উত্তর দিকে টাইটেল দিতে হবেঃ
এপ্লিকেশনের কাঠামোটা আসলে একটি বর্ডার টাইপ বিষয় যা আমাদেরকে “regions” ধারনা দেয় cardinal directions এর ভিত্তিতে ।মেইন ট্যাব এরিয়া হল “center” region এবং খালি panel যেটা আছে তার নাম “west” আর সেটা আছে “west” regionএ।
ব্রান্ড টাইটেল হল সবচে আকর্ষণীয় তাই এই অ্যাপটির একটি কোম্পানি নেম দেয়া যাক।
আপনার পছন্দের IDE অথবা text editor,ব্যাবহার করে app/view/main/Main.js খুলুন।
items array তে আরেকটা আইটেম যোগ করা যাক। আমরা উচ্চতা রাখব 40px, 10px প্যাডিঙ, এবং টেক্সট লিখব: ‘My Company - My Company Motto’:
{
region: 'north',
xtype: 'component',
padding: 10,
height: 40,
html: 'My Company - My Company Motto'
}
আপনার items array যেটা Main.js সেটা এখন এমন দেখাবেঃ
[{
region: 'north',
xtype: 'component',
padding: 10,
height: 40,
html: 'My Company - My Company Motto'
},
{xtype: 'panel',
title: 'Navigation',
region: 'west',
html: '<ul><li>This area ...</li></ul>',
width: 250,
split: true,
tbar: [{
text: 'Button',
handler: 'onClickButton'
}]
},{
region: 'center',
xtype: 'tabpanel',
items:[{
title: 'Tab 1',
bodyPadding: 20,
html: '<h2>Content...</h2>'
}]
}]
এভাবেইMain.js ফাইলটা রাখুন। এবার প্রথমবারের মত “sencha app watch” কর্মক্ষম ভাবে দেখলেন. এবারnorth region.সহ “Waiting for changes…”টাইটেল আবার দেখলেন আপনি।
এখন এটা আরও ভাল লাগছে। স্টাইল পরিবর্তন করার অনেক পদ্ধতি আছে, .নির্দিষ্ট ক্ষেত্রে এই প্রথম পদ্ধতিটা ভালই, ধরুন আপনি north region এর টেক্সটের কালারটা চেঞ্জ করবেন,
{
region: 'north',
xtype: 'component',
cls: 'appBanner',
padding: 10,
height: 40,
html: 'My Company - My Company Motto'
}
এই কমান্ড ছাড়াও আপনি সিএসএস ফাইল অ্যাড করেও কালার চেঞ্জ করতে পারেনঃ
.appBanner{
color:#ffffff;
}
বর্তমানে SCSS (Sassy CSS) এরও ব্যাবহার হচ্ছে এধরনের কাজে।এক্ষেত্রে global SCSS variables এর লিস্ট দেখা যেতে পারে।
Sencha Cmd সবসময় corresponding SCSS file খোঁজে sass/var/তে, variables এর জন্য এবং sass/src/,rules এর জন্য। যেহেতু এই এপ্লিকেশনের এক নাম MyApp.view.main.Main, তাই sass/var/view/main/Main.scss তখনি সম্পৃক্ত হবে যখন আপনি বলবেন অর্থাৎ কমান্ড লিখবেন। আপ্নি অন্য কোন ভিউ পেতে লিখতে পারেনঃ{ViewName}.scss file যেটা sass/var/view/{namespace}/{ViewName}.scssএর ভেতরে থাকবে। এটা আপনার ইচ্ছা।কারন SCSS rules বিভিন্ন ভাবে আপ্লাই করা যায়।
এপ্লিকেশন কাঠামোয় টুলবার ব্যাবহার করেও অনেক ভাবে আউটলুক চেঞ্জ করা যায়।নিচে দেখানো হল কিভাবে Main.scss ফাইলে এটা করা যায়।
$color: #ffffff;
একবার কোড চেঞ্জ করে রিফ্রেস করলে পরিবর্তনটা বুঝা যাবে।
কলাপ্সিবল ওয়েস্ট রেজিওনঃ
এখন ওয়েস্ট প্যানেল নিয়ে কাজ যেটাকে বলে West Region টা করব আমরা। আমাদের Main.js west region কোডগুলো দেখাবে এরকমঃ
{
xtype: 'panel',
title: 'Navigation',
region: 'west',
html: '<ul><li>This area...</li></ul>',
width: 250,
split: true,
collapsible: true,
tbar: [{
text: 'Button',
handler: 'onClickButton'
}]
}
এখন রিফ্রেস করলে এরকম কলাপ্সিবল বাটন পাওয়া যাবে। বাটনকে আরও প্রানবন্ত করতে
ব্যাবহার করা যায় এই কোডগুলোঃ
{
xtype: 'panel',
title: 'Navigation',
region: 'west',
html: '<ul><li>This area...</li></ul>',
width: 250,
split: true,
collapsible: true,
collapsed: true,
tbar: [{
text: 'Button',
handler: 'onClickButton'
}]
}
ট্যাবস এবং গ্রিডস

আমাদের এপ্লিকেশন প্রান পেতে শুরু করেছে কিন্তু মাত্র একটি ট্যাব নিয়ে। কিন্তু আমরা যদি ট্যাবপ্যানেল পেতে চাই তাহলে কমপক্ষে দুটো ট্যাব হতে হবে।আরেকটি ট্যাব এড করতে লিখব নিচের কোডঃ
{
region: 'center',
xtype: 'tabpanel',
items: [{
title: 'Tab 1',
bodyPadding: 20,
html: '<h2>Content...</h2>'
},{
title: 'The Data'
}]
}
দারুন,আমাদের দুটো ট্যাব হয়ে গেছে. Ext JS আসলে খুবই ভাল কোন কঠিন বিষয়কে সহজ করে দেখানোর জন্য। যে গ্রিডটা তৈরি হল তাতে চারটা অংশ, গ্রিড নিজে, ডাটা রেকর্ড স্টোর, এবং মডেল ষ্টোরের ডাটা নিজে। বাস্তব এপ্লিকেশনে MVC architecture ব্যাবহার করা হয় অনেক সময়।
যাহোক দ্বিতীয় ট্যাবটা এরকম হবেঃ
{
title: 'The Data',
layout: 'fit',
items: [{
xtype: 'grid',
title: 'Simpsons',
store: {
fields:['name', 'email', 'phone'],
data:[
{ name: 'Lisa', email: "lisa@simpsons.com",
phone: "555-111-1224" },
{ name: 'Bart', email: "bart@simpsons.com",
phone: "555-222-1234" },
{ name: 'Homer', email: "home@simpsons.com",
phone: "555-222-1244" },
{ name: 'Marge', email: "marge@simpsons.com",
phone: "555-222-1254" }
],
proxy: {
type: 'memory'
}
},
columns: [
{ text: 'Name', dataIndex: 'name' },
{ text: 'Email', dataIndex: 'email', flex: 1},
{ text: 'Phone', dataIndex: 'phone' }
]
}]
}
লেআউট
Ext JS. এর অত্যন্ত গুরুত্বপূর্ণ অংশ হল লেআউট। এটা পজিশনিং নিয়ন্ত্রন করে, বর্তমান প্যানেল ‘fit’ লেআউট ব্যাবহার করছে।
স্টোর
বাস্তবে হয়ত url property সহ proxy ব্যাবহার করা হত যেখানে proxy database এ তথ্য দিত . বর্তমান উদাহরণে আমরা in-line data ব্যাবহার করছি ।
থিম পরিবর্তনঃ
"theme": "ext-theme-crisp"
এই কোড ব্যাবহার করে আমরা থিম পরিবর্তন করতে পারি।মুলত এই কোড লিখে রিফ্রেস করলে থিমটা বদলে যাবে।
শেষ কথাঃ
এভাবে সহজেই আমরা Ext JS এবং Sencha Cmd.ব্যাবহার করে এপ্লিকেশনটি রান করাতে পারি, কোডগুলো খুব ভাল করে নির্ভুলভাবে লিখতে হবে।

সম্ভবনাময় সেরা দশ ওয়েব ডেভেলপমেন্ট খাত এবং তাদের সম্ভবনাঃ Top 10 Web Technology Trends

Huge Sell on Popular Electronics

সম্ভবনাময় সেরা দশ ওয়েব ডেভেলপমেন্ট খাত এবং তাদের সম্ভবনাঃ
বর্তমান সময়ে ওয়েব ডেভেলপমেন্ট ও সার্চ ইঞ্জিন প্রযুক্তির উৎকর্ষ সাধন হচ্ছে এবং তা হচ্ছে খুব দ্রুত। এই উন্নয়নের ধারাটি ডেভেলপারদেরকে দ্রুত ও সব মাধ্যমে ব্যাবহার উপযোগী অ্যাপ তৈরি করতে সাহায্য করবে।সেই সাথে বাড়বে সাধারন ব্যাবহারে অ্যাপের প্রয়োগও।
বর্তমানে খুব বেশি টেকনিক্যাল জ্ঞান ছাড়াই সাধারন প্রযুক্তি ব্যাবহারকারীরাও অ্যাপগুলো ব্যাবহার করতে পারছে।
বর্তমান সময়ের সেরা দশটি প্রযুক্তি যা সামনের সময়েও রাজত্ব করবে সেগুলো হলঃ
১।থ্রিডি ওয়েব এপ্লিকেসন্স
ওয়েব ব্রাউজার নিয়ে জারা কাজ করে আসছে তারা অনেক আগে থেকেই থ্রিডি ওয়েব এপ্লিকেসন্স নিয়েও চিন্তা ভাবনা করছে, অনেক নতুন আপডেটও হয়েছে এ বিষয়ে।আমরা সম্ভবত সিএসএসথ্রি থ্রিডি ট্রান্সফরমস ইত্যাদির সাহায্যে থ্রিডি ডিজাইনের উত্থান দেখতে যাচ্ছি নতুন বছরে।থ্রিডি ওয়েব এপ্লিকেসন্স ডেভেলপমেন্ট আরও বেশি এগিয়ে যাবে এইচটিএমএল৫ ও অন্যান্য কোডিং ব্যাবহারের মাধ্যমে।
এই প্রযুক্তিগুলোর মাধ্যমে গেম,বিনোদন ও নিত্ত প্রয়োজনীয় অনেক অ্যাপও হয়ে যাবে থ্রিডি নির্ভর।এছাড়াও থ্রিডি ক্যানভাস ডেভেলপমেন্টও এগিয়ে যাচ্ছে সমানভাবে তাল মিলিয়ে,যা অচিরেই জনপ্রিয় ফ্রেমওয়ার্ক হয়ে উঠতে পারে।
.
২।এইচটিএমএল জাভাস্ক্রিপ্ট এপিআইঃওয়েব ডিজাইন তা সে যে ধরনের ডিভাইসের জন্যই হোক না কেন,প্রযুক্তি কর্মীদের প্রধান অস্ত্র হল এইচটিএমএল ও জাভাস্ক্রিপ্ট এপিআই, যা বর্তমানের বিভিন্ন প্লাটফরমের সাথে মানিয়ে ওয়েব এপ্লিকেশন বানাতে অপরিহার্য। এইচটিএমএল৫এর সাথে সহজে কাজ করা যায় যে ধরনের এপিআই সেগুলো মোটামোটি এরকমঃওয়েব স্টোরেজ, ওয়েব ওয়ার্কার্স, ওয়েবসকেট, এপ্লিকেশন ক্যাচি ইত্যাদি।

৩। জাভাস্ক্রিপ্ট এবং ক্লায়েন্ট সাইড ওয়েব এপ্লিকেশনঃ
এ ধরনের প্রযুক্তির বড় সুবিধা হল ব্যাবহারের জন্য ক্লায়েন্টকে খুব বেশি দক্ষ হতে হয়না বা প্রোগ্রামিং ল্যাঙ্গুয়েজ জানতেও হয়না ,কেবল বেসিক কিছু টেকনোলজিকাল জ্ঞান থাকতে হয়। সামনের সময়টাতে আমরা তাই জাভাস্ক্রিপ্ট এবং ক্লায়েন্ট সাইড ওয়েব এপ্লিকেশনের ব্যাবহার আরও বৃদ্ধি পেতে দেখব।এ ধরনের আরও কিছু প্রযুক্তি হল কফিস্ক্রিপ্ট ও ডার্ট যা হয়ত সামনে জনপ্রিয় হতেও পারে।
৪।ফ্রন্টএন্ড ফ্রেমওয়ার্ক ঃ
বিগত সময়ের মত বর্তমানেও ফ্রন্টএন্ড ফ্রেমওয়ার্ক ব্যাবহার করা হচ্ছে ব্যাপকভাবে।যার ব্যাবহার সামনে আরও বাড়বে বলে আশা করা যায়।বিশেষ করে টেস্টিং সার্ভার, টাস্ক রানার ও এরকম আরও কিছু কাজের জন্য এর ব্যাবহার আরও বাড়বে বলে আশা করা যায়।
৫। ভিডিওতে এইচটিএমএল৫ ও এইচটিএমএলএর ব্যাবহার ঃ শুধু বিনোদন নয় তথ্যপ্রযুক্তির এই যুগে ভিডিও সব ধরনের তথ্য আদান প্রদানের মাধ্যম আর এ জন্যই এইচটিএমএল ও এইচটিএমএল৫ ব্যাবহার করে ভিডিও এডিটিং ও ওয়েবে আপলোডের ক্ষেত্রে নতুন দিগন্ত উন্মোচিত হয়েছে।
৬।স্ক্রিনের বাইরেও ডেভেলপমেন্টঃ সব ধরনের প্রযুক্তিগত উৎকর্ষ সাধিত হয়েছে বর্তমান সময়ে তাই তথ্য আদান প্রদান ও গবেষণা ইত্যাদিও এখন ওয়েব ডেভেলপমেন্ট সেক্টরের মধ্যেই পরে।
৭।কুকিজ ব্যাবহারঃ আপডেট থাকতে ও নতুন কোন পরিবর্তনের সাথে মানিয়ে নিতে প্রযুক্তিকর্মীরা কুকিজ ব্যাবহার করেন।
৮। ড্রাগ এন্ড ড্রপ প্রযুক্তিঃ এইচটিএমএল৫ ব্যাবহার করে দ্রেগ এন্ড ড্রপ ব্যাবহার করে প্রযুক্তিজগতকে আরও সহজ ও সমৃদ্ধ করছে ডেভেলপাররা।
৯।রেস্পন্সিভ ডিজাইন অপরিহার্যঃ সব ধরনের যন্ত্রে ওয়েব ব্যাবহারের জন্য রেস্পন্সিভ ডিজাইন ব্যাবহার বেড়ে গেছে।
১০।মোবাইল অ্যাপ ও নেটিভ অ্যাপ ডেভেলপারদের প্রাধান্যঃপ্রযুক্তির উৎকর্ষ সাধনের সাথে সাথে মোবাইল অ্যাপ ও নেটিভ অ্যাপ ডেভেলপারদের প্রাধান্যও বেড়ে যাচ্ছে।

গুগল ম্যাপের মৌলিক ধারণা (Google Maps Basic)

Huge Sell on Popular Electronics

গুগল ম্যাপের মৌলিক ধারণা
ইন্দ্র ভূষণ শুভ

একটি বেসিক গুগল ম্যাপ তৈরি করুন
এই উদাহরণটি ইংল্যান্ডের লন্ডন কেন্দ্রিক একটি গুগল ম্যাপ তৈরি করেঃ
উদাহরণ
DOCTYPE html>
<html>
<head>

<script>
function initialize() {
var mapProp = {
center:new google.maps.LatLng(51.508742,-0.120850),
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
googleMap" style="width:500px;height:380px;">
</body>

</html>
নিজে চেষ্টা করুন >>
বাকি পেইজগুলো উপরের উদাহরণটিকে ধাপে ধাপে ব্যাখ্যা করবে।

১. গুগল এপিআই লোড করুন
গুগল ম্যাপের এপিআই হলো জাভাস্ক্রিপ্টের লাইব্রেরি। এটি একটি স্ক্রিপ্ট ট্যাগ দিয়ে একটি ওয়েব পেইজ যোগ করতে পারেঃ

২. ম্যাপের বৈশিষ্ট নির্ধারণ করুন
ম্যাপটি শুরু করার জন্য একটি ফাংশন তৈরি করুনঃ
function initialize() {
}
শুরুর ফাংশনটি, ম্যাপের বৈশিষ্টগুলো বর্ণনা করার জন্য একটি লক্ষ্য (mapProp) নির্ধারণ করেঃ
var mapProp = {
center:new google.maps.LatLng(51.508742, -0.120850),
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
কেন্দ্র বৈশিষ্ট ম্যাপের কেন্দ্র নির্ধারণ করে। LatLng তৈরির উদ্দেশ্য একটি নির্দ্দিষ্ট বিন্দুতে কেন্দ্র নির্ধারণ করা। যাতে স্থানাঙ্ক অক্ষাংশ, দ্রাঘিমাংশ দিয়ে যায়।
জুমের বৈশিষ্ট ম্যাপের জুমের স্তর নির্ধারণ করে। জুমঃ০ একটি পৃথিবীর ম্যাপ দেখায় জুম ছাড়া। উচ্চ জুম স্তর উচ্চ রেজল্যুশনে জুম করে।
mapTypeId ম্যাপটি প্রদর্শনের ধরন নির্ধারণ করে।
নিম্নলিখিত ম্যাপগুলো সমর্থন করেঃ
রোডম্যাপ ( স্বাভাবিক, দ্বিমাত্রিক ম্যাপ )
স্যাটেলাইট ( ফটোগ্রাফিক ম্যাপ )
হাইব্রিড (ফটোগ্রাফিক ম্যাপ + শহর এবং রাস্তার নাম )
ভূখন্ড ( পাহাড়, নদী ইত্যাদি সম্বলিত ম্যাপ )

৩. ম্যাপের ধারক তৈরি করুন
ম্যাপ থাকে এমন একটি <div> উপাদান তৈরি করুন। CSS ব্যবহার করে উপাদানটির আকার তৈরি করুনঃ
উদাহরণ
googleMap" style="width:500px;height:380px;">
ম্যাপটি সবসময় এর ধারক উপাদান থেকে আকার পাবে।

৪. ম্যাপের লক্ষ্য তৈরি করুন
var map=new google.maps.Map(document.getElementById("googleMap"), mapProp);
উপরের কোডটি

উপাদানে একটি নতুন ম্যাপ (googleMap) তৈরি করবে গৃহীত (mapProp) পরিমাপক ব্যবহার করে।

৫. ম্যাপ লোড করার একটি ইভেন্ট যোগ করুন
উইন্ডো লোডের initialize() ফাংশনকে চালাতে একটি DOM যোগ করা হয় (যখন পেইজটি লোড হয়)
google.maps.event.addDomListener(window, 'load', initialize);

অ্যাসিঙ্ক্রোনাস লোডিং
গুগল ম্যাপ এপিআই কে চাহিদানুযায়ী লোড করা সম্ভব।
নিচের উদাহরনটি পেইজ পুরোপুরি লোড হওয়ার পরে গুগল ম্যাপ এপআই লোড করতে window.onload ব্যবহার করেছে।
loadScript() ফাংশনটি গুগল ম্যাপ এপআই তে
উদাহরণঃ
function loadScript() {
var script = document.createElement("script");
script.src = "http://maps.googleapis.com/maps/api/js?callback=initialize";
document.body.appendChild(script);
}

window.onload = loadScript;
নিজে চেষ্টা করুন >>
একাধিক ম্যাপ করুন
নিচের উদাহরনটি একই পেইজে চারটি ম্যাপ নির্ধারণ করে ( বিভিন্ন ধরনের চারটি ম্যাপ )
উদাহরণঃ
var map1 = new google.maps.Map(document.getElementById("googleMap1"), mapProp1);
var map2 = new google.maps.Map(document.getElementById("googleMap2"), mapProp2);
var map3 = new google.maps.Map(document.getElementById("googleMap3"), mapProp3);
var map4 = new google.maps.Map(document.getElementById("googleMap4"), mapProp4);
নিজে চেষ্টা করুন >>

গুগল এপিআই কী
গুগল একই দিনে কয়েক হাজারবার আপনার ওয়েবসাইটকে গুগল এপিআই তে কল করতে দিবে।
আপনি অধিক ট্রাফিকের পরিকল্পনা করলে গুগল এপিআই থেকে বিনামুল্যে কী (Key) নিতে পারেন।
বিনামুল্যে কী পেতে https://console.developers.google.com এই সাইটে যান।
যখন একটি এপিআই লোড হয়, গুগল ম্যাপ Key পরিমাপকে একটি এপিআই Key আশা করেঃ
<script src="http://maps.googleapis.com/maps/api/js?key=YOUR_KEY"></script>

পিএইচপি – মাইএসকিউএল হতে ডাটা ডিলিট করা (PHP Delete Data From MySQL in Bangla)

Huge Sell on Popular Electronics

Delete statement ব্যবহার করা করা হয় ডাটাবেস টেবিল থেকে কোন ডাটাকে বাদ দিয়ে দেয়ার জন্য।

এর জন্য SQL SYNTAX হল


DELETE FROM table_name
WHERE some_column = some_value


যখন আমরা where clause ব্যবহার করব না সেইখেত্রে আমাদের সব ডাটা বাদ হয়ে যাবে। যখন আমরা where ব্যবহার করব তখন নির্দিষ্ট ডাটা বাদ হয়ে যাবে।
পিএইচপি দিয়ে এর ব্যবহার বোঝার জন্য আমাদের একটি টেবিল তৈরি করতে হবে নিচের মতন

মনে করি এই টেবিল এর নাম MyGuests

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

 

এই ক্ষেত্রে আমরা ৩ নাম্বার ডাটাটি বাদ দিতে চাই

পিএইচপি কোড


< ?php           /*আমাদের ডাটাবেসের ইউজার নাম, পাসওয়ার্ড, সার্ভার নাম সেট করতে হবে*/ 
$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "myDB";    //কানেকশন দিতে হবে 
$conn = new mysqli($servername, $username, $password, $dbname); 
                     // কানেকশন চেক করতে হবে ঠিক মত connect হয়েছে কিনা 
if ($conn->connect_error) {
     die("Connection failed: " . $conn->connect_error);
}
// SQL কোড টেবিল থেকে ৩ নাম্বার ডাটা বাদ দেয়ার জন্য
$sql = "DELETE FROM MyGuests WHERE id=3";
if ($conn->query($sql) === TRUE) {
    echo "Record deleted successfully";
                   /যদি sql query ঠিকঠাক মতন হয় তাহলে সফল হয়েছে বার্তা দেখাবে/
} else {
    echo "Error deleting record: " . $conn->error;
                  /* যদি sql query ঠিকঠাক মতন না হয় তাহলে বিফল হয়েছে বার্তা দেখাবে/*/
 }
$conn->close();   /*mysqlকানেকশন বন্ধ করা হবে*/
 ?>

 

এএসপি.নেট এমভিসি – ইন্টারনেট অ্যাপ্লিকেশন . ASP.NET MVC – Internet Application

Huge Sell on Popular Electronics

এএসপি.নেট এমভিসি - ইন্টারনেট অ্যাপ্লিকেশন
Sheikh Mahfuzur Rahman
Bangla word: 180

এএসপি.নেট এমভিসি ( ASP.NET MVC ) সম্পর্কে শিখতে গিয়ে আমরা একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করবো।

প্রথম পার্টঃ অ্যাপ্লিকেশনটি তৈরি করা

আমরা যা তৈরি করবো
আমরা এমন একটি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করবো যা একটি ডাটাবেজে সংরক্ষিত তথ্যের adding, editing, deleting এবং listing সাপোর্ট করে।

আমরা যা যা করবো

ভিজ্যুয়াল ওয়েব ডেভলাপার ওয়েব অ্যাপ্লিকেশন তৈরির জন্য বিভিন্ন টেমপ্লেট অফার করে। আমরা এইচটিএমএল ফাইভ ( HTML5 ) মার্কআপের মাধ্যমে একটি খালি এমভিসি ইন্টারনেট অ্যাপ্লিকেশন তৈরি করতে ভিজ্যুয়াল ডেভলাপারকে ( Visual Web Developer ) ব্যবহার করবো।

যখন খালি ইন্টারনেট অ্যাপ্লিকেশনটি তৈরি হবে তখন আমরা ধীরে ধীরে অ্যাপ্লিকেশনটিতে কোড যোগ করবো যতক্ষণ না সেটি সম্পূর্ণভাবে শেষ হয়। প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে আমরা C# এবং সবচেয়ে নতুন Razor সার্ভার কোড মার্কআপ ব্যবহার করবো।

পুরো টিউটোরিয়ালটি চলার সময়ে আমরা কন্টেন্ট, কোড এবং অ্যাপ্লিকেশনের সবগুলো উপাদান ব্যাখ্যা করবো।

ওয়েব অ্যাপ্লিকেশনটি তৈরি করা

যদি আপনার কম্পিউটারে ভিজ্যুয়াল ওয়েব ডেভলাপার ইন্সটল করা থাকে, সেটি চালু করুন এবং New Project সিলেক্ট করুন। অন্যথায়, শুধু পড়ুন এবং শিখুন।

New Project ডায়ালগ বক্সেঃ
Visual C# টেমপ্লেট ওপেন করুন
ASP.NET MVC 3 Web Application টেমপ্লেটটি সিলেক্ট করুন
প্রজেক্ট এর নাম হিসেবে MvcDemo সেট করুন
ডিস্ক লোকেশন হিসেবে c:\w3schools_demo এর মতো কিছু একটা সেট করুন
OK তে ক্লিক করুন

http://bangla.salearningschool.com/aspnet/pic_mvc_new_project.jpg

যখন New Project ডায়ালগ বক্স ওপেন হয়ঃ
Internet Application টেমপ্লেট সিলেক্ট করুন
Razor Engine সিলেক্ট করুন
HTML5 Markup সিলেক্ট করুন
OK তে ক্লিক করুন

ভিজ্যুয়াল স্টুডিও এক্সপ্রেস ঠিক নিচের মতো একটি প্রজেক্ট তৈরি করবেঃ

http://bangla.salearningschool.com/aspnet/pic_mvc_explorer.jpg

 

এই টিউটোরিয়ালের পরবর্তী অধ্যায়ে আমরা ফাইল এবং ফোল্ডারের উপাদানগুলোকে নিয়ে আলোচনা করবো।

পিএইচপি – মাইএসকিউএল ডাটা আপডেট করা (PHP Update Data in MySQL)

Huge Sell on Popular Electronics

মাইএসকিউএল-আই এবং পিডিও ব্যবহার করে মাইএসকিউএল টেবলে ডাটা আপডেট

একটি টেবলের বিদ্যমান রেকর্ডগুলো আপডেট করতে UPDATE স্টেটম্যান্ট ব্যবহৃত হয়ঃ


UPDATE table_name
SET column1=value, column2=value2,...
WHERE some_column=some_value


 

 

লক্ষ্যণীয়ঃ আপডেট সিনট্যাক্স-এর WHERE ক্লজটিকে লক্ষ্য করুনঃ কোন্‌ রেকর্ড বা রেকর্ডসমূহ আপডেট করা হবে তা WHERE ক্লজটি ঠিক করে দেয়। আপনি যদি WHERE ক্লজটিকে মুঁছে দেন তাহলে সবগুলো রেকর্ডই আপডেট হবে!

এসকিউএল সম্পর্কে আরও জানতে আমাদের এসএকিউএল টিউটর‍্যালগুলো পড়ে নিন।

এখন "MyGuests" টেবলের দিকে লক্ষ্য করুনঃ

id firstname lastname email reg_date
1 John Doe john@example.com 2014-10-22 14:26:15
2 Mary Moe mary@example.com 2014-10-23 10:22:30
3 Julie Dooley julie@example.com 2014-10-26 10:48:23

 

নিচের উদাহরণগুলো, "MyGuests" টেবলে id=2 যুক্ত রেকর্ডকে আপডেট করেঃ

উদাহরণ ( MySQLi অবজেক্ট-ওরিয়েন্টেড)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

if ($conn->query($sql) === TRUE) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

 

উদাহরণ ( MySQLi প্রসিডুরাল)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
 $conn = mysqli_connect($servername, $username, $password, $dbname);
 // Check connection
 if (!$conn) {
     die("Connection failed: " . mysqli_connect_error());
}

$sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";
 
if (mysqli_query($conn, $sql)) {
    echo "Record updated successfully";
} else {
    echo "Error updating record: " . mysqli_error($conn);
}

mysqli_close($conn);
 ?>

 

উদাহরণ (পিডিও)


<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE MyGuests SET lastname='Doe' WHERE id=2";

    // Prepare statement
    $stmt = $conn->prepare($sql);

    // execute the query
    $stmt->execute();

    // echo a message to say the UPDATE succeeded
    echo $stmt->rowCount() . " records UPDATED successfully";
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>

 

ASP.NET MVC টিউটোরিয়াল

Huge Sell on Popular Electronics

ASP.NET MVC টিউটোরিয়াল
লিখেছেন ইন্দ্র ভূষণ শুভ

Minor Edit by Sayed Ahmed

ASP.NET হলো HTML, CSS, JavaScript এবং server scripting দিয়ে ওয়েব পেইজ এবং ওয়েব সাইট তৈরির একটি  কাঠামো (Framework)।

ASP.NET তিনটি ভিন্ন ভিন্ন মডেল সমর্থন করেঃ
ওয়েব পেইজ, এমভিসি (Model View Controller), এবং ওয়েব ফর্ম।
এই টিউটরিয়ালটি এমভিসি (Model View Controller) নিয়ে

MVC প্রোগ্রামিং মডেল
ASP.NET প্রোগ্রামিং মডেলের মধ্যে MVC একটি।
MVC হলো MVC (Model View Controller) ডিজাইন ব্যবহার করে ওয়েব অ্যাপ্লিকেশন তৈরির একটি কাঠামো/Framework।

 

মডেলটি/Model একটি অ্যাপ্লিকেশন এর কোর উপস্থাপন করে ( উদাহরণস্বরুপ একটি ডাটাবেস থেকে রেকর্ডের তালিকা নিয়ে আসা । ডাটাবেজ এ তথ্য জমা করা এবং

ভিউ/view: তথ্য প্রদর্শন করে (মডেল থেকে ডাটা নিয়ে)
কন্ট্রোলার/controller: ব্যবহার কারি/user এর ইনপুটকে/interaction নিয়ন্ত্রণ করে

 

এছাড়াও MVC মডেল এইচটিএমএল, সিএসএস, জাভাস্ক্রিপ্টের উপর পূর্ণ নিয়ন্ত্রণ রক্ষা করে।

MVC মডেল ৩ টি যুক্তি স্তরে ওয়েব অ্যাপ্লিকেশনকে
সংজ্ঞায়িত করেঃ
The business layer (Model logic)
The display layer (View logic)
The input control (Controller logic)

মডেল হলো অ্যাপ্লিকেশনের একটি অংশ যা অ্যাপ্লিকেশন ডাটার যুক্তিকে নিয়ন্ত্রণ করে।
মডেলটি প্রায়ই ডাটাবেস থেকে তথ্য উদ্ধার করে ( এবং সংরক্ষণ করে )।
ভিউ হলো অ্যাপ্লিকেশনের একটি অংশ যা তথ্য প্রদর্শন নিয়ন্ত্রণ করে।
ভিউ প্রায়ই মডেল ডাটা থেকে তৈরি হয়।

নিয়ন্ত্রক/Controller হলো অ্যাপ্লিকেশনের একটি অংশ যা ব্যবহারকারীদের মিথষ্ক্রিয়া/Interaction নিয়ন্ত্রণ করে।
নিয়ন্ত্রক সাধারণত ভিউ থেকে তথ্য পড়ে, ব্যবহারকারীর ইনপুট নিয়ন্ত্রণ করে, মডেলে ইনপুটের তথ্য প্রেরণ করে।
MVC বিভক্তি আপনাকে জটিল অ্যাপ্লিকেশন পরিচালনা করতে সাহায্য করবে, কারণ আপনি একই সময়ে এক এক রকম দৃষ্টিভঙ্গিতে নজড় দিতে পারবেন। এছাড়াও এটি একটি অ্যাপ্লিকেশনকে সহজেই পরীক্ষা করতে পারে।
MVC বিভক্তি গ্রুপ উন্নয়নকে সহজসাধ্য কওরে। ভিন্ন ভিন্ন ব্যবহারকারী একই সাথে the view, the controller logic, এবং the business logic কে কাজ করতে পারে।

ওয়েব ফর্ম Application বনাম MVC Application
MVC প্রোগ্রামিং মডেল গতানুগতিক ASP.NET (ওয়েব ফর্ম) থেকে একটু আলাদা। এটিতে  ASP.NET এর বৈশিষ্ট্য বিদ্যমান যেমন   মাস্টার পেজ, নিরাপত্তা । কিন্তু এটি  লাইটওয়েট, এবং সহজে testable.

ভিসুয়াল স্টুডিও এক্সপ্রেস ২০১২/২০১০
ভিসুয়াল স্টুডিও এক্সপ্রেস মাইক্রোসফট ভিসুয়াল স্টুডিও একটি মুক্ত সংস্করণ।
ভিসুয়াল স্টুডিও এক্সপ্রেস MVC ( এবং ওয়েব ফর্ম ) এর জন্য উন্নয়নের দক্ষ হাতিয়ার।

ভিসুয়াল স্টুডিও এক্সপ্রেসে রয়েছেঃ
MVC এবং ওয়েব ফর্ম
ওয়েব নিয়ন্ত্রণের ড্রাগ- এবং- ড্রপ এবং ওয়েব উপাদান
ওয়েব সার্ভারের ভাষা (Razor using VB or C# )
ওয়েব সার্ভার (IIS Express)
ডাটাবেস সার্ভার (SQL Server Compact)
পরিপূর্ণ ওয়েব উন্নয়ন কাঠামো (ASP.NET)

আপনি যদি ভিসুয়াল স্টুডিও এক্সপ্রেস ইন্সটল করেন, আপনি এই টিউটরিয়াল থেকে আরও লাভ পেতে পারেন।
আপনি যদি ভিসুয়াল স্টুডিও এক্সপ্রেস ইন্সটল করতে চান, এই লিঙ্কগুলোতে ক্লিক করেনঃ
Visual Web Developer 2012 ( আপনার যদি Windows 7 বা Windows 8 থেকে থাকে )
Visual Web Developer 2010 (Windows Vista অথবা XP জন্য )

ASP.NET MVC তথ্যসূত্র
এই টিউটরিয়ালটি শেষে আপনি ASP.NET MVC সম্পর্কে একটি পরিপুর্ণ তথ্য পাবেন।

 

এস ই ও এর জন্য বিশেষজ্ঞ নিয়োগ । SEO – Hiring an Expert

Huge Sell on Popular Electronics

নয়ন চন্দ্র সরকার

 

এস ই ও এর বিভিন্ন অংশের কাজ এবং ওয়েব সাইট এর গুনাগুন নিশ্চিত করতে প্রয়োজন হয় একজন সুদক্ষ বা অভিজ্ঞ লোকের। যে কাজগুলো আমরা করবে পারি না বা সর্বোত্তম ভাবে সম্পাদান করতে পারি না, সেগুলোর জন্যই একজন অভিজ্ঞ লোক নিয়োগের প্রয়োজন পরে। কারন, এস ই ও এর উপরই আপনার ওয়েব সাইট এর ভবিষ্যৎ অনেকটা নির্ভর করে।

যে কাজগুলোর জন্য এস ই ও বিশেষজ্ঞ নিয়োগ করা যেতে পারে

  1. কোড এর বৈধতা নিশ্চিতকরণ এবং এর সার্বিক গুনাগুন অটুট রাখতে, এবং কোড যেন সার্চ ইঞ্জিন-সুলভ ইত্যাদি বিষয়ের জন্য বিশেষজ্ঞ নিয়োগের প্রয়োজন হয়।
  2. এস ই ওর অন পেজ অপটিমাইজেসন যেমন, পেজ টাইটেল, কল টু অ্যাকশান কপি রাইটিং ইত্যাদি কাজের জন্য।
  3. প্রাসঙ্গিক সাইটগুলোর সাথে ভাল মানের লিঙ্ক বিল্ডিং নিশ্চিতকরণ।
  4. ওয়েব সাইট এর বিষয়বস্তুর উপর ভিজিটরের আগমন নির্ভর করে। আর একজন এস ই ও বিশেষজ্ঞ এই বিষয়টি নিশ্চিত করেন।
  5. অফ পেজ অপটিমাইজেসন এর বিভিন্ন কাজ যেমন, আর্টিকেল সাবমিশন, ব্লগের ব্যবহার, লিঙ্ক বিল্ডিং, ডিরেক্টরি সাবমিশন ইত্যাদি কাজের জন্য একজন এস ই ও বিশেষজ্ঞ প্রয়োজন।

পরিশেষে বলা যায় যে, আপনি যদি নিজেই এর কাজগুলো করতে পারেন তাহলে বিশেষজ্ঞ নিয়োগের কোন প্রয়োজন নেই।

কিভাবে এস ই ও বিশেষজ্ঞ বাছাই করবেন

একটি ওয়েব সাইট এর জন্য ভাল মানের এস ই ও বিশেষজ্ঞ নিয়োগ বা বাছাই করা সত্যিই কঠিন কাজ। তবে নিম্নোক্ত পন্থাগুলো অবলম্বন করলে টা অনেকাংশে সহজ হয়। এমন কিছু পদ্ধতি হল,

  1. আপনি আপনার বন্ধু বা পরিচিত কারোর মাধ্যমে খোঁজ করতে পারেন।
  2. এস ই ও সম্পর্কিত অনেক ফোরাম আছে যেগুলোতে আপনি এ সম্পর্কে ফিডব্যাক পেতে পারেন।
  3. উনি সাম্প্রতিকালে যেসব ওয়েব সাইট এ কাজ করেছেন সেগুলোর খোঁজ-খবর রাখতে পারে।
  4. এস ই ও কোম্পানি গুলোকে অটোমেটিক কাজ করা হতে বিরত রাখবেন।
  5. সস্তা এস ই ও বিশেষজ্ঞ নিয়োগ করবেন না। তবে ভাল দক্ষতা থাকলে ভেবে দেখতে পারেন।
  6. আর্টিকেল বা ওয়েবসাইট এর বিষয়বস্তুর উপর ভিত্তি করে কোন এস ই ও কোম্পানি কে নিয়োগ দেবেন না।
  7. ওদের ওয়েব সাইট এ প্রসংশা পত্রের প্রাচুর্যটা দেখে কখনই মুগ্ধ হবেন না।

এই বিষয় গুলো মাথাই রাখলেই আপনি একজন ভাল মানের এস ই ও অভিজ্ঞ লোক বা প্রতিষ্ঠানের সন্ধান পেতে পারেন।

পিএইচপি – মাইএসকিউএল থেকে ডাটা সিলেকশন নির্দিষ্ট করা (PHP Limit Data Selections From MySQL in Bangla)

Huge Sell on Popular Electronics

MYSQL এর LIMIT প্যারামিটার ব্যবহার করে নির্দিষ্ট সংখ্যক রো পাওয়া যায়।

অনেকগুলো পেজ এ ফলাফল ডিসপ্লে করতে অথবা pagination এর ক্ষেত্রে LIMIT প্যারামিটার টা খুব সহজ।

অনেক বড় টেবিল এর জন্য এটা খুব উপকারী।

মনে করি আমরা একটি order নামক টেবিল থেকে প্রথম ৩০ টা ডাটা দেখতে চাই তার জন্য SQL query টি হবে


$sql = "SELECT * FROM Orders LIMIT 30";

যখন এটি রান করা হবে তখন প্রথম ৩০ টি ডাটা দেখা যাবে। যদি আমরা ১৬-২৫ এই রেকর্ড দেখতে চাই


$sql = "SELECT * FROM Orders LIMIT 10 OFFSET 15";

উপড়ের query টি OFFSET 15 সেট করার ফলে আমরা ১৫ এর পরের থেকে ১০ টি ডাটা দেখতে পারব। আমরা এর পরিবর্তে আরও একটি query চালাতে পারি যা এক ফলাফল পাওয়া যাবে


$sql = "SELECT * FROM Orders LIMIT 15, 10";

লক্ষ্য করার বিষয় নাম্বারগুলো এখন উলটো যখন কমা ব্যবহার করা হয়।

পিএইচপি – এক্সএমএল পার্সার (PHP XML Parsers)

Huge Sell on Popular Electronics

এক্সএমএল কি?

এক্সএমএল ল্যাঙ্গুয়েজ হলো ডাটা বা তথ্যকে স্ট্রাকচার করার একটি পদ্ধতি যা ওয়েবসাইটগুলোতে তথ্য শেয়ার করার জন্য ব্যবহৃত হয়ে থাকে। আরএসএস ফিড এবং পডকাস্টের মতো অনেক ধরণের ওয়েব টেকনোলজি এক্সএমএল দিয়ে লেখা হয়। এক্সএমএল তৈরি করা সহজ। এটি অনেকটাই এইচটিএমএল এর মতো, পার্থক্য হলো এখানে আপনি নিজেই ট্যাগ তৈরি করেন; এইচটিএমএল এর ট্যাগগুলো ডব্লিওথ্রিসি'র নীতিমালা অনুসারে তৈরি হয়েছে। এক্সএমএল সম্পর্কে আরও জানতে আপনি আমাদের এক্সএমএল টিউটরিয়ালগুলো পড়ে দেখতে পারেন।

এক্সএমএল পার্সার কি?

একটি এক্সএমএল ডকুমেন্টকে পড়তে, আপডেট করতে, তৈরি এবং ম্যান্যুপিউলেট করতে একটি এক্সএমএল পার্সারের দরকার পড়ে। পিএইচপি'তে প্রধানত দুই ধরণের এক্সএমএল পার্সার রয়েছেঃ

১) ট্রি-বেজড পার্সার
২) ইভেন্ট-বেজড পার্সার

ট্রি-বেজড পার্সার

ট্রি-বেজড বা ট্রি নির্ভর পার্সার পুরো ডকুমেন্টকে মেমোরিতে ধারণ করে এবং এক্সএমএল ডকুমেন্টটিকে একটি ট্রি স্ট্রাকচারে রয়পান্তরিত করে। এটি পুরো ডকুমেন্টটিকে বিশ্লেষণ করে এবং ট্রি এলিমেন্টে (DOM) প্রবেশ (access) করতে দেয়।

একটি ক্ষুদ্রতর এক্সএমএল ডকুমেন্টের জন্য এই ধরণের পার্সার তুলনামূলকভাবে ভালো অপশান হয়ে থাকে, কিন্তু বড় এক্সএমএল ডকুমেন্টের ক্ষেত্রে পার্ফমেন্স (ধীর গতিতে পার্সা করে) ভালো হয়না বলে সেক্ষেত্রে এই ধরণের পার্সার ব্যবহার করা হয়না।

ট্রি-বেজড পার্সারের উদাহরণঃ

  • SimpleXML
  • DOM

ইভেন্ট-বেজড পার্সার

ইভেন্ট-বেজড বা ইভেন্ট নির্ভর পার্সার পুরো ডকুমেন্টকে মেমোরিতে ধারণ করেনা, তার পরিবর্তে, সেগুলো একবারে শুধু একটি নোডকে পড়ে এবং আপনাকে রিয়েল টাইমে ( যে সময়টিতে আপনি ডকুমেন্টটি নিয়ে কাজ করছেন) ডকুমেন্টের ঐ নোডটি'র সাথে ইন্টারেক্ট করতে দেয়। একবার আপনি পরবর্তী নোডে চলে গেলে পূর্বের নোডটি ফেলে দেয়া হয় মেমোরি থেকে।

বড় এক্সএমএল ডকুমেন্টের জন্য এই ধরণের পার্সার খুবই কার্যকর। এটি খুব দ্রুততর গতিতে পার্স করে এবং কম মেমোরি দখল করে।

ইভেন্ট বেজড পার্সারের উদাহরণঃ

  • XMLReader
  • XML Expat Parser

পিএইচপি ৫ সরটিং অ্যারে (PHP 5 Sorting Arrays)

Huge Sell on Popular Electronics

আক্তারুজ্জামান

Department of CSE, University of Chittagong

 

একটি অ্যারের ইলিমেন্টগূলো বর্ণানুক্রমিক (alphabetical) অথবা সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজানো যায়। এই সাজানোটা ascending (ঊর্ধ্বগামী) অথবা descending (অধোগামী) উভয় প্রকারের হতে পারে।

পিএইচপি তে অ্যারে সাজানোর বা sort করার জন্য যে সব ফাংশন ব্যাবহার করা হয় ঐগুলো নিচে দেওয়া হলঃ

 

পিএইচপি - অ্যারে ফাংশন সর্ট করা

  • sort() – এই ফাংশনটি একটি অ্যারেকে ascending order (ছোট থেকে বড় ক্রম) এ sort করে।
  • rsort() - এই ফাংশনটি একটি অ্যারেকে descending order (বড় থেকে ছোট ক্রম) এ sort করে।
  • asort() – এটি অ্যাসোসিয়েটিভ অ্যারেকে মান অনুসারে ascending order এ sort করে বা সাজায়।
  • ksort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে key অনুসারে ascending order এ sort করে বা সাজায়।
  • arsort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে মান অনুসারে descending order এ sort করে বা সাজায়।
  • krsort() - এটি অ্যাসোসিয়েটিভ অ্যারেকে key অনুসারে descending order এ sort করে বা সাজায়।

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো – sort()

নিচের উদাহরণটি $cars নামের একটি array কে ছোট থেকে বড়তে বর্ণানুক্রমিক (alphabetical) ক্রম অনুসারে সাজায়।


<?php
 $cars = array("Volvo", "BMW", "Toyota");
 sort($cars);
 ?>

 

নিচের উদাহরণটি $numbers নামের একটি array কে ছোট থেকে বড়তে সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজায়।


< ?php
 $numbers = array(4, 6, 2, 22, 11);
 sort($numbers);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো – rsort()

নিচের উদাহরণটি $cars নামের একটি array কে বড় থেকে ছোটতে বর্ণানুক্রমিক (alphabetical) ক্রম অনুসারে সাজায়।


<?php
 $cars = array("Volvo", "BMW", "Toyota");
 rsort($cars);
 ?>

 

নিচের উদাহরণটি $numbers নামের একটি array কে বড় থেকে ছোটতে সংখ্যাসূচক (numerical) ক্রম অনুসারে সাজায়।


< ?php
 $numbers = array(4, 6, 2, 22, 11);
 rsort($numbers);
 ?>

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো (মান অনুসারে) – asort()

নিচের উদাহরণটি $age নামের একটি associative array কে ছোট থেকে বড়তে মান অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 asort($age);
 ?>

 

অ্যারেকে ছোট থেকে বড় ক্রমে সাজানো (key অনুসারে) – ksort()

নিচের উদাহরণটি $age নামের একটি associative array কে ছোট থেকে বড়তে key অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 ksort($age);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো (মান অনুসারে) – arsort()

নিচের উদাহরণটি $age নামের একটি associative array কে বড় থেকে ছোটতে মান অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 arsort($age);
 ?>

 

অ্যারেকে বড় থেকে ছোট ক্রমে সাজানো (key অনুসারে) – krsort()

নিচের উদাহরণটি $age নামের একটি associative array কে বড় থেকে ছোটতে key অনুসারে সাজায়।


< ?php
 $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
 krsort($age);
 ?>

 

Bootstrap Case: নেভিগেশান বার যোগ করা (Adding a Navigation Bar)

Huge Sell on Popular Electronics

শেখ মাহফুজুর রহমান

 

নেভিগেশান বার একটি নেভিগেশান বার হলো একটি নেভিগেশান হেডার যা পেজের উপরের দিকে যোগ করা হয়। বুটস্ট্র্যাপের মাধ্যমে একটি নেভিগেশান বারকে স্ক্রিনের সাইজ অনুযায়ী এক্সট্যান্ড অথবা কলাপ্স করা যায়। অর্থাৎ ডিভাইসের ধরণ অনুসারে সুবিধামতো নেভিগেশান বারকে সেটাপ করা যায়। <nav class="navbar navbar-default"> এর সাহাজ্যে একটি সাধারণ নেভিগেশান বার তৈরি করা যায়। নিচের উদাহরণে কিভাবে পেজের টপে নেভিগেশান বার যোগ করতে হয় তা দেখানো হয়েছেঃ


<body>
 <nav class="navbar navbar-default">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li> 
         <li><a href="#">Page 3</a></li> 
       </ul>
     </div>
   </div>
 </nav>
 <body>

 

নোটঃ এই টিউটোরিয়ালটির সবগুলো উদাহরণই একটি নেভিগেশান বার তৈরি করবে যা ছোট স্ক্রিনে অনেক বেশি জায়গা দখল করে (যাহোক, বড় স্ক্রিনে নেভিগেশান বারটি শুধু এক লাইনের হিসেবে দেখাবে - কারণ বুটস্ট্র্যাপ রেসপন্সিভ হয়ে থাকে)। ছোট স্ক্রিনের এই সমস্যাটি এই চ্যাপ্টারের সর্বশেষ উদাহরণে সমধান করা হবে। ইনভার্টেড নেভিগেশান বার আপনি যদি ডিফল্ট নেভিগেশান বারের স্টাইল পছন্দ না করেন, বুটস্ট্র্যাপে এজন্য একটি অল্টারনেটিভ রয়েছে। শুধু .navbar-inverse এর মধ্যে .navbar-default ক্লাসটি পরিবর্তন করে দিনঃ


<nav class="navbar navbar-inverse">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li>
         <li><a href="#">Page 3</a></li>
       </ul>
     </div>
   </div>
 </nav>

 

ফিক্সড নেভিগেশান বার নেভিগেশান বারটি পেজের উপরে বা নিচে ফিক্সড হতে পারে। ফিক্সড নেভিগেশান বার পেজ স্ক্রল করা হলেও একটি জায়গায় ফিক্সড বা স্থির থাকে। .navbar-fixed-top ক্লাসটি নেভিগেশান বারকে পেজের উপরে ফিক্সড করে রাখেঃ


<nav class="navbar navbar-inverse navbar-fixed-top">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li>
         <li><a href="#">Page 3</a></li>
       </ul>
     </div>
   </div>
 </nav>

 

.navbar-fixed-bottom ক্লাসটি নেভিগেশান বারকে পেজের নিচের দিকে ফিক্সড করে দেয়ঃ


<nav class="navbar navbar-inverse navbar-fixed-bottom">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li>
         <li><a href="#">Page 3</a></li>
       </ul>
     </div>
   </div>

 

ড্রপডাউনসহ নেভিগেশান বার নেভিগেশান বার ড্রপডাউন মেন্যুকেও ধারণ করতে পারে। নিচের উদাহরণটি "Page 1" বাটনের জন্য একটি ড্রপডাউন মেন্যু যোগ করেঃ


<nav class="navbar navbar-inverse">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li class="dropdown">
           <a class="dropdown-toggle" data-toggle="dropdown" href="#">Page 1
           <span class="caret"></span></a>
           <ul class="dropdown-menu">
             <li><a href="#">Page 1-1</a></li>
             <li><a href="#">Page 1-2</a></li>
             <li><a href="#">Page 1-3</a></li>
           </ul>
         </li>
         <li><a href="#">Page 2</a></li>
         <li><a href="#">Page 3</a></li>
       </ul>
     </div>
   </div>
 </nav>

 

রাইট-অ্যালাইন্ড নেভিগেশান বার .navbar-right ক্লাসটি নেভিগেশান বার বাটনগুলোকে পেজের ডানদিকে অ্যালাইন করতে ব্যবহৃত হয়। নিচের উদাহরণে আমরা নেভিগেশান বারের ডান দিকে একটি "Sign Up" এবং একটি "Login" বাটন যোগ করি। প্রত্যেকটি নতুন বাটনে আমরা একটি গ্লাইফিকোনও যোগ করিঃ


<nav class="navbar navbar-inverse">
   <div class="container-fluid">
     <div class="navbar-header">
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div>
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li>
         <li><a href="#">Page 3</a></li>
       </ul>
       <ul class="nav navbar-nav navbar-right">
         <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
         <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
       </ul>
     </div>
   </div>
 </nav>

 

নেভিগেশান বারকে কলাপস করা নেভিগেশান বার একটি ছোট স্ক্রিনে( যেমন মোবাইল) অনেক বেশি জায়গা নিয়ে নেয়। আমদের উচিত নেভিগেশান বারটিকে কলাপস বা হাইড করে রাখা এবং যখন দরকার তখন দেখানো। নিচের উদাহরণে নেভিগেশান বারটি উপরের ডান দিকের একটি বাটন দ্বারা প্রতিস্থাপিত হয়েছে। যখন বাটনটিতে ক্লিক করা হয় তখনই নেভিগেশান বারটি দেখা যায়ঃ


<nav class="navbar navbar-inverse">
   <div class="container-fluid">
     <div class="navbar-header">
       <button type="button" class="navbar-toggle" data-toggle="collapse" 
       data-target="#myNavbar">
         <span class="icon-bar"></span>
         <span class="icon-bar"></span>
         <span class="icon-bar"></span> 
       </button>
       <a class="navbar-brand" href="#">WebSiteName</a>
     </div>
     <div class="collapse navbar-collapse" id="myNavbar">
       <ul class="nav navbar-nav">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Page 1</a></li>
         <li><a href="#">Page 2</a></li> 
         <li><a href="#">Page 3</a></li> 
       </ul>
       <ul class="nav navbar-nav navbar-right">
         <li><a href="#"><span class="glyphicon glyphicon-user"></span> Sign Up</a></li>
         <li><a href="#"><span class="glyphicon glyphicon-log-in"></span> Login</a></li>
       </ul>
     </div>
   </div>
 </nav>

Bootstrap Case: একটি মেনু যোগ করার পদ্ধতি (Adding a Menu)

Huge Sell on Popular Electronics

মেনু

অধিকাংশ ওয়েব পেইজ এর ই কিছু Menu রয়েছে।

Html এ, একটি মেনু প্রায়ই একটি unordered তালিকা <ul> এর মধ্যে সংজ্ঞায়িত করা হয়।

উদাহরনণঃ


<ul>
   <li><a href="#">Home</a></li>
   <li><a href="#">Menu 1</a></li>
   <li><a href="#">Menu 2</a></li>
   <li><a href="#">Menu 3</a></li>
 </ul>

 

Bootstrap উপরের Menu প্রদর্শনের জন্য দুইটি উপায় অবলম্বন করে, যেমনঃ tabs and pills.

Tabs

Tabs নির্মিত হয় <ul class="nav nav-tabs"> নিয়ে।

বিঃদ্রঃ এ ছাড়াও বর্তমান পেইজেও <li class="active"> চিহ্নিত ।

নীচের উদাহরণ গুলো navigation tabs তৈরি করেঃ

উদাহরনঃ


<ul class="nav nav-tabs">
    <li class="active"><a href="#">Home</a></li>
    <li><a href="#">Menu 1</a></li>
    <li><a href="#">Menu 2</a></li>
    <li><a href="#">Menu 3</a></li>
 </ul>

Tabs With Dropdown

ট্যাব গুলোতে dropdown Menu রাখা যায়।

নিম্নলিখিত উদাহরণে "মেনু 1" এ একটি ড্রপডাউন মেনু যোগ করা হয়েছে।
উদাহরনঃ


<ul class="nav nav-tabs">
    <li class="active"><a href="#">Home</a></li>
    <li class="dropdown">
    <a class="dropdown-toggle" data-toggle="dropdown" href="#">Menu 1
    <span class="caret"></span></a>
    <ul class="dropdown-menu">
    <li><a href="#">Submenu 1-1</a></li>
    <li><a href="#">Submenu 1-2</a></li>
    <li><a href="#">Submenu 1-3</a></li>
    </ul>
    </li>
    <li><a href="#">Menu 2</a></li>
    <li><a href="#">Menu 3</a></li>
 </ul>

Pills

Pills নির্মিত হয় <ul class="nav nav-pills"> দ্বারা । এ ছাড়াও <li class="active"> বর্তমান page এ চিহ্নিত ।
উদাহরনঃ


<ul class="nav nav-pills">
    <li class="active"><a href="#">Home</a></li>
    <li><a href="#">Menu 1</a></li>
    <li><a href="#">Menu 2</a></li>
    <li><a href="#">Menu 3</a></li>
 </ul>

Vertical Pills

Pills লম্বালম্বি ভাবেও প্রদর্শিত হতে পারে। এই ক্ষেত্রে শুধু “.nav-stacked” class টি ব্যবহার করতে হবে।

নিম্নলিখিত উদাহরণে উলম্ব Pill Menu টিকে শেষ কলামের মধ্যে রাখা হয়েছে। তাই বড় পর্দায় মেনুটি ডান পাশে প্রদর্শিত হবে। কিন্তু একটি ছোট পর্দায়, বিষয়বস্তু স্বয়ংক্রিয়ভাবে একটি একক কলামের বিন্যাস মধ্যে নিজেই সমন্বয় করে নিবে।

উদাহরনঃ


 <div class="col-md-3">
     <ul class="nav nav-pills nav-stacked">
         <li class="active"><a href="#">Home</a></li>
         <li><a href="#">Menu 1</a></li>
         <li><a href="#">Menu 2</a></li>
         <li><a href="#">Menu 3</a></li>
     </ul>
 </div>

 

 

Pills With Dropdown Menu

Pills এর মধ্যেও Dropdown রাখা যায়।

নিম্নলিখিত উদাহরণে "মেনু 1" এ একটি ড্রপডাউন মেনু যোগ করা হয়েছে।

উদাহরনঃ


 <ul class="nav nav-pills nav-stacked">

 <li class="active"><a href="#">Home</a></li>
     <li class="dropdown">
     <a class="dropdown-toggle" data-toggle="dropdown" href="#">Menu 1
     <span class="caret"></span></a>
   <ul class="dropdown-menu">
     <li><a href="#">Submenu 1-1</a></li>
     <li><a href="#">Submenu 1-2</a></li>
     <li><a href="#">Submenu 1-3</a></li>
   </ul>
 </li>

     <li><a href="#">Menu 2</a></li>
     <li><a href="#">Menu 3</a></li>

 </ul>

 

Bootstrap Case: একাধিক কলাম এর বিন্যাস (Multicolumn Layout)

Huge Sell on Popular Electronics

একাধিক কলাম এর বিন্যাস

Bootstrap ব্যবহার করে সহজেই multicolumn layout তৈরি করা যায় ।

Bootstrap একটি প্রতিক্রিয়াশীল এবং mobile-first 12-column grid system দিয়ে থাকে।

বিভিন্ন স্ক্রীন সাইজে কলাম গুলো নিজেদের মধ্যে পুনরায় সজ্জিত হয়।

Grid এর লিছু নিয়মাবলিঃ

  • একটি ধারক দিয়ে শুরু করুন ।
  • <div class="row"> দ্বারা এর মধ্যে সারি তৈরি করুন।
  • দ্রুত Grid column তৈরির জন্য কিছু পূর্বনির্ধারিত ক্লাস যেমন .col-md-4, .col-md-6 ইত্যাদি ব্যবহার করুন।
  • আপনার ইচ্ছা অনুযায়ী যেকোনো ১২ টি কলাম জুড়ে Grid কলাম তৈরি হয়।যেমনঃ তিনটি সমান কলামে তিনটি .col-MD-4 কলাম ব্যবহার করতে হবে
  • .col - *- * ক্লাস এর মধ্যের সংখ্যা গুলো সবসময় প্রতিটি সারির 12 পর্যন্ত যোগ করা উচিত।
  • বিষয়বস্তু Grid কলাম এর ভিতরে স্থাপন করা হয়।

উদাহরনঃ


 <div class="row">

      <div class="col-md-3">
           <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod              
           tempor incididunt ut labore et dolore magna aliqua.</p>
      </div>

      <div class="col-md-3">
           <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi 
           ut aliquip ex ea commodo consequat.</p>
      </div>

      <div class="col-md-3">
           <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem 
           accusantium doloremque laudantium, totam rem aperiam.</p>
      </div>

      <div class="col-md-3">
           <p>Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae 
           vitae dicta sunt explicabo.</p>
      </div>

 </div>

ভিন্ন প্রশস্ততা বিশিষ্ট কলাম

এখন আমরা ভিন্ন ভিন্ন প্রশস্ততা বিশিষ্ট কলাম তৈরি করতে চাই।

নিম্নলিখিত উদাহরণটি একটি তিন কলাম বিশিষ্ট কাঠামো তৈরি করে যেখানে মাঝখানের কলামটি প্রথম ও দ্বিতীয় কলাম থেকে বেশি প্রশস্থ।

উদাহরনঃ


<div class="row">

     <div class="col-md-3">
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
          tempor incididunt ut labore et dolore magna aliqua.</p>
     </div>

     <div class="col-md-6">
          <p>Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi 
          ut aliquip ex ea commodo consequat.</p>
          <p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem 
          accusantium doloremque laudantium, totam rem aperiam.</p>
     </div>

     <div class="col-md-3">
          <p>Eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
          dicta sunt explicabo.</p>
     </div>

 </div>

 

Bootstrap Case: বাটন ও আইকন যোগ করা (Adding Button and Icon)

Huge Sell on Popular Electronics

বাটন যুক্ত করা

বাটন ক্লাস গুলোতে <a>, <button>, or <input> এই উপাদান সমুহে ব্যবহৃত হতে পারে।

নিম্নলিখিত উদাহরণে Jumbotron এর মধ্যে একটি বড় এবং হালকা নীল "Search" বাটন দেওয়া হল। এই effect টি পেতে হলে আমাদের .btn-lg এবং .btn-info ক্লাস গুলো ব্যবহার করতে হবে।
উদাহরনঃ


 <div class="jumbotron">
     <h1>My first Bootstrap website!</h1>
     <p>This page will grow as we add more and more components from Bootstrap...</p>
     <a href="#" class="btn btn-info btn-lg">Search</a>
 </div

বিঃদ্রঃ কেন আমরা লিঙ্কের href attribute এর মধ্যে একটি # রাখলাম?

খালি পেজ অথবা "404" বার্তা না পেতে চাইলে আমরা লিঙ্ক হিসেবে # ব্যবহার করব। বাস্তবে অবশ্যই আমরা "Search” পেজ এ আসল লিঙ্ক ব্যবহার করব।

 

আইকন যুক্ত করা

Bootstrap ২০০ Glyphicons দিয়ে থাকে।

Glyphicons প্রদর্শন করতে লিখুনঃ


<span class="glyphicon glyphicon-print"></span>

কোড লাইন উপরে একটি মুদ্রণ আইকন প্রদর্শন করবে।

নিম্নলিখিত উদাহরণে "Search" বাটনে একটি সার্চ আইকন যুক্ত করা হয়েছেঃ


 <div class="jumbotron">
      <h1>My first Bootstrap website!</h1>
      <p>This page will grow as we add more and more components from Bootstrap...</p>
      <a href="#" class="btn btn-info btn-lg">
      <span class="glyphicon glyphicon-search"></span> Search
      </a>
 </div>

 

Bootstrap Case: আমার প্রথম বুটস্ট্র্যাপ ওয়েবসাইট (My First Bootstrap Website)

Huge Sell on Popular Electronics

অনুবাদ করেছেন Abu Jubair Mahin

 

স্ক্র্যাচ থেকে একটি বুটস্ট্র্যাপ ওয়েব পৃষ্ঠা তৈরি করুন

নিচের পৃষ্ঠায় Scratch (স্ক্র্যাচ) থেকে একটি বুটস্ট্র্যাপ ওয়েবসাইট কিভাবে নির্মাণ করা হয় সেটা প্রদর্শন করা হবে

আমরা একটি সহজ HTML পৃষ্ঠা দিয়ে শুরু করব, এবং পরে আমরা অনেক বেশি বেশি components সেখানে যোগ করব,
যতক্ষণ না আমরা একটি সম্পূর্ণরূপে কার্যকরী এবং প্রতিক্রিয়াশীল ওয়েবসাইট পাব ।

আমরা নিম্নলিখিত HTML পৃষ্ঠা দিয়ে শুরু করব:


 <!DOCTYPE html>
 <html lang="en">
 <head>
 <title>Bootstrap Case</title>
 <meta charset="utf-8">
 </head>
<body>
     <h1>My first Bootstrap website!</h1>
     <p>This page will grow as we add more and more components from Bootstrap...</p>
     <p>This is a paragraph.</p>
     <p>This is another paragraph.</p>
     <p>This is a paragraph.</p>
     <p>This is another paragraph.</p>
 </body>
 </html>

 

 

Bootstrap CDN যোগ এবং Containers এর ভিতরে বিভিন্ন উপাদান যুক্ত করা

আমাদের প্রথম কাজ হল Bootstrap CDN যুক্ত করা এবং jQuery তে একটি লিঙ্ক যুক্ত করা

পরবর্তীতে আমরা <body> এর ভিতর সকল HTML উপাদানগুলো যোগ করব এবং এর ভিতরে <div class="container"> ও থাকবেঃ

উদাহরনঃ


 <!DOCTYPE html>
 <html lang="en">
 <head>
 <title>Bootstrap Case</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
 </head>
 <body>
 <div class="container">
      <h1>My first Bootstrap website!</h1>
      <p>This page will grow as we add more and more components from Bootstrap...</p>
      <p>This is another paragraph.</p>
      <p>This is a paragraph.</p>
      <p>This is another paragraph.</p>
 </div>
 </body>
 </html>

 

 

টিপস: সম্পূর্ণ স্কিনটা পেইজ দিয়ে Fill করতে চাইলে .container কে পরিবর্তন করে .container-fluid লিখুনঃ

উদাহরনঃ


 <!DOCTYPE html>
 <html lang="en">
 <head>
 <title>Bootstrap Case</title>
 <meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
 <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
 </head>
 <body>
<div class="container-fluid">
     <h1>My first Bootstrap website!</h1>
     <p>This page will grow as we add more and more components from Bootstrap...</p>
     <p>This is another paragraph.</p>
     <p>This is a paragraph.</p>
     <p>This is another paragraph.</p>
 </div>
 </body>
 </html>

 

ধন্যবাদ , আশা করি বুঝতে পেরেছেন।

বু্টস্ট্র্যাপ গ্রিড উদাহরণ (Bootstrap Grid Examples)

Huge Sell on Popular Electronics

নিচে Bootstrap grid layouts এর কিছু উদাহহরন লক্ষ্য করা যাকঃ

Three Equal Columns (তিনটি সমান কলামের জন্য)

নিম্নলিখিত উদাহরণের মাধ্যমে দেখা যাবে কিভাবে একটি তিন সমান প্রস্থ কলাম ট্যাবলেট এ শুরু হয় এবং সেটা বড় ডেস্কটপের স্কেলিং পায়, মোবাইলে কলামগুলো স্বয়ংক্রিয় ভাবে স্থান পায় ।


<div class="row">
  <div class="col-sm-4">.col-sm-4</div>
  <div class="col-sm-4">.col-sm-4</div>
  <div class="col-sm-4">.col-sm-4</div>
</div>

ফলাফল : তিনটি সমান কলামের জন্য

 

Three Unequal Columns (তিনটি অসমান কলামের জন্য)

নিম্নলিখিত উদাহরণের মাধ্যমে দেখা যাবে কিভাবে তিনটি ভিন্ন প্রস্থের কলাম ট্যাবলেট এ শুরু হয় এবং সেটা বড় ডেস্কটপের স্কেলিং পায়ঃ

উদাহরনঃ


<div class="row">
  <div class="col-sm-3">.col-sm-3</div>
  <div class="col-sm-6">.col-sm-6</div>
  <div class="col-sm-3">.col-sm-3</div>
</div>

ফলাফল : তিনটি অসমান কলামের জন্য

 

Two Unequal Columns (দুইটি অসমান কলামের জন্য)

নিম্নলিখিত উদাহরণের মাধ্যমে দেখা যাবে কিভাবে দুটি ভিন্ন প্রস্থের কলাম ট্যাবলেট এ শুরু হয় এবং সেটা বড় ডেস্কটপের স্কেলিং পায়ঃ

উদাহরনঃ


<div class="row">
  <div class="col-sm-4">.col-sm-4</div>
  <div class="col-sm-8">.col-sm-8</div>
</div>

ফলাফল : দুইটি অসমান কলামের জন্য

 

দুইটি নেস্টেড কলাম এর সাথে দুইটি কলাম (Two Columns With Two Nested Columns)

নিম্নলিখিত উদাহরণে দেখা যাবে যে কিভাবে two columns ট্যাবলেট এ শুরু এবং বড় ডেস্কটপে সেটা Scaling করবে যা বড় কলামের মধ্যে অন্য দুটি কলাম (সমান প্রস্থ) (মোবাইল ফোন, এই কলাম এবং তাদের nested
কলাম stackহবে)

উদাহরনঃ


<div class="row">
  <div class="col-sm-8">
    .col-sm-8
    <div class="row">
      <div class="col-sm-6">.col-sm-6</div>
      <div class="col-sm-6">.col-sm-6</div>
    </div>
  </div>
  <div class="col-sm-4">.col-sm-4</div>
</div>

ফলাফল : দুইটি নেস্টেড কলাম এর সাথে দুই কলাম

 

মিশ্র: মোবাইল এবং ডেস্কটপ (Mixed: Mobile And Desktop)

Bootstrap grid সিস্টেমের চারটি ক্লাস আছেঃ xs (phones), sm (tablets), md (desktops), এবং lg (larger desktops) এই class গুলো ব্যবহার করে আরো গতিশীল এবং নমনীয় লেআউট তৈরি করা যায়।

টিপ: প্রতিটি Class বর্গাকার, তাই আপনি xs এবং sm জন্য একই প্রস্থ সেট করতে চান তাহলে আপনাকে শুধুমাত্র xs নির্দিষ্ট করতে হবে.

উদাহরনঃ


<div class="row">
  <div class="col-xs-12 col-md-8">.col-xs-12 .col-md-8</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row">
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
  <div class="col-xs-6 col-md-4">.col-xs-6 .col-md-4</div>
</div>
<div class="row">
  <div class="col-xs-6">.col-xs-6</div>
  <div class="col-xs-6">.col-xs-6</div>
</div>

টিপস: মনে রাখবেন, গ্রিড কলামে একটি সারি জন্য বারো পর্যন্ত যোগ করা যেতে পারে, এর বেশি হলে কলাম কোন ব্যাপার viewport স্ট্যাক করবে না ।

 

মিশ্র: মোবাইল, ট্যাবলেট এবং ডেস্কটপ (Mixed: Mobile, Tablet And Desktop)

উদাহরনঃ


<div class="row">
  <div class="col-xs-12 col-sm-6 col-lg-8">.col-xs-12 .col-sm-6 .col-lg-8</div>
  <div class="col-xs-6 col-lg-4">.col-xs-6 .col-lg-4</div>
</div>
<div class="row">
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
  <div class="col-xs-6 col-sm-4">.col-xs-6 .col-sm-4</div>
</div>

ফলাফল : মিশ্র: মোবাইল, ট্যাবলেট এবং ডেস্কটপ

 

Clear Floats

নির্দিষ্ট ব্রেকপয়েন্ট এ Clear floats (.clearfix class এর সঙ্গে) ব্যবহার করা হয় যাতে uneven content এর সাথে strange wrapping প্রতিরোধ করা যায় ।

উদাহরনঃ


<div class="row">
  <div class="col-xs-6 col-sm-3">
    Column 1
    <br>
    Resize the browser window to see the effect.
  </div>
  <div class="col-xs-6 col-sm-3">Column 2</div>
  <!-- Add clearfix for only the required viewport -->
  <div class="clearfix visible-xs"></div>
  <div class="col-xs-6 col-sm-3">Column 3</div>
  <div class="col-xs-6 col-sm-3">Column 4</div>
</div>

ফলাফল : Clear Float

 

ভারসাম্য করা কলাম (Offsetting Columns)

.col-md-offset-* classes ব্যবহার করা কলামকে ডান পাশ্র সরিয়ে নেয়া হয় ।

এই ক্লাস * কলাম এর সাহায্যে কলামের বাম মার্জিন বৃদ্ধি করে:

উদাহরনঃ


<div class="row">
  <div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
  <div class="col-sm-5 col-sm-offset-2 col-md-6 col-md-offset-0">
  .col-sm-5 .col-sm-offset-2 .col-md-6 .col-md-offset-0</div>
</div>

ফলাফল : Offsetting Column

 

ধাক্কা ও টানা - কলামের ক্রম পরিবর্তন (Push And Pull - Change Column Ordering)

.col-md-push-* এবং .col-md-pull-* classes এর সাহায্যে grid columns এর order পরিবর্তন করা হয় ।

উদাহরনঃ


<div class="row">
  <div class="col-sm-4 col-sm-push-8">.col-sm-4 .col-sm-push-8</div>
  <div class="col-sm-8 col-sm-pull-4">.col-sm-8 .col-sm-pull-4</div>
</div>

ফলাফল : Push And Pull

 

ধন্যবাদ মনযোগ সহকারে টিউটোরিয়ালটি পরার জন্য। আশা করি বুঝতে পেরেছেন ।

 

বুটস্ট্র্যাপ গ্রিড – বড় ডিভাইস । Bootstrap Grid – Large Devices

Huge Sell on Popular Electronics

পূর্বের অধ্যায়ে আমরা ছোট (small) এবং মাঝারি (medium) device এর জন্য class সহ grid এর উদাহরণ আলোচনা করেছি। সেখানে দুইটি div রেখে হয়, যাদের ছোট device এর জন্য ২৫% /৭৫% এবং মাঝারি device এর জন্য ৫০% /৫০% ভাগে ভাগ (split) করা হয়।


<div class="col-sm-3 col-md-6">....</div>
<div class="col-sm-9 col-md-6">....</div>

 

তবে বড় (Large) device এর ক্ষেত্রে দুইটি div-কে ৩৩% /৬৬% ভাগে ভাগ করা যেতে পারে।

টিপস: বড় device এর ক্ষেত্রে সাধারণত screen এর width 1200 pixel বা তার বেশি হিসাবে গণনা করা হয়।

বড় device এর ক্ষেত্রে .col-lg-* class ব্যবহার করা হয়।

এখন আমরা বড় device এর ক্ষেত্রে column এর width যোগ করবো:


<div class="col-sm-3 col-md-6 col-lg-4">....</div>
<div class="col-sm-9 col-md-6 col-lg-8">....</div>

 

সুতরাং Bootstrap আলোচনার এই পর্যায়ে দেখা যাচ্ছে যে, ছোট (small) device এর ক্ষেত্রে -sm-, মাঝারি (medium) device এর ক্ষেত্রে -md-এবং বড় (Large) device এর ক্ষেত্রে -lg- class ব্যবহার করা উত্তম।

নিম্নোক্ত উদাহরণে দেখানো হয়েছে যে, div দুইটি, ছোট (small) device এর ক্ষেত্রে ২৫% /৭৫%, মাঝারি (medium) device এর ক্ষেত্রে ৫০% /৫০% এবং বড় (Large) device এর ক্ষেত্রে ৩৩% /৬৬% এ বিভক্ত (split) হয়ে যায়:


<div class="container-fluid">
  <h1>Hello World!</h1>
  <div class="row">
    <div class="col-sm-3 col-md-6 col-lg-4" style="background-color:lavender;">
      <p>Lorem ipsum...</p>
    </div>
    <div class="col-sm-9 col-md-6 col-lg-8" style="background-color:lavenderblush;">
      <p>Sed ut perspiciatis...</p>
    </div>
  </div>
</div>

ফলাফল : ছোট, মাঝারি ও বড় ডিভাইস

 

বুটস্ট্র্যাপ গ্রিড – মধ্যম ডিভাইস । Bootstrap Grid – Medium Devices

Huge Sell on Popular Electronics

পূর্ববর্তী অধ্যায়ে আমরা ছোট ডিভাইসের জন্য Class সহ একটি Grid এর উদাহরন দেখিয়েছিলাম।

আমরা সেখানে দুইটি divs (কলাম ) ব্যবহার করেছিলাম এবুং আমরা সেখানে 25%/75% এর বিভক্তি দেখিয়েছি।


<div class="col-sm-3">....</div>
<div class="col-sm-9">....</div>

 

কিন্তু মাঝারি ডিভাইসের জন্য সব থেকে ভাল হবে যদি 50%/50% ব্যবহার করা হয়।

নির্দেশনাঃ মাঝারি রকমের ডিভাইসের Screen সাইজ সাধারণত 992 pixels থেকে 1199 pixels হয়ে থাকে ।

মাঝারি ডিভাইসের জন্য আমরা .col-md-* classes ব্যবহার করব।

এখন আমরা Medium Device এর জন্য কলাম এর বিস্তার ব্যবহার করা দেখবঃ


<div class="col-sm-3 col-md-6">....</div>
<div class="col-sm-9 col-md-6">....</div>

 

এখন Bootstrap এর মতে বলা যায়, Small সাইজের জন্য খেয়াল কর আমরা -sm- class ব্যবহার করেছি। Medium সাইজের জন্য খেয়াল কর আমরা -md- class ব্যবহার করেছি।

নিচের উদাহরন Small Device এর জন্য 25%/75% Split ফলাফল প্রদর্শন করবে আর। Medium Device এর জন্য 50%/50% Split ফলাফল প্রদর্শন করবেঃ

উদাহরনঃ


<div class="container-fluid">
  <h1>Hello World!</h1>
  <div class="row">
    <div class="col-sm-3 col-md-6" style="background-color:lavender;">
      <p>Lorem ipsum...</p>
    </div>
    <div class="col-sm-9 col-md-6" style="background-color:lavenderblush;">
      <p>Sed ut perspiciatis...</p>
    </div>
  </div>
</div>

ফলাফল : ছোট ও মাঝারি ডিভাইস

 

বুটস্ট্র্যাপ গ্রিড – স্ট্যাকড-টু-হরাইজন্টাল (Bootstrap Grid – Stacked-to-horizontal)

Huge Sell on Popular Electronics

শেখ মাহফুজুর রহমান

 

বুটস্ট্র্যাপ গ্রিডের উদাহরণঃ স্ট্যাকড থেকে হরাইজন্টাল

আমরা একটি সাধারণ গ্রিড সিস্টেম তৈরি করবো যা মোবাইল/টেবলেট-এ স্ট্যাকড বা স্তুপাকারে (একটির উপর আরেকটি) দেখাবে, কিন্তু মাঝারী/বড় ডিভাইস যেমন ডেস্কটপে হরাইজন্টাল হয়ে যাবে।

নিচের উদাহরণটি একটি খুবই সাধারণ "stacked-to-horizontal" লেআউট তৈরি করেঃ

উদাহরণঃ Stacked-to-horizontal


<div class="container">
  <h1>Hello World!</h1>
  <div class="row">
    <div class="col-sm-6" style="background-color:lavender;">
      <p>Lorem ipsum...</p>
    </div>
    <div class="col-sm-6" style="background-color:lavenderblush;">
      <p>Sed ut perspiciatis...</p>
    </div>
  </div>
</div>

ফলাফল : Stacked-to-horizontal

টিপসঃ .col-sm-* ক্লাসের নাম্বারগুলো কতটি column এ div টি প্রসারিত হবে তা নির্দেশ করে (১২টির মধ্যে)। তাই, .col-sm-1 এক কলাম পর্যন্ত প্রসারিত হয়, .col-sm-4 চার কলাম পর্যন্ত প্রসারিত হয়, .col-sm-6 ছয় কলাম পর্যন্ত প্রসারিত হয় ইত্যাদি।

নোটঃ নিশ্চিত করতে হবে যেন মোট কলাম সংখ্যা ১২ এর মধ্যে থাকে।

টিপসঃ ক্লাস .container কে .container-fluid তে পরিবর্তন করে আপনি যেকোন ফিক্সড-উইডথ লেআউটকে ফুল-উইডথ লেআউটে পরিবর্তন করতে পারবেনঃ

উদাহরণঃ Fluid container


<div class="container-fluid">
  <h1>Hello World!</h1>
  <div class="row">
    <div class="col-sm-6" style="background-color:lavender;">
      <p>Lorem ipsum...</p>
    </div>
    <div class="col-sm-6" style="background-color:lavenderblush;">
      <p>Sed ut perspiciatis...</p>
    </div>
  </div>
</div>

ফলাফল : Fluid container

 

বুটস্ট্র্যাপ গ্রিড সিস্টেম (Bootstrap Grid System)

Huge Sell on Popular Electronics

শেখ মাহফুজুর রহমান

 

বুটস্ট্র্যাপের গ্রিড সিস্টেম একটি পেজে ১২টি পর্যন্ত কলাম যোগ করতে দেয়। আপনি যদি আলাদাভাবে সবগুলো (১২টি) কলাম ব্যবহার করতে না চান তাহলে কিছু কলামকে গ্রুপ বা গুচ্ছাকৃত করে প্রশস্তততর কলাম তৈরি করতে পারবেনঃ

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 1

span 4

span 4

span 4

span 4

span 8

span 6

span 6

span 12

বুটস্ট্র্যাপ গ্রিড সিস্টেম রেস্পন্সিভ হয়ে থাকে এবং স্ক্রিনের আকার অনুযায়ী কলামগুলো পুনরায় সজ্জিত হয়ঃ বড় স্ক্রিনে তিনটি কলামের মধ্যে কন্টেন্টগুলো সাজালে দেখতে ভালো লাগে কিন্তু ছোট স্ক্রিনে কন্টেন্টগুলো একটি আরেকটির উপর স্তুপাকারে সজ্জিত হলে দেখতে ভালো লাগবে।

টিপসঃ মনে রখবেন একটি রো বা সারির জন্য ১২টি পর্যন্ত গ্রিড কলাম যোগ করতে হবে। এর চেয়ে বেশি কলাম যোগ করা হলে, স্ক্রিন যত বড়ই হোক না কেন, সেগুলো স্তুপাকার হয়ে যাবে।

 

গ্রিড ক্লাস

বুটস্ট্র্যাপ গ্রিড সিস্টেমের চারটি ক্লাস রয়েছেঃ

  • xs (ফোনের জন্য)
  • sm (টেবলেটের জন্য)
  • md (ডেস্কটপের জন্য)
  • lg (বড় ডেস্কটপের জন্য)

 

উপরের ক্লাসগুলো একসাথে করে আরও ডাইনামিক এবং ফ্ল্যাক্সিবল লেআউট তৈরি করা সম্ভব।

টিপসঃ প্রত্যেকটি ক্লাস মাপ অনুযায়ী হয়ে থাকে, তাই আপনি যদি xs এবং sm এর জন্য একই উইডথ (প্রস্থ্য) ঠিক করতে চান তাহলে আপনাকে শুধু xs কে নির্দিষ্ট করে দিলেই হবে।

 

গ্রিড সিস্টেমের নিয়ম

কিছু বুটস্ট্র্যাপ গ্রিড সিস্টেমের নিয়ম:

সঠিক অ্যালাইনম্যান্ট ও প্যাডিং এর জন্য রো'গুলোকে অবশ্যই .container (এর প্রস্থ্য পরিবর্তিত হয়না) অথবা .container-fluid (প্রস্থ্য পুরো স্ক্রিনে প্রসারিত হতে পারে) এর ভিতরে রাখতে হবে।

  • কতগুলো কলাম নিয়ে একটি হরাইজন্টাল গ্রুপ তৈরি করতে রো ব্যবহার করুন।
  • কন্টেন্টকে অবশ্যই কলামের ভিতরে রাখতে হবে এবং কলামগুলোই শুধুমাত্র রো এর ইমিডিয়েট চাইল্ড হতে পারে।
  • .row এবং .col-sm-4 এর মতো পুর্ব-সংজ্ঞায়িত ক্লাসগুলো তাৎক্ষণিকভাবে তৈরি গ্রিড লেআউটের জন্য ব্যবহার করা যায়।
  • কলাম এর কন্টেন্টগুলোর মধ্যে প্যাডিং এর মাধ্যমে ফাঁক তৈরি করে। এই প্যাডিং .rows এর উপর নেগেটিভ মার্জিনের মাধ্যমে প্রথম ও শেষ কলামের এর জন্য রো'তে অফসেট থাকে।
  • আপনি কতটি কলামে প্রসারিত করবেন তা ১২টি কলামের নাম্বার নির্দিষ্ট করে দেয়ার মাধ্যমে গ্রিড কলাম তৈরি করতে পারবেন। উদাহরণস্বরূপ, তিনটি সমান কলাম তিনটি .col-sm-4 ব্যবহার করবেন।

 

একটি বুটস্ট্র্যাপ গ্রিডের বেসিক স্ট্রাকচার

নিচে একটি বুটস্ট্যাপ গ্রিডের বেসিক স্ট্রাকচার দেয়া হলোঃ


<div class="container">
  <div class="row">
    <div class="col-*-*"></div>
  </div>
  <div class="row">
    <div class="col-*-*"></div>
    <div class="col-*-*"></div>
    <div class="col-*-*"></div>
  </div>
  <div class="row">
    ...
  </div>
</div>

 

আপনার ইচ্ছে মতো লেআউট তৈরি করতে চাইলে প্রথমে একটি কন্টেইনার তৈরি করুন (<div class="container">)। তারপর একটি রো তৈরি করুন (<div class="row">)। এরপরে, ইচ্ছেমতো কলাম সংখ্যা যোগ করুন ( সঠিক .col-*-* ক্লাসসহ ট্যাগ)। খেয়াল রাখবেন, .col-*-* এর নাম্বারগুলো প্রত্যেক রো এর জন্য ১২ পর্যন্ত হতে হবে।

 

গ্রিড অপশান

বিভিন্ন ডিভাইসে বুটস্ট্র্যাপ গ্রিড সিস্টেম কিভাবে কাজ করে তা নিচের ছকে ব্যাখ্যা করা হলোঃ

অতি ছোট ডিভাইস

ফোন

(<768px)

ছোট ডিভাইস

ট্যাবলেট (>=768px)

মাঝারি ডিভাইস

ডেস্কটপ

(>=992px)

বড় ডিভাইস

ডেস্কটপ

(>=1200px)

গ্রিড এর আচরন

সব সময়ে অনুভূমিক

শুরুতে ধসে যায়, ব্রেকপয়েন্ট এর উপরে অনুভূমিক

শুরুতে ধসে যায়, ব্রেকপয়েন্ট এর উপরে অনুভূমিক

শুরুতে ধসে যায়, ব্রেকপয়েন্ট এর উপরে অনুভূমিক

ধারক এর প্রস্থ

নাই (স্বয়ংক্রিয়)

750px

970px

1170px

ক্লাস প্রিফিক্স

.col-xs-

.col-sm-

.col-md-

.col-lg-

কলাম সংখ্যা

12

12

12

12

কলামের প্রসস্থতা

স্বয়ংক্রিয়

~62px

~81px

~97px

গুটার প্রস্থ

30px (কলামের প্রতিটি পার্শ্বে 15px)

30px (কলামের প্রতিটি পার্শ্বে 15px)

30px (কলামের প্রতিটি পার্শ্বে 15px)

30px (কলামের প্রতিটি পার্শ্বে 15px)

Nestable

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

অফসেটস

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

কলাম ক্রম

হ্যাঁ

হ্যাঁ

হ্যাঁ

হ্যাঁ

বুটস্ট্রাপ ক্যারোজেল প্লাগিন (Bootstrap Carousel Plugin)

Huge Sell on Popular Electronics

বুটস্ট্রাপ কারুসেল প্লাগিন

Carousel প্লাগইন হচ্ছে এলিমেন্ট দ্বারা আবর্ত করার জন্য একটি ক্যারোজেল (স্লাইডশো) এর মত একটি উপাদান।

টিপস : প্লাগইন স্বতন্ত্রভাবে অন্তর্ভুক্ত করা যেতে পারে (বুটস্ট্র্যাপ এর স্বতন্ত্র "carousel.js" ফাইল ব্যবহার করে), অথবা সব একযোগে ("bootstrap.js" বা "bootstrap.min.js" ব্যবহার করে)

এর উদাহরণ

নোট : ক্যারোজেল ইন্টারটেন এক্সপ্লোরার ৯ এবং এর আগের ভার্সনগুলোতে সাপর্ট করে না (কারণ তারা স্লাইড ইফেক্ট CSS 3 ট্রানজিশন এবং অ্যানিমেশন ব্যবহার করে)।

 

কিভাবে একটি ক্যারোজেল তৈরি করা যায়

নিজের উদাহরণে একটি সাধারণ ক্যারোজেল তৈরি করার পদ্ধতি দেখানো হল:

উদাহরণ : ০১


<div id="myCarousel" class="carousel slide" data-ride="carousel">
  <!-- Indicators -->
  <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
    <li data-target="#myCarousel" data-slide-to="3"></li>
  </ol>

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <img src="img_chania.jpg" alt="Chania">
    </div>

    <div class="item">
      <img src="img_chania2.jpg" alt="Chania">
    </div>

    <div class="item">
      <img src="img_flower.jpg" alt="Flower">
    </div>

    <div class="item">
      <img src="img_flower2.jpg" alt="Flower">
    </div>
  </div>

  <!-- Left and right controls -->
  <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

ফলাফল : কিভাবে কেরোজেল তৈরি করবেন

 

উদাহরণের ব্যাখ্যা

<div> অংশ:

প্রথমে id="myCarousel" নামে একটা আইডি নিতে হবে যাতে ক্যারোজেল এর কন্ট্রোলগুলো সিঠিকভাবে কাজ করতে পারে।

class="carousel" নির্দেশ করে যে <div> এর ভিতরে একটি ক্যারোজেল আছে।

.slide ক্লাসটি সিএসএস ট্রানজিশন এবং অ্যানিমেশন ইফেক্ট যোগ করে, যা যখন নতুন আইটেম প্রদর্শিত হয় তখন আগের আইটেমটিকে স্লাইড করে। আপনি যদি এটি না চান তাহলে এটিকে মুছে দিতে পারেন।

data-ride="carousel" এট্রিবিউটটি পেজ লোড হওয়ার সময় বুটস্ট্রাপকে নির্দেম দেয় ক্যারোজেল এনিমেশন শুরু করার জন্য।

 

"Indicators" (নির্দেশক) অংশ

"Indicators" হচ্ছে প্রতিটি স্লাইডের নিজের দিকে ছোট একটি বিন্দু (যা নির্দেশ ক্যারোজেল এর মধ্যে কতটি স্লাইড রয়েছে এবং ব্যবহারকারী বর্তমানে কোন স্লাইডটি দেখছে)।

.carousel-indicators ক্লাস এর সাথে ক্রম তালিকায় নির্দেশক উল্লেক করা হয়।

data-target এট্রিবিউট ক্যারোজেল এর আইডিকে পয়েন্ট করে।

data-slide-to এট্রিবউট নির্দেশ করে কোন স্লাইডটি প্রদর্শিত হবে যখন নির্দিষ্ট ডট এ ক্লিক করা হবে।

 

"Wrapper for slides" স্লাইড এর জন্য আবরণ অংশ:

<div> এর মধ্যে .carousel-inner ক্লাস দ্বারা স্লাইড নির্দিষ্ট করা হয়।

.item ক্লাস দ্বারা <div> এর মধ্যের উপাদানগুলোকে সঙ্গায়িত করা হয়।

একটি স্লাইড এর মধ্যে .active ক্লাস যোগ করতে হয়। এছাড়া ক্যারোজেলটি দৃশ্যমান হয় না।

 

"Left and right controls" ডান বাম নিয়ন্ত্রণ অংশ:

কোডটি ডান এবং বাম বাটন যোগ করে যা দ্বারা ব্যবহারকারী নিজের ইচ্ছা মতো ডান অথবা বাম স্লাইডে যেতে পারে।

data-slide এট্রিবিউটটি prev" এবং "next" কীওয়ার্ডকে গ্রহণ করে। যা বর্তমান অবস্থানের পরিপ্রেক্ষিকে স্লাইড এর আপেক্ষিক অবস্থান পরিবর্তন করে।

 

 

 

স্লাইড এ ক্যাপশন যোগ করা

প্রতিটি স্লাইডের জন্য ক্যাপসন তৈরি করার জন্য প্রতিটি <div class="item">  এর ভিতরে <div class="carousel-caption"> যোগ করুন।

উদাহরণ ০২:


<div id="myCarousel" class="carousel slide" data-ride="carousel">
  <!-- Indicators -->
  <ol class="carousel-indicators">
    <li data-target="#myCarousel" data-slide-to="0" class="active"></li>
    <li data-target="#myCarousel" data-slide-to="1"></li>
    <li data-target="#myCarousel" data-slide-to="2"></li>
    <li data-target="#myCarousel" data-slide-to="3"></li>
  </ol>

  <!-- Wrapper for slides -->
  <div class="carousel-inner" role="listbox">
    <div class="item active">
      <img src="img_chania.jpg" alt="Chania">
      <div class="carousel-caption">
        <h3>Chania</h3>
        <p>The atmosphere in Chania has a touch of Florence and Venice.</p>
      </div>
    </div>

    <div class="item">
      <img src="img_chania2.jpg" alt="Chania">
      <div class="carousel-caption">
        <h3>Chania</h3>
        <p>The atmosphere in Chania has a touch of Florence and Venice.</p>
      </div>
    </div>

    <div class="item">
      <img src="img_flower.jpg" alt="Flower">
      <div class="carousel-caption">
        <h3>Flowers</h3>
        <p>Beatiful flowers in Kolymbari, Crete.</p>
      </div>
    </div>

    <div class="item">
      <img src="img_flower2.jpg" alt="Flower">
      <div class="carousel-caption">
        <h3>Flowers</h3>
        <p>Beatiful flowers in Kolymbari, Crete.</p>
      </div>
    </div>
  </div>

  <!-- Left and right controls -->
  <a class="left carousel-control" href="#myCarousel" role="button" data-slide="prev">
    <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="right carousel-control" href="#myCarousel" role="button" data-slide="next">
    <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

ফলাফল : স্লাইড এ ক্যাপশন যোগ করা

 

 

বুটস্ট্র্যাপ ইনপুট সাইজিং (Bootstrap Input Sizing)

Huge Sell on Popular Electronics

.input-lg এবং .input-sm Class ব্যবহার করে প্রয়োগকৃত উপাদানসমুহের heights নির্ধারন করা হয়।

.col-lg-* এবং .col-sm-* grid column classe ব্যবহার করে প্রয়োগকৃত উপাদানসমুহের widths নির্ধারন করা হয়।

 

উচ্চতা মাপবদল / Height Sizing

নিচের উদাহরনের সাহায্যে input Element এর বিভিন্ন heights দেখানো যায়ঃ

উদাহরনঃ


<form role="form">
  <div class="form-group">
    <label for="inputdefault">Default input</label>
    <input class="form-control" id="inputdefault" type="text">
  </div>
  <div class="form-group">
    <label for="inputlg">input-lg</label>
    <input class="form-control input-lg" id="inputlg" type="text">
  </div>
  <div class="form-group">
    <label for="inputsm">input-sm</label>
    <input class="form-control input-sm" id="inputsm" type="text">
  </div>
</form>

ফলাফল : ইনপুট মাপবদল

 

<div class="form-group"> এর ভিতরে .form-group-* ব্যবহার করে আনুভুমিক ফর্ম এর খুব দ্রুত লেবেল এবং ফর্ম Controls করা যায়

উদাহরনঃ


<form class="form-horizontal" role="form">
<div class="form-group form-group-lg">
<label class="col-sm-2 control-label" for="lg">form-group-lg</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="lg">
</div>
</div>
<div class="form-group form-group-sm">
<label class="col-sm-2 control-label" for="sm">form-group-sm</label>
<div class="col-sm-10">
<input class="form-control" type="text" id="sm">
</div>
</div>
</form>


ফলাফল :ইনপুট মাপবদল

 

কলাম মাপবদল (Column Sizing)

নিচের উদাহরনের সাহায্যে আমরা দেখব কি করে বিভিন্ন widths এ বিভিন্নি .col-xs-* classes ব্যবহার করা যায়

উদাহরনঃ


<div class="col-xs-2">
  <label for="ex1">col-xs-2</label>
  <input class="form-control" id="ex1" type="text">
</div>
<div class="col-xs-3">
  <label for="ex2">col-xs-3</label>
  <input class="form-control" id="ex2" type="text">
</div>
<div class="col-xs-4">
  <label for="ex3">col-xs-4</label>
  <input class="form-control" id="ex3" type="text">
</div>

ফলাফল : কলাম মাপবদল

 

সাহায়ক নির্দেশিকা (Help Text)

ব্লক লেবেল সহায়ক নির্দেশিকা যোগ করার জন্য .help-block ক্লাস যোগ করা হয়।

উদাহরণ :


<div class="form-group">
  <label for="pwd">Password:</label>
  <input type="password" class="form-control" id="pwd" placeholder="Enter password">
  <span class="help-block">This is some help text...</span>
</div>

ফলাফল : সাহায়ক নির্দেশিকা

 

বুটস্ট্র্যাপ ইনপুট ফরম (আরো জানুন) Bootstrap Form Inputs (more)

Huge Sell on Popular Electronics

স্ট্যাটিক কন্ট্রোল

আপনি যদি একটি অনুভূমিক ফর্ম এর মধ্যে একটি ফর্ম লেবেল এর পরে প্লেইন টেক্সট সন্নিবেশ করতে চান তাহলে <p> এলিমেন্ট এর ভিতরে .form-control-static ক্লাস ব্যবহার করুন।

উদাহরনঃ


<form class="form-horizontal" role="form">
  <div class="form-group">
    <label class="control-label col-sm-2" for="email">Email:</label>
    <div class="col-sm-10">
      <p class="form-control-static">someone@example.com</p>
    </div>
  </div>
</form>

ফলাফল : স্ট্যাটিক কন্ট্রোল

 

বুটস্ট্র্যাপ ফরম কন্ট্রোল অবস্থা

  • INPUT FOCUS - ইনপুট সীমারেখা মুছে ফেলা হয় এবং ফোকাস এর উপর বক্স ছায়ার প্রয়োগ করা হয়
  • DISABLED INPUTS - একটি ইনপুট ক্ষেত্রেকে নিষ্ক্রিয় করার জন্য disabled এট্রিবিউট যোগ করা হয়
  • DISABLED FIELDSETS - একটি fieldset এর মধ্যে সকল Controls কে নিস্ক্রিয় করারা জন্য disable এট্রিবিউট যোগ করা হয়
  • READONLY INPUTS - একটি ইনপুট ফিল্ড এর মধ্যে ব্যবহারকারীর ইনপুট প্রদান প্রতিহত করার জন্য একটি readonly এট্রিবিউট যোগ করা হয়
  • VALIDATION STATES - Bootstrap ত্রুটি, সতর্কতা, এবং সাফল্যের বার্তা জন্য validation styles ব্যবহার করে। এটা ব্যবহার করেতে .has-warning, .has-error, অথবা .has-success ক্লাস  পিতৃ এলিমেন্ট এর সাথে ব্যবহার করা হয়
  • ICONS- আপনি .has-feedback ক্লাস এর মাধ্যমে feedback icons যোগ করতে পারবেন ।
  • HIDDEN LABELS - অ দৃশ্যমান লেবেল এর ক্ষেত্রে .sr-only ক্লাস যোগ করা হয়

 

নিম্নলিখিত উদাহরণে একটি অনুভূমিক আকারের ফর্মের উপরে নিয়ন্ত্রণ নিয়ন্ত্রণ অবস্থা প্রদর্শন করে:


<form class="form-horizontal" role="form">
  <div class="form-group">
    <label class="col-sm-2 control-label">Focused</label>
    <div class="col-sm-10">
      <input class="form-control" id="focusedInput" type="text" value="Click to focus">
    </div>
  </div>
  <div class="form-group">
    <label for="inputPassword" class="col-sm-2 control-label">Disabled</label>
    <div class="col-sm-10">
      <input class="form-control" id="disabledInput" type="text" disabled>
    </div>
  </div>
  <fieldset disabled>
    <div class="form-group">
      <label for="disabledTextInput" class="col-sm-2 control-label">Fieldset disabled</label>
      <div class="col-sm-10">
        <input type="text" id="disabledTextInput" class="form-control">
      </div>
    </div>
    <div class="form-group">
      <label for="disabledSelect" class="col-sm-2 control-label"></label>
      <div class="col-sm-10">
        <select id="disabledSelect" class="form-control">
          <option>Disabled select</option>
        </select>
      </div>
    </div>
  </fieldset>
  <div class="form-group has-success has-feedback">
    <label class="col-sm-2 control-label" for="inputSuccess">
    Input with success and icon</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="inputSuccess">
      <span class="glyphicon glyphicon-ok form-control-feedback"></span>
    </div>
  </div>
  <div class="form-group has-warning has-feedback">
    <label class="col-sm-2 control-label" for="inputWarning">
    Input with warning and icon</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="inputWarning">
      <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
    </div>
  </div>
  <div class="form-group has-error has-feedback">
    <label class="col-sm-2 control-label" for="inputError">
    Input with error and icon</label>
    <div class="col-sm-10">
      <input type="text" class="form-control" id="inputError">
      <span class="glyphicon glyphicon-remove form-control-feedback"></span>
    </div>
  </div>
</form>

ফলাফল : অনুভূমিক ফর্মটি নিয়ন্ত্রণ হালচাল

 

এবং এখানে একটি ইনলাইন form control states এর কিছু একটি উদাহরণ দেয়া হল:

উদাহরনঃ


<form class="form-inline" role="form">
  <div class="form-group">
    <label for="focusedInput">Focused</label>
    <input class="form-control" id="focusedInput" type="text">
  </div>
  <div class="form-group">
    <label for="inputPassword">Disabled</label>
    <input class="form-control" id="disabledInput" type="text" disabled>
  </div>
  <div class="form-group has-success has-feedback">
    <label for="inputSuccess2">Input with success</label>
    <input type="text" class="form-control" id="inputSuccess2">
    <span class="glyphicon glyphicon-ok form-control-feedback"></span>
  </div>
  <div class="form-group has-warning has-feedback">
    <label for="inputWarning2">Input with warning</label>
    <input type="text" class="form-control" id="inputWarning2">
    <span class="glyphicon glyphicon-warning-sign form-control-feedback"></span>
  </div>
  <div class="form-group has-error has-feedback">
    <label for="inputError2">Input with error</label>
    <input type="text" class="form-control" id="inputError2">
    <span class="glyphicon glyphicon-remove form-control-feedback"></span>
  </div>
</form>

ফলাফল : ইনলাইন form control state

 

বুটস্ট্র্যাপ ফরম ইনপুট (Bootstrap Form Inputs)

Huge Sell on Popular Electronics

মো: আসাদুজ্জামান মিলন
আইটি ইন্সট্রাক্টর,
এমএসআইটি, কুড়িগ্রাম।

 

সমর্থিত ফরম কন্ট্রোল

বুটস্ট্র্যাপ নিম্নলিখিত ফর্ম কন্ট্রোলগুলো সমর্থন করে

  • input
  • textarea
  • checkbox
  • radio
  • select

 

বুটস্ট্র্যাপ ইনপুট

বুটস্ট্র্যাপ এইচটিএমএল ৫ এর সকল ইনপুট টাইপ, যেমন : text, password, time, color. datetime, datetime-local, date, month, week, number, email, url ইত্যাদি সর্মথন করে।

নিচের উধাহরনে দুই প্রকারের এইচটিএমএল ৫ ইনপুট যথাঃ text ও password এর ব্যবহার দেখান হল।


<div class="form-group">
  <label for="usr">Name:</label>
  <input type="text" class="form-control" id="usr">
</div>
<div class="form-group">
  <label for="pwd">Password:</label>
  <input type="password" class="form-control" id="pwd">
</div>

 

বুটস্ট্র্যাপ টেক্সটএরিয়া


ওয়েবপেজের যে অংশে ব্যবহার কারী তার মতামত বা মনের কথা লিখতে পারে সেটিকে টেক্সট এরিয়া বলে। নিচের উদাহরনে টেক্সটএরিয়া এর ব্যবহার দেখান হল।


<div class="form-group">
  <label for="comment">Comment:</label>
  <textarea class="form-control" rows="5" id="comment"></textarea>
</div>

 

বুটস্ট্র্যাপ চেকবক্স


ওয়েবপেজে চেকবক্স ব্যবহার করা হয় যাতে ব্যবহারকারী অনেক গুলি অপশন থেকে তার পছন্দের এক বা একাধিক অপশন বেছে নিতে পারে । এর মাধ্যমে ব্যবহার কারী অনেকগুলি র্পূব নির্ধারিত বিষয় থেকে তার পছন্দের বিষয়টি বা বিষয়গুলি র্নিবাচন করতে পারেন। নিচের উদাহরন থেকে বিষয়টি বোঝা যাবে।


<div class="checkbox">
  <label><input type="checkbox" value="">Dhaka</label>
</div>
<div class="checkbox">
  <label><input type="checkbox" value="">Rangpur</label>
</div>
<div class="checkbox disabled">
  <label><input type="checkbox" value="" disabled>Bai Jing</label>
</div>

উপরের উধাহরনে দেখা যাচ্ছে, একজন ব্যবহার কারী তার পছন্দের শহর র্নিবাচনের জন্য ঢাকা, রংপুর এবং বেইজিং নামক তিনটি অপশন পাবেন যার মধ্যে বেইজিং অপশনটি নিস্ক্রিয় থাকবে।

যদি সবগুলি চেকবক্স একই লাইনে প্রদর্শন করার প্রয়োজন হয়, তবে checkbox-inline ক্লাস এর ব্যবহার করা যায়। নিচের উধাহরনে বিষয়টি বোঝা যাবে।


<label class="checkbox-inline"><input type="checkbox" value="">Option 1</label>
<label class="checkbox-inline"><input type="checkbox" value="">Option 2</label>
<label class="checkbox-inline"><input type="checkbox" value="">Option 3</label>

 

বুটস্ট্র্যাপ রেডিও বাটন


ওয়েবপেজে রেডিও বাটন ব্যবহার করা হয়, যাতে ব্যবহার কারী অনেক গুলি অপশন থেকে তার পছন্দের একটি মাত্র অপশন বেছে নিতে পারে। উদাহরনঃ


<div class="radio">
  <label><input type="radio" name="optradio">Dhaka</label>
</div>
<div class="radio">
  <label><input type="radio" name="optradio">Rangpur</label>
</div>
<div class="radio disabled">
  <label><input type="radio" name="optradio" disabled>Bai Jing</label>
</div>

উপরের উধাহরনে দেখা যাচ্ছে, একজন ব্যবহার কারী তার পছন্দের শহর র্নিবাচনের জন্য ঢাকা, রংপুর এবং বেইজিং নামক তিনটি শহর থেকে ঢাকা ও রংপুর এর যেকোন একটি নির্বাচনের সুযোগ পাবেন। বেইজিং নামক অপশনটি নিস্ক্রিয় দেথানো হয়েছে।যদি সবগুলি রেডিও বাটন একই লাইনে প্রদর্শন করার প্রয়োজন হয়, তবে radio-inline ক্লাস এর ব্যবহার করা যায়।

 

বুটস্ট্র্যাপ সিলেক্ট লিষ্ট


ব্যবহারকারীকে অনেকগুলি বিষয়ের একটি তালিকা থেকে একটি বিষয় বাছাই করার সুযোগ দিতে সিলেক্ট লিষ্ট ব্যবহার করতে হয। নিচের উধাহরনে বিষয়টি বোঝা যাবে।


<div class="form-group">
  <label for="sel1">Select list:</label>
  <select class="form-control" id="sel1">
    <option>1</option>
    <option>2</option>
    <option>3</option>
    <option>4</option>
  </select>
</div>

 

 

বুটস্ট্র্যাপ ফর্মস (Bootstrap Forms)

Huge Sell on Popular Electronics

বুটস্ট্র্যাপ এর ডিফল্ট সেটিংস

বুটস্ট্র্যাপ ফর্মস কন্ট্রোলগুলো স্বয়ংক্রিয়ভাবে কিছু global styling নেয়:

সকল Textual .form-control Class এর <input>, <textarea>, এবং <select> এলিমেন্টগুলোর  বিস্তার ১০০%

 

বুটস্ট্র্যাপ ফরম লেআউট

Bootstrap তিন ধরনের ফর্ম layouts প্রদর্শন করেঃ

  • Vertical form বা উল্লম্ব ফর্ম (এটি ডিফল্ট হিসেবে থাকে)
  • Horizontal form বা আড়াআড়ি ফর্ম
  • Inline form

এই সকল ফর্ম layouts এর জন্য কিছু আদর্শ বিধিমালা আছে

  • সবসময় <form role="form"> ব্যবহার করতে হবে (স্ক্রিন রিডার ব্যবহার করে মানুষের জন্য প্রবেশযোগ্যতা উন্নত করতে সাহায্য করে)
  • ফর্ম গুছাতে এবং নিয়ন্ত্রন করতে <div class="form-group"> ব্যবহার করতে হয় (সর্বোত্তম ফাঁকা স্থান দেয়ার জন্য প্রয়োজন)
  • সকল টেক্সট বেজ এলিমেন্ট <input>, <textarea>, এবং <select> এর জন্য .form-control ক্লাস কোয করা হয়।

 

বুটস্ট্র্যাপ উল্লম্ব ফরম Vertical Form (default)

দুইটা input fields, একটি চেকবক্স এবং একটি submit button এর সাহায্যে নিচের উদাহরন এর মতো একটি উলম্ব ফর্ম গঠন করা যায়:

উদাহরনঃ


<form role="form">
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

 

বুটস্ট্র্যাপ ইনলাইন ফরম

একটি inline form এ সকল উপাদানগুলো একটা সরল রেখায় থাকে , left-aligned, এবং লেবেল পাশাপাশি থাকে

বিশেষ দ্রস্টব্যঃ এটা শুধু মাত্র তখনই প্রদর্শিত হবে যখন viewports এর প্রসস্থতা 768px হবে।

কিছু অতিরিক্ত নিয়ম আছে এটা ব্যবহার করার জন্যঃ

  • .form-inline class টা <form> এর মাঝে স্থাপন করতে হয়

উদাহরনঃ


<form class="form-inline" role="form">
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

ফলাফল : Bootstrap Inline Form

 

সতর্কতাঃ প্রত্যেক input এর জন্য যদি label ব্যবহার না করা হয় তাহলে screen readers ফর্ম গঠনে সমস্যা করতে পারে ।

শধু মাত্র screen reader ছাড়া .sr-only class ব্যবহার করে সকল devices এর জন্য labels hide করে রাখা যাবে।

উদাহরনঃ


<form class="form-inline" role="form">
  <div class="form-group">
    <label class="sr-only" for="email">Email address:</label>
    <input type="email" class="form-control" id="email">
  </div>
  <div class="form-group">
    <label class="sr-only" for="pwd">Password:</label>
    <input type="password" class="form-control" id="pwd">
  </div>
  <div class="checkbox">
    <label><input type="checkbox"> Remember me</label>
  </div>
  <button type="submit" class="btn btn-default">Submit</button>
</form>

ফলাফল : Inline form with sr-only class

 

বুটস্ট্র্যাপ অনুভূমিক ফর্ম

A horizontal form stands apart from the other forms both in the amount of markup, and in the presentation of the form.

উভয় markup এবং presentation ফর্ম এর ক্ষেত্রে আড়াআড়ি ফর্ম গুলো অন্য ফর্মগুলো থেকে দূরত্ব বজায় রাখে

টা ব্যবহার করার কিছু নিয়ম আছে:

  • <form> এলিমেন্ট এর মধ্যে .form-horizontal class স্থাপন করতে হয়
  • সকল <label> এলিমেন্ট এর মাঝে .control-label class ব্যবহার করতে হয়

উদাহরনঃ


<form class="form-horizontal" role="form">
  <div class="form-group">
    <label class="control-label col-sm-2" for="email">Email:</label>
    <div class="col-sm-10">
      <input type="email" class="form-control" id="email" placeholder="Enter email">
    </div>
  </div>
  <div class="form-group">
    <label class="control-label col-sm-2" for="pwd">Password:</label>
    <div class="col-sm-10">
      <input type="password" class="form-control" id="pwd" placeholder="Enter password">
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <div class="checkbox">
        <label><input type="checkbox"> Remember me</label>
      </div>
    </div>
  </div>
  <div class="form-group">
    <div class="col-sm-offset-2 col-sm-10">
      <button type="submit" class="btn btn-default">Submit</button>
    </div>
  </div>
</form>

ফলাফল : Bootstrap Horizontal Form

 

 

বুটস্ট্র্যাপ লিস্ট গ্রুপ্স (Bootstrap List Groups)

Huge Sell on Popular Electronics

নাম-শরিফুল ইসলাম

Job category-Php Coder

 

basic list group তৈরি করার জন্য আমাদের <ul> এর মধ্যে .list-group ব্যবহার করতে হবে। এবং <li> এর মধ্যে .list-group-item ব্যবহার করতে হবে।


<ul class="list-group">
  <li class="list-group-item">First item</li>
  <li class="list-group-item">Second item</li>
  <li class="list-group-item">Third item</li>
</ul>

ফলাফল :

 

আমরা list-group এর সাথে badges যুক্ত করতে পারি। এইগুলো অটোমেটিক ভাবে ডান দিকে পজিশন নেয়। badge তৈরি করার জন্য span এর সাথে badge ক্লাস যোগ করতে হবে।


<ul class="list-group">
  <li class="list-group-item"><span class="badge">12</span> New</li>
  <li class="list-group-item"><span class="badge">5</span> Deleted</li>
  <li class="list-group-item"><span class="badge">3</span> Warnings</li>
</ul>

ফলাফল :

 

লিস্ট গ্রুপ এর মধ্যে আইটেম গুলোকে hyperlink করা যাবে। এই জন্য আমাদের <ul> এর পরিবর্তে div ব্যবহার করতে হবে। এবং <li>এর পরিবর্তে <a> ব্যবহার করতে হবে।


<div class="list-group">
  <a href="#" class="list-group-item active">First item</a>
  <a href="#" class="list-group-item">Second item</a>
  <a href="#" class="list-group-item">Third item</a>
</div>

ফলাফল :

 

কোন আইটেম কে disable করে রাখার জন্য


<div class="list-group">
  <a href="#" class="list-group-item disabled">First item</a>
  <a href="#" class="list-group-item">Second item</a>
  <a href="#" class="list-group-item">Third item</a>
</div>

ফলাফল :

 

Contextual classes ব্যবহার করার জন্য আমাদের .list-group-item-success, list-group-item-info, list-group-item-warning, এবং .list-group-item-danger এই ক্লাস গুলো ব্যবহার করতে হবে


<ul class="list-group">
  <li class="list-group-item list-group-item-success">First item</li>
  <li class="list-group-item list-group-item-info">Second item</li>
  <li class="list-group-item list-group-item-warning">Third item</li>
  <li class="list-group-item list-group-item-danger">Fourth item</li>
</ul>

ফলাফল :

 

Bootstrap এ .list-group-item-heading এবং .list-group-item-text ক্লাস গুলো ব্যবহার করে কোড নিম্মরুপ


<div class="list-group">
  <a href="#" class="list-group-item active">
    <h4 class="list-group-item-heading">First List Group Item Heading</h4>
    <p class="list-group-item-text">List Group Item Text</p>
  </a>
  <a href="#" class="list-group-item">
    <h4 class="list-group-item-heading">Second List Group Item Heading</h4>
    <p class="list-group-item-text">List Group Item Text</p>
  </a>
  <a href="#" class="list-group-item">
    <h4 class="list-group-item-heading">Third List Group Item Heading</h4>
    <p class="list-group-item-text">List Group Item Text</p>
  </a>
</div>

ফলাফল :

 

 

বুটস্ট্র্যাপ পেজার (Bootstrap Pager)

Huge Sell on Popular Electronics

Pager কি ???

Pager দিয়ে সাধারণত কত নাম্বার পেইজ সেটা বোঝানো হয় ( এই সন্মন্ধে পূর্ববর্তী অধ্যায়ে আলোচনা করা হয়েছে )

Pager এর কাজ previous (পূর্ববর্তী ) এবং next (পরবর্তী) পেইজের buttons প্রদর্শিত করা

previous/next buttons তৈরি করার জন্য .pager Class, <ul> element এর মাঝে স্থাপন করতে হয়

উদাহরনঃ


<ul class="pager">
  <li><a href="#">Previous</a></li>
  <li><a href="#">Next</a></li>
</ul>

ফলাফলঃ

 

Align Buttons

.previous এবং .next class ব্যবহার করা হয় button দুইটিকে পেইজের দুই পার্শে স্থাপন করার জন্য

উদাহরনঃ


<ul class="pager">
  <li class="previous"><a href="#">Previous</a></li>
  <li class="next"><a href="#">Next</a></li>
</ul>

ফলাফলঃ

 

আশা করি সকলেই বুঝতে পেরেছেন। কয়েক বার চেস্টা করলেই বিষয়টি পরিস্কার হয়ে যাবে ।

 

Bootstrap Pagination

Huge Sell on Popular Electronics

অনুবাদ করেছে Abu Jubair Mahin

Bootstrap Pagination

Pagination বলতে পত্রাঙ্কন বুঝায় , সহজ ভাবে বলতে গেলে এক পেইজ থেকে অন্য পেইজে সহজ ভাবে যাওয়াকে বুঝায় ।

আপনার যদি একটা web site থাকে যাতে পেইজের সংখ্যা অনেক তাহলে আপনি প্রত্যেক পেইজে ছোট করে pagination ব্যবহার করতে পারেন ।

সাধারণত Bootstrap এ নিচের মত pagination দেখা যায়।

pagination তৈরি করার জন্য <ul> element এর ভিতরে .pagination class যুক্ত করতে হয়

উদাহরনঃ


<ul class="pagination">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

 

সক্রিয় অবস্থা

সক্রিয় অবস্থা/Active State দ্বারা আপনি বর্তমানে কোণ পেইজে আছেন সেটা বোঝা যায়, আর সেটা নিচের মত দেখাবেঃ

.active ক্লাস ব্যবহার করলে, ব্যবহারকারি জানতে পারবে বর্তমানে সে কোণ পেইজে অবস্থান করছে

উদাহরনঃ


<ul class="pagination">
  <li><a href="#">1</a></li>
  <li class="active"><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

 

 

নিষ্ক্রিয় অবস্থা

নিষ্ক্রিয় অবস্থা/Disabled State ব্যবহার করলে সেটাতে ক্লিক করা সম্ভব নয়।

.disabled ক্লাস ব্যবহার করলে লিঙ্ক আর কাজ করবে না

উদাহরনঃ


<ul class="pagination">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li class="disabled"><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

 

 

Pagination Sizing

এটা দিয়ে Pagination blocks ছোট হবে না বড় হবে সেটা বুঝানো হয়

.pagination-lg class ব্যবহার করা হয় ব্লক বড় করার জন্য আর .pagination-sm ব্যবহার করা হয় ব্লক ছোট করার জন্য

উদাহরনঃ

বড় blocks এর জন্য


<ul class="pagination pagination-lg">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

 

ছোট blocks এর জন্য


<ul class="pagination pagination-sm">
  <li><a href="#">1</a></li>
  <li><a href="#">2</a></li>
  <li><a href="#">3</a></li>
  <li><a href="#">4</a></li>
  <li><a href="#">5</a></li>
</ul>

 

 

বুটস্ট্র্যাপ প্রগ্রেস বার (Bootstrap Progress Bars)

Huge Sell on Popular Electronics

প্রোগ্রেস বার ব্যবহার করা হয় যাতে সহজে বোঝা যায় ইউজার এর কাজের প্রক্রিয়া কতদুর সম্মন্ন হয়েছে। Bootstrap এ কয়েক ধরনের প্রোগ্রেস বার লক্ষ্য করা যায়। আমরা যদি একটি উদাহরণ দেখি। একটি ডিফল্ট প্রোগ্রেস বার দেখার জন্য .progress class <div> এর মধ্যে যুক্ত করতে হবে। এরপর ব্রাউজার এ রান করলে একটি নিল বার আমরা পাব। যা ৭০% পর্যন্ত লক্ষ্য করা যাবে।

কোড :


<div class="progress">
  <div class="progress-bar" role="progressbar" aria-valuenow="70"
  aria-valuemin="0" aria-valuemax="100" style="width:70%">
    <span class="sr-only">70% Complete</span>
  </div>
</div>

 

লেবেল সহকারে প্রসেস বার

লেবেল সহ প্রসেস বার দেখার জন্য কোড থেকে .sr-only class টি মুছে দিতে হবে।

 

রঙীন প্রোগ্রেস বার

এখন আমরা একটি উদাহরন এর মাধ্যমে বিভিন্ন কালার এর প্রোগ্রেস বার ব্যবহার করব।
প্রোগ্রেস বার এর সাথে contextual classes গুলো হল

  • .progress-bar-success (সবুজ কালার)
  • .progress-bar-info (নিল কালার)
  • .progress-bar-warning (অরেঞ্জ কালার)
  • .progress-bar-danger (লাল কালার)

কোড


 <div class="progress">
  <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="40"
  aria-valuemin="0" aria-valuemax="100" style="width:40%">
    40% Complete (success)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="50"
  aria-valuemin="0" aria-valuemax="100" style="width:50%">
    50% Complete (info)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-warning" role="progressbar" aria-valuenow="60"
  aria-valuemin="0" aria-valuemax="100" style="width:60%">
    60% Complete (warning)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="70"
  aria-valuemin="0" aria-valuemax="100" style="width:70%">
    70% Complete (danger)
  </div>
</div>

 

Stripe প্রোগ্রেস বার

প্রোগ্রেস বারের সাথে stripe যোগ করতে চাইলে .progress-bar-striped ক্লাস যোগ করতে হবে

কোড :


 <div class="progress">
  <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar"
  aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:40%">
    40% Complete (success)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-info progress-bar-striped" role="progressbar"
  aria-valuenow="50" aria-valuemin="0" aria-valuemax="100" style="width:50%">
    50% Complete (info)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-warning progress-bar-striped" role="progressbar"
  aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width:60%">
    60% Complete (warning)
  </div>
</div>

<div class="progress">
  <div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar"
  aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="width:70%">
    70% Complete (danger)
  </div>
</div>

 

Animated প্রোগ্রেস বার

Animated প্রোগ্রেস বার পেতে চাইলে .active ক্লাস অ্যাড করতে হবে

কোড :


 <div class="progress">
  <div class="progress-bar progress-bar-striped active" role="progressbar"
  aria-valuenow="40" aria-valuemin="0" aria-valuemax="100" style="width:40%">
    40%
  </div>
</div>

 

Stacked প্রোগ্রেস বার


বিভিন্ন কালার এর stacked প্রোগ্রেস বার এর জন্য কোড নিম্মরুপ


 <div class="progress">
  <div class="progress-bar progress-bar-success" role="progressbar" style="width:40%">
    Free Space
  </div>
  <div class="progress-bar progress-bar-warning" role="progressbar" style="width:10%">
    Warning
  </div>
  <div class="progress-bar progress-bar-danger" role="progressbar" style="width:20%">
    Danger
  </div>
</div>