Tag Archives: রিদওয়ান বিন শামীম

ডিএনএন ৭.৪ ডেভলপার কুইক স্টার্ট

Huge Sell on Popular Electronics

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

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৭.৪.০ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে।

 

ডিএনএন প্লাটফর্ম ৭.৪এর ভূমিকা

জো ব্রিঙ্কম্যানের Introducing DNN Platform 7.4 blog এ৭.৪এর নতুন সংযোজনগুলো নিয়ে আলোচনা করা হয়েছে। এর কয়েকটি হল,

  • Workflow & Versioning API
  • Multi-language settings
  • Improved HTML5 support

এখান থেকে hereডিএনএন হ্যাংআউটের একটি ভিডিও দেখতে পারেন যেখানে ৭.৪এর কিছু সংযোজন, বিশেষ করে Workflow API সম্পর্কে আলোচনা করা হয়েছে।

 

বাড়তি রেফারেন্স

Implementing Workflow in a Custom DNN Module

 

ডিএনএন ৭.৪.০ তে কীভাবে ইউজার সার্চ ইনডেক্সিং ডিজেবল করা যায়

আস প্রাসাদের How to disable User Search Indexing in 7.4.0 blogতে ডিএনএন ৭.৪.০ তে ইউজার সার্চ ইনডেক্সিং ডিজেবল করার ধাপগুলো সহজভাবে দেখানো হয়েছে। এবিষয়ে আরও জানতে দেখা যেতে পারে, https://dnntracker.atlassian.net/browse/DNN-5055

 

আপগ্রেডকৃত 51 degrees লাইব্রেরি

51 degrees এর লাইব্রেরীর ইউজ ভার্সন 3.1.9.3 তে আপগ্রেড হয়েছে

লাইব্রেরীর লিঙ্ক, library

 

ইভেন্ট লগে স্ট্রাকচার যোগ করা যাতে সমস্যার গভীরে যাওয়া সহজ হয়

ইভেন্ট লগ আরও বেশি ব্যবহারযোগ্য করার জন্য পিটার ডঙ্কার এতে কিছু কন্ট্রিবিউট করেছেন। তাঁর ব্লগ পড়ে দেখতে পারেন এখানে, here

  • Added table Exceptionsঃ এটি কোনও ব্যতিক্রমী ক্ষেত্রের ম্যাসেজ, stacktrace, ইত্যাদি স্টোর করে।
  • Added table ExceptionEventsঃBasePortalException ক্লাসে পাওয়া ব্যতিক্রমী ক্ষেত্র স্টোর করে।
  • এছাড়াও উপরের দুটি টেবিলের EventLog এর সমন্বয়ের একটি ব্যবস্থা আছে

 

PortalSettings এপিআইএর উন্নতি সাধন

IPortalSettingsController যোগ করে ইন্টারফেসের প্রয়োগের দিকে নজর দিতে হয় যেন PortalSettings ক্লাস সচল হওয়ার সাথে সাথে বিজনেস লজিক সম্পৃক্ত হয়।

এটি আমাদের এসব মেথড পরীক্ষা করে দেখার সুবিধাও দেয়।

 

সার্চ এনহেন্সমেন্টে বাড়তি উপায় সংযোজন

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

 

ডিএনএনকে এইচটিএমএল৫এর অনুবর্তী করা ও অপ্রচলিত মেটা ট্যাগ বর্জন করতে কিছু কাজ

অপ্রচলিত মেটা ট্যাগ বর্জন করতে এখানে দেখুন, Removed obsolete meta tags আর ডিএনএনকে এইচটিএমএল৫এর অনুবর্তী অবস্থায় পেতে দেখা যেতে পারে, Ensure DNN is HTML 5 compliant

 

সাইট সেটিংএর জন্য মাল্টিল্যাঙ্গুয়েজ সাপোর্ট যোগ করা

মাল্টিল্যাঙ্গুয়েজ সাইট তৈরির সময় সম্প্রতি নির্বাচিত ভাষার টেক্সট প্রয়োজন। ডিএনএন ল্যাঙ্গুয়েজ স্পেসিফিক পেজের (এলএসপি) জন্য স্পেশাল পেজ ল্যাঙ্গুয়েজ স্পেসিফিকও হতে হয়। এবিষয়ে দেখতে পারেন এখানে, https://dnntracker.atlassian.net/browse/DNN-6137

 

নিচের সেটিং লোকালাইজেশন সাপোর্ট করে,

Portallocalization টেবিলে স্টোরকৃত, ডিএনএন ৫.৫ সংস্করণ থেকে লোকালাইজেশন সাপোর্ট করে আসছে।

  • Title
  • Description
  • Keywords
  • Copyright
  • Logo
  • Body Background
  • Splash Page
  • Home Page
  • Login Page
  • Registration Page
  • Search Results Page
  • 404 Error Page
  • 500 Error Page

 

SiteSettings টেবিলে স্টোরকৃত, ডিএনএন ৭.৪ সংস্করণ ও এর পরবর্তী সংস্করণে লোকালাইজেশন সাপোর্ট করে।

  • Site Skin
  • Site Container
  • Edit Skin
  • Edit Container
  • Icon Set
  • Redirect After Registration
  • Redirect After Login
  • Redirect After Logout

 

পার্সিয়ানের জন্য সাপোর্ট সংযুক্তি

এএসপি ডটনেটের কিছু ব্যাপার আছে যা পার্সিয়ানের সাথে কাজ করে। কমিউনিটির একজন সদস্য এবিষয়ে কিছু কোড কন্ট্রিবিউশন এটি সমাধান করেছে, এখান থেকে contribution বিষয়টি দেখা যেতে পারে। আর পুরো বিষয়টি সম্পর্কে আলোকপাত করা হয়েছে এখানে, https://dnntracker.atlassian.net/browse/DNN-6148

 

বিবিধ পারফর্মেন্স পরিবর্ধন

এবিষয়ে গুরুত্বপূর্ণ তথ্যের জন্য দেখুন,

 

এইচটিএমএল মডিউল ইউএক্স অপটিমাইজেশন

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

  • বাটনকে নিচের নির্ধারিত স্থানে স্থাপন করা হয়
  • পপআপের স্ক্রলবার কখনো দেখানো হয় না
  • পাবলিক ইনফরমেশনকে "Direct publish" এর জন্য লুকিয়ে রাখা হয়
  • রিভিউ ও ভার্সন হিস্টোরি সেকশনকে কিছু বাটন দ্বারা প্রতিস্থাপন করা হয়
  • Basic / rich টেক্সট বো রেডিওস বাটনকে combox এর মত বাটন লাইনে রাখা হয়।

 

আরও বিস্তারিত তথ্য ও কিছু স্ক্রিনসটের জন্য দেখুন এখানেঃ jira issue

 

নাল স্ট্রিংকে সাপোর্ট দেয়ার জন্য HtmlUtils মেথড

ConvertToText(), ConvertToHtml() এসব মেথড নাল স্ট্রিংকে প্যারামিটার হিসাবে গ্রহণ করে। ক্লাসকে আপগ্রেড করা হয়েছে তাই সব মেথড নাল স্ট্রিংকে সমর্থন করে।

 

পরিবর্তিত ডিফল্ট ট্রাষ্ট লেভেল ফুল

মাইক্রোসফট এখন আর ট্রাষ্ট লেভেলের উপর জোড় দেয়না তাই ডিএনএন ৭.৪ এর ইন্সটলেশনে এটি ডিফল্ট করা হয়েছে।

ClientAPI সোর্স সংযুক্তিঃ ClientAPI এর এরর সংশোধনের জন্য প্রজেক্টে সোর্স সংযুক্ত করা হয়েছে।

 

পেজ সেটিংএর মাধ্যমে রোবট মেটাট্যাগ ওভাররিড করা

পেজ সেটিংএর মাধ্যমে রোবট মেটাট্যাগ ওভাররিড করার জন্য সাপোর্ট সংযুক্ত করা হয়েছে,

এবিষয়ে বিস্তারিত জানতে দেখুন here

 

বেটার ড্রাগ এন্ড ড্রপের জন্য এইচটিএমএল মডিউল ব্যবহার

ফায়ারফক্স, ক্রোম, অপেরার জন্য এইচটিএমএল মডিউল ড্রাগ এন্ড ড্রপ সাপোর্ট করছে।

 

কোডমিরর এর ভার্সন ৪.৮ পর্যন্ত আপডেট হয়েছে

প্লাটফর্মের বিভিন্ন ক্ষেত্রে কোডমিরর ব্যবহৃত হয়, যেমন হয় থার্ড পার্টি মডিউলগুলোতে। এর প্লাটফর্ম ভার্সন ৪.৮ পর্যন্ত আপডেট হয়েছে।

 

দেশ ও অঞ্চল নিয়ন্ত্রণের উপর ভাল দক্ষতা

  • অটোকমপ্লিটের উপর ভিত্তি করে নতুন কান্ট্রি কন্ট্রোলের এডিশন
  • নিউ ইন্সটলেশনের জন্য ডিফল্ট হল নতুন কন্ট্রোল
  • নতুন রেজিওন কন্ট্রোল যাতে ড্রপডাউন ও টেক্সটবক্স দুটিই আছে, অর্থাৎ প্রয়োজনে তাদের জাভাস্ক্রিপ্টের মাধ্যমে রূপান্তরিত করা যাবে।
  • নতুন কৌশল ব্যবহারের ফলে রেজিওন লিস্ট পোস্টব্যাক ব্যতীত রিফ্রেশ হবে।

 

মডিউল ইন্সটলারে xsl ও xsltফাইল এক্সটেনশন এলাউ করা হয়

মডিউল ইন্সটলার কোডে xsl ও xsltফাইল এক্সটেনশন যোগ করা হয়েছে

“Use Email Address as Username" ম্যাসেজ উন্নত করা

এবিষয়ে বিস্তারিত জানা যাবে এখান থেকে, here

 

ডিএনএন ৭.৩ ডেভলপার কুইক স্টার্ট

Huge Sell on Popular Electronics

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

 

ডিএনএন ৭.৩ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের সর্বশেষ সংস্করণের (ডিএনএন ৭.৩.০) সুবিধাদি পেতে সাহায্য করে।

 

প্লাটফর্মের পারফর্মেন্স বৃদ্ধি পাওয়া

ব্রুস চ্যাপম্যানের ব্লগ (http://www.dnnsoftware.com/blog/evoq-content-73-speed-and-performance/evoq-content-7-3-speed-and-performance) ডিএনএন ৭.৩.০তে পারফর্মেন্স বৃদ্ধির উপর অনেক কাজ করেছে। যদিও পারফর্মেন্স বৃদ্ধি সবসময়ই ভাল তবুও এটি সাধারণত স্বয়ংক্রিয়ভাবেই হয়ে থাকে, ডেভলপারকে এটি নিয়ে খুব একটা চিন্তা করতে হয় না। যাই হোক, আমাদের পরামর্শ হল মডিউল ডেভলপারদের উচিৎ ডিএনএন ৭.৩.০ এর প্রেক্ষিতে তাদের কোড পর্যবেক্ষণ করে নেয়া, যাতে ভুলক্রমেও কোনও সাব অপটিমাল প্লাটফর্ম কোডের উপর নির্ভর করে না থাকেন।

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

 

ডিএনএনপ্যানেলস বৃদ্ধি

Vicenç Masanas এর কোড কন্ট্রিবিউশন এর মাধ্যমে ডিএনএনপ্যানেলস জেকোয়েরি প্লাগিন সমৃদ্ধ হয়েছে। বর্তমানে এটি

  • চ্যানেলের ইনিশিয়াল স্ট্যাটাস সেটিংএ সাহায্য করে,
  • কুকিজের স্ট্যাটাস সেটিং ডিজেবলের অপশন সাপোর্ট করে,
  • প্রয়োজনে ব্যবহারের জন্য expand() ও collapse() পদ্ধতি প্রয়োগের সুবিধা দেয়।

 

স্কিন প্যান হিসেবে এইচটিএমএল৫

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

 

পোর্টাল লেভেল এসএমটিপি

পোর্টাল লেভেল এসএমটিপির জন্য সাপোর্ট সংযুক্ত হয়েছে Oliver Hine এর অবদানে। এই নতুন সক্ষমতার সাথে তাল মিলিয়ে কাজ করার জন্য এপিআইকে আপডেট করা হয়েছে।

 

ডিসপ্লে এডভারটাইজিং সাপোর্টের জন্য গুগল এনালাইটিক্স ট্র্যাকিং কোডকে সাপোর্ট করাঃ Will Strohl added নতুন display analytics Demographics and Interest reportsকে সাপোর্ট করে।

 

সেটিং/ কন্টেন্ট সহ সেভ/ রিস্টোর মডিউল

Torsten Weggenঅবদান রেখেছেন সেই সমৃদ্ধিতে, যা কিনা নিশ্চিত করে মডিউলের "settings"ও "content"এক্সপোর্টেড ও ইম্পোরটেড ।

 

ডিডিআর মেন্যু সল্যুশনের সাথে সংযুক্ত

Mark Allan (DDRMenu এর আবিস্কারক ও প্রধান ডেভলপার)এঁর সাথে আলোচনা করে আমরা সল্যুশনে সর্বশেষ ডিডিআর মেন্যু সংযোজন করেছি। এটি যেমন সহজ ডিবাগিংএর জন্য উপযোগী তেমনি Github এর মাধ্যমে বাগ স্থাপনও পরিবর্তন সাধনের ক্ষেত্রেও ব্যবহারকারীদের সুবিধা দেবে। Oliver Hine and Brian Dukes এঁরা ডিডিআর মেন্যুতে পরিবর্তন ও পরিবর্ধনের ক্ষেত্রে বিশেষ অবদান রেখেছেন।

এপিআই ক্লিনআপঃ ক্লিনআপের অন্তর্ভুক্ত বিষয় হল,

  • TestableXXXController থেকে XXXController class এ কপি মেথড।
  • নিশ্চিত করা যে XXXController, ServiceLocator প্যাটার্ন ব্যবহার করেছে।
  • নিশ্চিত করা যে সকল মেথড IXXXController ইন্টারফেসে এক্সট্র্যাক্ট করা হয়েছে
  • TestableXXXXontroller এর সকল ব্যবহারকে XXXController দ্বারা প্রতিস্থাপিত করা
  • TestableXXXController ক্লাসকে অপ্রচলিত রাখা

 

Log4Net ডায়গনোস্টিক বৈশিষ্ট্য

বিদ্যমান log4net সক্ষমতাকে পরিবর্ধন করা হয়েছে জটিল বিষয় সমাধানের "processid" and "appdomain"কে সাপোর্ট দেয়ার জন্য।

ডাইনামিক ইনভোকেশন সাপোর্ট করার জন্য dnnConfirm বৃদ্ধি করা

পূর্বে থাকা dnnConfirm জেকোয়েরি প্লাগিন পরিবর্ধন করা হয়েছে, এখন এটি যেসব বিষয় সাপোর্ট করে তা হল,

$.dnnConfirm(); //only show the confirm box with default content;

$.dnnConfirm({actionUrl:'http://www.dnnsoftware.com'}); //will redirect to dnn site if click yes button;

$.dnnConfirm({text: 'Hello World'}); //show custom text;

$.dnnConfirm({callbackTrue: function(){alert('click yes button');}}); //show the alert when click yes button.

 

আপডেট করা সাইট টেম্পলেটঃ

ডিফল্ট সাইট টেম্পলেট কিছু আপডেট করার মাধ্যমে উন্নত করা হয়েছে, যা এই সাইটগুলো থেকে আমরা জানতে পারব, https://dnntracker.atlassian.net/browse/DNN-5127

https://dnntracker.atlassian.net/browse/DNN-5219

 

51 Degrees

ডিভাইস সনাক্তকরণ বাই ডিফল্ট হবে নাঃ ৭.৩ভার্সনের ৫১ ডিগ্রিজ পূর্বের সংস্করণের চেয়ে অনেকগুন দ্রুত ও ছোট।

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট

Huge Sell on Popular Electronics

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

 

ডিএনএন ৭.২ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৭.২.০ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে।

 

ম্যাসেজিং ডিসপ্যাচ সিডিউলার

এই সিডিউলার টাস্ক ইউজারদের সেইসব ম্যাসেজ এবং নোটিফিকেশন সম্পর্কে মনে করিয়ে দেয় যাদের পড়া হয়নি। এখন, নতুন ভার্সনে আমরা এই সিডিউলারকে আরও বেশি কাস্টমাইজেবল ও লোকালাইজড করার মত করে পরিমার্জিত করেছি। এবিষয়ে আরও জানতে এখানে দেখা যেতে পারে, http://www.dnnsoftware.com/wiki/message-dispatch-scheduler

 

সাবস্ক্রিপশন এপিআই

সাবস্ক্রিপশন এপিআই খুব সরল ধরনের এপিআই যা ব্যবহারকারীদের কিছু নির্দিষ্ট উপাদান ও কনসেপ্ট সাবস্ক্রাইব বা আনসাবস্ক্রাইব করার সুবিধা দিয়ে থাকে। আরও জানতে দেখতে পারেন এখানে, http://www.dnnsoftware.com/wiki/subscription-api

 

জাভাস্ক্রিপ্ট লাইব্রেরী

জাভাস্ক্রিপ্ট লাইব্রেরী একটি নতুন এক্সটেনশন টাইপ, যা জাভাস্ক্রিপ্ট ফাইলকে প্যাকেজ করে। লাইব্রেরী এক্সটেনশনকে ডুপ্লিকেট স্ক্রিপ্ট ও ভার্সন কনফ্লিক্ট এড়িয়ে একটি সিঙ্গেল জাভাস্ক্রিপ্ট লাইব্রেরীতে রেফারেন্স করার সুবিধা দেয়। জাভাস্ক্রিপ্ট লাইব্রেরী সম্পর্কে আরও জানতে দেখা যেতে পারে, http://www.dnnsoftware.com/wiki/javascript-libraries

এজাইলঃ পুনরাবৃত্তিক ধাপের পরিকল্পনা (Iteration Planning)

Huge Sell on Popular Electronics

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

 

এজাইলে টিমের জন্য পুনরাবৃত্তিক ধাপের পরিকল্পনার উদ্দেশ্য হল উঁচু সারির প্রোডাক্ট ব্যাকলগ আইটেমের সেট সম্পন্ন করা। এই কমিটমেন্ট পুনরাবৃত্তিক ধাপের লেন্থ/length ও টিমের কাজের গতির উপর নির্ভর করে নির্ধারিত থাকে।

প্রক্রিয়ার সাথে কারা সংযুক্ত

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

পরিকল্পনার অপরিহার্য বিষয়

  • প্রোডাক্ট ব্যাকলগের আইটেমগুলো নির্দিষ্ট আকারের ও সংশ্লিষ্ট স্টোরি পয়েন্ট সমৃদ্ধ।
  • পোর্টফলিও আইটেমগুলো প্রোডাক্ট ওনার কর্তৃক রেঙ্কিং করানো।
  • প্রতিটা পোর্টফলিও আইটেমের জন্য গ্রহণযোগ্যতামূলক ক্রাইটেরিয়া পরিস্কারভাবে নির্ধারিত।

পরিকল্পনা প্রক্রিয়া

পুনরাবৃত্তির পরিকল্পনার ক্ষেত্রে নিচের ধাপগুলো সম্পন্ন হয়,

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

 

কাজের গতি পরিমাপ করা

এজাইল টিম কাজের গতি পরিমাপ করে পূর্বের পুনরাবৃত্তিক ধাপের উপর ভিত্তি করে। কোনও ধাপে ইউজার স্টোরি সম্পন্ন করতে প্রয়োজনীয় ইউনিটের গড় সংখ্যা থেকে কাজের গতি পাওয়া যায়।

চলমান ধাপে কতগুলো ইউজার স্টোরি সম্পন্ন হবে তা জানতে পরিকল্পিত কাজের গতি টিমকে সাহায্য করে।

টিমের সক্ষমতা

কোনও টিমের সক্ষমতা তিনটি সূচক থেকে নির্ধারণ করা যায়,

  • দৈনিক আদর্শ কর্মঘণ্টার সংখ্যা
  • প্রতি ধাপে ব্যাক্তি পর্যায়ে প্রাপ্ত দিনের সংখ্যা
  • সদস্যদের তার টিমের জন্য স্বতন্ত্রভাবে বরাদ্দ সময়ের হার

পরিকল্পনার ধাপগুলো

  •   প্রোডাক্ট ওনার প্রোডাক্ট ব্যাকলগের সবচেয়ে উঁচু সারির আইটেম বর্ণনা করেন
  • টিম আইটেম সম্পন্ন হতে প্রয়োজনীয় টাস্ক বর্ণনা করে
  • টিম মেম্বাররা কাজ বুঝে নেয়
  • টিম মেম্বাররা প্রতি কাজের জন্য সময় বরাদ্দ করে নেয়
  • এই প্রক্রিয়া পুনরাবৃত্তিক ধাপের সব আইটেমের জন্য রিপিট হতে থাকে
  • কোনও সদস্যের উপর চাপ পরলে বাকিদের মধ্যে কাজ বণ্টন করে সেই চাপ কমিয়ে আনা হয়।

 

এজাইল মেনিফেস্টো (Agile – Manifesto)

Huge Sell on Popular Electronics

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

 

২০০১ সালের ফেব্রুয়ারিতে ইউতাহ এর স্নোবার্ড রিসোর্টে ১৭ জন ডেভলপার একসাথে হন লাইটওয়েট ডেভলপমেন্ট নিয়ে আলোচনা করার জন্য। তাঁদের সম্মেলনের ফলে সফটওয়ার ডেভলপমেন্টের জন্য আমরা এজাইল মেনিফেস্টো পাই।

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

  • ব্যাক্তি ও যোগাযোগকে প্রক্রিয়া ও যন্ত্রপাতির উপরে মূল্যায়ন করব,
  • ওয়ার্কিং সফটওয়ারকে কম্প্রিহেনসিভ ডকুমেন্টেশনের উপরে মূল্যায়ন করব,
  • গ্রাহক সম্পর্ককে কন্টাক্ট নিগোসিয়েশনের উপরে মূল্যায়ন করব,
  • পরিবর্তনের সাথে তাল মেলানোকে প্ল্যান অনুসরণের উপরে মূল্যায়ন করব,

অর্থাৎ বাম পাশের আইটেমগুলোকে ডানপাশের আইটেমের তুলনায় বেশি মূল্য দিতে হবে।”

 

এজাইল মেনিফেস্টোর ১২ টি মূলনীতি হল

• গ্রাহক সন্তুষ্টি

সচল ও দ্রুত উৎপাদনের মাধ্যমে গ্রাহক সন্তুষ্টি অর্জন করা,

• পরিবর্তনকে স্বাগত জানানো

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

• একটি ওয়ার্কিং সফটওয়ার উৎপাদন করা

স্বল্প সময়ে যেমন কয়েক সপ্তাহ থেকে কয়েক মাসের মধ্যে গ্রাহক চাহিদা অনুসারে একটি ওয়ার্কিং সফটওয়ার উৎপাদন করা।

• সমন্বয় সাধন

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

• মোটিভেশন

ব্যক্তি পর্যায়ে মোটিভেট করার প্রবণতা নিয়ে প্রকল্প গ্রহণ করতে হবে।

• মুখোমুখি কথোপকথন

ডেভলপমেন্ট টিমে মুখোমুখি কথোপকথন সবচেয়ে কার্যকর ও গঠনমূলক যোগাযোগ প্রক্রিয়া।

• ওয়ার্কিং সফটওয়ার অনুযায়ী কাজের অগ্রগতি পরিমাপ করা

ওয়ার্কিং সফটওয়ার একটি মূল বিষয়। এর মাধ্যমে অগ্রগতি পরিমাপ করা যাবে।

• কন্সটেন্ট প্যাক মেইনটেইন করা

এজাইল সাসটেইনেবল ডেভলপমেন্টের জন্য কন্সটেন্ট প্যাক মেইনটেইন করবে

• মনিটরিং

গতি বৃদ্ধির জন্য টেকনিক্যাল বিষয় ও ভাল ডিজাইনের জন্য মনিটরিং করা

• সারল্য

বিষয় আশয়গুলো সহজ রাখা ও সরল টার্ম ব্যবহার করা

• স্বনিয়ন্ত্রিত টিম

আদর্শ এজাইল টিম স্বনিয়ন্ত্রিত হবে, অন্য টিমের উপর বেশি নির্ভর করবে না কারণ স্বতন্ত্র টিম থেকেই সেরা স্থাপত্যগত, ডিজাইনভিত্তিক ও প্রত্যাশামত সফটওয়ার পাওয়া যায়।

• নিয়মিত কাজ রিভিউ করা

নিয়মিত কাজ রিভিউ করলে টিম জানতে পারে কীভাবে আরও বেশি দক্ষ হওয়া যায় ও সেই অনুযায়ী বিহেভিয়ার সমন্বয় করতে পারে।

 

এজাইলের বৈশিষ্ট্য (Features of Agile)

Huge Sell on Popular Electronics

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

 

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

কোনও প্রকল্পের জন্যই সরাসরি কোনও দীর্ঘমেয়াদী পরিকল্পনা থাকে না।

পুনরাবৃত্তিমূলক বিষয়গুলো স্বল্পমেয়াদী যেমন ১ থেকে ৪ সপ্তাহের মেয়াদে পরিকল্পনা করা হয়।

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

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

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

 

মুখোমুখি যোগাযোগ

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

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

 

ফিডব্যাক লুপ

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

 

এজাইলঃ ডেইলি স্ট্যান্ডআপ । Agile Daily Stand Up

Huge Sell on Popular Electronics

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

 

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

 

ডেইলি স্ট্যান্ডআপ আসলে কী

এটি মূলত এজাইল টিমের সকল সদস্যদের মধ্যে দৈনিক স্ট্যাটাস মীটিং আর সাধারণত ১৫ মিনিট স্থায়ী হয়। প্রত্যেক সদস্যকে তিনটি গুরুত্বপূর্ণ প্রশ্নের উত্তর দিতে হয়,

  • আমি গতকাল কী করেছি?
  • আগামীকাল কী করছি?
  • কোনও বাধা বিপত্তি আছে কিনা

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

 

ডেইলি স্ট্যান্ডআপ কেন গুরুত্বপূর্ণ

এজাইল ডেইলি স্ট্যান্ডআপের কিছু সুবিধা আছে,সেগুলো হল,

  • টিম দৈনন্দিন অগ্রযাত্রা সম্পর্কে অবহিত থাকে, পর্যায়বৃত্তিক ধাপের প্ল্যানমত কাজ এগুচ্ছে কিনা তা জানা যায়
  • প্রত্যেক সদস্য তার লক্ষ্য সম্পর্কে বাকিদের জানায়
  • কোনও বিলম্ব বা বাধা থাকলে তা দৃশ্যমান হয়

 

ডেইলি স্ট্যান্ডআপে কে কে থাকেন

  • স্কাম মাস্টার, প্রোডাক্ট ওনার, ডেলিভারি টিম দৈনিক ভিত্তিতে উপস্থিত থাকেন
  • অংশীদার ও গ্রাহকদের উপস্থিত থাকতে উৎসাহিত করা হয়
  • প্রত্যেক সদস্যের অনুসন্ধান ও সমস্যার বিষয়ে নোট নেয়ার দায়িত্ব স্কাম মাস্টারের

 

ভৌগলিকভাবে বিচ্ছুরিত টিমের ক্ষেত্রে

ডেইলি স্ট্যান্ডআপ বিভিন্নভাবে হতে পারে, ভিন্ন টাইম জোনে অবস্থিত সদস্যদের জন্য যা করনীয়ঃ

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

 

এজাইল পদ্দতিতে সম্পাদিত (done) এর সংজ্ঞাঃ The definition of done for User Story, Iteration, and Release

Huge Sell on Popular Electronics

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

 

ইউজার স্টোরি, পুনরাবৃত্তিক ধাপ ও রিলিজের ক্ষেত্রে সম্পাদিত (done) এর সংজ্ঞা নিচে দেয়া হল,

ইউজার স্টোরি

ইউজার স্টোরি হল এক ধরনের রিকোয়ারমেন্ট যা ব্যবহারকারীর সহজাত বর্ণনায় কয়েক লাইনে বিবৃত হয় ও একটি পুনরাবৃত্তিক ধাপে সম্পন্ন হয়। একটি ইউজার স্টোরি তখনই সম্পন্ন বা ডান(done) হবে যখন

  • সংশ্লিষ্ট সব কোড অন্তর্ভুক্ত হয়েছে,
  • সব ইউনিট টেস্ট কেস পার হয়েছে,
  • সব এক্সেপ্টেন্স টেস্ট কেস পার হয়েছে,
  • হেল্প টেক্সট লেখা হয়েছে,
  • প্রোডাক্ট ওনার স্টোরিটাকে গ্রহণ করেছে।

পুনরাবৃত্তিক ধাপ

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

  • প্রোডাক্ট ব্যাকআপ সম্পন্ন
  • পারফর্মেন্স পরীক্ষিত
  • ইউজার স্টোরিগুলো গৃহীত ও পরবর্তী ধাপে পাঠানো হয়ে গেছে
  • ত্রুটি  সারানো হয়ে গেছে অথবা পরবর্তী ধাপের জন্য স্থগিত করা হয়েছে

রিলিজ

রিলিজ একটি বড় মাইলস্টোন যা প্রকল্পের আভ্যন্তরীণ বা বাইরে উৎপাদন, টেস্টকৃত ভার্সন ইত্যাদি বোঝায়। একটি রিলিজ তখনি সম্পন্ন হবে যখন,

  • সিস্টেমে স্ট্রেস টেস্ট করা হয়ে গেছে,
  • পারফর্মেন্স যাচাই করা হয়েছে,
  • সিকিউরিটি ভ্যালিডেশন হয়ে গেছে,
  • দুর্যোগ ব্যবস্থাপনা পরিকল্পনা যাচাই করা হয়েছে।

 

ডিএনএন ৮.০ ডেভলপার কুইক স্টার্ট

Huge Sell on Popular Electronics

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

 

ডিএনএন ৮.০ ডেভলপার একটি প্রক্রিয়াধীন বিষয় যেহেতু ৮.০.০ ভার্সনটি ২০১৫ এর নভেম্বরের আগে বাজারে আসছে না।

 

পরিকল্পনার অন্তর্ভুক্ত বিষয়

 

প্রধান সংস্করণ, এমভিসি মডিউলের উন্নতি, এইচটিএমএল সিঙ্গেল পেজ এপ্লিকেশন মডিউল(এসপিএ), ডাইনামিক কন্টেন্ট ক্রিয়েটর, ডট নেট ৪.৫ রিকোয়ারমেন্ট, প্লাটফর্ম ও ইউআই সেপারেশন।

 

ইস্যু লিঙ্ক

আলোচ্য ইস্যুর তালিকার লিঙ্ক নিচে দিয়ে দেয়া হল।

https://dnntracker.atlassian.net/browse/DNN-7725?jql=project%20%3D%20DNN%20AND%20fixVersion%20%3D%20%22Platform%208.0.0%22%20ORDER%20BY%20updated%20DESC%2C%20priority%20DESC%2C%20created%20ASC

 

অপরিহার্য যে বিষয়গুলোয় পরিবর্তন থাকতে পারে,

ডিএনএন ৮.০ এর জন্য ডট নেট ৪.৫ বা এরচেয়ে আধুনিক কোনও সংস্করণ লাগবে, কারণ এএসপি ডটনেট ওয়েব এপিআই ২.১.১ লাগবে এবং এমভিসি ৫.১.১ লাগবে কিছু ওয়েব এপিআই ভিত্তিক কাজের জন্য। মনে রাখতে হবে, newtownsoft.dll (json.net) ও ৪.৫.১১ তে উন্নীত হয়েছে।

 

ডিএনএন ৮.০ এর ব্রেকিং চেঞ্জ গুলো হলঃ

  • নিষ্কাশিত ও মুছে ফেলা মডিউল,
  • ন্যাভিগেশন প্রভাইডার
  • ইউআরএল রাউটিং মডিউল
  • সাইটকে ডব্লিওএসপি থেকে ডব্লিওএপিতে পরিবর্তন
  • লেগাসি এপসেটিং কানেকশন স্ট্রিং মুছে ফেলা

 

কমিউনিটি টেকনোলজি প্রিভিউ

সিটিপি ওয়ান ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155181/two-great-frameworks-that-work-great-together

সিটিপি থ্রী ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155256/dnn-800-ctp-3

সিটিপি ওয়ান ব্লগঃ http://www.dnnsoftware.com/community-blog/cid/155262/dnn-800-ctp-4

 

 

এসপিএ মডিউল

এসপিএ

এসপিএ বা সিঙ্গেল পেজ এপ্লিকেশন হল ওয়েব দুনিয়ার একটি অভিজাত বিষয়। এবিষয়ে জানতে পারেন এখান থেকে, http://www.dnnsoftware.com/community-blog/cid/155223/spa-a-dnn-first-class-citizen

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

১) এমভিসি মডিউলের সূচনাঃ ডিএনএন ৮.০ সিটিপি ব্যবহার করে। সিটিপি এএসপি ডট নেট এমভিসি ফ্রেমওয়ার্ক ব্যবহার করে তৈরিকৃত মডিউলের জন্য আপডেটকৃত সাপোর্ট ধারণ করে, যা এইচটিএমএল ৫ ভিত্তিক মডিউলের জন্যও সাপোর্ট হিসেবে ব্যবহৃত হয়। আরও বিস্তারিত জানতে দেখুন, http://www.dnnsoftware.com/community-blog/cid/155216/module-development-in-dnn-8-1-introduction-to-mvc-modules

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

২) প্রথম এমভিসি একশন/ ভিউ তৈরি করাঃ এমভিসি একশনে কোনও সাইটের কন্টাক্ট ম্যানেজের জন্য মডিউল তৈরি করা হয়। কোনও কন্টাক্টে পাঁচটি সাধারণ বৈশিষ্ট্য থাকে, ফার্স্ট নেম, লাস্ট নেম, ইমেইল এড্রেস, ফোন নাম্বার, টুইটার হ্যান্ডেল। এখান থেকে বিষয়টি জানা যেতে পারে, http://www.dnnsoftware.com/community-blog/cid/155219/module-development-in-dnn-8-2--creating-your-first-mvc-actionview

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৩) এসপিএ মডিউলের সূচনাঃ ডিএনএন ৮.০ এএসপি ডট নেট এমভিসি মডিউলের সাথে এসপিএ বা সিঙ্গেল পেজ এপ্লিকেশন মডিউল সাপোর্ট করে,যা কিনা ওয়েব সার্ভারে এএসপি ডটনেট ওয়েব এপিআই ভিত্তিক ওয়েব সার্ভিসের সমন্বয়ে এইচটিএমএল, জাভাস্ক্রিপ্ট ও সিএসএসের মাধ্যমে ডেভলাপ করা হয়েছে।এবিষয়ে বিস্তারিত আছে এখানে, http://www.dnnsoftware.com/community-blog/cid/155221/module-development-in-dnn-8-3--introduction-to-spa-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৪) এমভিসি মডিউলের লোকালাইজেশন সাপোর্টঃ ডিএনএন ৮.০ এএসপি ডট নেট এমভিসি ৫.১ ভার্সন বা এর পরবর্তী ভার্সনগুলো দ্বারা মডিউল তৈরিতে সমর্থন করে।এখান থেকে বিষয়টি দেখে নেয়া যেতে পারে, http://www.dnnsoftware.com/community-blog/cid/155246/module-development-in-dnn-8-4--localization-support-for-mvc-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৫) পিওর এসপিএ তৈরিতে সাপোর্ট হিসেবে নিউ টোকেনঃ জাভাস্ক্রিপ্ট ও সিএসএস ফাইল রেজিস্টারের জন্য দুটি নতুন টোকেন যোগ করতে হয়েছে, যা পূর্বের টোকেন থেকে আলাদা।এখানে আরও বিস্তারিত জানার সুযোগ থাকছে, http://www.dnnsoftware.com/community-blog/cid/155247/module-development-in-dnn-8-5--new-tokens-to-support-building-pure-spa-modules

 

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্ট

৬) এমভিসি ও এসপিএতে মডিউল একশন নিয়ন্ত্রণ করাঃ মডিউলএকশন এট্রিবিউট ও মডিউলএকশন আইটেমস এট্রিবিউট এদুটির সাহায্য নিয়ে এমভিসি ও এসপিএতে মডিউল একশন নিয়ন্ত্রণ করা হয়।

ডিএনএন ৮.০ এ মডিউল ডেভলাপমেন্টের ভিডিও দেখুন এখান থেকে, https://www.youtube.com/watch?v=UJ02-GTNGmI

 

এইচএমএসি

সার্ভিস ফ্রেমওয়ার্কের এগেইন্সটে রিমোটলি অথেনটিকেশনঃ সার্ভিস ফ্রেমওয়ার্কের এগেইন্সটে রিমোটলি অথেনটিকেশন সম্পর্কে বিস্তারিত দেখুন এখানে, http://dnn-connect.org/2015/all-sessions/details/mobile-authentication

 

ইনক্রিমেন্টাল আপগ্রেড

ডিএনএন প্লাটফর্ম 7.4.2 Beta ও প্লাটফর্ম 8.0 CTP 3 থেকে শুরু করে ডিএনএন ইনক্রিমেন্টাল আপগ্রেডের সক্ষমতাকে সমর্থন করে। এবিষয়ে বিস্তারিত জানতে দেখুন, http://www.dnnsoftware.com/community-blog/cid/155263/baby-steps

 

ডাইনামিক কন্টেন্ট ক্রিয়েটর

এক্ষেত্রে কাজ করতে এডমিন মেন্যু থেকে ডাইনামিক কন্টেন্ট টাইপ ম্যানেজার এরিয়াতে যেতে হয়। এই লিঙ্ক থেকে বিষয়টি সম্পর্কে আরও ভালমত জানা যাবে। http://www.dnnsoftware.com/community-blog/cid/155270/announcing-the-dynamic-content-creator

 

পিএইচপিঃ ইন্টারভিউয়ের প্রশ্নাবলী এবং উত্তরসমূহ। PHP Interview Questions and Answers

Huge Sell on Popular Electronics

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

 

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

যে প্রশ্নগুলো সাধারণত আলোচনায় এসে থাকে সেগুলো হল,

পিএইচপি কী?

পিএইচপির মাধ্যমে হাইপারটেক্সট প্রিপ্রসেসর বোঝায়, এটি একটি সার্ভারসাইড স্ক্রিপ্টিং ল্যাঙ্গুয়েজ যা এইচটিএমএলের সাথে কাজ করে। ডাইনামিক কন্টেন্ট, ডাটাবেস, সেশন ট্র্যাকিং এমনকি সম্পূর্ণ ইকমার্স সাইট তৈরিতে এটি ব্যবহার হতে পারে।

 

পিএইচপির সাধারণ ব্যবহারগুলি কি কি?

পিএইচপি যে ধরনের কাজ সাধারণত করে থাকে সেগুলো হল,

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

 

কতগুলো উপায়ে আপনি এইচটিএমএল পেজে পিএইচপি কোড এমবেড করতে পারেন?

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


<?php PHP code goes here ?>
<?    PHP code goes here ?>
<script language="php"> PHP code goes here </script>
Most common tag is the <?php...?>

সবচেয়ে কমন ট্যাগ হল<?php...?>।

 

php.ini  ফাইলের উদ্দেশ্য কী?

এটি  পিএইচপি কনফিগারেশন ফাইল, পিএইচপির ফাংশনালিটিতে প্রভাব বিস্তারের চূড়ান্ত ও সবচেয়ে কার্যকর পদ্ধতি। অন্য ওয়ার্ডে পিএইচপি শুরু হওয়ার সময়, মডিউল ভার্সনের জন্য httpd রিস্টার্টের সময়, অথবা CGI ভার্সনের জন্য স্ক্রিপ্ট সম্পাদনের সময় php.ini ফাইল পড়া হয়। কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে থেমে আবার httpd  রিস্টার্ট করতে হয়। এরপরও কাঙ্খিত পরিবর্তন দৃশ্যমান না হলে phpinfo() দ্বারা php.ini এর পাথ চেক করতে হবে।

 

এস্কেপিং টু পিএইচপি কী?

কোনও পেজের অন্যসব উপাদান থেকে পিএইচপি কোডকে আলাদা করার ক্ষেত্রে পিএইচপি পারসিং এঞ্জিনের একটি উপায় দরকার হয়। সেই কৌশলকে ‘এস্কেপিং টু পিএইচপি’ বলা হয়।

 

পিএইচপিকে হোয়াইটস্পেস ইনসেনসিটিভ বলা হয়, এবিষয়ে কি জানেন?

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

 

পিএইচপি কি কেস সেনসিটিভ ভাষা?

হ্যাঁ।

 

পিএইচপি ভেরিয়েবলের গুরুত্বপূর্ণ বৈশিষ্ট্য কী?

পিএইচপি ভেরিয়েবলকে লিডিং ডলার সাইন ($) দ্বারা প্রকাশ করা হয়, ভেরিয়েবলের মান হল সর্বশেষ এসাইনমেন্টের মান। ভেরিয়েবল = অপারেটর দ্বারা এসাইন থাকে।

 

বিভিন্ন ধরনের পিএইচপি ভেরিয়েবলগুলো কী কী?

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

 

পিএইচপি ভেরিয়েবলের নামকরণের নিয়ম কী?

ভেরিয়েবলের নাম লেটার বা আন্ডারস্কোর দিয়ে শুরু হবে, ভেরিয়েবলের নামের মধ্যে লেটার, আন্ডারস্কোর বা নাম্বার থাকতে পারে কিন্তু + , - , % , ( , ) . &, এসব চিহ্ন থাকতে পারবে না।

 

কোনও ভেরিয়েবল বুলিয়ান টাইপের না- এর সত্যতা  নিশ্চিত হতে কী নিয়ম আছে?

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

 

নাল কী?

নাল একটি বিশেষ শ্রেণীর ভেরিয়েবল যার মাত্র একটি মান থাকে।

 

পিএইচপিতে  ধ্রুবককে কীভাবে বিবৃত করবেন?

define() ফাংশন ব্যবহার করে পিএইচপিতে  কোনও ধ্রুবককে বিবৃত করা যায়, পুনরায় কোনও মানকে ফিরিয়ে আনতে এর নাম স্পেসিফাই করতে হয়।

 

constant() ফাংশনের কাজ কী?

এটি ধ্রুবকের মান ফিরিয়ে আনে। পুনরায় কোনও মানকে ফিরিয়ে আনার ক্ষেত্রে নাম না জানা থাকলে এই ফাংশন কাজে লাগে।

 

constant() ফাংশনের উদাহরণ দিন।


<?php
define("MINSIZE", 50);
echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous line
?>


ধ্রুবকে কেবল স্কেলার ডাটা থাকতে পারে।

 

পিএইচপি ধ্রুবক ও চলকের মধ্যে পার্থক্য কী?

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

 

পিএইচপি ম্যাজিক কন্সটেন্ট কী?

পিএইচপি যেকোনো স্ক্রিপ্টে পূর্বনির্ধারিত অনেক ধ্রুবক ব্যবহার করে। এদের পিএইচপি ম্যাজিক কন্সটেন্ট বলে।

 

_LINE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের বর্তমান লাইনের অবস্থান নির্দেশ করে।

 

_FILE_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফুল পাথ ও ফাইলনেম নির্দেশ করে।

 

_FUNCTION_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ফাংশন নেম নির্দেশ করে।

 

_CLASS_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস নেম নির্দেশ করে।

 

_METHOD_ কন্সটেন্টের কাজ কী?

এটি ফাইলের ক্লাস মেথডের  নেম নির্দেশ করে।

 

ব্রেক স্টেটমেন্টের কাজ কী?

ব্রেক ‘ফর লুপ’ ও সুইচ স্টেটমেন্টকেকে টারমিনেট করে।

 

কন্টিনিউ স্টেটমেন্টের কাজ কী?

কন্টিনিউ রিমাইন্ডার স্কিপ করার জন্য লুপ তৈরি করে এবং পুনরাবৃত্তির প্রেক্ষিতে এর কন্ডিশন নিরীক্ষণ করে।

 

'foreach' লুপের জন্য সিনট্যাক্স ব্যাখ্যা করুন?

'foreach' স্টেটমেন্ট অ্যারির মাধ্যমে লুপ তৈরি করে সহায়তা করে। এর সিনট্যাক্স হল,


foreach (array as value)
{
    code to be executed;
}

 

নিউমেরিক অ্যারি কী?

নিউমেরিক অ্যারি একধরনের অ্যারি যাতে নিউমেরিক ইনডেক্স আছে। লিনিয়ার ফ্যাশনে মান সংরক্ষণ ও এতে প্রবেশ করা যায়।

 

এসোসিয়েট অ্যারি কী?

এসোসিয়েট অ্যারি একধরনের অ্যারি যাতে ইনডেক্স হিসেবে স্ট্রিং ব্যবহৃত হয়। এটি মান সংশ্লিষ্ট উপাদানকে লিনিয়ার ইনডেক্স অর্ডারের পরিবর্তে কী-ভ্যালুর সমন্বয়ে সংরক্ষণ করে।

 

মাল্টিডাইমেন্সনাল অ্যারি কী?

এই অ্যারি একধরনের অ্যারি যাতে মাল্টিপল ইনডাইস ব্যবহার করে এক বা একাধিক অ্যারি ও মান অন্তর্ভুক্ত করা হয়।

 

পিএইচপিতে দুটি স্ট্রিংকে কীভাবে পরপর সমন্বয় করা যায়?

ডট অপারেটর (.) ব্যবহার করে এটি করা যায়,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

যা থেকে আমরা এই ফলাফল পাব,

Hello World 1234

 

পিএইচপিতে কোনও স্ট্রিংএর লেন্থ বের করা যায় কীভাবে?

strlen() ফাংশন ব্যবহার করে আমরা এটি করতে পারি। যেমন "Hello world!" স্ট্রিংএর লেন্থ বের করা যাক,


<?php
echo strlen("Hello world!");
?>

যার ফলাফল পাব ১২।

 

পিএইচপিতে কোনও স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিংএর অবস্থান কীভাবে সনাক্ত করা যাবে?

স্ট্রিংএর ভেতর অন্য কোনও স্ট্রিং বা ক্যারেক্টার খুঁজতে strpos() ফাংশন ব্যবহার করা হয়।


<?php
echo strpos("Hello world!","world");
?>

এটি ফলাফল দেখাবে, ৬।

 

পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবল কীভাবে পাবেন?

getenv() ফাংশন ব্যবহার করে আমরা পিএইচপিতে এনভায়রনমেন্ট ভেরিয়েবলের মান পাব।

 

পিএইচপিতে ব্রাউজারের ডিটেইল কীভাবে পাওয়া যাবে?

HTTP_USER_AGENT এই এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে ব্রাউজারের ডিটেইল পাওয়া যাবে।

 

পিএইচপিতে রেনডম নাম্বার কীভাবে জেনারেট করা যায়?

rand()ফাংশন ব্যবহার করে রেনডম নাম্বার জেনারেট করা যায়।

 

$_PHP_SELF ভেরিয়েবলের কাজ কী?

এটি স্ক্রিপ্ট নেমের জন্য ব্যবহৃত হয়, এটি প্রয়োগের পর "submit" বাটনে চাপলে একই স্ক্রিপ্ট পাওয়া যাবে।

 

পিএইচপিতে কোনও পেজ রিডাইরেক্ট করতে হলে কী করতে হবে?

header() ফাংশন ব্যবহার করে এটি করা যায়, এটি ব্রাউজারে র(raw) এইচটিটিপি হিডার সাপ্লাই করে এটি করে।

 

পিএইচপি ব্যবহার করে ফাইল ডাউনলোড ডায়ালগ বক্স কীভাবে দেখাতে পারবেন?

এইচটিটিপি হিডার মূল হিডার থেকে আলাদা হবে যেখানে আমরা কন্টেন্ট টাইপ হিসেবে text/html\n\n পাঠাই। এক্ষেত্রে কন্টেন্ট টাইপ application/octet-stream ভিত্তিক হবে এবং মূল কন্টেন্ট নেম এর সাথে ক্রমানুসারে এরসাথে সংযুক্ত থাকবে। যেমন, কোনও লিঙ্ক থেকে ডাউনলোডের উপযোগী FileName নামের ফাইল তৈরি করতে চাইলে এর সিনট্যাক্স হবে,


#!/usr/bin/perl
# HTTP Header
print "Content-Type:application/octet-stream; name=\"FileName\"\r\n";
print "Content-Disposition: attachment; filename=\"FileName\"\r\n\n";
# Actual File Content
open( FILE, "<FileName" );
while(read(FILE, $buffer, 100) )
{
   print("$buffer");
}

 

পিএইচপিতে গেট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_GET এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

পিএইচপিতে পোস্ট মেথডে তথ্য পাওয়ার উপায় কী?

পিএইচপিতে $_POST এসোসিয়েটিভ  অ্যারি ব্যবহার করে গেট মেথডে তথ্য পাওয়া যায়।

 

$_REQUEST ভেরিয়েবলের কাজ কী?

$_REQUEST ভেরিয়েবল $_GET, $_POST,ও $_COOKIE এই সবগুলি ভেরিয়েবলের উপাদান সংরক্ষণ করে।

 

অ্যারি তৈরি করতে কোন ফাংশন ব্যবহার করবেন?

array() − এর মাধ্যমে অ্যারি তৈরি করা যায়।

 

কোনও অ্যারি সর্ট করতে হলে কোন কোড ব্যবহার করতে হবে?

অ্যারি সর্ট করতে sort() ব্যবহার করতে হবে

 

সিঙ্গেল কোটেড স্ট্রিং আর ডাবল কোটেড স্ট্রিংএর মধ্যে পার্থক্য কী?

সিঙ্গেল কোটেড স্ট্রিং আক্ষরিক ভাবে প্রয়োগ হয় যেখানে ডাবল কোটেড স্ট্রিং তাদের মান দ্বারা চলককে প্রতিস্থাপিত করে। যেমন,


<?php
$variable = "name";
$literally = 'My $variable will not print!\\n';
print($literally);
print "<br />";
$literally = "My $variable will print!\\n";
print($literally);
?>

 

এটি যে ফলাফল দেখাবে তা হল,

My $variable will not print!\n

My name will print

 

দুটি স্ট্রিং কীভাবে সমন্বয় অর্থাৎ কনক্যাটেনেট করবেন?

দুটি স্ট্রিং চলককে কনক্যাটেনেট করতে ডট অপারেটর ব্যবহার করতে হবে, যেমন,


<?php
$string1="Hello World";
$string2="1234";
echo $string1 . " " . $string2;
?>

এটি যে ফলাফল দেখাবে তা হল,

Hello World 1234

 

$_REQUEST ভেরিয়েবলের ব্যবহার কী?

পিএইচপি $_REQUEST ভেরিয়েবল $_GET, $_POST, ও $_COOKIE এসবের উপাদানকে ধারণ করে।

 

একটি পিএইচপি ফাইলের কন্টেন্টকে কীভাবে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে?

দুটি ফাংশন ব্যবহার করে একটি পিএইচপি ফাইলের কন্টেন্টকে অন্য একটি পিএইচপি ফাইলে অন্তর্ভুক্ত করা যাবে,

include() ফাংশন ও require() ফাংশন

 

include()ফাংশন ও require()ফাংশনের মধ্যে পার্থক্য কী?

কোনও ফাইল লোডের সময় সমস্যা হলে require() ফাংশন ফেটাল এরর দেখায় এবং স্ক্রিপ্ট সম্পাদন থামিয়ে দেয় কিন্তু include() ফাংশন ওয়ার্নিং দিলেও স্ক্রিপ্ট সম্পাদন চালিয়ে যায়।

 

রিড অনলি মোডে ফাইল ওপেন করতে হলে কী করতে হবে?

পিএইচপি fopen() ফাংশন ব্যবহার করে এটি করা যাবে।

 

পিএইচপিতে কোনও ফাইল পড়তে কী করতে হবে?

fopen() ফাংশন দ্বারা ওপেন করা কোনও পিএইচপি ফাইলকে fread() ফাংশন দ্বারা পড়া যাবে। এক্ষেত্রে দুটি আর্গুমেন্টের প্রয়োজন হয়, ফাইল পয়েন্টার থাকতে হয় এবং ফাইলের লেন্থ বাইটে প্রকাশ করা হতে হবে।

 

কোনও পিএইচপি ফাইলের আকার কীভাবে জানা যাবে?

filesize() ফাংশন ব্যবহার করে।

 

কোনও ফাইল আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

file_exist() ফাংশন ব্যবহার করে কোনও ফাইলের অস্তিত্ব সম্পর্কে নিশ্চিত হওয়া যাবে।

 

ফাংশন প্যারামিটারে কি ডিফল্ট ভ্যালু আরোপ করা যাবে?

হ্যাঁ। ডিফল্ট ভ্যালু পেতে প্যারামিটার সেট করা যাবে যদি ফাংশনের কলার এটিকে পাশ না করে।

 

পিএইচপি ব্যবহার করে কীভাবে কুকিজ সেট করা যায়?

setcookie() ফাংশন ব্যবহার করে পিএইচপিতে কুকিজ সেট করা যায়।

setcookie(name, value, expire, path, domain, security);

 

পিএইচপিতে কীভাবে কুকিজ পাওয়া যায়?

বিভিন্নভাবে পাওয়া যায়, সবচেয়ে সহজ উপায় হল $_COOKIE বা $HTTP_COOKIE_VARSচলক ব্যবহার করে।

 

কোনও কুকিজ সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে কোনও কুকিজ সেট করা আছে না নেই তা জানা যাবে।

 

কুকিজ কীভাবে ডিলিট করবেন?

কুকিজ ডিলিট করতে নামের আর্গুমেন্ট সহ setcookie() ফাংশন কল করতে হবে।

 

পিএইচপিতে সেশন শুরু করে কীভাবে?

সেশন শুরুর জন্য session_start() ফাংশন ব্যবহার করে কল করতে হয়।

 

পিএইচপিতে সেশন চলকে প্রবেশের জন্য কী করতে হবে?

সেশন চলক $_SESSION[] নামক এসোসিয়েটিভ অ্যারিতে সঞ্চিত থাকে। কোনও সেশনের সক্রিয় কালে এই চলকে প্রবেশ করা সম্ভব।

 

সেশন চলক সেট করা আছে না নেই তা পিএইচপিতে কীভাবে জানা যাবে?

isset() ফাংশন ব্যবহার করে সেশন চলক সেট করা আছে না নেই তা জানা যাবে।

 

একক সেশন চলককে আনসেট করতে কী করতে হবে?

একক সেশন চলককে আনসেট করতে নিচের মত করে কোড ব্যবহার করতে হবে,


<?php
   unset($_SESSION['counter']);
?>

 

পিএইচপিতে সেশন ডেস্ট্রয় করতে কি করা লাগে?

session_destroy() ফাংশন ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কীভাবে ইমেইল করা যায়?

mail() ফাংশন ব্যবহার করে পিএইচপিতে ইমেইল করা যায়। উদাহরণ দেয়া যাক,


mail( to, subject, message, headers, parameters );

 

 

পিএইচপিতে $_FILES চলকের কাজ কী?

এটি একটি বৈশ্বিক চলক, এটি দ্বিমাত্রিক অ্যারি এবং আপলোডকৃত ফাইলের সব তথ্য সঞ্চিত রাখে।

 

পিএইচপিতে আপলোডকৃত ফাইলে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['tmp_name'] ফাংশন ব্যবহার করে। এটি ওয়েব সার্ভারের টেম্পোরারি ডিরেক্টরিতে আপলোডকৃত ফাইলে প্রবেশের ব্যবস্থা করে দেয়।

 

পিএইচপিতে আপলোডকৃত ফাইলের প্রকৃত নামে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['name']ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের সাইজে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['size'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের কন্টেন্ট টাইপে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['type'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে আপলোডকৃত ফাইলের এরর কোডে প্রবেশ করা যায় কেমন করে?

$_FILES['file']['error'] ফাংশন ব্যবহার করে।

 

পিএইচপিতে $GLOBALSচলকের কাজ কী?

এই চলক স্ক্রিপ্টের গ্লোবাল স্কোপে অবস্থিত সব চলকের রেফারেন্স নির্দেশ করে।

 

পিএইচপিতে $_SERVER চলকের কাজ কী?

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

 

পিএইচপিতে $_COOKIE চলকের কাজ কী?

এটি সেইসব চলকের এসোসিয়েটিভ অ্যারি যারা এইচটিটিপি কুকিজ হয়ে কারেন্ট স্ক্রিপ্টে আসে।

 

পিএইচপিতে $_SESSION চলকের কাজ কী?

এরা সেইসব এসোসিয়েটিভ অ্যারি যারা কারেন্ট স্ক্রিপ্টে থাকা সেশন ভেরিয়েবল ধারণ করে।

 

পিএইচপিতে $_PHP_SELF চলকের কাজ কী?

এটি একটি স্ট্রিং যা পিএইচপি স্ক্রিপ্ট ফাইল নেম ধারণ করে।

 

পিএইচপিতে $php_errormsgচলকের কাজ কী?

এটি একটি চলক যা সর্বশেষ এরর ম্যাসেজের টেক্সট ধারণ করে ।

 

ereg()ফাংশন কীভাবে কাজ করে?

ereg()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত। প্যাটার্ন পাওয়া গেলে ট্রু আর অন্য কিছু হলে ফলস দেখায়।

 

eregi()ফাংশন কীভাবে কাজ করে?

eregi()ফাংশন একটি স্ট্রিং খোঁজে,যা প্যাটার্ন দ্বারা নির্ধারিত।এই সার্চ কেস সেন্সেটিভ নয়।

 

split()ফাংশন কীভাবে কাজ করে?

split()ফাংশন স্ট্রিংকে বিভিন্ন অংশে বিভক্ত করে, স্ট্রিঙে অকারেন্সের প্যাটার্নের উপর অংশগুলোর ধরণ নির্ভর করে।

 

preg_match()ফাংশন কীভাবে কাজ করে?

preg_match()ফাংশন স্ট্রিঙে প্যাটার্ন খোঁজে, কাঙ্খিত প্যাটার্ন থাকলে ট্রু আর না থাকলে ফলস দেখায়।

 

preg_split()ফাংশন কীভাবে কাজ করে?

preg_split()ফাংশন প্রায় split()ফাংশনের মতই কাজ করে,কেবল রেগুলার এক্সপ্রেশনগুলো প্যাটার্নের ইনপুট প্যারামিটার হিসেবে কাজ করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে এরর ম্যাসেজ পুনরুদ্ধার করা যাবে?

getMessage() ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে কোড অফ এক্সেপ্সন পুনরুদ্ধার করা যাবে?

getCode()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স ফাইলনেম পুনরুদ্ধার করা যাবে?

getFile()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে সোর্স লাইন পুনরুদ্ধার করা যাবে?

getLine()মেথড ব্যবহার করে।

 

ভুল হলে এক্সেপ্সন ক্লাস ব্যবহার করে কীভাবে স্টাক স্ট্রেস পুনরুদ্ধার করা যাবে?

getTrace()মেথড ব্যবহার করে।

 

ভুল হলে কীভাবে ফরম্যাটিং স্ট্রিং অফ স্ট্রেস পুনরুদ্ধার করা যাবে?

getTraceAsString()মেথড ব্যবহার করে এটি করা যাবে।

 

পিএইচপি ব্যবহার করে কীভাবে বর্তমান দিন ও সময় পাব?

time()ফাংশন ব্যবহার করে।

 

getdate() ফাংশনের কাজ কী?

এটি টাইম ষ্ট্যাম্প গ্রহণ করে তারিখ সম্পর্কিত এসসিয়েটিভ অ্যারি রিটার্ন করে।

 

date() ফাংশনের কাজ কী?

এটি ফরম্যাটিং স্ট্রিং রিটার্ন করে, যা ডেট হিসেবে পরিগনিত হয়।

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস কানেক্ট করবেন?

ডাটাবেস কানেকশন খোলার জন্য mysql_connect ফাংশন ব্যবহার করা যাবে।


connection mysql_connect(server,user,passwd,new_link,client_flag);

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস তৈরি করবেন?

mysql_queryফাংশন ব্যবহার করে। এই ফাংশন দুটি প্যারামিটার ব্যবহার করে।


bool mysql_query( sql, connection );

 

পিএইচপি ব্যবহার করে কীভাবে মাইএসকিউএল ডাটাবেস বন্ধ করবেন?

mysql_close ফাংশন ব্যবহার করে।


bool mysql_close ( resource $link_identifier );

 

পিএইচপি ব্যবহার করে কীভাবে এক্সএমএল ডকুমেন্ট বিশ্লেষণ করবেন?

পিএইচপি৫ এর নতুন SimpleXML মডিউল ব্যবহার করে এটি করা যায়।

 

পিএইচপিতে কি ক্লাস তৈরি করা সম্ভব?

হ্যাঁ!

 

পিএইচপি ক্লাসে কন্সট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__construct() ফাংশন ব্যবহার করে।

 

পিএইচপি ক্লাসে ডিসট্রাকটর ফাংশন কীভাবে সংযুক্ত করবেন?

__destruct()ফাংশন ব্যবহার করে।

 

পিএইচপিতে একই অবজেক্টের ভেতরে থাকা কোনও অবজেক্টের ক্ষেত্রে সেই অবজেক্টের রেফারেন্সে প্রবেশ করবেন কীভাবে?

$thisএকটি বিশেষ চলক, এটি সেই অবজেক্ট( অবজেক্ট নিজে) বোঝায়, এর মাধ্যমে সেই অবজেক্টের রেফারেন্সে প্রবেশ  করা যাবে।

 

পিএইচপিতে অবজেক্ট তৈরি করা যাবে কীভাবে?

একবার ক্লাস তৈরি হয়ে গেলে সেই ক্লাসের অধীনে যত খুশি অবজেক্ট তৈরি করা যাবে। যেমন,


$physics = new Books;
$maths = new Books;
$chemistry = new Books;

 

পিএইচপিতে ক্লাসের মেম্বার ফাংশনকে কীভাবে ডাকা যাবে?

অবজেক্ট তৈরির পরে সেই অবজেক্ট রিলেটেড মেম্বার ফাংশনকে ডাকা যাবে। যেমন,


$physics−>setTitle( "Physics for High School" );
$chemistry−>setTitle( "Advanced Chemistry" );
$maths−>setTitle( "Algebra" );
$physics−>setPrice( 10 );
$chemistry−>setPrice( 15 );
$maths−>setPrice( 7 );

 

ফাংশন ওভাররাইডিং কী?

শিশু শ্রেণীর ফাংশন ডেফিনিশন বড়দের ক্লাসে একই নামে ফাংশন ওভাররাইডিং হয়ে থাকে।

 

পিএইচপিতে ইন্টারফেস কী?

ইন্টারফেস ইমপ্লিমেন্টরের জন্য কমন ফাংশন নেমের ব্যবস্থা করে।

 

ফাইনাল কীওয়ার্ডের কাজ কী?

এটি পিএইচপি৫ এর নতুন সংযোজন, এটি কিছু ক্ষেত্রে শিশু শ্রেণীর ফাংশন ওভাররাইডিং প্রতিহত করে।

 

এরপরে কী?

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

আরেকটি বিষয় হল কিছু প্রশ্নের উত্তর আপনি না দিতে পারলেও দেখার বিষয় হল আপনি  আত্মবিশ্বাসের সাথে প্রশ্নের উত্তর দিচ্ছেন কিনা। তাই সাক্ষাৎকারের সময় আত্মবিশ্বাসী থাকুন। আমরা টিউটোরিয়ালস পয়েন্টের পক্ষ থেকে আপনার সার্বিক মঙ্গল কামনা করছি, আশা করছি অবশ্যই সাক্ষাৎকার সফল হবে।

 

ডট নেট নিউক ৬.১ ডেভলপার কুইক স্টার্ট (Dot Net Nuke (DNN) – 6.1 Quick Start Guide)

Huge Sell on Popular Electronics

ডট নেট নিউক ৬.১ ডেভলপার কুইক স্টার্ট

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

 

ডিএনএন এর সর্বশেষ ভার্সন হচ্ছে ৭.xx

ডিএনএন ৬.১ ডেভলপার কুইক স্টার্ট পেজ এমন রিসোর্স হিসেবে ব্যবহৃত হয় যা কিনা ডিএনএন এক্সটেনশন ডেভলপারদের ডিএনএন ৬.১ এর সর্বশেষ সুবিধাদি পেতে সাহায্য করে। যদি কেউ ডট নেটের স্কিন অবজেক্ট, মডিউল বা প্রভাইডার ডেভলাপমেন্টে নতুন হয়ে থাকেন তাহলে তারা বিস্তারিত জানতে এই পেজ দেখতে পারেন, Module Development। ডিএনএন ৬.০তে নতুন এমন কিছু বিষয়ে রিভিউ দেখতে পারেন এই উইকি পেজ থেকে, DotNetNuke 6 Developer Quick Start

 

ক্লায়েন্ট রিসোর্স ম্যানেজমেন্ট

রিসোর্স

ব্লগ আর্টিকেল
Enhancements for working with JavaScript & CSS in 6.1

উইকি পেজ যা ডিএনএন ৬.১এর নতুন সংস্করণের বিস্তারিত তথ্য সংবলিত
Client Resource Managemen

এমন ব্লগ যা থার্ড পার্টি স্ক্রিপ্ট/জেএসএস ও ক্লায়েন্ট রিসোর্স ম্যানেজমেন্ট এপিআই এসব বিষয় নিয়ে আলোচনা ও সংশ্লিষ্ট সমস্যা সমাধানে সহায়তা করে।
DNN 6.1 JS/CSS File Combination: Potential Gotchas

এবং How to Enable Client Resource Management

 

মোবাইল এপিআইঃ ক্লায়েন্ট ক্যাপাবিলিটি ও ডিভাইস ডিটেকশন

এক্সেস কন্টেন্টে ব্যবহৃত ডিভাইসের ডিভাইস ক্যাপাবিলিটি বের করার জন্য ৬.১এর কিছু নতুন এপিআই আছে। ডিভাইস ডিটেকশন ব্রাউজার থেকে পাঠানো ইউজার এজেন্টের উপর নির্ভর করে।

  • Namespace: DotNetNuke.Services.ClientCapability namespace
  • IClientCapability device = ClientCapabilityProvider.CurrentClientCapability

IClientCapability এইচটিটিপি রিকোয়েস্টার (মোবাইল ডিভাইস, টিভি, ডেক্সটপ ইত্যাদি) সাপোর্টেড ক্যাপাবিলিটি দিয়ে থাকে। IclientCapabilityএর নিচের বৈশিষ্ট্যগুলো থেকে থাকে।

  • IsMobile-এটি মোবাইল ডিভাইস
  • IsTablet – এটি ট্যাবলেট দিভাইস
  • IsTouchScreen – এটি ক্লায়েন্টকে টাচ ক্যাপাবিলিটি দেয়
  • SupportsFlash – ক্লায়েন্টকে ফ্ল্যাশের সুবিধা দেয়
  • FacebookRequest – ক্লায়েন্টের ফেসবুক পেজ আছে কিনা। থাকলে ফেসবুক সংক্রান্ত তথ্য নিয়ে কাজ করে, যেমন ইউজার আইডি।
  • ScreenResolutionWidthInPixels – স্ক্রিনের প্রস্থ
  • ScreenResolutionHeightInPixels – স্ক্রিনের উচ্চতা
  • UserAgent – ক্লায়েন্টের ইউজার এজেন্ট
  • Capabilities - ক্লায়েন্ট সমর্থিত সব ক্যাপাবিলিটি সংবলিত একটি কী-ভ্যালু কালেকশন।

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

এ সংশ্লিষ্ট একটি উইকি পেজ
IClientCapability interface

 

মোবাইল এপিআইঃ সাইট রিডাইরেকশন ম্যানেজমেন্ট

সাইট রিডাইরেকশন সেটিংএর জন্য ক্রুড(ক্রিয়েট রিড আপডেট ডিলিট) অপারেশন পারফর্মে এই এপিআইগুলো ব্যবহৃত হয়।

  • Namespace: DotNetNuke.Services.Mobile
  • Class: RedirectionController

নিচের প্রক্রিয়ায় ক্রুড অপারেশন সম্পন্ন হয়ে থাকে,

  • GetAllRedirections – সিস্টেমের সব পোর্টালের জন্য রিডাইরেকশন রুল নির্ধারণ
  • GetRedirectionsByPortal – একটি পোর্টালের জন্য রিডাইরেকশন রুল নির্ধারণ
  • GetRedirectionById – রুল আইডি অনুসারে রিডাইরেকশন রুল নির্ধারণ
  • Save - রিডাইরেকশন রুল সেভ(আপডেট বা ক্রিয়েট)করা।
  • Delete - রিডাইরেকশন রুল ডিলিট করা
  • DeleteRule – রুলের ম্যাচিং ক্রাইটেরিয়া ডিলিট করা
  • PurgeInvalidRedirections – সেইসব রিডাইরেকশন রুল ডিলিট করা যা সফট বা হার্ড ডিলিটেড পেজে সেট করা ছিল।

এই মেথড রুলসের ক্লিয়ার ব্যাড ডাটায় সাইট রিডাইরেকশন ইউআই লোডের আগে প্রয়োগ করা হয়।

 

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

  • GetRedirectUrl(string userAgent) - ইউজার এজেন্টের ভিত্তিতে রিডাইরেক্ট ইউআরএল গ্রহণ
  • GetRedirectUrl(string userAgent, int portalId, int currentTabId) - এইচটিটিপি কনটেক্সট ও পোর্টাল আইডির ভিত্তিতে রিডাইরেক্ট ইউআরএল গ্রহণ
  • GetFullSiteUrl - মোবাইল সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য পূর্ণ সাইটের ইউআরএল গ্রহণ
  • GetFullSiteUrl(int portalId, int currentTabId) - মোবাইল সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য পূর্ণ সাইটের ইউআরএল গ্রহণ
  • GetMobileSiteUrl - পূর্ণ সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য মোবাইল সাইটের ইউআরএল গ্রহণ
  • GetMobileSiteUrl(int portalId, int currentTabId) - পূর্ণ সাইটের কারেন্ট পেজের ভিত্তিতে সমতুল্য মোবাইল সাইটের ইউআরএল গ্রহণ

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

 

মোবাইল এপিআইঃ ডিভাইস প্রিভিউ ম্যানেজমেন্ট

ডিভাইস প্রিভিউ সেটিংএর জন্য ক্রুড(ক্রিয়েট রিড আপডেট ডিলিট) অপারেশন পারফর্মে এই এপিআইগুলো ব্যবহৃত হয়।

  • Namespace: DotNetNuke.Services.Mobile
  • Class: PreviewProfileController

নিচের প্রক্রিয়ায় ক্রুড অপারেশন সম্পন্ন হয়ে থাকে,

  • GetProfilesByPortal – কোনও পোর্টালের জন্য প্রিভিউ প্রোফাইলের লিস্ট করে
  • GetProfileById – আইডি অনুসারে প্রিভিউ প্রোফাইল করে
  • Save - প্রিভিউ প্রোফাইল সেভ(আপডেট/ক্রিয়েট) করে
  • Delete - প্রিভিউ প্রোফাইল ডিলিট করে।

 

রিসোর্স

৬.১ এর মোবাইল এপিআই নিয়ে আলোচনা করে এমন ব্লগ আর্টিকেল
Mobile API's in 6.1

মোবাইল এপিআইএর আভ্যন্তরীণ বিষয় নিয়ে আলোচনা করে এমন ব্লগ
Mobile Device Detection and Redirection – Under the Hood

 

মোবাইল এপিআইঃ ফেসবুক ফ্যান পেজ

IclientCapabilityএর ফেসবুক রিকোয়েস্ট প্রপার্টি ফেসবুককে সংশ্লিষ্ট তথ্য দেয় যদি কারেন্ট পেজ ফেসবুক ফ্যান পেজকে সার্ভ করতে থাকে। FacebookRequest এর বৈশিষ্ট্যগুলো দেখায় যা এখান থেকে জেনে নেয়া যেতে পারে, https://developers.facebook.com/docs/authentication/signed_request/. সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য হল পেজলাইকড। ফেসবুক রিকোয়েস্টের নিচের বৈশিষ্ট্যগুলো থেকে থাকে,

  • PageLiked – ইউজার পেজে লাইক দিয়েছে কিনা
  • Algorithm – রিকোয়েস্ট সাইনের কৌশল
  • OauthToken - Graph API বা Legacy REST API তে পাশ করে দেয়া যাবে এমন টোকেন
  • Expires - oauth_token এক্সপায়ার করার ক্ষণতারিখ
  • IssuedAt – রিকোয়েস্ট সাইনড হওয়ার ক্ষণতারিখ
  • UserID – কারেন্ট ইউজারের ফেসবুক ইউজার আইডেন্টিফায়ার(এটি ইউজার আইডি নয়)
  • UserLocale – ইউজারের লোকাল
  • UserCountry – ইউজারের দেশ
  • UserMinAge – ইউজারের সর্বনিম্ন বয়সসীমা
  • UserMaxAge - ইউজারের সর্বোচ্চ বয়সসীমা
  • PageId – পেজের আইডি
  • PageUserAdmin – ব্যবহারকারী কি পেজের এডমিন কিনা
  • ProfileId – পেজ আইডি, যদি অ্যাপ লোড করা হয়ে থাকে
  • AppData – কোয়েরি স্ট্রিং প্যারামিটারের কন্টেন্ট, app_data নামে ডাকা হয়
  • RawSignedRequest – ফেসবুক ইন পেজ থেকে আসা র-সাইন রিকোয়েস্ট
  • IsValid – এটি হল ভ্যালিড ফেসবুক রিকোয়েস্ট

 

মোবাইল স্কিন অবজেক্ট

ডেক্সটপ ও মোবাইল সাইটের সংশ্লিষ্ট লিঙ্ক প্রভাইড করে এমন নতুন দুটি স্কিন অবজেক্ট আছে,

  • LinkToFullSite – মোবাইল সাইটের স্কিন ফুটারে যুক্ত হওয়া দুটি স্কিন অবজেক্ট
  • LinkToMobileSite – ডেক্সটপ সাইটের স্কিন ফুটারে যুক্ত হওয়া দুটি স্কিন অবজেক্ট

LinkToFullSite স্কিন অবজেক্ট ব্যবহার করে কোনও ব্যবহারকারী মোবাইল সাইট থেকে মূল সাইটে গেলে ব্রাউজার ক্লোজ বা ইউজার লগ আউট করার আগ পর্যন্ত কোনও রিডাইরেকশন হবে না।

স্কিন অবজেক্ট \Website\admin\skins ফোল্ডারে থাকে।

 

সাইট গ্রুপ

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

 

নোড.জেএস । Node.js – আরইএসটি সম্পন্ন এপিআই

Huge Sell on Popular Electronics

নোড . জে এস । Node.js - আরইএসটি সম্পন্ন এপিআই
রিদওয়ান বিন শামীম

আরইএসটি আর্কিটেকচার কীঃ আরইএসটির মানে হল, রিপ্রেজেন্টেশনাল স্টেট ট্রান্সফার। এটি ওয়েব স্ট্যান্ডার্ডভিত্তিক আর্কিটেকচার এবং এইচটিটিপি প্রটোকল ব্যবহার করে। Roy Fielding এটিকে ২০০০ সালে প্রবর্তন করেন।

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

আরইএসটি ভিত্তিক আর্কিটেকচারে চারটি এইচটিটিপি মেথড ব্যবহার করা হয়,
• গেট
• পুট
• ডিলিট
• পোস্ট

আরইএসটি সম্পন্ন ওয়েব সার্ভারঃ এপ্লিকেশন ও সিস্টেমের প্রটোকল ও স্ট্যান্ডার্ডের সমন্বয়ে ওয়েব সার্ভার গঠিত হয়।

লাইব্রেরীর জন্য আরইএসটি তৈরি করাঃ জেএসওএন ডাটাবেসে users.json নামক ফাইলের ক্ষেত্রে

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

এসবের ভিত্তিতে যে আরইএসটি এপিআই পাই তাদের তালিকা,

S. N. URI HTTP Method POST body Result
1 listUsers GET empty সব ইউজারের তালিকা দেখায়
2 addUser POST JSON String নতুন ইউজারে বিবরণ সংযুক্তি
3 deleteUser DELETE JSON String বিদ্যমান ইউজার ডিলিট করা
4 :id GET empty ইউজারের বিবরণ প্রদর্শন

লিস্ট ইউজারঃ আমাদের প্রথম আরইএসটি এপিআই listUsers এপিআই server.js ফাইলে নিচের কোড ব্যবহার করে পাই,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/listUsers', function (req, res) {
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
console.log( data );
res.end( data );
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে নির্দিষ্ট http://127.0.0.1:8081/listUsers এপিআইতে ব্যবহার করে আমরা পাই,

{
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}

ইউজার সংযুক্ত করাঃ নিচের এপিআই দ্বারা নতুন ইউজার সংযুক্ত করা হয়,

user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

addUser এপিআই দ্বারা ডাটাবেসে নতুন ইউজার সংযুক্ত করা হয়,

var express = require('express');
var app = express();
var fs = require("fs");

var user = {
"user4" : {
"name" : "mohit",
"password" : "password4",
"profession" : "teacher",
"id": 4
}
}

app.get('/addUser', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
data["user4"] = user["user4"];
console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

লোকাল মেশিনে এপিআইতে http://127.0.0.1:8081/addUsers ব্যবহার করে যে ফলাফল আমরা পাব তা হল,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user2:
{ name: 'suresh',
password: 'password2',
profession: 'librarian',
id: 2 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 },
user4:
{ name: 'mohit',
password: 'password4',
profession: 'teacher',
id: 4 }
}

শো ডিটেইলঃএর জন্য যে এপিআই ব্যবহার করতে হবে তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

app.get('/:id', function (req, res) {
// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
var user = users["user" + req.params.id]
console.log( user );
res.end( JSON.stringify(user));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/2 ব্যবহার করে লোকাল মেশিনে কল দেয়াতে হয়।

{
"name":"suresh",
"password":"password2",
"profession":"librarian",
"id":2
}

ইউজার ডিলিট করার জন্যঃ এক্ষেত্রে যে এপিআই ব্যবহৃত হয় তা হল,

var express = require('express');
var app = express();
var fs = require("fs");

var id = 2;

app.get('/deleteUser', function (req, res) {

// First read existing users.
fs.readFile( __dirname + "/" + "users.json", 'utf8', function (err, data) {
data = JSON.parse( data );
delete data["user" + 2];

console.log( data );
res.end( JSON.stringify(data));
});
})

var server = app.listen(8081, function () {

var host = server.address().address
var port = server.address().port
console.log("Example app listening at http://%s:%s", host, port)

})

উপরের সার্ভিসকে http://127.0.0.1:8081/deleteUser ব্যবহার করে লোকাল মেশিনে কল দিলে যে ফলাফল আসবে,

{ user1:
{ name: 'mahesh',
password: 'password1',
profession: 'teacher',
id: 1 },
user3:
{ name: 'ramesh',
password: 'password3',
profession: 'clerk',
id: 3 }
}

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_restful_api.htm

নোড . জে এস । Node.js – ওয়েব মডিউল (Web Module)

Huge Sell on Popular Electronics

নড জেএসঃ ওয়েব মডিউল
রিদওয়ান বিন শামীম

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

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

এপাচি হল বহুল ব্যবহৃত একটি ওয়েব সার্ভার যা কিনা একটি ওপেন সোর্স প্রকল্প।

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

নড ব্যবহার করে ওয়েব তৈরি করাঃ Node.js http মডিউল তৈরি করে যা সার্ভারের এইচটিটিপি ক্লায়েন্ট বা সার্ভার তৈরিতে ব্যবহৃত হয়। 8081 port মেনে চলে এমন সার্ভারের কাঠামো তৈরি করতে server.js নামের ফাইল তৈরি করতে হবে,

File: server.js
var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {
// Parse the request containing file name
var pathname = url.parse(request.url).pathname;

// Print the name of the file for which request is made.
console.log("Request for " + pathname + " received.");

// Read the requested file content from file system
fs.readFile(pathname.substr(1), function (err, data) {
if (err) {
console.log(err);
// HTTP Status: 404 : NOT FOUND
// Content Type: text/plain
response.writeHead(404, {'Content-Type': 'text/html'});
}else{
//Page found
// HTTP Status: 200 : OK
// Content Type: text/plain
response.writeHead(200, {'Content-Type': 'text/html'});

// Write the content of the file to response body
response.write(data.toString());
}
// Send the response body
response.end();
});
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

এখন একই ডিরেক্টরিতে index.htm নামের এইচটিএমএল ফাইল তৈরি করে সংরক্ষণ করি,

File: index.htm
<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

এখন server.js রান করিয়ে ফলাফল দেখি,

$ node server.js

আউটপুট ভেরিফাই করে পাই,

Server running at http://127.0.0.1:8081/

নড জেএস সার্ভারের জন্য রিকোয়েস্ট তৈরি করাঃ এজন্য যেকোনো ব্রাউজারে http://127.0.0.1:8081/index.htm খুলে ফলাফল দেখতে পারি। সার্ভার এন্ডে আউটপুট ভেরিফাই করলে,

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

নড ব্যবহার করে ওয়েব ক্লায়েন্ট তৈরি করাঃ http মডিউল তৈরি করে ওয়েব ক্লায়েন্ট তৈরি করা যায়। নিচের উদাহরণটি দেখি,

client.js নামের ফাইল তৈরি করতে হবে,

File: client.js
var http = require('http');

// Options to be used by request
var options = {
host: 'localhost',
port: '8081',
path: '/index.htm'
};

// Callback function is used to deal with response
var callback = function(response){
// Continuously update stream with data
var body = '';
response.on('data', function(data) {
body += data;
});

response.on('end', function() {
// Data received completely.
console.log(body);
});
}
// Make a request to the server
var req = http.request(options, callback);
req.end();

এখন, server.js ছাড়া অন্য কম্যান্ড টার্মিনাল ব্যবহার করে client.js রান করালে ফলাফল,

$ node client.js

আউটপুট ভেরিফাই করে আমরা পেতে পারি,

<html>
<head>
<title>Sample Page</title>
</head>
<body>
Hello World!
</body>
</html>

সার্ভার এন্ডে আউটপুট ভেরিফাই করে পাই,

Server running at http://127.0.0.1:8081/
Request for /index.htm received.

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_web_module.htm

নোড . জে এস । Node.js – ইউটিলিটি মডিউল (Utility Modules)

Huge Sell on Popular Electronics

নোড . জে এস । Node.js - ইউটিলিটি মডিউল
রিদওয়ান বিন শামীম

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

S.N. মডিউলের নাম ও বিবরণ
1 ওএস মডিউল
অপারেটিং সিস্টেম সংক্রান্ত ইউটিলিটি ফাংশনের ব্যবস্থা করে।
2 পাথ মডিউল
ফাইল পাথ নিয়ন্ত্রণ ও ব্যবস্থাপনার সুযোগ দেয়।
3 নেট মডিউল
সার্ভার ও ক্লায়েন্টকে স্ট্রিম রূপে প্রকাশ করে। নেটওয়ার্ক রাপার হিসেবে কাজ করে।
4 ডিএনএস মডিউল
প্রকৃত ডিএনএস লুকআপের জন্য ফাংশনের ব্যবস্থা করে, অন্তর্নিহিত অপারেটিং সিস্টেমের নাম রেজুলেসনের ফাংশনালিটি ব্যবহারের জন্য
5 ডোমেইন মডিউল
মাল্টিপল আই/ও অপারেশনকে সিঙ্গেল গ্রুপ হিসেবে নিয়ন্ত্রণের সুযোগ সৃষ্টি করে।

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_utitlity_module.htm

নোড.জেএস : Node.js – বাফার

Huge Sell on Popular Electronics

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

 

পিউর জাভাস্ক্রিপ্ট ইউনিকোড বান্ধব কিন্তু বাইনারি ডাটায় তেমন নিখুঁত নয়। টিসিপি সিস্টেম বা ফাইল স্ট্রিম নিয়ে কাজ করার সময় অক্টেট স্ট্রিম নিয়ন্ত্রণের প্রয়োজন হয়। নড বাফার ক্লাস প্রভাইড করে যা কিনা পূর্ণসংখ্যার অ্যারির সদৃশ ‘র’ ডাটা সংরক্ষণের সুযোগ দেয় কিন্তু ভি৮ হিপের(V8 heap)বাইরে ‘র’ মেমোরি এলোকেশনের সাথে সুসংহত থাকে।

বাফার ক্লাস গ্লোবাল ক্লাস, এটি বাফার মডিউল ইমপোর্ট করা ছাড়াই এপ্লিকেশনে ব্যবহার করা সম্ভব।

বাফার তৈরি করা

কয়েকটি উপায়ে বাফার তৈরি করা যেতে পারে,

প্রথম পদ্ধতিঃ ১০ অক্টেটের আনইনিসিয়েটেড বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer(10);


 

দ্বিতীয় পদ্ধতিঃ প্রদত্ত অ্যারি থেকে বাফার তৈরির সিনট্যাক্স,


var buf = new Buffer([10, 20, 30, 40, 50]);


 

তৃতীয় পদ্ধতিঃ প্রদত্ত স্ট্রিং থেকে বাফার তৈরির সিনট্যাক্স ও অপশনাল এনকোডিং টাইপ,


var buf = new Buffer("Simply Easy Learning", "utf-8");


 

যদিও ডিফল্ট এনকোডিং হল "utf8" , আমরা "ascii", "utf8", "utf16le", "ucs2", "base64" বা "hex" ইত্যাদিও ব্যবহার করতে পারি।

বাফারে লেখা

নড বাফারে লেখার জন্য সিনট্যাক্স,


buf.write(string[, offset][, length][, encoding])


 

প্যারামিটারঃ সংশ্লিষ্ট প্যারামিটারগুলো হল,

  • স্ট্রিং
  • অফসেট
  • লেন্থ
  • এনকোডিং

রিটার্ন ভ্যালু

এই প্রক্রিয়া লিখিত অক্টেটের নাম্বার রিটার্ন করায়। বাফারে পুরো স্ট্রিংএর জায়গা না থাকলে আংশিক লেখা হয়। যেমন,


buf = new Buffer(256);
len = buf.write("Simply Easy Learning");

console.log("Octets written : "+ len);


 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


Octets written : 20


 

বাফার থেকে পড়াঃ এজন্য প্রয়োজনীয় সিনট্যাক্স হল,
buf.toString([encoding][, start][, end])

এর প্যারামিটারগুলো হল,

  • এনকোডিং
  • স্টার্ট
  • এন্ড

উদাহরণ,


 buf = new Buffer(26);
 for (var i = 0 ; i < 26 ; i++) {
 buf[i] = i + 97;
 }
console.log( buf.toString('ascii')); // outputs: abcdefghijklmnopqrstuvwxyz
 console.log( buf.toString('ascii',0,5)); // outputs: abcde
 console.log( buf.toString('utf8',0,5)); // outputs: abcde
 console.log( buf.toString(undefined,0,5)); // encoding defaults to 'utf8', outputs abcde
 এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,
 abcdefghijklmnopqrstuvwxyz
 abcde
 abcde
 abcde

 

বাফার থেকে জেএসওএনে রূপান্তরের সিনট্যাক্স,


buf.toJSON()


 

এটির উদাহরণ,


var buf = new Buffer('Simply Easy Learning');
 var json = buf.toJSON(buf);
console.log(json);

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


[ 83, 105, 109, 112, 108, 121, 32, 69, 97, 115, 121, 32, 76, 101, 97, 114, 110, 105, 110, 103 ]


 

কনকাটেনাট বাফারঃ কনকাটেনাট নড বাফার থেকে সিঙ্গেল নড বাফারে রূপান্তর করার সিনট্যাক্স,


Buffer.concat(list[, totalLength])


 

এর প্যারামিটারগুলো হল,

  • লিস্ট
  • টোটাললেন্থ

রিটার্ন ভ্যালুঃ বাফার ইন্সটেন্স রিটার্ন করায়।
উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint ');
 var buffer2 = new Buffer('Simply Easy Learning');
 var buffer3 = Buffer.concat([buffer1,buffer2]);
 console.log("buffer3 content: " + buffer3.toString());

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


buffer3 content: TutorialsPoint Simply Easy Learning

 

বাফার তুলনাঃ এর জন্য ব্যবহৃত সিনট্যাক্স,


buf.compare(otherBuffer);

 

উদাহরণ,


var buffer1 = new Buffer('ABC');
 var buffer2 = new Buffer('ABCD');
 var result = buffer1.compare(buffer2);
if(result < 0) {
 console.log(buffer1 +" comes before " + buffer2);
 }else if(result == 0){
 console.log(buffer1 +" is same as " + buffer2);
 }else {
 console.log(buffer1 +" comes after " + buffer2);
 }

 

এটি সঠিকভাবে সম্পাদিত হলে তা যে ফলাফল দেখাবে তা হল,


ABC comes before ABCD


 

বাফার কপি করাঃ এর সিনট্যাক্স হল,


buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])


 

এর প্যারামিটারগুলো হল,

  • টার্গেট বাফার
  • টার্গেট স্টার্ট
  • সোর্স স্টার্ট
  • সোর্স এন্ড

উদাহরণ,


var buffer1 = new Buffer('ABC');
 //copy a buffer
 var buffer2 = new Buffer(3);
 buffer1.copy(buffer2);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: ABC

 

স্লাইস বাফারঃ এর সিনট্যাক্স হল,


buf.slice([start][, end])

 

প্যারামিটারঃ এর প্যারামিটার কোল,

  • স্টার্ট
  • এন্ড

উদাহরণ,


var buffer1 = new Buffer('TutorialsPoint');
 //slicing a buffer
 var buffer2 = buffer1.slice(0,9);
 console.log("buffer2 content: " + buffer2.toString());

 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer2 content: Tutorials


 

বাফার লেন্থঃ এর জন্য আমাদের যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


buf.length;


 

উদাহরণ,


var buffer = new Buffer('TutorialsPoint');
//length of the buffer
console.log("buffer length: " + buffer.length);


 

সঠিকভাবে সম্পাদিত হলে এটি ফলাফল দেখাবে,


buffer length: 14


 

রেফারেন্স

নড জেএসে প্রাপ্ত বাফার মডিউলের রেফারেন্স নিচে দেয়া হল,

SN মেথড

  1. new Buffer(size)
  2. new Buffer(buffer)
  3. new Buffer(str[, encoding])
  4. buf.length
  5. buf.write(string[, offset][, length][, encoding])
  6. buf.writeUIntLE(value, offset, byteLength[, noAssert])
  7. buf.writeUIntBE(value, offset, byteLength[, noAssert])
  8. buf.writeIntLE(value, offset, byteLength[, noAssert])
  9. buf.writeIntBE(value, offset, byteLength[, noAssert])
  10. buf.readUIntLE(offset, byteLength[, noAssert])
  11. buf.readUIntBE(offset, byteLength[, noAssert])
  12. buf.readIntLE(offset, byteLength[, noAssert])
  13. buf.readIntBE(offset, byteLength[, noAssert])
  14. buf.toString([encoding][, start][, end])
  15. buf.toJSON()
  16. buf[index]
  17. buf.equals(otherBuffer)
  18. buf.compare(otherBuffer)
  19. buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])
  20. buf.slice([start][, end])
  21. buf.readUInt8(offset[, noAssert])
  22. buf.readUInt16LE(offset[, noAssert])
  23. buf.readUInt16BE(offset[, noAssert])
  24. buf.readUInt32LE(offset[, noAssert])
  25. buf.readUInt32BE(offset[, noAssert])
  26. buf.readInt8(offset[, noAssert])
  27. buf.readInt16LE(offset[, noAssert])
  28. buf.readInt16BE(offset[, noAssert])
  29. buf.readInt32LE(offset[, noAssert])
  30. buf.readInt32BE(offset[, noAssert])
  31. buf.readFloatLE(offset[, noAssert])
  32. buf.readFloatBE(offset[, noAssert])
  33. buf.readDoubleLE(offset[, noAssert])
  34. buf.readDoubleBE(offset[, noAssert])
  35. buf.writeUInt8(value, offset[, noAssert])
  36. buf.writeUInt16LE(value, offset[, noAssert])
  37. buf.writeUInt16BE(value, offset[, noAssert])
  38. buf.writeUInt32LE(value, offset[, noAssert])
  39. buf.writeUInt32BE(value, offset[, noAssert])
  40. buf.writeInt8(value, offset[, noAssert])
  41. buf.writeInt16LE(value, offset[, noAssert])
  42. buf.writeInt16BE(value, offset[, noAssert])
  43. buf.writeInt32LE(value, offset[, noAssert])
  44. buf.writeInt32BE(value, offset[, noAssert])
  45. buf.writeFloatLE(value, offset[, noAssert])
  46. buf.writeFloatBE(value, offset[, noAssert])
  47. buf.writeDoubleLE(value, offset[, noAssert])
  48. buf.writeDoubleBE(value, offset[, noAssert])
  49. buf.fill(value[, offset][, end])

ক্লাস মেথড

SN মেথড

  1.   Buffer.isEncoding(encoding)
  2. Buffer.isBuffer(obj)
  3. Buffer.byteLength(string[, encoding])
  4. Buffer.concat(list[, totalLength])
  5. Buffer.compare(buf1, buf2)

 

নোড . জে এস । Node.js – ইভেন্ট ইমিটার (Event Emitter)

Huge Sell on Popular Electronics

নড জেএসঃ ইভেন্ট ইমিটার
রিদওয়ান বিন শামীম

নড ইমিট ইভেন্টের অনেক অবজেক্ট যেমন net.Server এর সাথে কোনও সদৃশ পিয়ার যুক্ত হলে কোনও ইভেন্টকে ইমিট করে। fs.readStream কোনও ইভেন্টকে ইমিট করে যখন এর ফাইল খোলা থাকে। events.EventEmitter সব ইভেন্ট ইমিট হওয়ার উদাহরণ।

ইভেন্ট ইমিটারের শ্রেণীঃ ইভেন্ট ইমিটারের শ্রেণী events module তে ব্যপিত থাকে।

নিচে উদাহরণ দেয়া হল,

// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

ইভেন্ট ইমিটারের কোনও পর্যায়ে ভুল দেখা দিলে 'error' ইভেন্ট দেখানো হয়। নতুন লিসনার যোগ হলে 'newListener' ইভেন্ট আর কোনও লিসনার মুছে ফেললে 'removeListener' ইভেন্ট প্রদর্শিত হয়। ইভেন্ট ইমিটার on ও emit. এর মত অনেক বৈশিষ্ট্য ধারণ করে।

প্রক্রিয়াঃ

S.N. প্রক্রিয়া
1 addListener(event, listener)

2 on(event, listener)

3 once(event, listener)

4 removeListener(event, listener)

5 removeAllListeners([event])

6 setMaxListeners(n)

7 listeners(event)

8 emit(event, [arg1], [arg2], [...])

ক্লাস মেথডঃ
S.N. প্রক্রিয়া
1 listenerCount(emitter, event)

ইভেন্টসঃ
S.No. ইভেন্ট
1 newListener
• event – ইভেন্ট নেমের স্ট্রিং
• listener – ইভেন্ট হ্যান্ডেলার ফাংশন
2 removeListener
• event - ইভেন্ট নেমের স্ট্রিং
• listener - ইভেন্ট হ্যান্ডেলার ফাংশন

উদাহরণঃ নিচের Node.js কোড দ্বারা main.js নামের ফাইল তৈরি করি,

var events = require('events');
var eventEmitter = new events.EventEmitter();

// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}

// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}

// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);

// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

// Fire the connection event
eventEmitter.emit('connection');

// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");

// Fire the connection event
eventEmitter.emit('connection');

eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");

console.log("Program Ended.");

এখন main.js রান করালে,

$ node main.js

আউটপুট ভেরিফাই করে দেখতে পারি,

2 Listner(s) listening to connection event
listner1 executed.
listner2 executed.
Listner1 will not listen now.
listner2 executed.
1 Listner(s) listening to connection event
Program Ended.

তথ্যসূত্রঃ http://www.tutorialspoint.com/nodejs/nodejs_event_emitter.htm

ইউজার ডায়াগ্রাম প্রটোকল

Huge Sell on Popular Electronics

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

 

টিসিপি/আইপি প্রটোকল স্যুইটের সরলতম ট্রান্সপোর্ট লেয়ার কমিউনিকেশন প্রটোকল হল ইউজার ডায়াগ্রাম প্রটোকল । এটিতে কম সংখ্যক যোগাযোগ কৌশল প্রয়োগ করা হয়। ইউজার ডায়াগ্রাম প্রটোকলকে অনির্ভরযোগ্য যোগাযোগ প্রটোকল বলা হলেও এটি আইপি সার্ভিস ব্যবহার করে যেটিতে সেরা সরবরাহ কৌশল ব্যবহৃত হয়।

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

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

 

ইউজার ডায়াগ্রাম প্রটোকলের বৈশিষ্ট্য

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

 

ইউজার ডায়াগ্রাম প্রটোকলের হিডার(header) চারটি মূল প্যারামিটার ব্যবহার করে,

  • সোর্স পোর্ট,
  • ডেসটিনেশন পোর্ট,
  • লেন্থ,
  • চেকসাম

 

যেসব এপ্লিকেশনে ডাটা ট্রান্সফারের জন্য ইউজার ডায়াগ্রাম প্রটোকল ব্যবহৃত হয়,

  • ডোমেইন নেম সার্ভিস,
  • সিম্পল নেটওয়ার্ক মেনেজমেন্ট প্রটোকল,
  • ট্রিভিয়াল ফাইল ট্রান্সফার প্রটোকল,
  • রাউটিং ইনফরমেশন প্রটোকল,
  • কার্বারোতে।

 

ইউনিক্স বেসিক ইউটিলিটিঃ প্রিন্টিং, ইমেইল

Huge Sell on Popular Electronics

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

 

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

ফাইল প্রিন্ট করা

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

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

pr কম্যান্ড

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

pr কম্যান্ডের সিনট্যাক্স নিচে দেয়া হল,


pr option(s) filename(s)


 

pr কম্যান্ড স্ক্রিনে বা প্রিন্টেড কপিতে পরিবর্তন ও ফরম্যাটিং করে থাকে, এটি মূল ফাইলে কোনও পরিবর্তন সাধন করে না।

 

কিছু pr কম্যান্ড অপশন নিচের ছকে দেখানো হল।

অপশন বর্ণনা
-k আউটপুটে k কলাম গঠন করে
-d আউটপুটে ডবল স্পেস(সবpr ভার্সনে নয়)
-h "header" পরবর্তী আইটেমকে রিপোর্টার হিডার হিসেবে নেয়
-t টপ ও বটম মার্জিন ও হিডার বাদ দেয়
-l PAGE_LENGTH পেজলেন্থ নির্ধারণ করে PAGE_LENGTH (66) lines. টেক্সটের ডিফল্ট লাইন নাম্বার ৫৬
-o MARGIN মার্জিন স্পেস দ্বারা প্রতি লাইনকে অফসেট করানো।
-w PAGE_WIDTH পেজের উইডথ নির্ধারণ করে PAGE_WIDTH (72) characters মাল্টিপল টেক্সট কলাম আউটপুটের জন্য

 

উদাহরণস্বরূপ, food নামের একটি স্যাম্পল ফাইলের জন্য,


$cat food
Sweet Tooth
Bangkok Wok
Mandalay
Afghani Cuisine
Isle of Java
Big Apple Deli
Sushi and Sashimi
Tio Pepe's Peppers
........
$

 

Restaurants হিডারে pr কম্যান্ড ব্যবহার করে দুই কলামে রিপোর্ট লিখলে,


$pr -2 -h "Restaurants" food
Nov 7 9:58 1997 Restaurants Page 1
Sweet Tooth Isle of Java
Bangkok Wok Big Apple Deli
Mandalay Sushi and Sashimi
Afghani Cuisine Tio Pepe's Peppers
........
$

 

lp বা lpr কমান্ড

lp বা lpr কমান্ড কোনও ফাইল স্ক্রিনের পরিবর্তে কাগজে প্রিন্টের জন্য ব্যবহৃত হয়। ডিফল্ট প্রিন্টারে কোনও নির্দিষ্ট ফাইল প্রিন্ট করার জন্য lp বা lpr কমান্ড ব্যবহার করতে হয় যেমন food নামের স্যাম্পল ফাইলের জন্য


$lp food
request id is laserp-525 (1 file)
$

 

lpstat ও lpq কম্যান্ড

lpstat কম্যান্ড নির্দেশ করে প্রিন্টারে কোন কোন ডাটা সারিবদ্ধ আছে যেমন রিকুয়েস্ট আইডি, ওউনার, ফাইল সাইজ এসব। নিজের আউটপুট রিকোয়েস্ট ছাড়া অন্য সব রিকোয়েস্ট দেখতে lpstat –o কম্যান্ড ব্যবহার করা যায়।


$lpstat -o
laserp-573   john   128865  Nov 7 11:27  on laserp
laserp-574   grace  82744   Nov 7 11:28
laserp-575   john   23347   Nov 7 11:35
$

 

lpq, lpstat –o থেকে একটু ভিন্ন ধরণের তথ্য দেয়,


$lpq
laserp is ready and printing
Rank     Owner   Job   Files              Total Size
active   john    573   report.ps          128865 bytes
1st      grace   574   ch03.ps ch04.ps    82744 bytes
2nd      john    575   standard input     23347 bytes
$

 

এখানে প্রথম লাইন প্রিন্টার স্ট্যাটাস বুঝায়, প্রিন্টার অকেজো বা কাগজ না থাকলে প্রথম লাইনে অন্য ম্যাসেজ আসবে।

cancel ও lprm কম্যান্ড

cancel কম্যান্ড lp কম্যান্ড থেকে প্রিন্টিং রিকোয়েস্ট বাদ দেয়, lprm lpr রিকোয়েস্ট বাদ দেয়।


$cancel laserp-575
request "laserp-575" cancelled
$

 

প্রিন্ট হচ্ছে এমন রিকোয়েস্ট বাতিল করতে শুধু নিচের কোড প্রবেশ করাতে হবে,


$cancel laserp
request "laserp-573" cancelled
$

 

Lprm কম্যান্ড চলমান রিকোয়েস্ট বাতিলের জন্য প্রয়োগ করা হয়,


$lprm 575
dfA575diamond dequeued
cfA575diamond dequeued
$

 

ইমেইল প্রেরণ

ইমেইল প্রেরণের সিনট্যাক্স হল,


$mail[-s subject][-c cc-addr][-b bcc-addr] to-addr

 

মেইল কম্যান্ডের গুরুত্বপূর্ণ অপশনগুলো হল,

অপশন বর্ণনা
-s কম্যান্ড লাইনে বিষয় নির্ধারণ
-c ইউজার লিস্ট কার্বন কপি করা। কমা দ্বারা   আলাদা করা তালিকা হতে হবে
-b লিস্টে ব্লাইন্ড কার্বন কপি প্রেরণ করা। কমা দ্বারা   আলাদা করা তালিকা হতে হবে

 

যেমন, admin@yahoo.com তে টেস্ট ম্যাসেজ পাঠাতে কোড,


$mail-s"Test Message" admin@yahoo.com

 

লাইনের শুরুতে "control-D" ব্যবহার করে ম্যাসেজ লিখতে হবে, এটি বন্ধ করতে শুধু dot (.) নিচের মত করে লিখতে হবে,


Hi, 
This is a test
.
Cc:

 

নিচের কোড ব্যবহার করে সম্পূর্ণ ফাইল প্রেরণ করা যায়,


$mail-s"Report 05/06/07" admin@yahoo.com< demo.txt

 

ইনকামিং মেইল চেক করতে ইউনিক্স সিস্টেমে নিচের কোড ব্যবহার করতে হয়,


$mail
no email

 

নোড.জেএস । Node.js – ইভেন্ট লুপ (Node.js – Event Loop)

Huge Sell on Popular Electronics

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

 

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

ইভেন্টভিত্তিক প্রোগ্রামিং

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

ইভেন্টভিত্তিক এপ্লিকেশনে একটি মেইন লুপ থাকে যা ইভেন্টের সন্ধান করে, পাওয়া গেলে তাকে কলব্যাক ফাংশনের সাথে সমন্বয় করিয়ে দেয়।

Event Driven Programming

ইভেন্টকে কলব্যাকের সমতুল্য মনে হতে পারে, মূলত পার্থক্য হল, অসমন্বিত ফাংশনের ফলাফল ফেরত আসলে কলব্যাক ফাংশন কাজ করে, আর ইভেন্ট অবজারভার প্যাটার্নে কাজ করে। যেসব ফাংশন ইভেন্টকে শোনে তারা অবজারভাররূপে কাজ করে। কোনও ইভেন্ট বাদ পরলে তার লিসনার ফাংশন সম্পাদন শুরু করে।

নড জেএসের অনেকগুলি বিল্ট ইন ইভেন্ট আছে যা events মডিউলের মাধ্যমে পাওয়া যায় এবং EventEmitter ক্লাস ইভেন্ট ও ইভেন্ট লিসনারের মধ্যে সমন্বয় সাধন করে।


// Import events module
 var events = require('events');
 // Create an eventEmitter object
 var eventEmitter = new events.EventEmitter();

 

নিচের সিনট্যাক্স ইভেন্ট ও ইভেন্ট হ্যান্ডলারের মধ্যে সমন্বয় সাধন করে,


// Bind event and even handler as follows
 eventEmitter.on('eventName', eventHandler);

 

প্রোগ্রামিঙের মাধ্যমে কোনও ইভেন্ট বাদ দিতে,


// Fire an event
 eventEmitter.emit('eventName');

 

উদাহরণ,
main.js নামের জেএস ফাইল তৈরি করি যাতে নিচের কোড থাকবে,


// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();
// Create an event handler as follows
var connectHandler = function connected() {
     console.log('connection succesful.'); 

     // Fire the data_received event 
     eventEmitter.emit('data_received');
}
// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 
// Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function(){
     console.log('data received succesfully.');
});
// Fire the connection event 
eventEmitter.emit('connection');
console.log("Program Ended.");

 

প্রোগ্রামটি রান করিয়ে আউটপুট পাব,


$ mnode main.js

 

এটি যে ফলাফল দেখাবে,


 connection succesful.
 data received succesfully.
 Program Ended.

 

যেভাবে নড এপ্লিকেশন কাজ করেঃ অসমন্বিত ফাংশন শেষ প্যারামিটাররূপে কলব্যাককে গ্রহণ করে, কলব্যাক এররকে প্রথম প্যারামিটাররূপে গ্রহণ করে। পূর্বের উদাহরণের মাধ্যমে আবার দেখা যাক, input.txt নামে একটি ফাইল তৈরি করি, যাতে নিচের কোড থাকবে।


Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!

 

main.js নামের ফাইল তৈরি করি যাতে নিচের কোড থাকবে।


var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
   if (err){
      console.log(err.stack);
      return;
   }
   console.log(data.toString());
});
console.log("Program Ended");

এখানে fs.readFile() অসমন্বিত ফাংশন যার কাজ হল ফাইল পড়া। এক্ষেত্রে ভুল হলে err অবজেক্ট দ্বারা সেটি readFile এর মাধ্যমে কলব্যাক ফাংশনে যাবে।

 Program Ended
 Tutorials Point is giving self learning content
 to teach the world in simple and easy way!!!!!

 

 

নোড.জেএস – প্রথম এপ্লিকেশন (Node.js – First Application)

Huge Sell on Popular Electronics

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

 

নড জেএসের মাধ্যমে ‘হ্যালো ওয়ার্ল্ড’ তৈরির আগে নড জেএসের এপ্লিকেশনের অংশগুলো দেখে নেয়া যাক, এর তিনটি খুব গুরুত্বপূর্ণ অংশ আছে,

  • ইমপোর্ট রিকোয়ারড মডিউল
  • ক্রিয়েটিভ সার্ভার
  • রিড রিকোয়েস্ট, রিটার্ন রেসপন্স

 

নড জেএস এপ্লিকেশন তৈরি করা

প্রথম ধাপ, প্রয়োজনীয় মডিউল ইমপোর্ট করা

আমরা require ডিরেকটিভ ব্যবহার করব এইচটিটিপি মডিউল লোড করতে, আর রিটার্নড এইচটিটিপি ইন্সটেন্সকে এইচটিটিপি ভেরিয়েবলে নিচের মত করে স্টোর করব,


var http = require("http");

 

দ্বিতীয় ধাপ, সার্ভার তৈরি করা

পরবর্তী ধাপে আমরা তৈরি করা এইচটিটিপি ইন্সটেন্স ব্যবহার করি ও http.createServer() তে কল করা হয় সার্ভার ইনটেন্স তৈরি করতে। এরপরlisten মেথড ব্যবহার করে আমরা একে port 8081এর সাথে সংযুক্ত করি। একটি ফাংশনকে প্যারামিটার রিকোয়েস্ট ও রেসপন্সসহ পাস করানো হয়। নিচের ব্যবহারিক প্রয়োগ ‘হ্যালো ওয়ার্ল্ড’ ফলাফল দেখাবে।


http.createServer(function (request, response) {
     // Send the HTTP header
     // HTTP Status: 200 : OK
     // Content Type: text/plain
     response.writeHead(200, {'Content-Type': 'text/plain'});
     // Send the response body as "Hello World"
     response.end('Hello World\n');
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

 

উপরের কোড এমন এইচটিটিপি সার্ভার তৈরির জন্য যথেষ্ট যা লোকাল মেশিনের 8081 portএর সাথে সমন্বয় সাধন করে।

 

তৃতীয় ধাপ, রিকোয়েস্ট ও রেসপন্স টেস্ট করা

main.js ফাইলে পূর্বে উল্লেখিত দুটি ধাপের সমন্বয় করে নিচের নত করে এইচটিটিপি সার্ভার চালু করতে হয়,


var http = require("http");
http.createServer(function (request, response) {
    // Send the HTTP header
    // HTTP Status: 200 : OK
    // Content Type: text/plain
    response.writeHead(200, {'Content-Type': 'text/plain'});
    // Send the response body as "Hello World"
    response.end('Hello World\n');
}).listen(8081);
// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

 

এখন সার্ভার চালুর জন্য main.jsকে সম্পাদন করতে হয় নিচের মত করে,


$ node main.js

 

আউটপুট ভেরিফাই করলে দেখব, সার্ভার চালু হয়ে গেছে।


Server running at http://127.0.0.1:8081/

 

নড জেএস সার্ভারে রিকোয়েস্ট করা

যেকোনো ব্রাউজারে http://127.0.0.1:8081/ ওপেন করে রেজাল্ট দেখব, ‘হ্যালো ওয়ার্ল্ড’ ।

Node.js server

অভিনন্দন! আমাদের প্রথম এইচটিটিপি সার্ভার তৈরি ও চালু হল যা port 8081 এর সকল এইচটিটিপি রিকোয়েস্টের সাড়া দেয়।

 

নোড.জেএস – এনপিএম (Node.js – NPM)

Huge Sell on Popular Electronics

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

 

নড প্যাকেজ ম্যানেজার বা এনপিএম দুটি ফাংশনালিটির প্রবর্তন করে,

  • নড জেএস প্যাকেজ বা মডিউলের জন্য অনলাইন সংগ্রহস্থল তৈরি করে যা search.nodejs.orgতে খোঁজা হবে।
  • নড জেএস প্যাকেজ ইন্সটলের জন্য কম্যান্ড লাইন ইউটিলিটি, নড জেএস প্যাকেজের ভার্সন ও সংশ্লিষ্ট নির্ভরতা বিষয়ক ব্যবস্থাপনা নিয়ন্ত্রণ করে।

এনপিএম v0.6.3 এর পরবর্তী সংস্করণগুলোতে নড জেএস ইন্সটলেশন প্যাকেজের সাথে বাণ্ডিল আকারে আসে। ভেরিফাই করার জন্য কনসোল ওপেন করে নিচের কম্যান্ড লিখে দেখতে পারি,


 $ npm --version
 2.7.1

 

যদি এনপিএমের পুরনো সংস্করণ ব্যবহার করে থাকি তাহলে এটি আপডেট করা অনেক সহজ হবে, নিচের কম্যান্ড ব্যবহার করে আমরা এটি করতে পারি,


$ sudo npm install npm -g
 /usr/bin/npm -> /usr/lib/node_modules/npm/bin/npm-cli.js
 npm@2.7.1 /usr/lib/node_modules/npm

 

এনপিএম ব্যবহার করে মডিউল ইন্সটল করা

এজন্য একটি সহজ সিনট্যাক্স আমরা ব্যবহার করতে পারি,


$ npm install <Module Name>

 

যেমন, নিচের কম্যান্ড express নামের একটি পরিচিত নড জেএস ওয়েব ফ্রেমওয়ার্ক মডিউল ইন্সটলের জন্য ব্যবহৃত হতে পারে,


$ npm install express

 

এখন আমরা জেএস ফাইলে এই মডিউল ব্যবহার করতে পারব,


var express = require('express');

 

গ্লোবাল বনাম লোকাল ইন্সটলেশন

বাই ডিফল্ট এনপিএম যেকোনো ডিপেন্ডেন্সিকে লোকাল মোডে ইন্সটল করে। এখানে লোকাল মোড বলতে বোঝায় node_modules ডিরেক্টরিতে প্যাকেজ ইন্সটলেশন যা কিনা নড জেএস এপ্লিকেশন যে ফোল্ডারে আছে সেখানে বিদ্যমান। লোকাল মোডের প্যাকেজগুলো require() মেথডে প্রবেশযোগ্য। যেমন, এক্সপ্রেস মডিউল ইন্সটল করার সময় এটি কারেন্ট ডিরেক্টরিতে node_modules ডিরেক্টরি তৈরি করেছে।


$ ls -l
 total 0
 drwxr-xr-x 3 root root 20 Mar 17 02:23 node_modules

 

অন্যভাবে, লোকালভাবে ইন্সটলড মডিউলকে আমরা npm ls কম্যান্ড ব্যবহার করে তালিকাবদ্ধ করতে পারি,

গ্লোবালভাবে ইন্সটলড প্যাকেজ বা ডিপেন্ডেন্সি সিস্টেম ডিরেক্টরিতে সংরক্ষিত থাকে। এসব ডিপেন্ডেন্সি যেকোনো নড জেএসের সিএলআই বা কম্যান্ড লাইন ইন্টারফেস ফাংশনে ব্যবহৃত হতে পারে কিন্তু require()ব্যবহার করে নড এপ্লিকেশনে সরাসরি ইমপোর্ট করা যায় না। গ্লোবাল ইন্সটলেশন ব্যবহার করে এক্সপ্রেস মডিউল ইন্সটল করা যাক,


$ npm install express -g

 

এটি একই ফলাফল দেবে কিন্তু মডিউল গ্লোবালি ইন্সটলড হবে। এখানে প্রথম লাইন মডিউলের ভার্সন ও ইন্সটলের লোকেশন নির্দেশ করবে।


express@4.12.2 /usr/lib/node_modules/express
 ├── merge-descriptors@1.0.0
 ├── utils-merge@1.0.0
 ├── cookie-signature@1.0.6
 ├── methods@1.1.1
 ├── fresh@0.2.4
 ├── cookie@0.1.2
 ├── escape-html@1.0.1
 ├── range-parser@1.0.2
 ├── content-type@1.0.1
 ├── finalhandler@0.3.3
 ├── vary@1.0.0
 ├── parseurl@1.3.0
 ├── content-disposition@0.5.0
 ├── path-to-regexp@0.1.3
 ├── depd@1.0.0
 ├── qs@2.3.3
 ├── on-finished@2.2.0 (ee-first@1.1.0)
 ├── etag@1.5.1 (crc@3.2.1)
 ├── debug@2.1.3 (ms@0.7.0)
 ├── proxy-addr@1.0.7 (forwarded@0.1.0, ipaddr.js@0.1.9)
 ├── send@0.12.1 (destroy@1.0.3, ms@0.7.0, mime@1.3.4)
 ├── serve-static@1.9.2 (send@0.12.2)
 ├── accepts@1.2.5 (negotiator@0.5.1, mime-types@2.0.10)
 └── type-is@1.6.1 (media-typer@0.3.0, mime-types@2.0.10)

 

গ্লোবালি ইন্সটলড সব মডিউল চেক করে দেখতে,


$ npm ls -g

 

package.jsonব্যবহারঃ package.json যেকোনো নড এপ্লিকেশন বা মডিউলের রুট ডিরেক্টরিতে থাকে এবং প্যাকেজের বৈশিষ্ট্য বিবৃত করে। node_modules/express/তে অবস্থিত এক্সপ্রেস প্যাকেজের package.json খুলে আমরা পাই,


{
  "name": "express",
  "description": "Fast, unopinionated, minimalist web framework",
  "version": "4.11.2",
  "author": {
    "name": "TJ Holowaychuk",
    "email": "tj@vision-media.ca"
  },
  "contributors": [
    {
      "name": "Aaron Heckmann",
      "email": "aaron.heckmann+github@gmail.com"
    },
    {
      "name": "Ciaran Jessup",
      "email": "ciaranj@gmail.com"
    },
    {
      "name": "Douglas Christopher Wilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "Guillermo Rauch",
      "email": "rauchg@gmail.com"
    },
    {
      "name": "Jonathan Ong",
      "email": "me@jongleberry.com"
    },
    {
      "name": "Roman Shtylman",
      "email": "shtylman+expressjs@gmail.com"
    },
    {
      "name": "Young Jae Sim",
      "email": "hanul@hanul.me"
    }
  ],
  "license": "MIT",
  "repository": {
    "type": "git",
    "url": "https://github.com/strongloop/express"
  },
  "homepage": "http://expressjs.com/",
  "keywords": [
    "express",
    "framework",
    "sinatra",
    "web",
    "rest",
    "restful",
    "router",
    "app",
    "api"
  ],
  "dependencies": {
    "accepts": "~1.2.3",
    "content-disposition": "0.5.0",
    "cookie-signature": "1.0.5",
    "debug": "~2.1.1",
    "depd": "~1.0.0",
    "escape-html": "1.0.1",
    "etag": "~1.5.1",
    "finalhandler": "0.3.3",
    "fresh": "0.2.4",
    "media-typer": "0.3.0",
    "methods": "~1.1.1",
    "on-finished": "~2.2.0",
    "parseurl": "~1.3.0",
    "path-to-regexp": "0.1.3",
    "proxy-addr": "~1.0.6",
    "qs": "2.3.3",
    "range-parser": "~1.0.2",
    "send": "0.11.1",
    "serve-static": "~1.8.1",
    "type-is": "~1.5.6",
    "vary": "~1.0.0",
    "cookie": "0.1.2",
    "merge-descriptors": "0.0.2",
    "utils-merge": "1.0.0"
  },
  "devDependencies": {
    "after": "0.8.1",
    "ejs": "2.1.4",
    "istanbul": "0.3.5",
    "marked": "0.3.3",
    "mocha": "~2.1.0",
    "should": "~4.6.2",
    "supertest": "~0.15.0",
    "hjs": "~0.0.6",
    "body-parser": "~1.11.0",
    "connect-redis": "~2.2.0",
    "cookie-parser": "~1.3.3",
    "express-session": "~1.10.2",
    "jade": "~1.9.1",
    "method-override": "~2.3.1",
    "morgan": "~1.5.1",
    "multiparty": "~4.1.1",
    "vhost": "~3.0.0"
  },
  "engines": {
    "node": ">= 0.10.0"
  },
  "files": [
    "LICENSE",
    "History.md",
    "Readme.md",
    "index.js",
    "lib/"
  ],
  "scripts": {
    "test": "mocha --require test/support/env --reporter spec --bail --check-leaks test/ test/acceptance/",
    "test-cov": "istanbul cover node_modules/mocha/bin/_mocha -- --require test/support/env --reporter dot --check-leaks test/ test/acceptance/",
    "test-tap": "mocha --require test/support/env --reporter tap --check-leaks test/ test/acceptance/",
    "test-travis": "istanbul cover node_modules/mocha/bin/_mocha --report lcovonly -- --require test/support/env --reporter spec --check-leaks test/ test/acceptance/"
  },
  "gitHead": "63ab25579bda70b4927a179b580a9c580b6c7ada",
  "bugs": {
    "url": "https://github.com/strongloop/express/issues"
  },
  "_id": "express@4.11.2",
  "_shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
  "_from": "express@*",
  "_npmVersion": "1.4.28",
  "_npmUser": {
    "name": "dougwilson",
    "email": "doug@somethingdoug.com"
  },
  "maintainers": [
    {
      "name": "tjholowaychuk",
      "email": "tj@vision-media.ca"
    },
    {
      "name": "jongleberry",
      "email": "jonathanrichardong@gmail.com"
    },
    {
      "name": "shtylman",
      "email": "shtylman@gmail.com"
    },
    {
      "name": "dougwilson",
      "email": "doug@somethingdoug.com"
    },
    {
      "name": "aredridel",
      "email": "aredridel@nbtsc.org"
    },
    {
      "name": "strongloop",
      "email": "callback@strongloop.com"
    },
    {
      "name": "rfeng",
      "email": "enjoyjava@gmail.com"
    }
  ],
  "dist": {
    "shasum": "8df3d5a9ac848585f00a0777601823faecd3b148",
    "tarball": "http://registry.npmjs.org/express/-/express-4.11.2.tgz"
  },
  "directories": {},
  "_resolved": "https://registry.npmjs.org/express/-/express-4.11.2.tgz",
  "readme": "ERROR: No README data found!"
}

 

package.jsonএর এট্রিবিউট

  • name – প্যাকেজের নাম
  • version – প্যাকেজের ভার্সন
  • description – প্যাকেজের বর্ণনা
  • homepage – প্যাকেজের হোমপেজ
  • author – প্যাকেজের অথর
  • contributors – প্যাকেজের কন্ট্রিবিউটারের নাম
  • dependencies – ডিপেনডেন্সি লিস্ট
  • repository – প্যাকেজের সংগ্রহস্থলের প্রকরণ ও ইউআরএল
  • main – প্যাকেজের এন্ট্রি পয়েন্ট
  • keywords – কী ওয়ার্ড

 

মডিউল আনইন্সটল করতে

এজন্য কম্যান্ড ব্যবহার করতে পারি,


$ npm uninstall express


 

আনইন্সটল করে of /node_modules/ ডিরেক্টরি থেকে অথবা নিচের কম্যান্ড ব্যবহার করে ভেরিফাই করতে পারি


$ npm ls


 

 

মডিউল আপডেট করতে

package.json আপডেট করে ডিপেন্ডেন্সি ভার্সন পরিবর্তন করে এই কম্যান্ড রান করাতে হয়,


$ npm update express

 

মডিউল সার্চ করতে

এনপিএম ব্যবহার করে প্যাকেজের নাম সার্চ করতে হয়।


$ npm search express


 

মডিউল তৈরি করতে

এনপিএম ব্যবহার করে package.json এর কাঠামো তৈরি করা হয়,


$ npm init
 This utility will walk you through creating a package.json file.
 It only covers the most common items, and tries to guess sane defaults.
See 'npm help json' for definitive documentation on these fields
 and exactly what they do.
Use 'npm install <pkg> --save' afterwards to install a package and
 save it as a dependency in the package.json file.
Press ^C at any time to quit.
 name: (webmaster)

 

ভ্যালিড ইমেইল এড্রেসসহ এনপিএম সংগ্রহস্থল সাইটে রেজিস্ট্রেশন করার জন্য কম্যান্ড,


$ npm adduser
 Username: mcmohd
 Password:
 Email: (this IS public) mcmohd@gmail.com

 

মডিউল পাবলিশ করতে যে কোড ব্যবহার করব,


$ npm publish

 

সবকিছু ঠিকঠাকভাবে সম্পন্ন হলে মডিউলটি পাবলিশ হয়ে যাবেএবং এনপিএমের মাধ্যমে ইন্সটলের যোগ্য হবে অন্যান্য নড জেএস মডিউলের মত।

 

নড.জেএস এর পরিবেশ তৈরি করা (Node.js – Environment Setup)

Huge Sell on Popular Electronics

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

 

অনলাইনে অপশন পরীক্ষা করা

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

নিচের কোডের সাথে Try it অপশন ব্যবহার করে এটি করা যায়,


/* Hello World! program in Node.js */
 console.log("Hello World!");

 

আমাদের টিউটোরিয়ালের পরবর্তী অংশে Try it অপশন প্রচুর ব্যবহার করা হবে তাই এর ব্যবহার ভালভাবে জেনে নেয়া প্রয়োজন।

লোকাল এনভায়রন সেটআপ করা

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

টেক্সট এডিটরঃ প্রোগ্রাম টাইপ করার জন্য ব্যবহার করতে হয়। অপারেটিং সিস্টেমের উপর নির্ভর করে উইন্ডোজ নোটপ্যাড, অপারেটিং সিস্টেম এডিট কম্যান্ড ব্রিফ, এপ্সিলন, ইম্যাকস, ভিআইএম বা ভিআই ইত্যাদি টেক্সট এডিটর ব্যবহৃত হয়ে থাকে। এডিটরের মাধ্যমে সোর্স ফাইল তৈরি করা হয় যার মধ্যে প্রোগ্রাম সোর্স কোড থাকে। এর এক্সটেনশনে ".js" থাকে।

প্রোগ্রামিং শুরুর আগে একটি টেক্সট এডিটর ঠিক করে কোডিঙে কিছু অভিজ্ঞতা অর্জন করে একটি ফাইলে রেখে তা সম্পাদন করতে হয়।

নড জেএস রানটাইম

সোর্স ফাইলে লেখা সোর্সকোড হল জাভাস্ক্রিপ্ট। সেই জাভাস্ক্রিপ্ট কোড ইন্টারপ্রিট ও সম্পাদন করতে নড জেএস ইন্টারপ্রিটার ব্যবহৃত হয়।

নড জেএস ডিস্ট্রিবিউশন সান ওএস, লিনাক্স, ম্যাক ওএস এক্স, এবং উইন্ডোজের জন্য ৩২ ও ৬৪ বিট এক্স৮৬ প্রসেসর আর্কিটেকচারে বাইনারি ইন্সটলেবলরূপে পাওয়া যায়।

নড জেএসএর আরকাইভ ডাউনলোড করা

এক্ষেত্রে নড জেএসএর সর্বশেষ আরকাইভ ভার্সন ডাউনলোড করে নিতে হয়, বিভিন্ন ওএসের জন্য প্রযোজ্য কিছু আরকাইভ ভার্সন নিচের ছকে দেয়া হল,

ওএস আরকাইভের নাম

Windows   node-v0.12.0-x64.msi
Linux     node-v0.12.0-linux-x86.tar.gz
Mac       node-v0.12.0-darwin-x86.tar.gz
SunOS     node-v0.12.0-sunos-x86.tar.gz

ইউনিক্স, সান ওএস, লিনাক্স ও ম্যাক ওএস এক্সে ইন্সটল করা

ওএস আর্কিটেকচার অনুযায়ী /tmp তে node-v0.12.0-osname.tar.gz আরকাইভ ডাউনলোড ও এক্সট্রাক্ট করতে হয়। এরপর সেটিকে /usr/local/nodejs ডিরেক্টরিতে সরিয়ে রাখতে হয়।


 $ cd /tmp
 $ wget http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz
 $ tar xvfz node-v0.12.0-linux-x64.tar.gz
 $ mkdir -p /usr/local/nodejs
 $ mv node-v0.12.0-linux-x64/* /usr/local/nodejs

 

পাথ এনভায়রনমেন্ট চলকে /usr/local/nodejs/bin যোগ করতে হয়,

ওএস আউটপুট
 Linux    export PATH=$PATH:/usr/local/nodejs/bin
 Mac      export PATH=$PATH:/usr/local/nodejs/bin
 FreeBSD  export PATH=$PATH:/usr/local/nodejs/bin

উইন্ডোজে ইন্সটলেশন

এমএসআই ফাইল ব্যবহার করে নড জেএসের প্রম্পট ব্যবহার করতে হয়। বাই ডিফল্ট C:\Program Files\nodejs তে নড জেএস ডিস্ট্রিবিউশন ব্যবহার করে থাকে।ইন্সটলার উইন্ডোজের পাথ পরিবেশ চলকে C:\Program Files\nodejs\bin ডিরেক্টরি সেট করে। কম্যান্ড প্রম্পট সক্রিয় করতে রিস্টার্ট করতে হয়।

ইন্সটলেশন ভেরিফাই করা- ফাইল সম্পাদন

main.js নামের জেএস ফাইল তৈরি করতে হয় নিচের কোড সহ,


/* Hello, World! program in node.js */
 console.log("Hello, World!"

 

নড জেএস ইন্টারপ্রিটার ব্যবহার করে main.js ফাইল সম্পাদন করে আমরা ফলাফল দেখতে পারি,


$ node main.js

 

ইন্সটলেশনের সবকিছু ঠিকঠাক থাকলে এটি যে ফলাফল দেখাবে তা হল,


Hello, World!


 

ইউনিক্সঃ সিস্টেম লগিং (Unix – System Logging)

Huge Sell on Popular Electronics

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

 

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

ইউনিক্সের বেশিরভাগ ভার্সন syslog নামক জেনারেল পারপাস লগিং ফ্যাসিলিটি দিয়ে থাকে। স্বতন্ত্র প্রোগ্রাম যাদের তথ্য লগড অবস্থায় থাকতে হয় তারা এটিতে তথ্য প্রেরণ করে থাকে। এই সিস্টেম একটি কেন্দ্রীভূত সিস্টেম লগড প্রসেস ব্যবহার করে যা /etc/syslogd বা /etc/syslog নামক প্রোগ্রাম সম্পন্ন করে। প্রোগ্রাম তাদের লগ এন্ট্রিকে syslogd এ পাঠায় যা /etc/syslogd.conf বা /etc/syslog ফাইল কনফিগার সংক্রান্ত কাজগুলো করে। কোনও মিল পাওয়া গেলে কাঙ্খিত লগ ফাইলে লগ ম্যাসেজ লিখে রাখে।

মূলত চার ধরণের syslog টার্ম আছে,

টার্ম বর্ণনা
Facility আইডেন্টিফাইয়ার লগ মেসেজে সাবমিট হওয়া এপ্লিকেশন বা প্রোগ্রামের বিবরণ দেয়
Priority ম্যাসেজের গুরুত্বের পরিমাপক
Selector এক বা একাধিক ফ্যাসিলিটি বা লেভেলের সমন্বয়
Action ইনকামিং ম্যাসেজ যা সিলেক্টরের সাথে মিলে যায়, তার ক্ষেত্রে ঘটে।

 

সিসলগ ফ্যাসিলিটিজ

সিলেক্টরের জন্য প্রাপ্ত সুবিধাগুলো নিচে দেয়া হল, অবশ্য সব ইউনিক্স ভার্সন সবগুলো সুবিধা পায় না।

প্রায়োরিটি বর্ণনা
emerg জরুরী অবস্থা
alert সংশোধন করতে হবে এমন অবস্থা
crit জটিল পরিস্থিতি, যেমন হার্ডওয়ারে ক্রুটি
err সাধারণ এরর
warning সতর্কবাণী
notice এরর না, তবু সাবধানে কাজ করতে হবে
info তথ্যমূলক ম্যাসেজ
debug প্রোগ্রাম ডিবাগের ম্যাসেজ
none নট টু লগ ম্যাসেজ নির্ধারণের জন্য সিউডো লেভেল ব্যবহার করা

 

/etc/syslog.conf ফাইল

ম্যাসেজ লগড থাকার সময় এই ফাইল কন্ট্রোল করে।


*.err;kern.debug;auth.notice   /dev/console
daemon,auth.notice             /var/log/messages
lpr.info                       /var/log/lpr.log
mail.*                         /var/log/mail.log
ftp.*                          /var/log/ftp.log
auth.*                         @prep.ai.mit.edu
auth.*                         root,amrood
netinfo.err                    /var/log/netinfo.log
install.*                      /var/log/install.log
*.emerg                        *
*.alert                        |program_name
mark.*                         /dev/console

 

ফাইলের প্রতিটা লাইনের দুটি করে অংশ আছে,

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

লগিং একশন

পাঁচটি একশনের যে কোনও একটি একশন ফিল্ডে প্রযোজ্য হবে,

  • কোনও ফাইল বা ডিভাইসে লগ ম্যাসেজ
  • ইউজারের কাছে ম্যাসেজ পাঠানো
  • সব ইউজারের কাছে ম্যাসেজ পাঠানো
  • প্রোগ্রামে ম্যাসেজ পাইপ করা
  • অন্য হোষ্টের syslog এ ম্যাসেজ প্রেরণ

লগার কম্যান্ড

লগার কম্যান্ডের ফরম্যাট হল,


logger [-i] [-f file] [-p priority] [-t tag] [message]...

 

এর প্যারামিটারগুলো এরকম,
প্যারামিটার

-f filename
-i
-p priority
-t tag
message

লগ রোটেশন

লগ রোটেশনের জন্য newsyslog বা logrotate টুল ব্যবহার করা যায়।
গুরুত্বপূর্ণ লগ লোকেশনঃ কিছু গুরুত্বপূর্ণ এপ্লিকেশন ও তাদের লগ ডিরেক্টরি নিচে দেয়া হল,

এপ্লিকেশন ডিরেক্টরি
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/

 

ডট নেট নিউক ডিএনএন – ৬ (DNN 6 – Quick Start Guide)

Huge Sell on Popular Electronics

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

 

ডটনেট নিউক ৬ ডেভেলপার কুইক স্টার্ট

ডটনেট নিউক ৬ ডেভেলপার কুইক স্টার্ট পেজ ডটনেট নিউক এক্সটেনশন ডেভেলপারদের সাহায্যার্থে ব্যবহৃত হতে পারে। স্কিন অবজেক্ট, মডিউল বা প্রভাইডার ডেভেলপমেন্টে নতুনরা মডিউল ডেভলাপমেন্ট পেজ দেখতে পারেন।

অ্যাজিউর উপযোগিতা

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

কন্ট্রোল প্যানেল

রিবন বার নামক কন্ট্রোল প্যানেল যা ডটনেট নিউক ৫এ ছিল তা বর্তমান সংস্করণে আরও বেশি আপডেট করে আনা হয়েছে।

সিএসএসের গুরুত্বপূর্ণ নোট

নতুন ইউজার ইন্টারফেসের জন্য ডিফল্ট সিএসএস ফাইল গুরুত্বপূর্ণ স্টাইল ডেফিনেশন সংরক্ষণ করে। সংশ্লিষ্ট ফর্ম প্যাটার্ন ও জেকুয়েরি প্লাগিন ডিফল্ট সিএসএস ফাইলের উপর নির্ভর করে।

ডিডিআর মেনু

ডিডিআর মেনু একটি ডিফল্ট মেনু যা ফ্রেমওয়ার্কের সাথে আসে।

ডটনেট নিউক এক্সটেনশন ফিড

এটি ডটনেট নিউক ৬ এর নতুন সংযোজন।

ডিএসটি সাপোর্ট- টাইম জোনে নতুন সংস্করণ

এটি কোর ফ্রেমওয়ার্কে নতুন সংস্করণ।

ফোল্ডার প্রভাইডার এপিআই

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

ফর্ম প্যাটার্ন

ডটনেট নিউক ৬তে ইউজার ইন্টারফেসের আপডেট ফর্ম প্যাটার্ন সংশ্লিষ্ট।

জেড ইনডেক্স

  • মডেল পপ আপ 1000 থেকে বেশি
  • কন্ট্রোল প্যানেল 950 – 999
  • মডিউল একশন 900 – 949
  • বাকি সব কিছু 0 – 899
  • টেলিরিক কন্ট্রোল

আইকন এপিআই

ফ্রেমওয়ার্কের আইকনে প্রবেশ্যতা পেতে একটি ইউনিফাইড এপিআই ব্যবহারের ব্যবস্থা করা হয়েছে।

ওয়েব কন্ট্রোলের আইকন কী প্রপার্টি

ওয়েব কন্ট্রোলের কিছু নতুন আইকন কী প্রপার্টি থাকে ।

  • asp:Image
  • asp:ImageButton
  • asp:HyperLink
  • asp:HtmlImage
  • dnn:CommandButton
  • dnn:ImageCommandColumn
  • dnn:DnnGridButtonColumn
  • dnn:DnnImage
  • dnn:DnnImageButton

জেকুয়েরি ও জেকুয়েরি ইউআই

ডটনেট নিউক ৬ এর সব সংস্করণ জেকুয়েরি ও জেকুয়েরি ইউআই উপযোগী ও কোর এডমিন ও হোস্ট মডিউলের সব ইন্টারফেস দ্বারা ব্যবহৃত হয়।

লগ ফর নেট

ডটনেট নিউক ৬ ফ্রেমওয়ার্কের সব ভার্সনে লগ ফর নেট এসেম্বলি ( ভার্সন 1.2.10) সংযোজিত আছে।

মেনিফেস্ট আপডেট

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

মডেল পপ আপ

ডটনেট নিউক ৬ তে মডেল পপ আপের সাপোর্ট সংযোজিত হয়েছে।

মডিউল একশন

বর্তমানে ডটনেট নিউক ৬ তে পূর্ববর্তী সংস্করণের মত মডিউল একশন প্রদর্শিত হয় না।

মডিউল ব্র্যান্ডিং

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

মডিউল ক্যাটাগরাইজ করা

এটি হোস্ট ইউজারকে মডিউল ক্যাটাগরাইজ করতে সাহায্য করে যাতে কন্ট্রোল প্যানেলে মডিউলকে সহজে খুঁজে পাওয়া যায়।

নতুন মডিউল, টেলিরিক ও আপডেট করা মডিউল ও প্রভাইডার ডটনেট নিউক ৬ এর অন্যতম অনুষঙ্গ।

 

ডটনেট নিউককে আপগ্রেড করা (Upgrade DNN)

Huge Sell on Popular Electronics

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

 

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

সবসময় ব্যাকআপ ঠিক রাখতে হবে।

  • ব্যাকআপের ভিত্তিতে ডুপ্লিকেট ওয়েব সাইট তৈরি করে আপগ্রেড করা যায়।
  • ওয়েবসাইটে আপগ্রেড পোর্টাল অ্যালি তৈরি করতে হয়,
  • ওয়েবসাইট ফাইল ব্যাকআপ করতে হয়,
  • ডাটাবেস ব্যাকআপ করতে হয়
  • এর সর্বশেষ সুস্থিত সংস্করণের ফাইল DotNetNuke_Community_XX.XX.XX.UPGRADE.zip
  • ডাউনলোড করতে হয়,
  • ওয়েব সার্ভারের নিউ ফোল্ডার পাথে ব্যাকআপ ওয়েবসাইট পুনরায় স্থাপন করতে হয়,
  • হোস্ট হিডারের সাথে আইআইএস কনফিগার করা,
  • ফাইল সিস্টেমের সেটআপ পারমিশন,
  • নতুন ডাটাবেস নামে ডাটাবেস রিস্টোর করানো,
  • নতুন ওয়েবসাইটের web.configমডিফাই করা
  • অটো আপগ্রেড ফলসে সেট করা,
  • আপগ্রেড প্যাকেজের উপাদানকে কম্পিউটারের কোনও ফোল্ডারে কপি করা,সরাসরি ওয়েবসাইটে কপি করা ঠিক নাও হতে পারে।
  • এরপর আপগ্রেড প্যাকেজের উপাদানকে ওয়েবসাইটে কপি করা
  • ওয়েব ব্রাউজারের মাধ্যমে নতুন ওয়েবসাইটে প্রবেশ করা, ইউআরএলকে http://MYWEBSITE/install/install.aspx?mode=upgrade
  • তে পরিবর্তন করে নিতে হয়।
  • আপগ্রেড করার পর আইআইএসে থেকে নতুন ওয়েবসাইট সেটিং পরিবর্তন করা যায়।

মনে রাখা দরকার, যদি default.css, portal.css বা menu.css পরিবর্তন করে সাইট আপগ্রেড করা হয় তবে আপগ্রেড প্যাকেজ কপির পরে এসব ফাইলকে ওয়েবসাইটের ফোল্ডারে কপি করতে হবে।

এডভান্সড কিছু কৌশল

ডাটাবেস ও ওয়েবসাইটের সম্পূর্ণ ব্যাকআপ ছাড়া আপগ্রেড প্রক্রিয়া চালানো ঠিক নয়। এডভান্সড কৌশলের সাথে সংশ্লিষ্ট কিছু বিষয় হল,

APP_OFFLINE.HTM
SQL BACKUP TO APP_DATA
IN-PLACE UPGRADES
IIS ROOT FOLDER

আপগ্রেড সংক্রান্ত কিছু ভিডিও,

A Simple way to Upgrade DotNetNuke
Upgrading Via FTP
Upgrading DotNetNuke on WebMatrix
Customizing the App_Offline.htm File

ডটনেট নিউকের ইন্সটলেশন (Install DNN. Install Dot Net Nuke)

Huge Sell on Popular Electronics

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

 

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

ডটনেট নিউকের ইন্সটলেশন রিকয়ারমেন্টঃ ডটনেট নিউক ৭ প্রকাশের সাথে এর সিস্টেম রিকয়ারমেন্ট বৃদ্ধি পেয়েছে। রিকয়ারমেন্ট বৃদ্ধির অফিশিয়াল লিস্ট দেখতে সিস্টেম রিকয়ারমেন্ট পেজ দেখা যেতে পারে।

ডটনেট নিউক ইন্সটলেশন সিনারিও

ইউজার ইন্সটেনস ডাটাবেসসহ এসকিউএল সার্ভার ২০০৫/২০০৮/২০০৮ ২য়/২০১২ ব্যবহার করে ইন্সটলেশনের জন্য ডটনেট নিউকের সর্বশেষ ভার্সন ডাউনলোড করে নিতে হয়। জিপ প্যাকেজ এক্সট্র্যাক্ট করে নিতে হয় কম্পিউটারে, c:\inetpub\wwwroot\ folder তে একটি ডিরেক্টরি তৈরি করতে হয় DotNetNuke নামে, যা দেখতে হবে c:\inetpub\wwwroot\dotnetnuke\ এমন। এই ফোল্ডারে জিপ কন্টেন্টগুলো কপি করে c:\inetpub\wwwroot\dotnetnuke\ folder এর প্রপার্টিজে গিয়ে সিকিউরিটি ট্যাবে ঢুকতে হবে। ইউজারের পারমিশন নিশ্চিত করা থাকতে হবে। ওয়েব সার্ভার আইআইএস কনসোল খুলতে হবে, (start->run->INETMGR)। ওয়েবসাইট নড ও ডিফল্ট ওয়েবসাইট নড এক্সপান্ড করতে হবে। ইন্সটলেশন উইজারডের ধাপগুলো পার হতে হবে। ডাটাবেস স্ক্রিনের জন্য কোনও কিছু কনফিগার করার দরকার নেই। এসব সম্পন্ন হলে হোমপেজে ডিফল্ট লগইন একাউন্ট দেখাবে।

এটাচড ডাটাবেসসহ এসকিউএল সার্ভারে ইন্সটলেশনের জন্য এসকিউএল ম্যানেজমেন্ট স্টুডিয়ো (২০০৫/২০০৮/২০০৮২য়/২০১২) ওপেন করে ডাটাবেস সার্ভারের সাথে (লোকাল সার্ভারও হতে পারে)কানেক্ট করাতে হয়। এরপর এসকিউএল ইউজার একাউন্ট ও সিকিউরিটি কনফিগার করতে হবে। http://localhost/dotnetnuke ব্যবহার করে ওয়েবসাইট ব্রাউজ করতে হবে, টিপিকাল বা কাস্টম অপশন ব্যবহার করে ইন্সটলেশন উইজার্ডের ধাপগুলো পার হতে হয়। ডাটাবেস কানেকশন চেক করে দেখতে হয় ঠিকমত কাজ করছে কিনা। হোস্ট ও এডমিনের একাউন্ট কনফিগার করতে ইন্সটলেশন উইজারডের রিমাইন্ডার অতিক্রম করতে হয়।

ভিডিও রিসোর্স

ডটনেট নিউক কর্পোরেশনের ভিডিও টিউটোরিয়াল আছে,

Installing DotNetNuke video available in the video library
Installing DotNetNuke with the Microsoft platform installer

ইউনিক্সঃ সেল গুরুত্বপূর্ণ রিসোর্স (Unix – Shell Useful Resources)

Huge Sell on Popular Electronics

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

 

ইউনিক্স সেলের গুরুত্বপূর্ণ রিসোর্স

  • বেল ল্যাবঃ ইউনিক্স অপারেটিং সিস্টেমের সূতিকাগার, ইউনিক্স অপারেটিং সিস্টেমের সারসংক্ষেপ ,ইতিহাস ও বর্ণনা এখানে পাওয়া যাবে।
  • বিডিএস ইউনিক্সঃ বর্তমান সময়ের সার্ভার, কম্পিউটার ও সংশ্লিষ্ট সিস্টেমের জন্য FreeBSD একটি ভাল অপারেটিং সিস্টেম।
  • লিনাক্স অনলাইনঃ লিনাক্স ইউনিক্স টাইপ ফ্রী একটি প্লাটফর্ম।
  • Unix @ Wikipedia : ইউনিক্স অপারেটিং সিস্টেমের সংক্ষিপ্ত বিবরণের জন্য।
  • The Unix Forums : ইউনিক্সপ্রিয় প্রোগ্রামারদের ফোরাম।

 

ইউনিক্সের উপর কিছু বই

http://www.amazon.com/exec/obidos/ASIN/0131480057/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596009658/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0596005954/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0130424110/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0672324903/httpwwwtuto0a-20

http://www.amazon.com/exec/obidos/ASIN/0201877589/httpwwwtuto0a-20

 

ইউনিক্সঃ সেল বিল্টইন গাণিতিক ফাংশন (Unix – Shell Builtin Mathematical Functions)

Huge Sell on Popular Electronics

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

 

আমাদের টিউটোরিয়ালের বেশিরভাগ অংশে বর্ন সেল নিয়ে কাজ করা হয়েছে কিন্তু আজ এখানে আমরা কর্ন সেলের বিল্টইন গাণিতিক ফাংশনগুলো দেখব।

কর্ন সেল গাণিতিক ফাংশনের আদর্শ সেটে প্রবেশযোগ্যতা সৃষ্টি করে, সি ফাংশন কল সিনট্যাক্স ব্যবহার করে এদের কল করা হয়।

ফাংশন বর্ণনা
abs আদর্শ মান
log ন্যাচারাল লগারিদম
acos আর্ক কোসাইন
sin সাইন
asin আর্ক সাইন
sinh হাইপারবোলিক সাইন
cos কোসাইন
sqrt স্কয়ার রুট
cosh হাইপারবোলিক কোসাইন
tan টেনজেন্ট
exp এক্সপোনেন্সিয়াল ফাংশন
tanh হাইপারবোলিক টেনজেন্ট
int ফ্লোটিং পয়েন্ট নাম্বারের পূর্ণসংখ্যা অংশ

 

 

ইউনিক্স কুইক গাইড (Unix – Quick Guide)

Huge Sell on Popular Electronics

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

 

ইউনিক্স কি

ইউনিক্স অপারেটিং সিস্টেম হল প্রোগ্রামের একটি সেট যা কম্পিউটার ও ব্যবহারকারীর মধ্যে লিঙ্ক হিসেবে কাজ করে।

  • ১৯৬৯ সালে এটিএন্ডটি কর্মীদের দ্বারা বেল ল্যাবরেটরিতে প্রথম ইউনিক্স ডেভেলাপ করা হয়,
  • ইউনিক্সের বিভিন্ন ভার্সন পাওয়া যায়, Solaris Unix, AIX, HP Unix এবং BSD সহ লিনাক্সও অনেকটা ইউনিক্সের মত, যেটি ফ্রী ওএস।
  • ইউনিক্স কম্পিউটার একসাথে কয়েকজন ব্যবহারকারী ব্যবহার করতে পারেন।
  • ইউনিক্স কম্পিউটারে একজন ব্যবহারকারী একসাথে কয়েকটি প্রোগ্রাম চালু রাখতে পারেন।

 

লগইন

login কম্যান্ড দিয়ে আমরা সিস্টেমে লগইন করতে পারি,


login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

 

লগআউটের জন্য

কম্যান্ড প্রম্পটে logout কম্যান্ড টাইপ করলে সিস্টেম সবকিছু পরিষ্কার করে যোগাযোগ বিচ্ছিন্ন করে দেবে।

 

ফাইল ব্যবস্থাপনা

ইউনিক্সে তিন ধরণের ফাইল আছে,

  • সাধারণ ফাইল,
  • ডিরেক্টরি,
  • স্পেশাল ফাইল।

 

ফাইলনেমের সাবস্টিটিউশন

কম্যান্ড
ls -[l]
ls -[l]a
~
~user
?
*

 

ফাইলনেমের মেনিপুলেশন

কম্যান্ড
cat filename
cp source destination
mv oldname newname
rm filename
chmod nnn filename
touch filename
ln [-s] oldname newname
ls -F

 

ডিরেক্টরি ম্যানেজমেন্ট

কম্যান্ড
mkdir dirname
rmdir dirname
cd dirname
cd -
cd ~
pwd

 

এনভায়রনমেন্ট সেটআপ

PS1ও PS2 চলক, এস্কেপ ক্যারেক্টার ও এনভায়রনমেন্ট চলক নিয়ে এনভায়রনমেন্ট সেটআপ গঠিত হয়।

এস্কেপ ক্যারেক্টারের সিকোয়েন্স,

 

এস্কেপ সিকোয়েন্স
\t
\d
\n
\s
\W
\w
\u
\h
\#
\$

 

এনভায়রনমেন্ট চলক

চলক
DISPLAY
HOME
IFS
LANG
LD_LIBRARY_PATH
PATH
PWD
RANDOM
SHLVL
TERM
TZ
UID

 

ফিল্টার ও পাইপ

কম্যান্ড
wc [-l]
tail [-n]
sort [-n]
pr -t
grep "pattern" filename
pg or more

 

স্পেশাল চলক

চলক
$0
$n
$#
$*
$@
$?
$$
$!

 

সেল বেসিক অপারেটর

সেল বেসিক অপারেটরঃ তিন ধরণের হয়,

  • এরিথমেটিক অপারেটর,
  • রিলেসনাল অপারেটর,
  • বুলিয়েন অপারেটর

 

এরিথমেটিক অপারেটর

অপারেটর
+
-
*
/
%
=
==
!=

 

রিলেসনাল অপারেটর

অপারেটর
-eq
-ne
-gt
-lt
-ge
-le

 

বুলিয়েন অপারেটর

অপারেটর
!
-o
-a

 

স্ট্রিং অপারেটর

অপারেটর
=
!=
-z
-n
str

 

ফাইল টেস্ট অপারেটর

অপারেটর
-b file
-c file
-d file
-f file
-g file
-k file
-p file
-t file
-u file
-r file
-w file
-x file
-s file
-e file

 

সেল ডিসিশন মেকিং

if...fi বিবৃতি


if [ expression ]
then
   Statement(s) to be executed if expression is true
fi

 

if...else...fi বিবৃতি


if [ expression ]
then
   Statement(s) to be executed if expression is true
else
   Statement(s) to be executed if expression is not true
fi

 

if...elif...fi বিবৃতি


if [ expression 1 ]
then
   Statement(s) to be executed if expression 1 is true
elif [ expression 2 ]
then
   Statement(s) to be executed if expression 2 is true
elif [ expression 3 ]
then
   Statement(s) to be executed if expression 3 is true
else
   Statement(s) to be executed if no expression is true
fi

 

case...esac বিবৃতি


case word in
  pattern1)
     Statement(s) to be executed if pattern1 matches
     ;;
  pattern2)
     Statement(s) to be executed if pattern2 matches
     ;;
  pattern3)
     Statement(s) to be executed if pattern3 matches
     ;;
esac

 

সেল লুপ টাইপ

while লুপ


while command
do
   Statement(s) to be executed if command is true
done

 

for লুপ


for var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

 

until লুপ


until command
do
   Statement(s) to be executed until command is true
done

 

select লুপ


select var in word1 word2 ... wordN
do
   Statement(s) to be executed for every word.
done

 

 

সেল লুপ কন্ট্রোল

ব্রেক স্টেটমেন্টের জন্য


break[n]

 

আর কন্টিনিউ স্টেটমেন্টের জন্য


continue[n]

 

সেল সাবস্টিটিউশনের জন্য

কম্যান্ড সাবস্টিটিউশন


`command`

 

আর সম্ভাব্য চলক সাবস্টিটিউশন

সাবস্টিটিউশন ফর্ম
${var}
${var:-word}
${var:=word}
${var:?message}
${var:+word}

 

রিডাইরেকশন কম্যান্ড

কম্যান্ড
pgm > file
pgm < file
pgm >> file
n > file
n >> file
n >& m
n <& m
<< tag
|

 

ইউনিক্স – কিছু প্রয়োজনীয় কমান্ড (Unix – Useful Commands)

Huge Sell on Popular Electronics

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

 

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


$man command

 

যাই হোক, এখানে কুইক গাইডটি দেয়া হল।

ফাইল এবং ডিরেক্টরির জন্য

ডিরেক্টরি তৈরি ও ফাইল নিয়ন্ত্রণ করার জন্য যেসব কম্যান্ড ব্যবহার করা হয় তা হল,

 

কম্যান্ড বর্ণনা
cat ফাইল কন্টেন্ট প্রদর্শন করে
cd ডিরেক্টরিকে dirname তে রূপান্তরিত করে
chgrp ফাইল গ্রুপ পরিবর্তন করে
chmod পারমিশন পরিবর্তন করে
cp সোর্স ফাইলকে গন্তব্যে কপি করে
file ফাইল টাইপ নির্ধারণ করে
find ফাইল খোঁজে
grep বরাবরের ভুমিকার জন্য ফাইল খোঁজে
head প্রথম কিছু লাইনকে একটি ফাইলে দেখায়
ln পুরনো নামে সফট লিঙ্ক তৈরি করে
ls ফাইল টাইপ সম্পর্কিত তথ্য প্রদর্শন করে
mkdir Dirname শ্রেণীর নতুন ডিরেক্টরি তৈরি করে
more paginated ফর্মে ডাটা প্রদর্শন করে
mv oldname কে newnameএ রূপান্তরিত করে
pwd কারেন্ট ওয়ারকিং ডিরেক্টরিকে প্রিন্ট করে
rm ফাইলনেম রিমুভ করে
rmdir শূন্য ডিরেক্টরি মুছে ফেলে .
tail ফাইলের শেষ কিছু লাইন মুছে ফেলে
touch কোনও ফাইলের এক্সেস ও মডিফিকেশন টাইম আপডেট করে .

 

ডাটাকে নিপুনভাবে ব্যবহার করার জন্য

 

কম্যান্ড বর্ণনা
awk প্যাটার্ন স্ক্যান ও ভাষা প্রক্রিয়া করণ
cmp দুই ফাইলের উপাদান তুলনা করা
comm সর্টেড ডাটা তুলনা করা
cut কোনও ফাইলের প্রতি লাইনের নির্ধারিত অংশ কেটে ফেলা
diff ডিফারেন্সিয়াল ফাইল কম্পারেটর
expand ট্যাবকে স্পেসে ছড়িয়ে দেয়া
join ফাইলকে কোনও কমন ফিল্ডে সংযুক্ত করা
perl ডাটা মেনিপুলেশন ল্যাঙ্গুয়েজ
sed স্ট্রিম টেক্সট এডিটর
sort সর্ট ফাইল ডাটা
split ফাইলকে ছোট ফাইলে বিভক্ত করা
tr ক্যারেক্টারকে অনুবাদ করা
uniq ফাইলের ভেতরের পুনরাবৃত্তি হওয়া লাইন রিপোর্ট করা
wc শব্দ, লাইন ও ক্যারেকটার গোনা
vi ভিআই টেক্সট এডিটর ওপেন করা
vim ভিআইএম টেক্সট এডিটর ওপেন করা
fmt সিম্পল টেক্সট ফরমেটর
spell ভুল বানানের সন্ধান করা
ispell ভুল বানানের সন্ধান করা
ispell ভুল বানানের সন্ধান করা
emacs GNU প্রকল্প Emacs
ex, edit লাইন এডিটর
emacs GNU প্রকল্প Emacs
emacs GNU প্রকল্প Emacs

 

কম্প্রেসড ফাইল

জায়গা বাঁচানোর জন্য ফাইলকে কম্প্রেস করা হতে পারে। কম্প্রেসড ফাইল তৈরি ও নিরীক্ষণের জন্য কোডঃ

 

কম্যান্ড বর্ণনা
compress ফাইলকে কম্প্রেস করা
gunzip জিপ ফাইলকে আনকম্প্রেস করা
gzip GNU বিকল্প কম্প্রেসন পদ্ধতি
uncompress ফাইল আনকম্প্রেস করা
unzip জিপ আর্কাইভে কম্প্রেসড ফাইলকে লিস্ট, টেস্ট ও এক্সট্রাক্ট করা
zcat কম্প্রেসড ফাইলকে ক্যাটাগরিতে আবদ্ধ করা
zcmp কম্প্রেসড ফাইল তুলনা করা
zdiff কম্প্রেসড ফাইল তুলনা করা
zmore কমপ্রেসড টেক্সটের crt এর জন্য File perusal filter

 

তথ্য পাওয়ার জন্য

 

কম্যান্ড বর্ণনা
apropos কিওয়ার্ডের মাধ্যমে কম্যান্ড নির্ধারণ
info কম্যান্ড ইনফরমেশন পেজকে অনলাইনে দেখানো
man ম্যানুয়াল পেজকে অনলাইনে দেখানো
whatis সম্পূর্ণ শব্দের জন্য whatis ডাটাবেসে সন্ধান
yelp GNOME হেল্প ভিউয়ার

 

নেটওয়ার্ক কমুনিকেশন

লোকাল ইউনিক্স হোষ্ট থেকে কোনও ফাইল প্রেরণ বা গ্রহণের জন্য যেসব কম্যান্ড ব্যবহৃত হয় সেগুলো হল,

 

কম্যান্ড বর্ণনা
ftp ফাইল ট্রান্সফার প্রোগ্রাম
rcp রিমোট ফাইল কপি
rlogin UNIX hostএ রিমোট লগইন
rsh রিমোট সেল
tftp ট্রিভিয়াল ফাইল ট্রান্সফার প্রোগ্রাম
telnet অন্য হোষ্টের সাথে টার্মিনাল যোগাযোগ স্থাপন করা
ssh সেল টার্মিনাল বা কম্যান্ড কানেকশন নিরাপদ করা
scp সেল রিমোট ফাইল কপি নিরাপদ করা
sftp সেল ফাইল ট্রান্সফার প্রোগ্রামকে নিরাপদ করা

 

নিরাপত্তার কারণে কিছু কিছু কম্পিউটারে কিছু কম্যান্ড রহিত থাকতে পারে।

 

ব্যবহারকারীদের মধ্যে ম্যাসেজ

 

কম্যান্ড বর্ণনা
evolution লিনাক্সে GUI মেইল হ্যান্ডেলিনের টুল
mail মেইল প্রেরন ও পঠন প্রোগ্রাম
mesg ম্যাসেজ অনুমোদন বা বাতিলের প্রোগ্রাম
parcel অন্য ব্যবহারকারীর কাছে ফাইল প্রেরণের প্রোগ্রাম
pine Vdu-ভিত্তিক মেইল সুবিধা
talk অন্য ব্যবহারকারীর সাথে কথা বলা
write অন্য ব্যবহারকারীর কাছে ম্যাসেজ লিখা

 

প্রোগ্রামিং সম্পর্কিত কম্যান্ড

 

কম্যান্ড বর্ণনা
dbx Sun debugger
gdb GNU debugger
make প্রোগ্রাম গ্রুপ নিয়ন্ত্রণ ও সমন্বয়
nm প্রোগ্রামের নামের লিস্ট করা
size প্রোগ্রামের আকার মুদ্রিত করা
strip symbol table মুছা ও bits কে সজ্জিত করা
cb C program সজ্জিতকরন
cc SPARCসিস্টেমের জন্য ANSI C compiler
ctrace C program debugger
gcc GNU ANSI C Compiler
indent C program source ইন্ডেন্ট ও ফরম্যাট করা
bc Interactive arithmetic language processor
gcl GNU Common Lisp
perl General purpose language
php Web page embedded language
py Python language interpreter
asp Web page embedded language
CC C++ compiler for Suns SPARC systems
g++ GNU C++ Compiler
javac JAVA compiler
appletvieweir JAVA applet viewer
netbeans লিনাক্সে জাভা ভিত্তিক উন্নয়ন পরিবেশ তৈরি
sqlplus Oracle SQL interpreter রান করানো
sqlldr Oracle SQL data loader রান করানো
mysql mysql SQL interpreter রান করানো

 

Misc কম্যান্ড

এটি সিস্টেমের তথ্যকে তালিকাবদ্ধ বা অলটার করে,

কম্যান্ড বর্ণনা
chfn আঙ্গুল সঞ্চালনের তথ্য পরিবর্তন
chgrp ফাইলের গ্রুপ ওউনারশিপ তথ্য পরিবর্তন
chown ওউনার পরিবর্তন
date তারিখ মুদ্রণ
determin স্বয়ংক্রিয়ভাবে টার্মিনাল টাইপ খুঁজে পাওয়া
du ডিস্ক ইউসেজ মুদ্রণ
echo আদর্শ প্রকরণের Echo arguments
exit সিস্টেম থামিয়ে দেয়া
finger logged-in users এর তথ্য মুদ্রণ
groupadd user group তৈরি করা
groups group memberships প্রদর্শন করা
homequota quota এবং file usage মুদ্রণ
iostat I/O statistics রিপোর্ট করা
kill প্রক্রিয়ার সিগন্যাল প্রেরণ করা
last সর্বশেষ লগইন তথ্য
logout ইউনিক্স থেকে বেরিয়ে যাওয়া
lun নাম বা লগইন আইডি তালিকা করা
netstat নেটওয়ার্ক স্ট্যাটাস দেখানো
passwd ইউজার পাসওয়ার্ড পরিবর্তন
passwd লগইন পাসওয়ার্ড পরিবর্তন
printenv সেল চলকের মান প্রদর্শন
ps চলতি প্রক্রিয়ার স্ট্যাটাস দেখানো
ps চলতি প্রক্রিয়ার স্ট্যাটাস মুদ্রণ
quota -v ডিস্ক ইউসেজ ও সীমাবদ্ধতা প্রদর্শন
reset টার্মিনাল মোড রিসেট করা
script টার্মিনাল সেশনের স্ক্রিপ্ট রাখা
script কম্যান্ড বা প্রসেসের আউটপুট সংরক্ষণ
setenv পরিবেশগত চলক সেট করা
stty টার্মিনাল অপশন সেট করা
time কম্যান্ডের সময়
top সিস্টেম প্রসেস প্রদর্শন
tset টার্মিনাল মোড সেট করা
tty কারেন্ট টার্মিনাল নেম মুদ্রণ
umask সরাসরি দৃশ্যমান ফাইলের অনুমতি প্রদান
uname কারেন্ট সিস্টেমের নাম প্রদর্শন
uptime সিস্টেমকে আপটাইম করা
useradd ইউজার একাউন্ট করা
users লগইনকৃত ইউজারদের নাম মুদ্রিত করা
vmstat ভারচুয়াল মেমরির পরিসংখ্যান বিন্যাস করা
w লগইনকৃত ইউজারদের কর্মকাণ্ড প্রদর্শন
who লগইনকৃত ইউজারদের তালিকা করা

 

ইউনিক্সঃ সিগন্যাল ও ট্র্যাপ (Unix – Signals and Traps)

Huge Sell on Popular Electronics

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

 

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

 

সিগন্যালের নাম সিগন্যাল নাম্বার বিবরণ
SIGHUP 1 টার্মিনালে সমস্যা বা প্রক্রিয়ার সমাপ্তি
SIGINT 2 ইউজার ইন্টারাপ্ট ম্যাসেজ পাঠালে (Ctrl + C).
SIGQUIT 3 ইউজার সমাপ্তি ম্যাসেজ পাঠালে (Ctrl + D).
SIGFPE 8 ভুল গাণিতিক প্রচেষ্টা হলে
SIGKILL 9 প্রক্রিয়া সমাপ্তি ও কোনও ধরণের পরিষ্কার বা ক্লিনআপ বন্ধ
SIGALRM 14 এলারম ক্লক সিগন্যাল
SIGTERM 15 সফটওয়ার টারমিনেশন সিগন্যাল

 

সিগন্যালের তালিকা

kill -l কম্যান্ডের মাধ্যমে সাপোর্টেড সব সিগন্যাল তালিকাবদ্ধভাবে আমরা দেখতে পারি।


$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

সিগন্যালের মূল তালিকা সোলারিস, এইচপি –ইউএক্স ও লিনাক্সের মধ্যে কিছু ব্যতিক্রম হয়।

 

ডিফল্ট একশন

সিগন্যালের ডিফল্ট কিছু একশন হল,

  • প্রক্রিয়া টারমিনেট করে,
  • সিগন্যাল অগ্রাহ্য করে,
  • প্রক্রিয়ায় মেমোরি ইমেজ সমৃদ্ধ কোর ফাইল তৈরি করে,
  • প্রক্রিয়া থামায়,
  • থামানো প্রক্রিয়া চালু করে।

 

সিগন্যাল প্রেরণ করা

স্ক্রিপ্ট লেখার সময় CONTROL-C অথবা INTERRUPT কী চাপা সিগন্যাল প্রেরণের কমন উপায়, এছাড়াও kill কম্যান্ড ব্যবহার করে এটি করা যায়,


$ kill -signal pid

 

এখানে সিগন্যাল হয় নাম অথবা নাম্বার(সিগন্যালের) আর pid হল প্রসেস আইডি যাতে সিগন্যাল পাঠানো হবে।


$ kill -1 1001

 

process ID 1001 তে প্রক্রিয়াধীন ক্ষেত্রে kill signal পাঠাতে কম্যান্ড,


$ kill -9 1001

 

সিগন্যাল ট্র্যাপ করা

ট্র্যাপ কম্যান্ডের জন্য যে সিনট্যাক্স ব্যবহার করা যায় তা হল,


$ trap commands signals

 

সেল স্ক্রিপ্টে ট্র্যাপের ব্যবহার হয় এসব কারণে-

  • টেম্পোরারি ফাইল ক্লিনআপে
  • সিগন্যাল ইগনোর করতে

 

টেম্পোরারি ফাইল ক্লিনআপ করা

কিছু ফাইল রিমোভ করে এক্সিট করতে নিচের কম্যান্ড ব্যবহার করতে পারি,


$ trap "rm -f $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 2

 

স্পেসিফাইড ফাইল মুছার জন্য ট্র্যাপ মডিফাই করতে সিগন্যাল লিস্টে সিগন্যাল নাম্বার 1 যোগ করতে পারি,


$ trap "rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit" 1 2

 

সিগন্যাল এক ও দুই রিসিভ করার ক্ষেত্রে সাবস্টিটিউশন ঘটাতে চাইলে কম্যান্ডকে সিঙ্গেল কোটের মধ্যে লিখতে পারি,


$ trap 'rm $WORKDIR/work1$$ $WORKDIR/dataout$$; exit' 1 2

 

সিগন্যাল ইগনোর করতে

রিসিভের সময় সিগন্যাল ইগনোর করতে কম্যান্ড,


$ trap '' 2

 

মাল্টিপল সিগন্যাল ইগনোর করতে,


$ trap '' 1 2 3 15

 

প্রথম আর্গুমেন্টকে সিগন্যালের জন্য স্পেসিফাইড হতে হবে, যার নিজস্ব মানে থাকতে হবে,


$ trap 2

 

ট্র্যাপ রিসেট করতে কম্যান্ড ব্যবহার করা যায়,


$ trap 1 2

যা কিনা প্রথম আর্গুমেন্টের উপর ভিত্তি করে করতে হবে।

 

ইউনিক্সঃ সিস্টেম লগিং (Unix – System Logging)

Huge Sell on Popular Electronics

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

 

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

ইউনিক্সের বেশিরভাগ ভার্সন syslog নামক জেনারেল পারপাস লগিং ফ্যাসিলিটি দিয়ে থাকে। স্বতন্ত্র প্রোগ্রাম যাদের তথ্য লগড অবস্থায় থাকতে হয় তারা এটিতে তথ্য প্রেরণ করে থাকে। এই সিস্টেম একটি কেন্দ্রীভূত সিস্টেম লগড প্রসেস ব্যবহার করে যা /etc/syslogd বা /etc/syslog নামক প্রোগ্রাম সম্পন্ন করে। প্রোগ্রাম তাদের লগ এন্ট্রিকে syslogd এ পাঠায় যা /etc/syslogd.conf বা /etc/syslog ফাইল কনফিগার সংক্রান্ত কাজগুলো করে। কোনও মিল পাওয়া গেলে কাঙ্খিত লগ ফাইলে লগ ম্যাসেজ লিখে রাখে।

 

মূলত চার ধরণের syslog টার্ম আছে,

টার্ম বর্ণনা
Facility আইডেন্টিফাইয়ার লগ মেসেজে সাবমিট হওয়া এপ্লিকেশন বা প্রোগ্রামের বিবরণ দেয়
Priority ম্যাসেজের গুরুত্বের পরিমাপক
Selector এক বা একাধিক ফ্যাসিলিটি বা লেভেলের সমন্বয়
Action ইনকামিং ম্যাসেজ যা সিলেক্টরের সাথে মিলে যায়, তার ক্ষেত্রে ঘটে।

 

সিসলগ ফ্যাসিলিটিজ

সিলেক্টরের জন্য প্রাপ্ত সুবিধাগুলো নিচে দেয়া হল, অবশ্য সব ইউনিক্স ভার্সন সবগুলো সুবিধা পায় না।

 

প্রায়োরিটি বর্ণনা
emerg জরুরী অবস্থা
alert সংশোধন করতে হবে এমন অবস্থা
crit জটিল পরিস্থিতি, যেমন হার্ডওয়ারে ক্রুটি
err সাধারণ এরর
warning সতর্কবাণী
notice এরর না, তবু সাবধানে কাজ করতে হবে
info তথ্যমূলক ম্যাসেজ
debug প্রোগ্রাম ডিবাগের ম্যাসেজ
none নট টু লগ ম্যাসেজ নির্ধারণের জন্য সিউডো লেভেল ব্যবহার করা

 

/etc/syslog.conf ফাইল

ম্যাসেজ লগড থাকার সময় এই ফাইল কন্ট্রোল করে।


*.err;kern.debug;auth.notice /dev/console
daemon,auth.notice           /var/log/messages
lpr.info                     /var/log/lpr.log
mail.*                       /var/log/mail.log
ftp.*                        /var/log/ftp.log
auth.*                       @prep.ai.mit.edu
auth.*                       root,amrood
netinfo.err                  /var/log/netinfo.log
install.*                    /var/log/install.log
*.emerg                      *
*.alert                      |program_name
mark.*                       /dev/console

 

ফাইলের প্রতিটা লাইনের দুটি করে অংশ আছে,

  • ম্যাসেজ সিলেক্টর যা নির্ণয় করে কোন ধরণের ম্যাসেজ লগড হবে
  • একশন ফিল্ড যা ঠিক করে ম্যাসেজ নিয়ে ঠিক কি করা হবে।

উপরের কনফিগারেশনের কয়েকটি গুরুত্বপূর্ণ পয়েন্ট আছে,

  • ম্যাসেজ সিলেক্টরের দুটি পার্ট আছে, ফ্যাসিলিটি আর প্রাইওরিটি
  • kern.debug নামের ম্যাসেজ সিলেক্টর ডিবাগের চেয়ে বড় প্রাইওরিটি নির্বাচন করে।
  • ফ্যাসিলিটি আর প্রাইওরিটির স্থলে তারকাচিহ্ন সবগুলোকেই নির্দেশ করে।
  • মাল্টিপল ফ্যাসিলিটি নির্ধারণ করতে কমা ও ব্যবহার করা যায়।

 

লগিং একশন

পাঁচটি একশনের যে কোনও একটি একশন ফিল্ডে প্রযোজ্য হবে,

  • কোনও ফাইল বা ডিভাইসে লগ ম্যাসেজ
  • ইউজারের কাছে ম্যাসেজ পাঠানো
  • সব ইউজারের কাছে ম্যাসেজ পাঠানো
  • প্রোগ্রামে ম্যাসেজ পাইপ করা
  • অন্য হোষ্টের syslog এ ম্যাসেজ প্রেরণ

 

লগার কম্যান্ড

লগার কম্যান্ডের ফরম্যাট হল,


logger[-i][-f file][-p priority][-t tag][message]...

 

 

এর প্যারামিটারগুলো এরকম,

 

প্যারামিটার
-f filename
-i
-p priority
-t tag
message

 

লগ রোটেশন

লগ রোটেশনের জন্য newsyslog বা logrotate টুল ব্যবহার করা যায়।

 

গুরুত্বপূর্ণ লগ লোকেশন

কিছু গুরুত্বপূর্ণ এপ্লিকেশন ও তাদের লগ ডিরেক্টরি নিচে দেয়া হল,

 

এপ্লিকেশন ডিরেক্টরি
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/

 

ইউনিক্সঃ সিস্টেম পারফর্মেন্স (Unix – System Performance)

Huge Sell on Popular Electronics

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

 

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

ইউনিক্সে কিছু গুরুত্বপূর্ণ রিসোর্স আছে যাদেরকে পর্যবেক্ষণ করা ও নিয়ন্ত্রণে রাখা জরুরী।

  • সিপিইউ
  • মেমোরি
  • ডিস্ক স্পেস
  • কমুনিকেশন্স লাইন
  • আই/ও টাইম
  • নেটওয়ার্ক টাইম
  • এপ্লিকেশন প্রোগ্রামস

পারফরমেন্সের উপাদান

পাঁচটি প্রধান উপাদান পারফরমেন্সে অবদান রাখে,

উপাদান বর্ণনা
User state CPU ইউজার স্টেটে সিপিইউ দ্বারা ব্যয়িত মত সময়। লাইব্রেরী সেলে ব্যয়িত সময় এর অন্তর্ভুক্ত কিন্তু কার্নেল বিষয়ক সময় এর অন্তর্ভুক্ত নয়
System state CPU সিস্টেম স্টেটে সিপিইউ দ্বারা ব্যয়িত মত সময়।
I/O Time and Network Time I/O requests ও ডাটা স্থানান্তরের জন্য ব্যয়িত সময়
Virtual Memory Performance কনট্যাক্স switching ও swapping এর অন্তর্গত।
Application Program অন্য প্রোগ্রাম চলার জন্য ব্যয়িত সময় – যখন সিস্টেম এপ্লিকেশনকে সময় দিচ্ছে না, সিপিইউ অন্য কোনও এপ্লিকেশনের জন্য বরাদ্দ আছে।

 

পারফরমেন্স টুল

 

কম্যান্ড বর্ণনা
nice/renice পরিবর্তিত প্রাধান্যসহ প্রোগ্রাম চালনা করা
netstat নেটওয়ার্ক কানেকশন, রাউটিং টেবিল, ইন্টারফেস পরিসংখ্যান, মাল্টিকাস্ট মেম্বারশিপ মুদ্রিত করা
time কম্যান্ড ও সিম্পল রিসোর্স টাইম
uptime সিস্টেম লোড এভারেজ
ps সাম্প্রতিক প্রক্রিয়ার স্নেপশট রিপোর্ট
vmstat ভার্চুয়াল মেমোরি পরিসংখ্যানের রিপোর্ট
gprof কল গ্রাফ প্রোফাইলের ডাটা প্রদর্শন
prof প্রফাইলিং প্রক্রিয়াজাত করা
top সিস্টেম টাস্ক প্রদর্শন করা

 

এখানে বর্ণিত সকল কম্যান্ডের বিস্তারিত সিনট্যাক্সের জন্য মেনপেজ হেল্প দেখা যেতে পারে।

 

ইউনিক্সঃ ইউজার এডমিনিস্ট্রেশন (Unix – User Administration)

Huge Sell on Popular Electronics

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

 

ইউনিক্স সিস্টেমে তিন ধরণের একাউন্ট দেখা যায়,

  • রুট একাউন্ট,
  • সিস্টেম একাউন্ট
  • ইউজার একাউন্ট

 

ইউজার এবং গ্রুপ ব্যবস্থাপনা

তিন ধরণের ইউজার এডমিনিস্ট্রেশন ফাইল দেখা যায়,

  • /etc/passwd: এটি ইউজার একাউন্ট ও পাসওয়ার্ড সংরক্ষণ করে।
  • /etc/shadow: এটি কোরেসপনডিং একাউন্টের এনক্রিপটেড পাসওয়ার্ড সংরক্ষণ করে
  • /etc/group: এটি প্রত্যেক একাউন্টের গ্রুপ ইনফরমেশন সংরক্ষণ করে

 

ইউনিক্সের একাউন্ট ও গ্রুপ তৈরি ও ব্যবস্থাপনা সংক্রান্ত কম্যান্ডের কয়েকটি নিচের ছকে দেয়া হল,

কম্যান্ড বিবরণ
useradd সিস্টেমে একাউন্ট যোগ করে
usermod একাউন্ট এট্রিবিউট মডিফাই করে
userdel সিস্টেম থেকে একাউন্ট ডিলিট করে .
groupadd সিস্টেমে গ্রুপ যোগ করে
groupmod গ্রুপ এট্রিবিউট মডিফাই করে
groupdel সিস্টেম থেকে গ্রুপ রিমুভ করে .

 

গ্রুপ তৈরি করা

নতুন গ্রুপ তৈরির সিনট্যাক্স হল,


groupadd[-g gid[-o]][-r][-f] groupname

 

এর প্যারামিটারগুলো হল,

-g GID
-o
-r
-f
groupname

 

নিচের উদাহরণে ডিফল্ট ভ্যালুতে developers গ্রুপ তৈরি করা হয়েছে।


$ groupadd developers

 

গ্রুপ মডিফাই করা

groupmod সিনট্যাক্স ব্যবহার করে গ্রুপ মডিফাই করা যায়।


$ groupmod-n new_modified_group_name old_group_name

 

developers_2 গ্রুপনেমকে developer গ্রুপনেমে পরিবর্তনের জন্য,


$ groupmod-n developer developer_2

 

financial GID গ্রুপনেমকে 545 গ্রুপনেমে পরিবর্তনের জন্য,


$ groupmod-g545 developer

 

গ্রুপ ডিলিট করার জন্য

গ্রুপ ডিলিট করার জন্য কম্যান্ড,


$ groupdel developer

 

একাউন্ট তৈরি করা

একাউন্ট তৈরি করার জন্য সিনট্যাক্স,


useradd-d homedir-g groupname-m-s shell-u userid accountname

 

এর প্যারামিটারগুলো হল,

Option
-d homedir
-g groupname
-m
-s shell
-u userid
accountname

 

mcmohd নামের একাউন্ট যার হোম ডিরেক্টরি /home/mcmohd, এবং developersনামের গ্রুপ,এটিকে ব্যবহারকারী কর্ন সেলের মাধ্যমে এসাইন করতে পারে, নিচে পুরো উদাহরণটি দেয়া হল,


$ useradd-d/home/mcmohd-g developers-s/bin/ksh mcmohd

 

একাউন্ট তৈরি হয়ে গেলে passwd কম্যান্ড ব্যবহার করে আমরা এতে পাসওয়ার্ড বসাতে পারি,


$ passwd mcmohd20
Changing password for user mcmohd20.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

 

একাউন্ট মডিফাই করা

usermod কম্যান্ড ব্যবহার করে একাউন্ট মডিফাই করা সম্ভব।


$ usermod-d/home/mcmohd20-m-l mcmohd mcmohd20

 

একাউন্ট ডিলিট করা

userdel কম্যান্ড ব্যবহার করে আমরা একাউন্ট ডিলিট করতে পারি।


$ userdel-r mcmohd20

 

যদি আমরা হোম ডিরেক্টরিকে ব্যাকআপের জন্য রাখতে চাই তবে -r অপশন বর্জন করতে হবে।

 

ইউনিক্সঃ ফাইল সিস্টেম বেসিক (Unix – File System Basics)

Huge Sell on Popular Electronics

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

 

ফাইল সিস্টেম হল পার্টিশন বা ডিস্কে ফাইলের লজিকাল কালেকশন। পার্টিশন ইনফরমেশনের কন্টেইনার হিসেবে কাজ করে এবং প্রয়োজনে পুরো হার্ডডিস্ক স্পান করতে পারে ।

হার্ডড্রাইভে অনেকগুলো পার্টিশন থাকতে পারে যেগুলো মূলত একটিমাত্র ফাইল সিস্টেম ফলো করবে। প্রতিটা পার্টিশনের জন্য একটিমাত্র ফাইল সিস্টেম এটির সুষ্ঠু ব্যবস্থাপনা ও রক্ষণাবেক্ষণ নিশ্চিত করে।

ইউনিক্সে সব উপাদানকে ফাইল হিসেবে গণ্য করা হয়, এমনকি ডিভিডি রম, ইউএসবি ডিভাইস বা ফ্লপি ড্রাইভের মত ফিজিকাল ডিভাইসকেও।

 

ডিরেক্টরি কাঠামো

ইউনিক্স ক্রমবিন্যাসগত কাঠামো মেনে চলে, root (/)কে ফাইল সিস্টেমের ভিত্তি ধরে, অন্য সব ডিরেক্টরি সেটি থেকে ছড়িয়ে পড়ে।

ইউনিক্স ফাইল সিস্টেম ফাইল ও ডিরেক্টরির কালেকশন যেটির মূলত নিচের বৈশিষ্ট্যগুলি থাকে।

  • এটির root directory (/) থাকে যা অন্য ফাইল ও ডিরেক্টরিগুলোকে ধারণ করে,
  • প্রত্যেকটি ফাইল ও ডিরেক্টরি এর স্বতন্ত্র নাম দ্বারা সনাক্ত হয়,
  • কনভেনশন অনুসারে root directoryএর inode number থাকে ২ এর , আর ost+found directoryএর inode number থাকে ৩ এর।
  • ফাইল সিস্টেমগুলো স্বতন্ত্র, এদের পারস্পরিক কোনও নির্ভরতা নেই।

ডিরেক্টরিগুলোর নির্ধারিত কাজ থাকে, ইউনিক্সের প্রধান ভার্সনগুলোয় যে ডিরেক্টরিগুলোকে সাধারণত দেখা যায়,

 

ডিরেক্টরি
/
/bin
/dev
/etc
/lib
/boot
/home
/mnt
/proc
/tmp
/usr
/var
/sbin
/kernel

 

ফাইল সিস্টেম নেভিগেট করা

নিচের কম্যান্ডগুলো নেভিগেশনের জন্য প্রয়োজন হয়,

 

কম্যান্ড
cat filename
cd dirname
cp file1 file2
file filename
find filename dir
head filename
less filename
ls dirname
mkdir dirname
more filename
mv file1 file2
pwd
rm filename
rmdir dirname
tail filename
touch filename
whereis filename
which filename

 

df (disk free) কম্যান্ড

পার্টিশনের জায়গা ব্যবস্থাপনার জন্য df –k কম্যান্ড কিলোবাইটে ডিস্ক স্পেস ইউসেজ প্রকাশ করে,


$df -k
Filesystem      1K-blocks      Used   Available Use% Mounted on
/dev/vzfs        10485760   7836644     2649116  75% /
/devices                0         0           0   0% /devices
$

সব ইউনিক্সের জন্য df –kআউটপুট একই রকমের বা কাছাকাছি। এগুলো হল,

 

আউটপুট কলাম
Filesystem
kbytes
used
avail
capacity
Mounted on

 

ডিইউ কলাম

ডিইউ (disk usage) কমান্ডে প্রতি ডিরেক্টরির কনজিউম করা ব্লকের সংখ্যা দেখানো হয়, একটি সিঙ্গেল ব্লক ৫১২ বাইট বা ১ কিলোবাইট জায়গা নেয়, এই পরিমান সিস্টেমের উপর নির্ভর করে।


$du    /etc
10     /etc/cron.d
126    /etc/default
6      /etc/dfs
...
$

 

-h অপশন আউটপুট প্রকাশকে সহজ করে,


$du -h /etc
5k    /etc/cron.d
63k   /etc/default
3k    /etc/dfs
...
$

 

ফাইল সিস্টেম মাউন্টিং

বর্তমানে মাউন্টেড ফাইল দেখতে,


$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
$

 

কোনও ফাইল সিস্টেমকে মাউন্ট করতে সিনট্যাক্স,


mount-t file_system_type device_to_mount directory_to_mount_to

 

 

যেমন, কোনও সিডি রমকে /mnt/cdrom ডিরেক্টরিতে মাউন্ট করতে সিনট্যাক্স,


$ mount-t iso9660/dev/cdrom/mnt/cdrom

 

ফাইল সিস্টেমকে আনমাউন্ট করতেঃ এক্ষেত্রে umount কম্যান্ড ব্যবহার করতে হবে, যেমন একটি সিডি রমকে আনমাউন্ট করতে


$ umount/dev/cdrom

 

ইউজার ও গ্রুপ কোটা

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

  • সফট লিমিট
  • হার্ড লিমিট

এডমিন কোটার কম্যান্ডগুলো হল,

কম্যান্ড
quota
edquota
quotacheck
setquota
quotaon
quotaoff
repquota

 

ইউনিক্স – SED এর সাথে রেগুলার এক্সপ্রেশন (Unix – Regular Expressions with SED)

Huge Sell on Popular Electronics

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

 

আজকের টিউটোরিয়ালে আমরা দেখব কীভাবে sed তে রেগুলার এক্সপ্রেশন ব্যবহার করা হয়।

 

এসইডিকে ইনভোক করা

পাইপের মাধ্যমে এসইডিতে ডাটা প্রেরণ করে একে ইনভোক করা যায়,


$ cat /etc/passwd | sed
Usage: sed [OPTION]... {script-other-script} [input-file]...
 
  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script
...............................

 

এসইডির জন্য সাধারণ সিনট্যাক্স

এসইডির জন্য সাধারণ সিনট্যাক্স এরকম,


/pattern/action

 

এখানের স্ল্যাস ক্যারেক্টারগুলো ডিলিমিটার হিসেবে ব্যবহৃত হয়।

রেঞ্জ বিবরণ
p লাইন প্রিন্ট করে
d লাইন ডিলিট করে
s/pattern1/pattern2/ প্যাটার্ন ১ এর ঘটনাকে প্যাটার্ন ২ দ্বারা প্রতিস্থাপন করে।

 

 

এসইডিতে লাইন ডিলিট করতে

লাইন ডিলিট করতে নিচের কম্যান্ড ব্যবহৃত হয়,


$ cat /etc/passwd | sed 'd'
$

 

cat command ছাড়া এই কম্যান্ডও অনুরূপ কাজ করে,

 


$ sed -e 'd' /etc/passwd
$

এসইডি এড্রেসিং

এসইডি কম্যান্ডে বেসিক এড্রেস যোগ করতে যে কম্যান্ড ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed '1d' |more
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

এসইডি কম্যান্ডে এড্রেস রেঞ্জ নির্ধারণ করতে আমরা  যে কম্যান্ড ব্যবহার করতে পারি তা হল,


$ cat /etc/passwd | sed '1, 5d' |more
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

উপরের কম্যান্ড এক থেকে পাঁচ নাম্বার পর্যন্ত লাইন ডিলিট করতে ফলপ্রসূ হবে।

 

আরও কিছু এড্রেস রেঞ্জের উদাহরণ,

রেঞ্জ
'4,10d'
'10,4d'
'4,+5d'
'2,5!d'
'1~3d'
'2~2d'
'4,10p'
'4,d'
',10d'

 

মনে রাখা দরকার, p একশন ব্যবহারের সময় পুনরাবৃত্তি এড়াতে -n অপশন ব্যবহার করা উচিৎ,

 


$ cat /etc/passwd | sed -n '1,3p'

এই কম্যান্ডকে -n ছাড়া ব্যবহার করলে যা পাচ্ছি,


$ cat /etc/passwd | sed '1,3p'

সাবস্টিটিউশন কম্যান্ড

স্ট্রিং root কে amrood স্ট্রিং দ্বারা প্রতিস্থাপিত করতে কম্যান্ড,

 


$ cat /etc/passwd | sed 's/root/amrood/'
amrood:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
..........................

এসইডিকে গ্লোবাল সাবস্টিটিউশনের নির্দেশ দিতে কম্যান্ডের শেষে g লাগাতে হয়,

 


$ cat /etc/passwd | sed 's/root/amrood/g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

 

 

সাবস্টিটিউশন ফ্ল্যাগ

অনেকগুলো সাবস্টিটিউশন ফ্ল্যাগ আছে যার মধ্যে একই সময়ে একাধিককে স্পেসিফাই করে দিতে পারি আমরা,

 

ফ্ল্যাগ
g
NUMBER
p
w FILENAME
I or i
M or m

 

অলটারনেটিভ স্ট্রিং সেপারেটর ব্যবহার করা

s এর পড়ে কাঙ্খিত ক্যারেক্টার ব্যবহার করে বিভিন্ন সেপারেটর ব্যবহার করা যায়।

 


$ cat /etc/passwd | sed 's:/root:/amrood:g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এম্পটি স্পেস দ্বারা রিপ্লেস করা

/etc/passwd ফাইল থেকে রুট স্ট্রিং ডিলিট করার জন্য এম্পটি সাবস্টিটিউশন স্ট্রিং ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এড্রেস সাবস্টিটিউশন

কেবল দশম লাইনের string shকে string quiet দ্বারা  সাবস্টিটিউট করতে,


$ cat /etc/passwd | sed '10s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/quiet

একইভাবে, এড্রেস রেঞ্জ সাবস্টিটিউশন করতে,

 


$ cat /etc/passwd | sed '1,5s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/quiet
daemon:x:1:1:daemon:/usr/sbin:/bin/quiet
bin:x:2:2:bin:/bin:/bin/quiet
sys:x:3:3:sys:/dev:/bin/quiet
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

ম্যাচিং কম্যান্ড

-n অপশনের সাথে p অপশন ব্যবহার করে ম্যাচিং লাইন প্রিন্ট করতে পারি,


$ cat testing | sed -n '/root/p'
root:x:0:0:root user:/root:/bin/sh
[root@ip-72-167-112-17 amrood]# vi testing
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

রেগুলার এক্সপ্রেশন ব্যবহার করা

daemon দিয়ে করা লাইন খুঁজে বের করে ডিলিট করতে,

 


$ cat testing | sed '/^daemon/d'
root:x:0:0:root user:/root:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

 

sh দিয়ে শেষ এমন লাইনের ক্ষেত্রে ডিলিটের কম্যান্ড,

 


$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync

 

রেগুলার এক্সপ্রেশনের জন্য গুরুত্বপূর্ণ এমন চারটি স্পেশাল ক্যারেক্টার,

ক্যারেক্টার
^
$
.
*
[chars]

 

ম্যাচিং ক্যারেক্টার

ম্যাচিং ক্যারেক্টারের কিছু প্যাটার্ন দেয়া হল,

এক্সপ্রেশন
/a.c/
/a*c/
/[tT]he/
/^$/
/^.*$/
/ */
/^$/

বহুল ব্যবহৃত কিছু ক্যারেক্টার সেট নিচে দেয়া হল,

সেট
[a-z]
[A-Z]
[a-zA-Z]
[0-9]
[a-zA-Z0-9]

 

ক্যারেক্টার ক্লাস কীওয়ার্ড

/etc/syslog.conf ফাইলের উদাহরণে এলফাবেট ক্যারেক্টার ক্লাস কীওয়ার্ড ব্যবহৃত হয়েছে।


$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.*                         /var/log/secure
mail.*                             -/var/log/maillog
cron.*                             /var/log/cron
uucp,news.crit                     /var/log/spooler
local7.*

 

জিএনইউ এসইডিতে পাওয়া ক্যারেক্টার ক্লাস কীওয়ার্ডের একটি তালিকা নিচে দেয়া হল,

ক্যারেক্টার ক্লাস
[[:alnum:]]
[[:alpha:]]
[[:blank:]]
[[:cntrl:]]
[[:digit:]]
[[:graph:]]
[[:lower:]]
[[:print:]]
[[:punct:]]
[[:space:]]
[[:upper:]]
[[:xdigit:]]

 

এম্পারসেন্ড রেফারেন্সিং

ধরা যাক, নিচের ফাইলে ফোননাম্বার আছে, এতে এরিয়া কোড বসাতে হবে,

 


5555551212
5555551213
5555551214
6665551215
6665551216
7775551217

এম্পারসেন্ড রিপ্লেসমেন্ট ক্যারেক্টার বসিয়ে এটি করতে হলে যা করতে হবে তা হল,

 


$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217

মাল্টিপল এসইডি কম্যান্ড ব্যবহার

সিঙ্গেল এসইডি কম্যান্ডে মাল্টিপল এসইডি কম্যান্ড ব্যবহার করতে নিচের কম্যান্ড ব্যবহার করতে পারি,

 


$ sed -e 'command1' -e 'command2' ... -e 'commandN' files

একই কৌশল ব্যবহার করে ফোন নাম্বার উদাহরণকে আমরা এভাবে লিখতে পারি,

 


$ sed -e 's/^[[:digit:]]\{3\}/(&)/g'  \
                      -e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

ব্যাক রেফারেন্স

ধরা যাক, অনুমিত ফোন টেক্সটে এই টেক্সটগুলো আছে,

 


(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

এতে নিচের কম্যান্ড প্রয়োগ করা যেতে পারে,

 


$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
                       code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217

 

ইউনিক্সঃ সেল ম্যানপেজ হেল্প (Unix – Shell Manpage Help)

Huge Sell on Popular Electronics

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

 

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

যেহেতু কোনও ব্যক্তির পক্ষে এসব কম্যান্ডের সম্পূর্ণ সিনট্যাক্স মনে রাখা সম্ভব না তাই ইউনিক্সের প্রথম যুগ থেকেই অনলাইনে এসব সিনট্যাক্স সম্পর্কে সাহায্য লাভের সুযোগ আছে।

 

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

সিনট্যাক্স

সিস্টেমে কাজ করার সময় কোনও ইউনিক্স কম্যান্ডের বিস্তারিত তথ্য পেতে নিচের কোড ব্যবহার করা হয়,


$man command

 

যেমন, pwd সম্পর্কে জানতে গেলে নিচের কোড লিখতে হবে,


$man pwd

 

man কম্যান্ড সম্পর্কে বিস্তারিত জানতে হলে যে কোড লিখতে হবে তা হল,


$man man

 

ম্যানপেজের সেকশন

ম্যানপেজ মূলত সেকশনে বিভক্ত থাকে যা প্রধানত এর অথরের বিবেচনায় মূল্যায়িত হয়। কিছু কমন সেকশন নিচের ছকে দেখানো হল,

 

সেকশন বর্ণনা
NAME কম্যান্ডের নাম
SYNOPSIS কম্যান্ডের জেনারেল ইউসেজ প্যারামিটার
DESCRIPTION কম্যান্ড ও এর কাজের বর্ণনা
OPTIONS কম্যান্ডের অপশন
SEE ALSO ম্যানপেজে সরাসরি সম্পৃক্ত কম্যান্ড ও তাদের সদৃশ ফাংশনালিটির তালিকাভুক্তি
BUGS কম্যান্ড বা এর আউটপুটে থাকে এমন জানা বিষয় বা বাগ।
EXAMPLES কম্যান্ড ব্যবহার বিষয়ে কমন উদাহরণ
AUTHORS ম্যানপেজ বা কম্যান্ডের অথর

 

এভাবেই গুরুত্বপূর্ণ ও প্রয়োজনীয় ইউনিক্স সেল কম্যান্ড আমরা হেল্প পেজ থেকে পেতে পারি।

 

ইউনিক্সঃ সেল ফাংশন (Unix – Shell Functions)

Huge Sell on Popular Electronics

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

 

ফাংশন কোনও স্ক্রিপ্টের ফাংশনালিটিকে ছোট ছোট লজিকাল সাবসেকশনে ভাগ করে যাতে এগুলো প্রয়োজনমত তাদের কাজ সম্পন্ন করতে পারে।

পুনরাবৃত্তিমূলক কাজ সম্পাদনের জন্য ফাংশন ব্যবহার করা কোডের পুনঃব্যবহারের একটি ভাল উপায়। কোডের পুনঃব্যবহার বর্তমান সময়ের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিঙের একটি গুরুত্বপূর্ণ অংশ।

সেল ফাংশন অন্যান্য প্রোগ্রামিং ভাষার সাবরুটিন, প্রক্রিয়া ও ফাংশনের মতই।

 

ফাংশন তৈরি করা

ফাংশন হিসেবে স্বীকৃতি পেতে নিচের সিনট্যাক্স ব্যবহার করতে হয়,


function_name () { 
   list of commands
}

 

নিচে ফাংশনের ব্যবহারের সহজ উদাহরণ দেয়া হল,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World"
}
 
# Invoke your function
Hello

 

উপরের কোডকে কার্যে পরিণত করলে নিম্নে প্রদত্ত ফলাফল পাওয়া যাবে,


$./test.sh
Hello World
$

 

ফাংশনের পাস প্যারামিটার

কিছু ফাংশন কাজের ক্ষেত্রে প্যারামিটার গ্রহণ করে, $1, $2 এসব দ্বারা এই ফাংশন প্রকাশ করা হয়,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
}
 
# Invoke your function
Hello Zara Ali

 

যা নিচের ফলাফল দেখাবে,


$./test.sh
Hello World Zara Ali
$

 

ফাংশন থেকে মান ফিরিয়ে আনাঃ return কম্যান্ড ব্যবহার করে ফাংশন থেকে যেকোনো মান ফিরিয়ে আনা সম্ভব, যার সিনট্যাক্স হল,


return code

 

এখানে যেকোনো কোড হতে পারে কিন্তু তা স্ক্রিপ্টের কনটেক্সটে অর্থবোধক হতে হবে।

যেমন, নিচের ফাংশন ভ্যালু ফিরিয়ে আনে,


#!/bin/sh
 
# Define your function here
Hello () {
   echo "Hello World $1 $2"
   return 10
}
 
# Invoke your function
Hello Zara Ali
 
# Capture value returnd by last command
ret=$?
 
echo "Return value is $ret"

 

যা নিম্নোক্ত ফলাফল দেবে,


$./test.sh
Hello World Zara Ali
Return value is 10
$

 

নেস্টেড ফাংশন

ফাংশনের একটি মজার ফিচার হল, এটি অন্য ফাংশনকে যেমন কল করতে পারে তেমনি নিজেদেরও কল করতে পারে। এধরনের ফাংশনকে রিকারসিভ ফাংশন বলে।

দুটি ফাংশনের নেস্টিং নিচের উদাহরণে দেয়া হল,


#!/bin/sh
 
# Calling one function from another
number_one () {
   echo "This is the first function speaking..."
   number_two
}
 
number_two () {
   echo "This is now the second function speaking..."
}
 
# Calling function one.
number_one

 

এটি যে ফলাফল দেখাবে তা হল,


This is the first function speaking...
This is now the second function speaking...

 

প্রম্পট থেকে ফাংশন কল

.profile এর ভিতরে সচরাচর ব্যবহৃত ফাংশনের জন্য সংজ্ঞা অন্তর্ভুক্ত করা যায়,অপরদিকে test.sh জাতীয় ফাইলে সংজ্ঞার গ্রুপ সংবদ্ধ করে কারেন্ট সেলে নিচের কোড দ্বারা সম্পাদন করা যায়,


$. test.sh

 

যা কিনা কারেন্ট সেলকে নিচের মত করে বিবৃত করে,


$ number_one
This is the first function speaking...
This is now the second function speaking...
$

 

সেল থেকে কোনও ফাংশনের সংজ্ঞা মুছে ফেলতে .f অপশনের সাথে unset কম্যান্ড ব্যবহার করতে হয়, এটি সেই একই কম্যান্ড যা সেল থেকে চলকের বিবরণ মুছে ফেলতে ব্যবহৃত হয়,


$unset.f function_name

 

ইউনিক্সঃ সেল ইনপুট/আউটপুট রিডাইরেকশন (Unix – Shell Input/Output Redirections)

Huge Sell on Popular Electronics

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

 

বেশিরভাগ ইউনিক্স সিস্টেম কম্যান্ড টার্মিনাল থেকে ইনপুট গ্রহণ করে এবং টার্মিনালে আউটপুট প্রদান করে।

কম্যান্ড স্ট্যান্ডার্ড ইনপুট থেকে ইনপুট পড়ে ও স্ট্যান্ডার্ড আউটপুটে আউটপুট লিখে।

 

আউটপুট রিডাইরেকশন

নিচের who কম্যান্ড ইউজার ফাইলের কম্যান্ডের পুরোপুরি আউটপুটে পরিণত হবে,


$ who> users


 

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


$ cat users
oko         tty01   Sep 12 07:30
ai          tty15   Sep 12 13:32
ruth        tty21   Sep 12 10:10
pat         tty24   Sep 12 13:07
steve       tty25   Sep 12 13:03
$

 

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


$ echo line1> users
$ cat users
line1$

 

পূর্বে থাকা কোনও ফাইলে আউটপুট বিস্তারনের জন্য আমরা >> অপারেটর ব্যবহার করতে পারি।


$ echo line2>> users
$ cat users
line1
line2
$

 

ইনপুট রিডাইরেকশন

আউটপুট যেমন রিডাইরেক্ট হয়ে ফাইলে আসতে পারে তেমনি ফাইল থেকে ইনপুট রিডাইরেক্ট হয়ে চলেও যেতে পারে। আউটপুট রিডাইরেকশন যেমন > ক্যারেক্টার দ্বারা প্রকাশ পায় তেমনি ইনপুট রিডাইরেকশন < ক্যারেক্টার দ্বারা প্রকাশ পায়।

যেমন, users ফাইলের লাইন নাম্বার নিচের কম্যান্ড থেকে বের করা যায়,


$ wc-l users
2 users
$

 

এখানে আউটপুট ২ লাইনের। users ফাইলের wc কম্যান্ডের স্ট্যান্ডার্ড ইনপুটের রিডাইরেকশনের মাধ্যমে আমরা লাইন সংখ্যা জানতে পারি।


$ wc-l< users
2
$

 

হেয়ার ডকুমেন্ট

হেয়ার ডকুমেন্টের সাধারণ ফর্ম এরকম,


command<< delimiter
document
delimiter

 

মোট লাইনসংখ্যা জানার wc –l কম্যান্ডের ইনপুট এরকম,


$wc -l << EOF
        This is a simple lookup program 
        for good (and bad) restaurants
        in Cape Town.
EOF
3
$

 

স্ক্রিপ্ট ব্যবহার করে মাল্টিপল লাইন প্রিন্ট করতে here document কম্যান্ড ব্যবহার করা যায়,


#!/bin/sh
 
cat << EOF
This is a simple lookup program 
for good (and bad) restaurants
in Cape Town.
EOF

 

যা এরকম ফলাফল দেখাবে,


This is a simple lookup program
for good (and bad) restaurants
in Cape Town.

 

এই স্ক্রিপ্ট vi টেক্সট এডিটর দিয়ে একটি সেশন চালাবে এবং test.txt ফাইলে ইনপুট সংরক্ষণ করবে।


#!/bin/sh
 
filename=test.txt
vi $filename <<EndOfCommands
i
This file was created automatically from
a shell script
^[
ZZ
EndOfCommands

 

vi টেক্সট এডিটরের স্থলে vim টেক্সট এডিটর ব্যবহার করলে স্ক্রিপ্টের আউটপুট এরকম হবে,


$ sh test.sh
Vim: Warning: Input is not from a terminal
$

 

স্ক্রিপ্ট চালুর পর test.txt ফাইলে ফাইলে আমরা যা দেখব তা এরকম,


$ cat test.txt
This file was created automatically from
a shell script
$

 

আউটপুট ডিসকার্ড করা

আউটপুটকে /dev/null ফাইলে রিডাইরেক্ট করে এটি করা হয়,


$ command>/dev/null

 

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


$ command>/dev/null2>&1

 

STDIN কে STDERR তে রিডাইরেক্ট করে ম্যাসেজ প্রদর্শন করতে


$ echo message1>&2

এই কোড ব্যবহার করা যায়।

 

রিডাইরেকশন কম্যান্ড

এরকম কয়েকটি রিডাইরেকশন কম্যান্ড হল,

কম্যান্ড
pgm > file
pgm < file
pgm >> file
n > file
n >> file
n >& m
n <& m
<< tag
|

মনে রাখা দরকার, ফাইল ডেসক্রিপ্টর ০ হল নরমাল স্ট্যান্ডার্ড ইনপুট (STDIN), ১ হল স্ট্যান্ডার্ড আউটপুট (STDOUT) আর ২ হল স্ট্যান্ডার্ড এরর আউটপুট (STDERR) ।

 

ইউনিক্সঃ সেল কোটিং মেকানিজম (Unix – Shell Quoting Mechanisms)

Huge Sell on Popular Electronics

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

 

মেটাক্যারেক্টার

ইউনিক্স সেল বিভিন্ন মেটাক্যারেক্টার ব্যবহার করে যারা সেল স্ক্রিপ্টে ব্যবহৃত হওয়ার সময় স্বতন্ত্র অর্থ প্রকাশ করে। যেমন


*?[]' " \ $ ; & ( ) | ^ < > new-line space tab

 

উদাহরণ, * বা ? চিহ্ন প্রিন্ট করার জন্য যে কোড লিখব তা হল,


#!/bin/sh 
echoHello;Word

 

এটি যে ফলাফল দেখাবে তা হল,


Hello
./test.sh: line2:Word: commandnot found 
shell returned127

 

এখন একটি কোটেড ক্যারেক্টার ব্যবহার করে দেখা যাক,


#!/bin/sh 
echoHello\;Word

 

এটি যে ফলাফল দেখাবে,


Hello;Word

 

$ একটি মেটাক্যারেক্টার তাই সেলের ব্যতিক্রমী আচরণ এড়াতে একে কোটেড অবস্থায় রাখতে হবে,


#!/bin/sh 
echo"I have \$1200"

 

এটি যে ফলাফল দেবে তা হল,


I have $1200

 

চার ধরণের কোটিং দেখা যায়,

কোটিং বর্ণনা
Single quote এই কোটের মধ্যবর্তী বিশেষ ক্যারেক্টার তাদের বিশেষ অর্থ হারায়
Double quote এই কোটের মধ্যবর্তী বেশিরভাগ বিশেষ ক্যারেক্টার তাদের বিশেষ অর্থ হারায়,ব্যতিক্রমগুলো হল,

  • $
  • `
  • \$
  • \'
  • \"
  • \\
Backslash ব্যাকস্লেসকে অনুসরণ করা কোনও ক্যারেক্টার তাদের বিশেষ অর্থ হারায়
Back Quote ব্যাককোটের মধ্যবর্তী যেকোনো কিছুই কম্যান্ড, এগুলোকে সম্পাদন করা হয়

 

সিঙ্গেল কোট

একটি ইকো কম্যান্ড চিন্তা করা যাক যেটিতে অনেকগুলো সেল কম্যান্ড আছে।


echo<-$1500.**>;(update?)[y|n]

 

এর প্রত্যেকটি স্পেশাল ক্যারেক্টারের সামনে ব্যাকস্লেস দেয়া শ্রান্তিজনক ও পড়া কঠিন করে ফেলতে পারে।


echo \<-\$1500.\*\*\>\; \(update\?\) \[y\|n\]

 

এরকম বড় ক্যারেক্টার গ্রুপকে কোটিং করার একটি সহজ উপায় আছে। স্ট্রিংএর শুরু আর শেষে একটি করে সিঙ্গেল কোট ( ') দিতে হবে,


echo'<-$1500.**>; (update?) [y|n]'

 

আউটপুট হবে এমন স্ট্রিংএ সিঙ্গেল কোট বসলে পুরো স্ট্রিংকে সিঙ্গেল কোটে রাখার বদলে নিচের উদাহরণের মত করে ব্যাকস্লেস ব্যবহার করতে হবে,


echo'It\'s Shell Programming'

 

ডাবল কোট

নিচের সেল স্ক্রিপ্ট চেষ্টা করে দেখা যাক, এটি সিঙ্গেল কোটের আচরণ দেখাবে,


VAR=ZARA
echo'$VAR owes <-$1500.**>; [ as of (`date +%m/%d`) ]'

 

যার ফলাফল,


$VAR owes<-$1500.**>;[as of(`date +%m/%d`)]

 

কিন্তু যদি আমরা সাবস্টিটিউট চলক মান চাই ও ইনভার্টেড কমা কার্যকর দেখতে চাই তাহলে ডাবল কোটের মধ্যে নিম্নোক্ত উপায়ে কম্যান্ড লিখতে হবে,


VAR=ZARA
echo"$VAR owes <-\$1500.**>; [ as of (`date +%m/%d`) ]"

 

এতে করে যে ফলাফল আসবে তা হল,


ZARA owes<-$1500.**>;[as of(07/02)]

 

ডাবল কোট সব ক্যারেক্টারের স্পেশাল মিনিং নিয়ে নেয় কিছু ব্যতিক্রম ছাড়া

  • প্যারামিটারসাবস্টিটিউশনের জন্য $
  • কম্যান্ড সাবস্টিটিউশনের জন্য ব্যাককোট
  • লিটারেল ডলার সাইনের অনুমোদনের জন্য \$
  • লিটারেল ব্যাককোট অনুমোদনের জন্য \`
  • এমবেডেড ডাবল কোট অনুমোদনের জন্য \"
  • এমবেডেড ব্যাকস্লেস অনুমোদনের জন্য \\
  • অন্য সব \ ক্যারেক্টার স্পেশাল নয়

 

ব্যাক কোট

ব্যাক কোটের মধ্যে সেল কম্যান্ড রাখলে তা সম্পাদন করা হয়, সেল কম্যান্ডকে ব্যাক কোটের মধ্যে রাখার সরল সিনট্যাক্স নিচের উদাহরণে,


var=`command`

 

যেমন, ডেট কম্যান্ড সম্পাদন করে এর ফলাফলকে ডাটা ভেরিয়েবলে রাখার জন্য,


DATE=`date` 
echo"Current Date: $DATE"

 

এটি নিচের ফলাফল প্রদর্শন করবে,


CurrentDate:ThuJul205:28:45 MST2009

 

ইউনিক্সঃ সেল সাবস্টিটিউশন (Unix – Shell Substitution)

Huge Sell on Popular Electronics

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

 

সাবস্টিটিউশন কী

একটি সেল সাবস্টিটিউশন প্রয়োগ করে তখন, যখন সেটি এমন পরিস্থিতি অনুধাবন করে যা এক বা একাধিক বিশেষ চিহ্ন(স্পেশাল ক্যারেকটার) ধারণ করে থাকে।

নিচের উদাহরণটি এমন একটি ক্ষেত্র যেখানে কোনও চলকের মুদ্রায়িত মান এর মূল মানের দ্বারা প্রতিস্থাপিত হয়েছে। একই সাথে "\n" একটি নতুন লাইনের মাধ্যমে প্রতিস্থাপিত হয়েছে।


#!/bin/sh
 
a=10
echo -e "Value of a is $a \n"

 

-e অপশন প্রয়োগে যা নিম্নোক্ত ফলাফল প্রদান করে,

Value of a is 10 এবং -e অপশন প্রয়োগ না করে ফলাফল হবে, Value of ais10\n ইকো কম্যান্ডের জন্য নিম্নোক্ত এস্কেপ সিকোয়েন্স প্রয়োগ করা যায়,

 

Escape Description
\\ backslash
\a alert (BEL)
\b backspace
\c suppress trailing newline
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab

ব্যাকস্লেস এস্কেপের ইন্টারপ্রিটেশন ডিজেবল রাখতে –E অপশন ও নতুন লাইনের অন্তর্ভুক্তি রহিত করতে –n ব্যবহার করা যায়।

 

কম্যান্ড সাবস্টিটিউশন

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

কম্যান্ড সাবস্টিটিউশন তখন কার্যকর হয় যখন নিম্নোক্ত নির্দেশনা দেয়া থাকে,


`command`

 

এসব ক্ষেত্রে সিঙ্গেল কোট ক্যারেকটারের পরিবর্তে ব্যাককোট ব্যবহার করতে হয়।

উদাহরণ

কম্যান্ড সাবস্টিটিউশন মূলত কম্যান্ডের আউটপুটকে চলকরূপে প্রকাশের জন্য ব্যবহৃত হয়,

নিচের প্রত্যেকটি উদাহরণ কম্যান্ড সাবস্টিটিউশনকে বিবৃত করে।


#!/bin/sh
 
DATE=`date`
echo "Date is $DATE"
 
USERS=`who | wc -l`
echo "Logged in user are $USERS"
 
UP=`date ; uptime`
echo "Uptime is $UP"

 

এই কোডগুলো যে ফলাফল দেখাবে তা হল,


Date is Thu Jul  2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul  2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03,  1 user,  load avg: 0.13, 0.07, 0.15

 

চলক সাবস্টিটিউশন

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

সম্ভাব্য সাবস্টিটিউশন গুলো নিচের ছকে দেয়া হল,

প্রকার বর্ণনা
${var} var. এর মানকে প্রতিস্থাপিত করে
${var:-word} var শূন্য বা আনসেট হলে, var.এর জন্য শব্দ প্রতিস্থাপিত হয়। var এর মান অপরিবর্তিত থাকে।
${var:=word} var শূন্য বা আনসেট হলে, var শব্দের মান অনুসারে নির্ণীত হয়
${var:?message} var শূন্য বা আনসেট হলে, message standard error হিসেবে প্রতীয়মান হয়, চলক ঠিকমত প্রয়োগ করা হয়েছে কিনা এটি তা দেখে।
${var:+word} var সেট হলে শব্দ var এর দ্বারা প্রতিস্থাপিত হয় var এর মান অপরিবর্তিত থাকে।

 

উদাহরণ

নিচে এধরণের সাবস্টিটিউশনের উদাহরণ দেয়া হল,


#!/bin/sh
 
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
 
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
 
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
 
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
 
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

 

উপরের কোডগুলো যে ফলাফল দেখাবে তা হল,


Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
 
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix

 

ইউনিক্সঃ সেল লুপ কন্ট্রোল (Unix – Shell Loop Control)

Huge Sell on Popular Electronics

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

 

বিভিন্ন কাজের জন্য লুপ তৈরি ও ব্যবহার করার সাথে আমরা সবাই পরিচিত। কখনো কখনো লুপ এড়ানো বা এর পুনরাবৃত্তি করা প্রয়োজন হয়ে পরে।

 

সেল লুপ নিয়ন্ত্রণের জন্য দুটি স্টেটমেন্ট নিয়ে আমরা আলোচনা করব।

  • ব্রেক স্টেটমেন্ট
  • কন্টিনিউ স্টেটমেন্ট

 

ইনফিনিট লুপ

সব লুপের শুরু বা শেষ ও একটি সীমিত ক্রিয়াসীমা থাকে, নির্ধারিত শর্তে পৌঁছে এর ক্রিয়াসীমা শেষ হয়। সেই নির্ধারিত শর্তে না পৌঁছলে লুপ স্থায়ী হয়ে থেকে যেতে পারে। এধরনের লুপ ইনফিনিট লুপ নামে পরিচিত।

 

নিচের উদাহরণে জিরো থেকে ৯ পর্যন্ত নাম্বার প্রদর্শনের নিমিত্তে লুপের প্রয়োগ দেখানো হল।


#!/bin/sh
 
a=10
 
while [ $a -ge 10 ]
do
   echo $a
   a=`expr $a + 1`
done

এই লুপ সারা জীবন স্থায়ী হবে কারণ a সবসময় ১০এর চেয়ে বড় বা এর সমান, এটি কখনো ১০ এরচেয়ে ছোট হবে না।

 

ব্রেক স্টেটমেন্ট

ব্রেক স্টেটমেন্ট সম্পূর্ণ লুপের কার্যক্রম থামাতে ব্যবহৃত হয়, এর পূর্ব পর্যন্ত সকল কোডের কার্যক্রম সম্পন্ন হওয়ার পর।

 

সিনট্যাক্স

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


break


 

 

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


break n


 

 

n তম লুপ থেকে বেরিয়ে যাওয়ার জন্য এই কোড ব্যবহৃত হয়।

যেমন


#!/bin/sh
 
a=0
 
while [ $a -lt 10 ]
do
   echo $a
   if [ $a -eq 5 ]
   then
      break
   fi
   a=`expr $a + 1`
done

 

উপরের কোড যে ফলাফল দেখাবে তা হল,


0
1
2
3
4
5

 

এই উদাহরণের উভয় লুপের ক্ষেত্রে পরিবর্তন হবে যদি var1 দুইয়ের সমান ও var2 শূন্যের সমান হয়।


#!/bin/sh
 
for var1 in 1 2 3
do
   for var2 in 0 5
   do
      if [ $var1 -eq 2 -a $var2 -eq 0 ]
      then
         break 2
      else
         echo "$var1 $var2"
      fi
   done
done

 

শর্ত পূরণ হলে ইনার লুপ ও আউটার লুপ বিলুপ্ত করে দেয়া হয়,


1 0
1 5

 

কন্টিনিউ স্টেটমেন্ট

লুপের পুনরাবৃত্তির ক্ষেত্রে কন্টিনিউ স্টেটমেন্ট প্রয়োগ করা সম্ভব, এর সিনট্যাক্স হল,


continue


 

 

নেস্টেড লুপ থেকে বেরিয়ে যেতে যে ইন্টেজার আর্গুমেন্ট ব্যবহার করা হয় কন্টিনিউ কমান্ডে তা হল,


continue n


n তম লুপের ক্ষেত্রে এই কোড ব্যবহৃত হয়।

 

উদাহরণ

নিচের উদাহরণে কন্টিনিউ স্টেটমেন্টের এই কোড ব্যবহার করা হয়,


#!/bin/sh
 
NUMS="1 2 3 4 5 6 7"
 
for NUM in $NUMS
do
   Q=`expr $NUM % 2`
   if [ $Q -eq 0 ]
   then
      echo "Number is an even number!!"
      continue
   fi
   echo "Found odd number"
done

 

এটি নিচের মতো ফলাফল দেখাবে,


Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number
Number is an even number!!
Found odd number

 

ইউনিক্সঃ সেল লুপ টাইপ (Unix – Shell Loop Types)

Huge Sell on Popular Electronics

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

 

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

  • হোয়াইল লুপ
  • ফর লুপ
  • আনটিল লুপ
  • সিলেক্ট লুপ

 

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

 

নেস্টিং লুপ

সব ধরণের লুপ নেস্টিং ধারণাকে সমর্থন করে, এই ধারণা অনুসারে একটি লুপকে সদৃশ আরেকটি লুপের ভেতর স্থাপন করা যায়।

এভাবে হোয়াইল লুপ বা সদৃশ অন্য কোনও লুপকে কীভাবে স্থাপন করা যায় তা দেখানো যাক,

এক হোয়াইল লুপকে অন্য হোয়াইল লুপের অংশ হিসেবে ব্যবহার করা যায়, এর সিনট্যাক্স হল,


while command1 ; # this is loop1, the outer loop
do
   Statement(s) to be executed if command1 is true
 
   while command2 ; # this is loop2, the inner loop
   do
      Statement(s) to be executed if command2 is true
   done
 
   Statement(s) to be executed if command1 is true
done

 

লুপ নেস্টিংএর একটি সহজ উদাহরণ হল,


#!/bin/sh
 
a=0
while [ "$a" -lt 10 ]    # this is loop1
do
   b="$a"
   while [ "$b" -ge 0 ]  # this is loop2
   do
      echo -n "$b "
      b=`expr $b - 1`
   done
   echo
   a=`expr $a + 1`
done

 

নয় গণনার লুপের ভেতর আরেকটি গণনা লুপ প্রয়োগ করার ক্ষেত্রে উপরের কোডিং ব্যবহৃত হয়েছে, যা নিম্নোক্ত ফলাফল দেখায়,


0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0

এখানে echo –n কাজ করেছে, -n এর জন্য নতুন লাইন ক্যারেকটার স্থাপন রহিত হয়েছে।

 

ইউনিক্সঃ সেল ডিসিশন মেকিং (Unix – Shell Decision Making)

Huge Sell on Popular Electronics

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

 

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

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

  • if...else স্টেটমেন্ট
  • case...esac স্টেটমেন্ট

 

if...else স্টেটমেন্ট

এক সেট প্রদত্ত অপশন থেকে একটি নির্বাচনের জন্য এই পদ্ধতি প্রয়োগ করা হয়। ইউনিক্স সেল if...else স্টেটমেন্টের যে ফর্মগুলো সমর্থন করে তা হল,

  • ..fi statement
  • ..else...fi statement
  • ..elif...else...fi statement

মাল্টিওয়ে ব্রাঞ্চের জন্য মাল্টিপল if...elif স্টেটমেন্ট প্রয়োগ করা সম্ভব হয়, যদিও এটি সবসময় ফলপ্রসূ নয় কারণ ব্রাঞ্চগুলো একক চলকের উপর নির্ভরশীল থাকতে পারে। এসব ক্ষেত্রে ইউনিক্স সেল case...esac স্টেটমেন্ট সমর্থন করে। এটি কেবলমাত্র এক প্রকরণের হয়ে থাকে,

  • case...esac statement

ইউনিক্স সেল case...esac স্টেটমেন্ট অন্যান্য প্রোগ্রামিং ভাষা যেমন সি বা সি প্লাস প্লাস বা পিইআরএলের switch...case এর সদৃশ।

 

ইউনিক্সঃ সেল বেসিক অপারেটরস (Unix – Shell Basic Operators)

Huge Sell on Popular Electronics

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

 

প্রত্যেক সেল সমর্থিত কিছু অপারেটর থাকে। আমরা এখানে ডিফল্ট সেল (Bourne) নিয়ে আলোচনা করব।বর্ন সেলের গুরুত্বপূর্ণ যে অপারেটরগুলো নিয়ে এখানে আলোচনা করা হবেঃ

  • এরিথমেটিক অপারেটর
  • রিলেশনাল অপারেটর
  • বুলিয়েন অপারেটর
  • স্ট্রিং অপারেটর
  • ফাইল টেস্ট অপারেটর

বর্ন সেলের নিজের এরিথমেটিক কাজ সম্পাদনের কৌশল নেই কিন্তু তারা বাইরের প্রোগ্রাম যেমন awk বা expr ব্যবহার করে,

নিচের উদাহরণে দুটি সংখ্যা যোগ করার প্রক্রিয়া দেখানো হল,


#!/bin/sh
 
val=`expr 2 + 2`
echo "Total value : $val"

 

এটি যে ফলাফল দেবে তা হল,


Total value:4


 

 

এখানে কয়েকটি ব্যপার মনে রাখা দরকার,

  • অপারেটর ও এক্সপ্রেশনের মাঝে স্পেস থাকতে হয়,
  • সম্পূর্ণ এক্সপ্রেশন ইনভার্টেড কমা দ্বারা আবদ্ধ করা থাকে

 

এরিথমেটিক অপারেটর

বর্ণ সেল যেসব এরিথমেটিক অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান ১০ ও b চলকের মান ২০ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
+ `expr $a + $b` হয় 30
- `expr $a - $b` থেকে পাই -10
* `expr $a \* $b` থেকে পাই 200
/ `expr $b / $a` থেকে পাই 2
% `expr $b % $a` থেকে পাই 0
= a=$b এটি এই বুঝায় যে bএর মান a এর মানের মধ্যে আছে।
== [ $a == $b ] এর রিটার্ন মিথ্যা
!= [ $a != $b ] রিটার্ন সত্য

 

এখানে একটি বিষয় খুব গুরুত্বপূর্ণ যে, কন্ডিশনাল এক্সপ্রেশনকে স্কয়ার ব্র্যাকেটের মধ্যে দুপাশে একটি করে স্পেস দিয়ে আবদ্ধ রাখতে হয়। যেমন,

[ $a == $b ] সঠিক।

[$a==$b] ভুল।

 

সব এরিথমেটিক হিসাব লম্বা পূর্ণসংখ্যার মাধ্যমে করা হয়।

 

রিলেশনাল অপারেটর

বর্ণ সেল যেসব রিলেশনাল অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

অপারেটর উদাহরণ
-eq [ $a -eq $b ] বিবৃতি সত্য নয়
-ne [ $a -ne $b ] বিবৃতি সত্য
-gt [ $a -gt $b ] বিবৃতি সত্য নয়
-lt [ $a -lt $b ] বিবৃতি সত্য
-ge [ $a -ge $b ] বিবৃতি সত্য নয়
-le [ $a -le $b ] বিবৃতি সত্য

 

এখানে একটি বিষয় খুব গুরুত্বপূর্ণ যে, কন্ডিশনাল এক্সপ্রেশনকে স্কয়ার ব্র্যাকেটের মধ্যে দুপাশে একটি করে স্পেস দিয়ে আবদ্ধ রাখতে হয়। যেমন,

[ $a <= $b ] সঠিক।

[$a <= $b] ভুল।

 

বুলিয়েন অপারেটর

বর্ণ সেল যেসব বুলিয়েন অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান ১০ ও b চলকের মান ২০ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
! [ ! false ] বিবৃতি সত্য
-o [ $a -lt 20 -o $b -gt 100 ] বিবৃতি সত্য
-a [ $a -lt 20 -a $b -gt 100 ] বিবৃতি মিথ্যা

 

স্ট্রিং অপারেটর

বর্ণ সেল যেসব স্ট্রিং অপারেটর সমর্থন করে তাদের নিচের ছকে দেয়া হল।

a চলকের মান "abc" ও b চলকের মান "efg"ধরে নিচের ছকে আমরা দেখি,

 

অপারেটর উদাহরণ
= [ $a = $b ] মিথ্যা বিবৃতি
!= [ $a != $b ] সত্য বিবৃতি
-z [ -z $a ] মিথ্যা বিবৃতি
-n [ -z $a ] সত্য বিবৃতি
str [ $a ] সত্য বিবৃতি

 

ফাইল টেস্ট অপারেটর

ইউনিক্স ফাইলের বিভিন্ন প্রপার্টি টেস্টের জন্য যে অপারেটর সেগুলো নিচে দেয়া হয়েছে।

১০০ বাইটের "test" নামের চলক ফাইলের জন্য টেস্ট অপারেটরঃ

 

অপারেটর উদাহরণ
-b file [ -b $file ] বিবৃতি সত্য
-c file [ -c $file ] বিবৃতি সত্য নয়
-d file [ -d $file ] বিবৃতি সত্য নয়
-f file [ -f $file ] বিবৃতি সত্য
-g file [ -g $file ] বিবৃতি সত্য নয়
-k file [ -k $file ] বিবৃতি সত্য নয়
-p file [ -p $file ] বিবৃতি সত্য নয়
-t file [ -t $file ] বিবৃতি সত্য নয়
-u file [ -u $file ] বিবৃতি সত্য নয়
-r file [ -r $file ] বিবৃতি সত্য
-w file [ -w $file ] বিবৃতি সত্য
-x file [ -x $file ] বিবৃতি সত্য
-s file [ -s $file ] বিবৃতি সত্য
-e file [ -e $file ] বিবৃতি সত্য

 

ইউনিক্সঃ সেল অ্যারি ব্যবহার করা (Unix – Using Shell Arrays)

Huge Sell on Popular Electronics

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

 

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

 

অ্যারি ভ্যালুর বিবৃতি

অ্যারি ভেরিয়েবল ও স্কেলার ভেরিয়েবলের মধ্যে যে পার্থক্য তা নিচে দেখানো হল,

ধরা যাক কোনও চলকের মধ্যে থাকে কিছু ছাত্রের নাম নিয়ে আমরা কাজ করতে চাই, প্রত্যেকটি স্বতন্ত্র চলক (নিচের মত) একটি করে স্কেলার চলক।


NAME01="Zara"
NAME02="Qadir"
NAME03="Mahnaz"
NAME04="Ayan"
NAME05="Daisy"


 

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


array_name[index]=value


 

এখানে array_name হল অ্যারির নাম, index হল আইটেমের ইনডেক্স আর value হল আইটেমের যে ভ্যালু আমরা সেট করতে চাই। উদাহরণ হিসেবে কম্যান্ডগুলো হল,


NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"

 

ksh সেল ব্যবহার করে থাকলে অ্যারি শুরু করতে যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


set-A array_name value1 value2... valuen

 

bash সেল ব্যবহার করে থাকলে অ্যারি শুরু করতে যে সিনট্যাক্স ব্যবহার করতে হবে তা হল,


array_name=(value1... valuen)

 

অ্যারি ভ্যালুতে প্রবেশ করা

কোনও অ্যারি ভেরিয়েবল তৈরির পর সেটিতে প্রবেশ করার জন্য কোড,


${array_name[index]}


 

এখানে array_name হল অ্যারির নাম, index হল যে ভ্যালু প্রবেশ করাব তার ইনডেক্স।নিচে একটি সহজ উদাহরণ দেয়া যাক,


#!/bin/sh
 
NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Index: ${NAME[0]}"
echo "Second Index: ${NAME[1]}"

 

যেটির ফলাফল হবে এমন,


$./test.sh
First Index: Zara
Second Index: Qadir


 

অ্যারির সবগুলো আইটেমে আমরা নিচের যেকোনো একটি উপায়ে ঢুকতে পারি,


${array_name[*]}
${array_name[@]}


 

এখানে array_name হল সেই অ্যারির নাম যাতে আমরা ঢুকতে চাই। নিচে এর একটি সরল উদাহরণ দেয়া হল,


#!/bin/sh

NAME[0]="Zara"
NAME[1]="Qadir"
NAME[2]="Mahnaz"
NAME[3]="Ayan"
NAME[4]="Daisy"
echo "First Method: ${NAME[*]}"
echo "Second Method: ${NAME[@]}"


 

এটি যে ফলাফল দেখাবে তা হল,


$./test.sh
First Method: Zara Qadir Mahnaz Ayan Daisy
Second Method: Zara Qadir Mahnaz Ayan Daisy


 

ইউনিক্সঃ স্পেশাল ভেরিয়েবলস (Unix – Special Variables)

Huge Sell on Popular Electronics

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

 

পূর্ববর্তী টিউটোরিয়ালে ভেরিয়েবল নামে নন আলফানিউমেরিক ক্যারেক্টার ব্যবহার বিষয়ে সতর্ক করা হয়েছিল, কারণ ইউনিক্স চলকে এদের ভিন্ন অর্থ হয়।

যেমন, $ ক্যারেক্টার কারেন্ট সেলে আইডি নাম্বার বা পিআইডি প্রক্রিয়া বোঝায়।


$echo $$


 

উপরের কম্যান্ড কারেন্ট সেলের পিআইডি যেভাবে বোঝায়,


29949


 

নিচের ছকে সেল স্ক্রিপ্টে ব্যবহার করা যায় এমন স্পেশাল ভেরিয়েবল দেখানো হল,

Variable Description
$0 কারেন্ট স্ক্রিপ্টের ফাইল নেম
$n এই চলক সেসব আর্গুমেন্টের সাথে সমন্বয় করে যারা স্ক্রিপ্টকে সাহায্য করে।
$# স্ক্রিপ্টে সরবরাহ করা আর্গুমেন্টের সংখ্যা
$* সব আর্গুমেন্ট ডাবল কোটেড। কোনও স্ক্রিপ্ট দুটি আর্গুমেন্ট রিসিভ করলে $* , $1 $2 এর সমপর্যায়ের।
$@ সব আর্গুমেন্ট স্বতন্ত্রভাবে ডাবল কোটেড। কোনও স্ক্রিপ্ট দুটি আর্গুমেন্ট রিসিভ করলে $@, $1 $2 এর সমপর্যায়ের।
$? সর্বশেষ সম্পাদিত কম্যান্ডের এক্সিট স্ট্যাটাস
$$ কারেন্ট সেলের প্রসেস নাম্বার
$! সর্বশেষ ব্যাকগ্রাউন্ড সেলের প্রসেস নাম্বার

 

কম্যান্ড লাইন আর্গুমেন্টঃ কম্যান্ড লাইন আর্গুমেন্ট $1, $2, $3,...$9 হল পজিসনাল প্যারামিটার যার $0 প্রকৃত কম্যান্ড, সেল স্ক্রিপ্ট,প্রোগ্রাম বা ফাংশন ও $1, $2, $3, ...$9 হল কম্যান্ডের আর্গুমেন্ট।

নিচের স্ক্রিপ্ট কম্যান্ড লাইন সংশ্লিষ্ট বিভিন্ন স্পেশাল ভেরিয়েবলস ব্যবহার করে,


#!/bin/sh

echo "File Name: $0"
echo "First Parameter : $1"
echo "First Parameter : $2"
echo "Quoted Values: $@"
echo "Quoted Values: $*"
echo "Total Number of Parameters : $#"

 

নিচে উপরের স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন দেয়া হল,


$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2

 

স্পেশাল প্যারামিটার $* and $@ঃ কম্যান্ড লাইন আর্গুমেন্টে ঢোকার জন্য স্পেশাল প্যারামিটার আছে, $* ও $@ এমন স্পেশাল প্যারামিটার, যারা ডাবল কোটে আবদ্ধ হওয়ার আগ পর্যন্ত একই রকম প্রতিক্রিয়া দেখায়। আমরা অজানা সংখ্যক কম্যান্ড লাইন আর্গুমেন্টের প্রক্রিয়ার জন্য $* বা $@ যেকোনো স্পেশাল প্যারামিটার দিয়ে সেল স্ক্রিপ্ট লিখতে পারি।


#!/bin/sh
 
for TOKEN in $*
do
   echo $TOKEN
done

 

উপরের স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন


$./test.sh Zara Ali 10 Years Old
Zara
Ali
10
Years
Old

 

এক্সিট স্ট্যাটাস

$?চলক পূর্ববর্তী কম্যান্ডের এক্সিট স্ট্যাটাস নির্দেশ করে। এক্সিট স্ট্যাটাস হল একপ্রকারের নিউমেরিক্যাল মান যা কম্যান্ড সম্পন্ন হওয়ার সাথে সাথে আবর্তিত হয়।

নিচে সফল কম্যান্ডের উদাহরণ দেয়া হল,


$./test.sh Zara Ali
File Name : ./test.sh
First Parameter : Zara
Second Parameter : Ali
Quoted Values: Zara Ali
Quoted Values: Zara Ali
Total Number of Parameters : 2
$echo $?
0
$


 

ইউনিক্সঃ সেল ভেরিয়েবল বা চলক ব্যবহার করা (Unix – Using Shell Variables)

Huge Sell on Popular Electronics

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

 

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

 

চলকের নাম

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

নিচের উদাহরণ চলকের গ্রহণযোগ্য উদাহরণ


_ALI
TOKEN_A
VAR_1
VAR_2

 

আবার নিচের উদাহরণ চলকের গ্রহণযোগ্য উদাহরণ না।


2_VAR
-VARIABLE
VAR1-VAR2
VAR_A!

এক্ষেত্রে !,*, বা – ব্যবহার করা যাবে না বলেই এটি বৈধ উদাহরণ না। সেলের ক্ষেত্রে এগুলোর স্বতন্ত্র মানে দাঁড়ায়।

 

চলক বিবৃতি

চলককে নিচের কোড দ্বারা বিবৃত করা হয়।


variable_name=variable_value


 

উদাহরণস্বরূপ,


NAME="Zara Ali"


 

এই উদাহরণে NAME হল চলক আর "Zara Ali" হল এতে আরোপিত মান। এধরনের চলককে স্কেলার চলক বলে, একক সময়ে এগুলো একটি মাত্র মান ধারণ করে।

চলকে আমরা যে মান চাই সেল তাই সংরক্ষণের সুযোগ দেয়। যেমন,


VAR1="Zara Ali"
VAR2=100

 

মানে প্রবেশ করা

চলকে সংরক্ষিত মানে প্রবেশ করতে হলে নামের সাথে ( $) চিহ্ন ব্যবহার করতে হয়।

যেমন,


#!/bin/sh
NAME="Zara Ali"
echo $NAME

 

উপরের কোড যে ফলাফল দেখাবে তা হল,


ZaraAli


 

রিড অনলি চলক

readonly কম্যান্ড দ্বারা নির্ধারিত এই চলকের মান পরবর্তীতে আর পরিবর্তন করা যায় না।

 

যেমন নিচের উদাহরণে কোনও নামের মান পরিবর্তন করলে তা ভুল চলক হয়ে যাবে।


#!/bin/sh
NAME="Zara Ali"
readonly NAME
NAME="Qadiri"

 

যার ফলে যে ফলাফল হবে তা হল,


/bin/sh: NAME:This variableis read only.

 

আনসেটিং চলক

কোনও চলককে আনসেট করার পর সেটিতে আর কোনও মান আরোপ করা যায় না।

নিচের উদাহরণে unset কম্যান্ড ব্যবহার করে বিবৃত চলককে আনসেট করার সিনট্যাক্স ব্যবহার করা হয়,


 unset variable_name

 

নিচে এর একটি উদাহরণ দেয়া যাক,

#!/bin/sh


NAME="Zara Ali"
unset NAME
echo $NAME

 

চলকের প্রকারভেদ

সেল সক্রিয় থাকার সময় তিন প্রকারের চলক দেখা যায়,

  • লোকাল চলক,
  • এনভায়রনমেন্ট চলক,
  • সেল চলক।

 

ইউনিক্সঃ vi এডিটর টিউটোরিয়াল । UNIX VI Editor Tutorial

Huge Sell on Popular Electronics

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

 

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

  • এটি ইউনিক্স সংশ্লিষ্ট সব অনুসঙ্গে উপযোগী
  • এর প্রায়োগিক দিকগুলো বোর্ডের জন্য বিশেষ উপযোগী
  • এটির অনেক কম রিসোর্স লাগে
  • এটি অন্যান্য এডিটরের চেয়ে অনেক বেশি ইউজার ফ্রেন্ডলি

 

vi এডিটর শুরু করা

নিচের উপায়েগুলোর মাধ্যমে vi এডিটর ব্যবহার শুরু করা যায়,

কম্যান্ড
vi filename
vi -R filename
view filename

নতুন testfile নামক ফাইল তৈরির জন্য,


$vi testfile

 

এর ফলাফলে স্ক্রীনে আমরা যা দেখতে পাব তা হল,


|
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 ~
 "testfile" [New File]

 

অপারেশন মোড

vi এডিটর দ্বারা কাজ করার সময় আমরা দুটি মোড দেখতে পাব,

  • কম্যান্ড মোড
  • ইনসার্ট মোড

 

vi এডিটর থেকে বেরিয়ে আসতে

সেভ না করে বেরিয়ে আসতে q! কম্যান্ড, সেভ করতে w কম্যান্ড আর সেভ করে বেরিয়ে আসার জন্য সবচেয়ে সহজ কম্যান্ড ZZ কম্যান্ড আমরা ব্যবহার করতে পারি।

 

ফাইলের পরিসরে মুভ করা

নিচে কয়েকটি কম্যান্ড দেয়া হল যার মাধ্যমে কোনও ক্যারেক্টারকে আমরা ফাইলের পরিসরে মুভ করাতে পারি।

কম্যান্ড বর্ণনা
k কার্সরকে এক লাইন উপরে উঠায়
j কার্সরকে এক লাইন নিচে নামায়
h কার্সরকে এক ক্যারেক্টার বামে সরায়
l কার্সরকে এক ক্যারেক্টার ডানে সরায়

খেয়াল রাখতে হবে,

  • vi এডিটর কেস সেন্সেটিভ
  • কম্যান্ড প্রেফারেন্স একশন সংখ্যার উপর নির্ভর করে

ফাইল মুভ করানোর আরও কিছু কম্যান্ড আছে, যেগুলো মোটামুটিভাবে এগুলোঃ

কম্যান্ড
0 or |
$
w
b
(
)
E
{
}
[[
]]
n|
1G
G
nG
:n
fc
Fc
H
nH
M
L
nL
😡

 

কন্ট্রোল কম্যান্ড

কন্ট্রোল কী এর সাথে ব্যবহার করা যায় এমন কিছু কম্যান্ড নিচে দেয়া হল,

কম্যান্ড
CTRL+d
CTRL+d
CTRL+f
CTRL+u
CTRL+b
CTRL+e
CTRL+y
CTRL+u
CTRL+d
CTRL+b
CTRL+f
CTRL+I

 

ফাইল এডিট করা

ফাইল এডিট করতে ইনসার্ট মোডে থাকতে হয়। কম্যান্ড মোড থেকে ইনসার্ট মোডে যেতে কয়েকটি কম্যান্ড আছে,

কম্যান্ড
i
I
a
A
o
O

 

ক্যারেক্টার ডিলিট করতে

ওপেন করা ফাইল থেকে লাইন ও ক্যারেক্টার ডিলিট করতে প্রয়োজনীয় কম্যান্ডের লিস্ট নিচে দেয়া হল,

কম্যান্ড
x
X
dw
d^
d$
D
dd

 

চেঞ্জ কম্যান্ড

vi এডিটরে লাইন বা ক্যারেক্টার ডিলিট না করে পরিবর্তন করারও সুযোগ রয়েছে, এ সংশ্লিষ্ট কয়েকটি কম্যান্ড নিচে দেয়া হল,

কম্যান্ড
cc
cw
r
R
s
S

 

কপি ও পেস্ট কম্যান্ড

নিচের কমান্ডগুলো কপি ও পেস্ট করার জন্য প্রয়োজন হয়,

কম্যান্ড
yy
yw
p
P

 

এডভান্সড কম্যান্ড

vi এডিটরে আরও কিছু এডভান্সড কম্যান্ড এর ব্যবহারকে আরও ফলপ্রসূ করে তুলছে-

কম্যান্ড
J
<<
>>
~
^G
U
u
J
:f
:f filename
:w filename
:e filename
:cd dirname
:e #
:n
:p
:N
:r file
:nr file

 

ওয়ার্ড ও ক্যারেক্টার সার্চ করতে

সার্চের সময় দুটি কম্যান্ডে ব্যতিক্রম ঘটে,

  • / command ফাইলে ফরোয়ার্ড(ডাউনওয়ার্ড) সার্চ ও
  • ? command ফাইলে ব্যাকওয়ার্ড(আপওয়ার্ড) সার্চ সম্পাদন করে

সার্চ কম্যান্ডের কিছু অনুষঙ্গ নিচে দেয়া হল,

ক্যারেক্টার
^
.
*
$
[
<
>

 

সেট কম্যান্ড

সেট কম্যান্ডের জন্য কম্যান্ড মোডে ফিরে এসে নিচের যে কোনও কম্যান্ড ব্যবহার করে আমরা vi স্ক্রীনের চেহারা ও অনুভূতি পরিবর্তন করতে পারি,

কম্যান্ড
:set ic
:set ai
:set noai
:set nu
:set sw
:set ws
:set wm
:set ro
:set term
:set bf

 

কম্যান্ড রান করানো

vi এডিটরে প্রক্রিয়াধীন প্রকল্পকেও কম্যান্ড দ্বারা রান করানো যায়।

 

টেক্সট রিপ্লেস করা

নিচের কোড ব্যবহার করে শব্দ বা শব্দসমষ্টিকে রিপ্লেস করানো যায়,


:s/search/replace/g


 

 

মনে রাখা দরকার,

  • কম্যান্ড ব্যবহারের জন্য কম্যান্ড মোড ব্যবহার করা দরকার
  • সব কম্যান্ডের জন্য কেস(ক্যাপিটালাইজেশন) সচেতন থাকা দরকার
  • টেক্সট প্রবেশ করাতে ইনসার্ট মোডে থাকতে হবে

 

ইউনিক্সঃ সেল কি? (Unix – What is Shells?)

Huge Sell on Popular Electronics

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

 

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

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

 

সেল প্রম্পট

$ দ্বারা কম্যান্ড প্রম্পট বোঝায়, এটি সেলের মাধ্যমে প্রবর্তিত হয়ে থাকে। কীবোর্ডে এন্টার চাপার পর সেল ইনপুট পড়তে পারে। ইনপুটের প্রথম শব্দ দেখেই সেল কম্যান্ড সম্পর্কে ধারণা পেয়ে যায়। শব্দ মূলত নিরবচ্ছিন্ন ক্যারেকটারের সেট, স্পেস এবং ট্যাব যাদেরকে পৃথক করে রাখে।

নিচের উদাহরণে ডেট কম্যান্ডের উদাহরণ দেয়া হল,


$date
ThuJun2508:30:19 MST2009

কম্যান্ড প্রম্পটকে পরিবেশ চলকের মাধ্যমে কাস্টমাইজ করা যায়।

 

সেল টাইপ

ইউনিক্সে প্রধানত দুই ধরণের সেল টাইপ আছে,

  • বর্ন সেল
  • সি সেল

এদের মধ্যে বর্ন সেল আবার কয়েক রকমের হয়,

  • বর্ন সেল,
  • কর্ন সেল,
  • বর্ন এগেইন সেল,
  • পিওসিক্স সেল।

কয়েকটি সি টাইপ সেল হল,

  • সি সেল
  • টেনেক্স/টপস সি সেল

মূল ইউনিক্স সেল স্টিফেন বার্নের উদ্ভাবিত ধারণা, ৭০এর দশকের মাঝামাঝি তিনি নিউ জার্সির এটিএন্ড টি বেল ল্যাবে থাকার সময় এটি লেখেন।

 

সেল স্ক্রিপ্টস

সেল স্ক্রিপ্টস এর মূল ধারণা হল কম্যান্ডের লিস্ট, যা সম্পাদনার ক্রমানুসারে সজ্জিত থাকে। আদর্শ সেল স্ক্রিপ্টে ধাপ গুলো # চিহ্ন দ্বারা সজ্জিত থাকে।

 

পরীক্ষামূলক স্ক্রিপ্ট

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


 #!/bin/sh

 

এই ধরণের স্ক্রিপ্ট চালুর জন্য আগে সেবাং (shebang) লাইন এবং তার পর কম্যান্ড যোগ করতে হয়।


#!/bin/bashpwdls

 

সেল কম্যান্ড

স্ক্রিপ্টে নিম্নোক্ত ভাবে কম্যান্ড লেখা যায়,


#!/bin/bash
 
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
pwd
ls

উপরের উপাদানগুলো সংরক্ষণ করে স্ক্রিপ্টকে সম্পাদনযোগ্য করা হয়,


$chmod+x test.sh

 

এখন সম্পাদনযোগ্য সেল স্ক্রিপ্ট পাওয়া গেলো,


$./test.sh

 

যা থেকে নিম্নোক্ত ফলাফল পাওয়া যায়,


/home/amrood
index.htm  unix-basic_utilities.htm  unix-directories.htm  
test.sh    unix-communication.htm    unix-environment.htm

বর্তমান ডিরেক্টরিতে থাকা কোনও প্রোগ্রাম সম্পাদনের জন্য ./program_name ব্যবহার করা হয়।

 

এক্সটেনডেড সেল স্ক্রিপ্ট

নিচের কম্যান্ড read কম্যান্ড ব্যবহার করে যা কীবোর্ড থেকে ইনপুট নেয় এবং PERSON চলকের মান বিবৃত করে ও STDOUT এ মুদ্রিত করে।


#!/bin/sh
 
# Author : Zara Ali
# Copyright (c) Tutorialspoint.com
# Script follows here:
 
echo "What is your name?"
read PERSON
echo "Hello, $PERSON"

 

স্ক্রিপ্টের পরীক্ষামূলক সম্পাদন,


$./test.sh
What is your name?
Zara Ali
Hello, Zara Ali
$

 

ইউনিক্স – নেটওয়ার্ক কমিউনিকেশন অনুষঙ্গ (Unix – Network Communication Utilities)

Huge Sell on Popular Electronics

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

 

বণ্টনকৃত পরিবেশে কাজ করার সময় রিমোট ইউজারদের সাথে যোগাযোগ করতে অতে পারে, রিমোট ইউনিক্স মেশিনেও প্রবেশযোগ্যতা থাকতে হবে।

নেটওয়ার্কিংকৃত, বণ্টনকৃত পরিবেশে কাজ করছে এমন ইউজারদের জন্য প্রয়োজনীয় হতে পারে এমন বেশকিছু ইউনিক্স অনুষঙ্গ বা ইউটিলিটি আছে, এই টিউটোরিয়ালে এমন কয়েকটি নিয়ে আমরা কাজ করব।

 

পিং ইউটিলিটি

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

  • হার্ডওয়ার ও সফটওয়ারের সমস্যা নির্ণয় ও পৃথক করা,
  • বিভিন্ন নেটওয়ার্ক ও ফরেন হোষ্টের স্ট্যাটাস নির্ণয় করা,
  • নেটওয়ার্ক টেস্ট, পরিমাপ ও নিয়ন্ত্রণ করা।

পিং কম্যান্ড ব্যবহারের জন্য যে সিনট্যাক্স ব্যবহার করতে হয় তা হল,


$ping hostnameor ip-address


 

এই কম্যান্ড প্রতি সেকেন্ডে একটি করে রেসপন্স প্রিন্ট করা শুরু করবে। এটি থামাতে CNTRL + C কী চাপতে হয়।

নেটওয়ার্কে পাওয়া হোষ্টের প্রাপ্যতা জানতে নিচের উদাহরণ সাহায্য করবে,


$ping google.com
PING google.com (74.125.67.100) 56(84) bytes of data.
64 bytes from 74.125.67.100: icmp_seq=1 ttl=54 time=39.4 ms
64 bytes from 74.125.67.100: icmp_seq=2 ttl=54 time=39.9 ms
64 bytes from 74.125.67.100: icmp_seq=3 ttl=54 time=39.3 ms
64 bytes from 74.125.67.100: icmp_seq=4 ttl=54 time=39.1 ms
64 bytes from 74.125.67.100: icmp_seq=5 ttl=54 time=38.8 ms
--- google.com ping statistics ---
22 packets transmitted, 22 received, 0% packet loss, time 21017ms
rtt min/avg/max/mdev = 38.867/39.334/39.900/0.396 ms
$

 

হোষ্ট পাওয়া না গেলে এটি যে ধরণের ব্যবহার করবে তা হল,


$ping giiiiiigle.com
ping: unknown host giiiiigle.com
$

 

এফটিপি ইউটিলিটি

এফটিপি বা ফাইল ট্রান্সফার প্রটোকল এক কম্পিউটার থেকে অন্য কম্পিউটারে ফাইল আপলোড বা ডাউনলোড করতে সাহায্য করে।

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

  • রিমোট হোষ্টে সংযুক্ত থাকা ও লগইন করা,
  • ডিরেক্টরি নেভিগেট করা,
  • ডিরেক্টরি কন্টেন্ট তালিকাবদ্ধ করা,
  • ফাইল রাখা ও পাওয়া,
  • ascii, ebcdic বা binary ফাইল ট্রান্সফার করা।

পিং কম্যান্ড ব্যবহারের সিনট্যাক্স হল,


 $ftp hostnameor ip-address

 

প্রয়োজনীয় কম্যান্ডের কয়েকটি নিচে লিপিবদ্ধ হল।

 

কম্যান্ড বর্ণনা
put filename লোকাল মেশিন থেকে রিমোট মেশিনে ফাইলনেম আপলোড করা
get filename রিমোট মেশিন থেকে লোকাল মেশিনে ফাইলনেম ডাউনলোড করা
mput file list লোকাল মেশিন থেকে রিমোট মেশিনে একাধিক ফাইল আপলোড করা
mget file list রিমোট মেশিন থেকে লোকাল মেশিনে একাধিক ফাইল ডাউনলোড করা
prompt off প্রম্পট বন্ধ করা
prompt on প্রম্পট চালু করা
dir রিমোট মেশিনের কারেন্ট ডিরেক্টরিতে থাকা সব ফাইল তালিকাবদ্ধ করা
cd dirname ডিরেক্টরিকে রিমোট মেশিনের dirname তে পরিণত করা
lcd dirname ডিরেক্টরিকে লোকাল মেশিনের dirname তে পরিণত করা
quit কারেন্ট লগইন থেকে লগআউট করা

 

কিছু কম্যান্ডের উদাহরণ নিচে দেয়া হল,


$ftp amrood.com
Connected to amrood.com.
220 amrood.com FTP server (Ver 4.9 Thu Sep 2 20:35:07 CDT 2009)
Name (amrood.com:amrood): amrood
331 Password required for amrood.
Password:
230 User amrood logged in.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 1464
drwxr-sr-x   3 amrood   group       1024 Mar 11 20:04 Mail
drwxr-sr-x   2 amrood   group       1536 Mar  3 18:07 Misc
drwxr-sr-x   5 amrood   group        512 Dec  7 10:59 OldStuff
drwxr-sr-x   2 amrood   group       1024 Mar 11 15:24 bin
drwxr-sr-x   5 amrood   group       3072 Mar 13 16:10 mpl
-rw-r--r--   1 amrood   group     209671 Mar 15 10:57 myfile.out
drwxr-sr-x   3 amrood   group        512 Jan  5 13:32 public
drwxr-sr-x   3 amrood   group        512 Feb 10 10:17 pvm3
226 Transfer complete.
ftp> cd mpl
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening data connection for /bin/ls.
total 7320
-rw-r--r--   1 amrood   group       1630 Aug  8 1994  dboard.f
-rw-r-----   1 amrood   group       4340 Jul 17 1994  vttest.c
-rwxr-xr-x   1 amrood   group     525574 Feb 15 11:52 wave_shift
-rw-r--r--   1 amrood   group       1648 Aug  5 1994  wide.list
-rwxr-xr-x   1 amrood   group       4019 Feb 14 16:26 fix.c
226 Transfer complete.
ftp> get wave_shift
200 PORT command successful.
150 Opening data connection for wave_shift (525574 bytes).
226 Transfer complete.
528454 bytes received in 1.296 seconds (398.1 Kbytes/s)
ftp> quit
221 Goodbye.
$

 

টেলনেট ইউটিলিটি

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


C:>telnet amrood.com
Trying...
Connected to amrood.com.
Escape character is '^]'.
 
login: amrood
amrood's Password: 
*****************************************************
*                                                   *
*                                                   *
*    WELCOME TO AMROOD.COM                          *
*                                                   *
*                                                   *
*****************************************************
 
Last unsuccessful login: Fri Mar  3 12:01:09 IST 2009
Last login: Wed Mar  8 18:33:27 IST 2009 on pts/10
 
   {  do your work }
 
$ logout
Connection closed.
C:>

 

ফিঙ্গার ইউটিলিটি

ফিঙ্গার কম্যান্ড প্রদত্ত হোষ্টে ব্যবহারকারীর তথ্য প্রদর্শন করে। ফিঙ্গার কম্যান্ডের সিনট্যাক্স এরকম,

লোকাল মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

লোকাল মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে


$ finger amrood
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

রিমোট মেশিনে লগইনকৃত সব ব্যবহারকারীদের ক্ষেত্রে,


$ finger @avtar.com
Login     Name       Tty      Idle  Login Time   Office
amrood               pts/0          Jun 25 08:03 (62.61.164.115)

 

রিমোট মেশিনের নির্দিষ্ট কোনও ব্যবহারকারীর ক্ষেত্রে,


$ finger amrood@avtar.com
Login: amrood                           Name: (null)
Directory: /home/amrood                 Shell: /bin/bash
On since Thu Jun 25 08:03 (MST) on pts/0 from 62.61.164.115
No mail.
No Plan.

 

ইউনিক্স প্রসেস ম্যানেজমেন্ট (Unix – Processes Management)

Huge Sell on Popular Electronics

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

 

ইউনিক্স সিস্টেমে প্রোগ্রাম রান করানোর সময় সিস্টেম প্রোগ্রামের উপযুক্ত পরিবেশ তৈরি করে নেয়। অপারেটিং সিস্টেম pid বা প্রসেস আইডি দ্বারা প্রসেসকে ট্র্যাক করে।

 

প্রসেস শুরু করা

প্রসেস শুরু বা রান করানোর সময় দুই ভাবে আমরা এটি করতে পারি,

  • ফোরগ্রাউন্ড প্রক্রিয়ায় ও
  • ব্যাকগ্রাউন্ড প্রক্রিয়ায়

 

ফোরগ্রাউন্ড প্রক্রিয়া

ফোরগ্রাউন্ড প্রক্রিয়ায় সব ফাইলকে ডিরেক্টরিতে তালিকাবদ্ধ দেখতে চাইলে যে কম্যান্ড ব্যবহার করতে হবে তা হল,


$ls ch*.doc

 

.doc দ্বারা শেষ হওয়া নামের সব ফাইল এখানে দেখাবে,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc

 

ব্যাকগ্রাউন্ড প্রক্রিয়া

এটি শুরু করার জন্য কমান্ডে ( &) চিহ্ন ব্যবহার করা হয়,


$ls ch*.doc
&

 

ch দ্বারা শুরু ও .doc দ্বারা শেষ এমন নামের ফাইলের জন্য,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc


 

এবার এন্টার চাপলে আমরা দেখতে পাব,


[1]  +  Done                 ls ch*.doc&
$

 

রানিং প্রক্রিয়া লিস্টিং করা

ps কম্যান্ড ব্যবহার করে আমরা এটি করতে পারব,


$ps
PID       TTY      TIME        CMD
18358     ttyp3    00:00:00    sh
18361     ttyp3    00:01:31    abiword
18789     ttyp3    00:00:00    ps

 

ps এর জন্য সবচেয়ে বেশি ব্যবহৃত ফ্ল্যাগ হল –f,


$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f

 

–f কম্যান্ডের অধীনে থাকা সব ফিল্ডের তালিকা,

 

ফিল্ডের তালিকা
UID
PID
PPID
C
STIME
TTY
TIME
CMD

 

ps কম্যান্ডের সাথে ব্যবহৃত হয় এমন আরও কিছু অপশন হল,

 

অপশন
-a
-x
-u
-e

 

প্রসেস থামাতে

কীবোর্ড থেকে CTRL + C চেপে বা ps কম্যান্ড ব্যবহারের পর kill কম্যান্ড ব্যবহার করে প্রসেস থামানো যায়,


$ps -f
UID      PID  PPID C STIME    TTY   TIME CMD
amrood   6738 3662 0 10:23:03 pts/6 0:00 first_one
amrood   6739 3662 0 10:22:54 pts/6 0:00 second_one
amrood   3662 3657 0 08:10:53 pts/6 0:00 -ksh
amrood   6892 3662 4 10:51:50 pts/6 0:00 ps -f
$kill 6738
Terminated

 

যেমন, নিচের উদাহরণে kill -9 কম্যান্ড ব্যবহার করা হয়েছে।


$kill-96738
Terminated

 

কয়েক ধরণের প্রসেস যা ইউনিক্সে অন্তর্ভুক্ত হতে পারে এদের নিচে দেয়া হল,

  • প্যারেন্ট ও চাইল্ড প্রসেস,
  • জম্বি এবং অরফান প্রসেস,
  • ডেমন প্রসেস

 

টপ কম্যান্ড

বিভিন্ন বিষয়ের উপর ভিত্তি করে প্রসেস প্রদর্শনের জন্য টপ কম্যান্ড খুব সুবিধাজনক।

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

 

ইউনিক্সঃ পাইপ এবং ফিল্টার (Unix – Pipes and Filters)

Huge Sell on Popular Electronics

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

 

ইউনিক্সে দুটি কম্যান্ড এমনভাবে সংযুক্ত করা যায় যাতে এক প্রোগ্রামের আউটপুট অন্য প্রোগ্রামের ইনপুট হিসেবে ব্যবহৃত হতে পারে। পাইপ থেকে দুই বা ততোধিক প্রোগ্রাম এভাবে সংযুক্ত হতে পারে।

কম্যান্ড লাইনে দুটি কম্যান্ডের মাঝে উল্লম্ব (|) কম্যান্ড ব্যবহার করে পাইপ করা যায়। এক প্রোগ্রাম অন্য প্রোগ্রামের থেকে ইনপুট

নিয়ে আদর্শ আউটপুট দেখালে তাকে filter হিসেবে দেখানো হয়।

 

গ্রেপ কম্যান্ড

এটি নির্দিষ্ট লাইন প্যাটার্নের সন্ধান করে, এর সিনট্যাক্স হল,


$grep pattern file(s)

 

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


$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

গ্রেপ কম্যান্ডের সাথে কাজ করে এমন কয়েকটি অপশন,

 

অপশন
-v
-n
-l
-c
-i

 

কেস ইনটেনসিভ সার্চের জন্য -i অপশন ব্যবহার করতে পারি,


$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

 

সর্ট কম্যান্ড

সর্ট কম্যান্ড টেক্সটের লাইনকে এলফাবেটিকেলি বা নিউমেরিকালি সজ্জিত করে,


$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java
Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$

 

সর্টিং কন্ট্রোলের জন্য কিছু অপশন আছে,

অপশন
-n
-r
-f
+x

 

নিচের পাইপ ls, grep, এবং sort এসব কম্যান্ডের সমন্বয়ে হয়ে থাকে,


$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$

pg ও অন্যান্য কম্যান্ড

লং ডিরেক্টরি লিস্টিংকে সহজ সর্টেড লিস্টিং করতে more কম্যান্ড দ্বারা আউটপুটকে পাইপ করাতে হয়,


$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
        .
        .
        .
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)

এরপর ফাইলসাইজ দ্বারা সর্টেড টেক্সটে স্ক্রিন ফিলআপ হয়ে যাবে, এরপর অন্য যেকোনো প্রোগ্রামের জন্য কম্যান্ড লিস্টেড করা যাবে ইউনিক্স ব্যবহার করে।

 

ইউনিক্স বেসিক ইউটিলিটিঃ প্রিন্টিং, ইমেইল (Unix Basic Utility, Printing, Email)

Huge Sell on Popular Electronics

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

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

ফাইল প্রিন্ট করা

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

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

pr কম্যান্ড

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


pr option(s) filename(s)


pr কম্যান্ড স্ক্রিনে বা প্রিন্টেড কপিতে পরিবর্তন ও ফরম্যাটিং করে থাকে, এটি মূল ফাইলে কোনও পরিবর্তন সাধন করে না।
কিছু pr কম্যান্ড অপশন নিচের ছকে দেখানো হল।

অপশন বর্ণনা
-k আউটপুটে k কলাম গঠন করে
-d আউটপুটে ডবল স্পেস(সবpr ভার্সনে নয়)
-h "header" পরবর্তী আইটেমকে রিপোর্টার হিডার হিসেবে নেয়
-t টপ ও বটম মার্জিন ও হিডার বাদ দেয়
-l PAGE_LENGTH পেজলেন্থ নির্ধারণ করে PAGE_LENGTH (66) lines. টেক্সটের ডিফল্ট লাইন নাম্বার ৫৬
-o MARGIN মার্জিন স্পেস দ্বারা প্রতি লাইনকে অফসেট করানো।
-w PAGE_WIDTH পেজের উইডথ নির্ধারণ করে PAGE_WIDTH (72) characters মাল্টিপল টেক্সট কলাম আউটপুটের জন্য

উদাহরণস্বরূপ, food নামের একটি স্যাম্পল ফাইলের জন্য,


 $cat food
 Sweet Tooth
 Bangkok Wok
 Mandalay
 Afghani Cuisine
 Isle of Java
 Big Apple Deli
 Sushi and Sashimi
 Tio Pepe's Peppers
 ........
 $

Restaurants হিডারে pr কম্যান্ড ব্যবহার করে দুই কলামে রিপোর্ট লিখলে,


$pr -2 -h "Restaurants" food
Nov  7  9:58 1997  Restaurants   Page 1

Sweet Tooth              Isle of Java
Bangkok Wok              Big Apple Deli
Mandalay                 Sushi and Sashimi
Afghani Cuisine          Tio Pepe's Peppers
........
$


 

lp বা lpr কমান্ড

lp বা lpr কমান্ড কোনও ফাইল স্ক্রিনের পরিবর্তে কাগজে প্রিন্টের জন্য ব্যবহৃত হয়। ডিফল্ট প্রিন্টারে কোনও নির্দিষ্ট ফাইল প্রিন্ট করার জন্য lp বা lpr কমান্ড ব্যবহার করতে হয় যেমন food নামের স্যাম্পল ফাইলের জন্য


$lp food
request id is laserp-525 (1 file)
$


lpstat ও lpq কম্যান্ড

lpstat কম্যান্ড নির্দেশ করে প্রিন্টারে কোন কোন ডাটা সারিবদ্ধ আছে যেমন রিকুয়েস্ট আইডি, ওউনার, ফাইল সাইজ এসব। নিজের আউটপুট রিকোয়েস্ট ছাড়া অন্য সব রিকোয়েস্ট দেখতে lpstat –o কম্যান্ড ব্যবহার করা যায়।


$lpstat -o
laserp-573 john  128865 Nov 7 11:27 on laserp
laserp-574 grace  82744 Nov 7 11:28
laserp-575 john   23347 Nov 7 11:35
$


lpq, lpstat –o থেকে একটু ভিন্ন ধরণের তথ্য দেয়,


$lpq
laserp is ready and printing
Rank   Owner      Job Files                 Total Size
active john       573 report.ps             128865 bytes
1st    grace      574 ch03.ps ch04.ps       82744 bytes
2nd    john       575 standard input        23347 bytes
$


এখানে প্রথম লাইন প্রিন্টার স্ট্যাটাস বুঝায়, প্রিন্টার অকেজো বা কাগজ না থাকলে প্রথম লাইনে অন্য ম্যাসেজ আসবে।

cancel ও lprm কম্যান্ড

cancel কম্যান্ড lp কম্যান্ড থেকে প্রিন্টিং রিকোয়েস্ট বাদ দেয়, lprm lpr রিকোয়েস্ট বাদ দেয়।


$cancel laserp-575
 request "laserp-575" cancelled
 $

প্রিন্ট হচ্ছে এমন রিকোয়েস্ট বাতিল করতে শুধু নিচের কোড প্রবেশ করাতে হবে,


$cancel laserp
 request "laserp-573" cancelled
 $

Lprm কম্যান্ড চলমান রিকোয়েস্ট বাতিলের জন্য প্রয়োগ করা হয়,


$lprm 575
 dfA575diamond dequeued
 cfA575diamond dequeued
 $

 

 

ইমেইল প্রেরণ

ইমেইল প্রেরণের সিনট্যাক্স হল,


$mail [-s subject] [-c cc-addr] [-b bcc-addr] to-addr

মেইল কম্যান্ডের গুরুত্বপূর্ণ অপশনগুলো হল,

অপশন বর্ণনা
-s কম্যান্ড লাইনে বিষয় নির্ধারণ
-c ইউজার লিস্ট কার্বন কপি করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে
-b লিস্টে ব্লাইন্ড কার্বন কপি প্রেরণ করা। কমা দ্বারা আলাদা করা তালিকা হতে হবে

যেমন, admin@yahoo.com তে টেস্ট ম্যাসেজ পাঠাতে কোড,


$mail -s "Test Message" admin@yahoo.com

লাইনের শুরুতে "control-D" ব্যবহার করে ম্যাসেজ লিখতে হবে, এটি বন্ধ করতে শুধু dot (.) নিচের মত করে লিখতে হবে,


Hi,
This is a test
.
Cc:

নিচের কোড ব্যবহার করে সম্পূর্ণ ফাইল প্রেরণ করা যায়,


$mail -s "Report 05/06/07" admin@yahoo.com < demo.txt

ইনকামিং মেইল চেক করতে ইউনিক্স সিস্টেমে নিচের কোড ব্যবহার করতে হয়,


 $mail
 no email

 

ইউনিক্স – এনভায়রনমেন্ট (Unix – Environment)

Huge Sell on Popular Electronics

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

 

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

চলক হল ক্যারেক্টার স্ট্রিং যার উপর আমরা মান আরোপ করি, যা সংখ্যা হতে পারে, টেক্সট, ফাইলনেম, ডিভাইস অথবা অন্য কোনও রকমের ডাটাও হতে পারে।

যেমন, TEST নামের চলক সেট করে তাতে echo কম্যান্ড ব্যবহার করে মান আরোপ করতে,


$TEST="Unix Programming"
$echo $TEST
Unix Programming

 

সিস্টেমে লগইনের সময় এই সংশ্লিষ্ট দুটি প্রক্রিয়া হয়,

  • /etc/profile
  • profile

এই প্রক্রিয়া যে কর্মসূচি অনুসরণ করে তা হল,

  • সেল চেক করে /etc/profile ফাইল কোথায় আছে
  • এটিকে পাওয়া গেলে সেল এটিকে পড়ে। না পাওয়া গেলে স্কিপ করে যায়, কোনও এরর ম্যাসেজ দেখানো হয় না।
  • সেল চেক করে হোম ডিরেক্টরির কোথায় .profile ফাইল আছে।
  • এটিকে পাওয়া গেলে সেল এটিকেও পড়ে। না পাওয়া গেলে এটিও স্কিপ করে যায়, কোনও এরর ম্যাসেজ দেখানো হয় না।

যখন দুটি ফাইলই পড়া হয়ে যায় তখন সিস্টেম এই প্রম্পট দেখায়,


$

এটি সেই প্রম্পট যেটিতে কোনও কম্যান্ড প্রবেশ করিয়ে সম্পাদন করানো যায়।

.profile ফাইল

ইউনিক্স মেশিনের এডমিন /etc/profile ফাইলের দেখাশোনা করে, আর .profile ফাইল ব্যবহারকারীর দায়িত্বে থাকে, এই ফাইলে যত খুশি সেল কাস্টমাইজেশন তথ্য প্রবেশ করানো যায়, সর্বনিম্ন যে তথ্যগুলো কনফিগার করতেই হবে তা হল,

  • যে টার্মিনাল ব্যবহার করছি তার টাইপ
  • কম্যান্ডের জন্য ডিরেক্টরির লিস্ট
  • টার্মিনালে প্রভাব বিস্তারকারী চলকের তালিকা

 

টার্মিনাল টাইপ ঠিক করা

বেশিরভাগ ইউজার টার্মিনালকে সবচেয়ে কম কমন ডিনমিনেটরে সেট করেন,


$TERM=vt100
$

 

পাথ ঠিক করা

পাথকে নিচের কমান্ডে সেট করতে হয়,


$PATH=/bin:/usr/bin
$

 

 

সেলে আবেদনকৃত কোনও কম্যান্ড যদি পাথ চলক নির্দেশিত ডিরেক্টরিতে না পাওয়া যায় তাহলে নিচের মত করে ম্যাসেজ দেখাবে,


$hellohello:not found
$

 

PS1 আর PS2 চলক

সেলের কম্যান্ড প্রম্পট PS1চলকে সংরক্ষিত থাকে,


$PS1='=>'
=>
=>
=>

PS1 এর মান সেট করতে নিচের কম্যান্ড ব্যবহার করা যায়,

 


=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$

 

PS1 এর ভ্যালু আর্গুমেন্ট হিসেবে ব্যবহার করা যায় এমন কিছু এস্কেপ সিকোয়েন্স নিচে তালিকাবদ্ধ করা হল।

 

এস্কেপ সিকোয়েন্স
\t
\d
\n
\s
\W
\w
\u
\h
\#
\$

 

অসমাপ্ত কম্যান্ডের জন্য সেকেন্ডারি প্রম্পট ব্যবহৃত হয়, এর ডিফল্ট সাইন > যা PS2 সেল চলকের পুনর্বিন্যাসের মাধ্যমে পরিবর্তিত হতে পারে,


$ echo "this is a
> test"
this is a
test
$

 

পরিবর্তিত প্রম্পটের দ্বারা PS2কে পুনঃবিবৃত করার উদাহরণ,


$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$

পরিবেশ চলক

গুরুত্বপূর্ণ পরিবেশ চলকের কয়েকটির তালিকা এখানে দেয়া হল,

চলক
DISPLAY
HOME
IFS
LANG
LD_LIBRARY_PATH
PATH
PWD
RANDOM
SHLVL
TERM
TZ
UID

 

কিছু পরিবেশ চলকের উদাহরণ,


$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$

 

ইউনিক্সঃ ফাইল পারমিশন ও এক্সেস মোড (Unix – File Permission / Access Modes)

Huge Sell on Popular Electronics

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

 

ফাইল ওনারশিপ ইউনিক্সের একটি গুরুত্বপূর্ণ উপাদান যা ফাইল ষ্টোরের নিরাপদ উপায় হিসেবে প্রয়োজন। ইউনিক্সের প্রত্যেকটি ফাইলে যে এট্রিবিউটগুলো থাকে সেগুলো হল,

  • ওনারের পারমিশন,
  • গ্রুপ পারমিশন,
  • অন্যান্য পারমিশন

 

পারমিশন ইনডিকেটর

ls -l কম্যান্ড ব্যবহার করে পারমিশন সংক্রান্ত অনেক তথ্য দেখা যায়,


$ls -l /home/amrood
-rwxr-xr-- 1 amrood   users 1024 Nov 2 00:10 myfile
drwxr-xr--- 1 amrood   users 1024 Nov 2 00:10 mydir

 

read (r), write (w), execute (x) এই অর্ডার ফলো করে

  • প্রথম তিন ক্যারেক্টার ফাইল ওনারের পারমিশন,
  • দ্বিতীয় তিন ক্যারেক্টার গ্রুপ পারমিশন আর
  • শেষ তিন ক্যারেক্টার বাকি সব পারমিশন

 

ফাইল এক্সেস মোড

ইউনিক্সে পারমিশনের বিল্ডিং ব্লক হল এই তিনটি,

  • লেখা
  • পড়া
  • এক্সেকিউট করা

 

ডিরেক্টরি এক্সেস মোড

অন্যান্য ফাইলের মত এদেরও বিল্ডিং ব্লক এগুলোঃ

  • লেখা
  • পড়া
  • এক্সেকিউট করা

যদিও এদের ক্ষেত্রে কিছু মৌলিক পার্থক্য আছে।

 

পারমিশন চেঞ্জ করা

দুটি উপায়ে chmod কম্যান্ড ব্যবহার করে এটি করা যায়,

সিম্বোলিক মোডে chmod কম্যান্ড ব্যবহার করেঃ টেস্টফাইলে ls -1 ব্যবহার করে ফাইলের পারমিশন,


$ls-l testfile
-rwxrwxr--1 amrood   users1024Nov200:10 testfile

 

যার ফলে পারমিশন চেঞ্জ দেখতে পাব,


$chmod o+wx testfile
$ls -l testfile
-rwxrwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod u-x testfile
$ls -l testfile
-rw-rwxrwx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

 

সিঙ্গেল লাইনের কম্যান্ড সমন্বয়ের ক্ষেত্রে,


$chmod o+wx,u-x,g=rx testfile
$ls -l testfile
-rw-r-xrwx  1 amrood   users 1024  Nov 2 00:10  testfile

 

এবসলিউট পারমিশন হিসেবে chmod কম্যান্ড ব্যবহার করে

প্রত্যেকটি পারমিশন একটি করে এসাইনড ভ্যালু ধারণ করে, এগুলো মোটামুটি এরকম,

 

নাম্বার অক্টাল পারমিশন রিপ্রেজেন্টেশন রেফারেন্স
0 No permission ---
1 Execute permission --x
2 Write permission -w-
3 Execute and write permission: 1 (execute) + 2 (write) = 3 -wx
4 Read permission r--
5 Read and execute permission: 4 (read) + 1 (execute) = 5 r-x
6 Read and write permission: 4 (read) + 2 (write) = 6 rw-
7 All permissions: 4 (read) + 2 (write) + 1 (execute) = 7 rwx

 

টেস্ট ফাইল ব্যবহারের উদাহরণ,


$ls -l testfile
-rwxrwxr--  1 amrood   users 1024  Nov 2 00:10  testfile

 

এরফলে আমরা যে পারমিশন চেঞ্জ দেখতে পাব,


$ chmod 755 testfile
$ls -l testfile
-rwxr-xr-x  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 743 testfile
$ls -l testfile
-rwxr---wx  1 amrood   users 1024  Nov 2 00:10  testfile
$chmod 043 testfile
$ls -l testfile
----r---wx  1 amrood   users 1024  Nov 2 00:10  testfile

 

ওনার পরিবর্তন

chown কম্যান্ড ব্যবহার করে ফাইলের ওনারশিপ পরিবর্তন করতে,


$ chown user filelist

 

উদাহরণ,


$ chown amrood testfile
$

 

এটি প্রদত্ত ফাইলের ওনারকে amrood নামে পরিবর্তিত করে।

 

গ্রুপ ওনার পরিবর্তন

এটির জন্য যে সিনট্যাক্স ব্যবহার করতে হয়,


$ chgrpgroup filelist

 

উদাহরণ,


$ chgrp special testfile
$

যেটিতে প্রদত্ত ফাইলের গ্রুপ special গ্রুপে পরিবর্তিত হয়ে যায়।

 

SUID ও SGID ফাইল পারমিশনঃ

এধরনের কম্যান্ড ব্যবহার করে এ ধরণের পারমিশন সম্পর্কে জানা যায়,


$ ls -l /usr/bin/passwd
-r-sr-xr-x  1   root   bin  19031 Feb 7 13:47  /usr/bin/passwd*
$

এখানে SUID বিট সেট আর এর কম্যান্ড রুট থেকে আসে।

 

যেকোনো ডিরেক্টরির জন্য SUID ও SGID bits সেট করতে নিচের সিনট্যাক্স প্রয়োগ করা যেতে পারে,


$ chmod ug+s dirname
$ ls -l
drwsr-sr-x 2 root root  4096 Jun 19 06:45 dirname
$

 

ইউনিক্সঃ ডিরেক্টরি ব্যবস্থাপনা (Unix folder/directory Management)

Huge Sell on Popular Electronics

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

 

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

ফাইল ও ডিরেক্টরি ব্যবস্থাপনার জন্য ইউনিক্স একটি ক্রমবিন্যাসগত কাঠামো ব্যবহার করে। এই কাঠামোকে ডিরেক্টরি ট্রি বলে। এই ট্রিতে সিঙ্গেল রুট নড, স্ল্যাস ক্যারেক্টার ( /) ও অন্যান্য ডিরেক্টরি থাকে যা নিয়ে আমরা নিচে আলোচনা করব।

হোম ডিরেক্টরি

প্রথমে লগইন করার সময় আমরা যে ডিরেক্টরি ব্যবহার করি সেটি হোম ডিরেক্টরি, নিচের কম্যান্ড ব্যবহার করে যেকোনো সময় হোম ডিরেক্টরিতে যাওয়া যায়


 $cd ~
 $

 

এখানে ~ চিহ্ন হোম ডিরেক্টরি নির্দেশক। অন্য কোনও ইউজারনেম ডিরেক্টরিতে যেতে চাইলে,


 $cd ~username
 $

 

সর্বশেষ ডিরেক্টরিতে যেতে চাইলে,


 $cd -
 $

 

পরম/আপেক্ষিক পাথনেম

ডিরেক্টরিগুলো ক্রমবিন্যাসে সজ্জিত, উপরে (/) চিহ্ন নিয়ে। ক্রমবিন্যাসে সজ্জিত যেকোনো ফাইল এর পাথনেম সহ বিবৃত হয়। এবসলিউট ফাইলনেমের উদাহরণ,


 /etc/passwd
 /users/sjones/chem/notes
 /dev/rdsk/Os3

 

কারেন্ট ওয়ার্কিং ডিরেক্টরিতে পাথনেম আপেক্ষিকও হতে পারে। এক্ষেত্রে স্ল্যাস ক্যারেক্টার ( /) সহ শুরু হবে না। এরকম কিছু পাথনেম নিচের মত হতে পারে,


 chem/notes
 personal/res

 

ক্রমবিন্যাসে ঠিক কোথায় অবস্থান করে কাজ করছি তা জানতে কারেন্ট ওয়ার্কিং ডিরেক্টরি প্রিন্ট করতে pwd কম্যান্ড প্রবেশ করাতে হবে।


 $pwd
 /user0/home/amrood
 $

 

লিস্টিং ডিরেক্টরি

ডিরেক্টরিতে ফাইল লিপিবদ্ধ করতে নিচের সিনট্যাক্স ব্যবহৃত হয়,


$ls dirname

 

নিচের উদাহরণে /usr/local ডিরেক্টরিতে লিপিবদ্ধ সব ফাইল দেখানো হল,


X11       bin          gimp       jikes       sbin
ace       doc          include    lib         share
atalk     etc          info       man         ami

 

ডিরেক্টরি তৈরি করা

নিচের কম্যান্ডগুলোর মাধ্যমে ডিরেক্টরি তৈরি করা যায়,


$mkdir dirname

 

যেমন,


 $mkdir mydir
 $

 

এটি কারেন্ট ডিরেক্টরিতে mydir ডিরেক্টরি তৈরি করে। আরেকটি উদাহরণ হল,


$mkdir /tmp/test-dir
$


 

এটি /tmp ডিরেক্টরিতে test-dir ডিরেক্টরি তৈরি করে, এখানে mkdir কম্যান্ড কোনও আউটপুট দেখাবে না। কম্যান্ড লাইনে একটির বেশি ডিরেক্টরি দিলে mkdir প্রত্যেকটি ডিরেক্টরি তৈরি করবে।


$mkdir docs pub
 $

 

প্যারেন্ট ডিরেক্টরি তৈরি করা

ডিরেক্টরি তৈরির সময় প্যারেন্ট ডিরেক্টরি না থাকলে যে এরর ম্যাসেজ আসবে তা হল,


 $mkdir /tmp/amrood/test
 mkdir: Failed to make directory "/tmp/amrood/test";
 No such file or directory
 $

 

তখন mkdir কম্যান্ডে -p অপশন দ্বারা স্পেসিফাই করা যাবে।


$mkdir -p /tmp/amrood/test
 $

 

ডিরেক্টরি মুছে ফেলা

rmdir কম্যান্ড ব্যবহার করে ডিরেক্টরি মুছে ফেলা যায়,


$rmdir dirname
 $

 

একসাথে অনেকগুলো ডিরেক্টরি তৈরি করতে,


$rmdir dirname1 dirname2 dirname3
 $

 

ডিরেক্টরি পরিবর্তন করা

cd কম্যান্ড ব্যবহার করে ডিরেক্টরি পরিবর্তন করা যায়।


 $cd dirname
 $

 

এখানে dirnameহল সেই ডিরেক্টরির নাম যা আমরা পরিবর্তন করতে চাচ্ছি।


$cd /usr/local/bin
 $

 

এটি directory /usr/local/binতে পরিবর্তন। রিলেটিভ পাথ ব্যবহার করে directory /usr/home/amrood তে পরিবর্তনের জন্য,


$cd ../../home/amrood
 $

 

ডিরেক্টরিকে রিনেম করা

ডিরেক্টরিকে রিনেম করার জন্য mv (move) কম্যান্ড ব্যবহার করা হয় যেমন,


$mv olddir newdir
 $

 

mydir ডিরেক্টরিকে yourdir ডিরেক্টরিতে রিনেম করার জন্য,


$mv mydir yourdir
 $

 

. (dot) ও .. (dot dot) ডিরেক্টরি

একটি কারেন্ট ডিরেক্টরি আর অন্যটি তার এক লেভেল উপরের ডিরেক্টরি নির্দেশ করে। যদি -a অপশন দ্বারা কারেন্ট ডিরেক্টরির সব ফাইল আর –l দ্বারা লং লিস্টিংএর অপশন বুঝাই, তাহলে যে ফলাফল হবে তা এরকম,


$ls -la
drwxrwxr-x   4   teacher  class  2048   Jul 16 17.56 .
drwxr-xr-x   60  root 1          536    Jul 13 14:18 ..
----------   1   teacher  class  4210   May 1 08:27 .profile
-rwxr-xr-x   1   teacher  class  1948   May 12 13:42 memo
$

 

ইউনিক্সঃ ফাইল ব্যবস্থাপনা (Unix – File Management)

Huge Sell on Popular Electronics

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

 

ইউনিক্সে সব ডাটা ফাইলে সজ্জিত থাকে। সব ফাইল ডিরেক্টরিতে সাজানো থাকে। আবার সেই ডিরেক্টরি একটা ট্রি-মতন কাঠামো, যার নাম ফাইল সিস্টেম, এতে সাজানো থাকে। ইউনিক্সে কাজ করার সময় পুরো সময়টা কোনও না কোনও ফাইল নিয়ে কাজ করতে হয়। এই টিউটোরিয়ালে দেখানো হবে কীভাবে ফাইল তৈরি ও মোছা, কপি ও রিনেম আর কীভাবে এতে লিঙ্ক স্থাপন করা হয়।

ইউনিক্সে তিন ধরণের ফাইল দেখা যায়,

  • সাধারণ ফাইল
  • ডিরেক্টরি
  • স্পেশাল ফাইল

 

ফাইল লিস্ট করা

এই কম্যান্ড ব্যবহার করে ফাইল লিস্ট করা যায়,


$ls


 

যার সাধারণ আউটপুট এরকম হতে পারে,


$ls 

bin        hosts   lib     res.03
ch07       hw1     pub     test_results
ch07.bak   hw2     res.01  users
docs       hw3     res.02  work

 

ls কম্যান্ড –l অপশন সমর্থন করে, যা থেকে লিস্টেড ফাইল সম্পর্কে আরও ভালভাবে জানা যায়,


$ls -l
total 1962188
 
drwxrwxr-x  2 amrood amrood      4096 Dec 25 09:59 uml
-rw-rw-r--  1 amrood amrood      5341 Dec 25 08:38 uml.jpg
drwxr-xr-x  2 amrood amrood      4096 Feb 15  2006 univ
drwxr-xr-x  2 root   root        4096 Dec  9  2007 urlspedia
-rw-r--r--  1 root   root      276480 Dec  9  2007 urlspedia.tar
drwxr-xr-x  8 root   root        4096 Nov 25  2007 usr
drwxr-xr-x  2    200    300      4096 Nov 25  2007 webthumb-1.01
-rwxr-xr-x  1 root   root        3192 Nov 25  2007 webthumb.php
-rw-rw-r--  1 amrood amrood     20480 Nov 25  2007 webthumb.tar
-rw-rw-r--  1 amrood amrood      5654 Aug  9  2007 yourfile.mid
-rw-rw-r--  1 amrood amrood    166255 Aug  9  2007 yourfile.swf
drwxr-xr-x 11 amrood amrood      4096 May 29  2007 zlib-1.2.3
$

 

ফাইল লাইন প্রেফিক্সের মাধ্যমে শুরু হয়, যা থেকে ফাইল টাইপ সম্পর্কে ধারণা করা যায়।

 

প্রেফিক্স
-
b
c
d
l
p
s

 

মেটা ক্যারেক্টার

ইউনিক্সে মেটাক্যারেক্টারের বিশেষ অর্থ থাকে, যেমন,

 


$ls ch*.doc

 

এটি এমন ফাইল দেখায় যাদের নামের শুরু ch ও শেষ .doc দিয়ে,


ch01-1.doc   ch010.doc  ch02.doc    ch03-2.doc 
ch04-1.doc   ch040.doc  ch05.doc    ch06-2.doc
ch01-2.doc   ch02-1.doc c

 

সব ফাইল .doc দিয়ে শেষ করাতে কম্যান্ড ব্যবহার করতে পারি,


$ls*.doc

 

হিডেন ফাইল

এদের প্রথম ক্যারেক্টার dot বা period character (.), এরকম ফাইলের কিছু কমন উদাহরণ,

  • .profile
  • .kshrc
  • .cshrc
  • .rhosts

এসব ফাইল লিস্ট করতে ls −তে -a অপশন স্পেসিফাই করতে হবে,


$ ls -a
 
.         .profile       docs     lib     test_results
..        .rhosts        hosts    pub     users
.emacs    bin            hw1      res.01  work
.exrc     ch07           hw2      res.02
.kshrc    ch07.bak       hw3      res.03
$

 

  • Single dot . মানে কারেন্ট ডিরেক্টরি
  • Double dot .. মানে প্যারেন্ট ডিরেক্টরি

 

ফাইল তৈরি করা

ইউনিক্স সিস্টেমে সাধারণ ফাইল তৈরি করতে vi এডিটর ব্যবহার করা যায়, এই কম্যান্ড ব্যবহার করে।


$ vi filename

 

এডিট মোডে ফাইলে কন্টেন্ট লেখার জন্য কম্যান্ড,


This is unix file....I created it for the first time.....
I'm going to save this content in this file.


 

এডিট মোড থেকে বেরুতেesc এবং ফাইল থেকেই বেরিয়ে আসতেShift + ZZ একসাথে চাপতে হয়।

কারেন্ট ডিরেক্টরিতে filename সহ ফাইল তৈরি করতে,


$ vi filename
$

 

ফাইল এডিট করতে

এজন্য যে কম্যান্ড ব্যবহার করতে পারি তা হল,


$ vi filename

 

ফাইলের কন্টেন্ট ডিসপ্লে করা

cat কম্যান্ড ব্যবহার করে আমরা এটি করতে পারি,


$ cat filename
This is unix file....I created it for the first time.....
I'm going to save this content in this file.
$

 

cat কম্যান্ডের সাথে -b অপশন ব্যবহার করে লাইন নাম্বার পেতে পারি,


$ cat -b filename
1   This is unix file....I created it for the first time.....
2   I'm going to save this content in this file.
$

 

ফাইলের শব্দ গণনা করা

এজন্য wc কম্যান্ড ব্যবহার করতে হয়,


$ wc filename
2  19 103 filename
$

 

মাল্টিপল ফাইলের ক্ষেত্রে এটি হবে,


$ wc filename1 filename2 filename3

 

ফাইল কপি করা

cp কম্যান্ড ব্যবহার করে আমরা ফাইল কপি করতে পারি,


$ cp source_file destination_file

 

filename নামের বিদ্যমান ফাইলের ক্ষেত্রে,


$ cp filename copyfile
$

 

ফাইল রিনেম করা

mv কম্যান্ড ব্যবহার করে আমরা ফাইলের নাম রিনেম করতে পারি।


$ mv old_file new_file

 

উদাহরণঃ filename কে newfile এ রিনেম করতে কম্যান্ড,


$ mv filename newfile
$

 

ফাইল ডিলিট করতে

ফাইল ডিলিট করতে rm কম্যান্ড ব্যবহার করতে পারি।এর বেসিক সিনট্যাক্স হল,


$ rm filename

 

 

যেমন, filename নামের ফাইল ডিলিট করতে কম্যান্ড,


$ rm filename
$

 

 

কয়েকটি ফাইল একসাথে ডিলিট করতে কম্যান্ড


$ rm filename1 filename2 filename3
$

 

আদর্শ ইউনিক্স স্ট্রিম

নরমাল অবস্থায় আদর্শ ইউনিক্সে তিনটি স্ট্রিম দেখা যায়,

  • stdin
  • stdout
  • stderr

মুস্তাফিজুরের দারুণ সাফল্য!! বাকি তরুণরা জ্বলে উঠতে পারছে না। Mustafizur red hot, but other youngsters lukewarm

Huge Sell on Popular Electronics

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

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

সৌম্য সরকার ও সাব্বির রহমান তাদের ওডিআই ক্যারিয়ারের শুরুতে যে ফোকাস পেয়েছিলেন তা ধরে রাখতে পারেননি।
মুস্তাফিজুর প্রথম ওয়ানডেতে দ্বিতীয় ও তৃতীয় স্পেলে দুটি ও তিনটি করে উইকেট নিয়েছিলেন কিন্তু দ্বিতীয় ওয়ানডেতে সেকেন্ড স্পেলেই নিয়ে নেন পাঁচ উইকেট। দুই ক্ষেত্রেই শুরুতে তাঁকে প্রচুর ব্যবহার করার পর ব্যাটিং পাওয়ারপ্লেতে আবার আক্রমনে ফেরত আনা হয়। বুধবারের খেলায় তাঁকে দ্বিতীয় স্পেলে আনা হয়েছে মহেন্দ্র সিং ধোনি ও আম্বতি রায়ডুর ব্যাটিঙের সময়, পরিকল্পনা সফল ছিল কারণ ধোনি ও রায়ডু কপালজোরে বেঁচে যান দুটি আনপ্লেয়েবল ডেলিভারি থেকে, ৪৩তম ও ৪৭তম ওভারে ফিরে এসে ৪৭তম ওভারে সুরেশ রাইনার উইকেট নিয়ে একসাথে দুটি রেকর্ডের তালিকায় স্থান করে নেন তিনি,প্রথম তিন ওয়ানডেতে সবচেয়ে বেশি উইকেট শিকারি ও তিন ম্যাচ ওয়ানডে সিরিজে সবচেয়ে বেশি উইকেট শিকারি।
তরুণ তুর্কীদের মধ্যে এরপরেই আসে সৌম্য সরকারের নাম। ক্লাসিকাল ব্যাটিঙের সাথে মানসম্মত ৫৪, ৩৪ ও ৪০ রান তিন ম্যাচে খারাপ না, সেই সাথে ছিল প্রতিভার ঝলকানিও। লিটন দাশ তাঁর প্রতিভা অনুযায়ী এই সিরিজে তেমন ভাল করতে পারেন নি, সাব্বিরেরও সুযোগ ছিল তৃতীয় ওয়ানডেতে দীর্ঘ সময় ক্রিজে থাকার। ক্যাপ্টেন মাসরাফিও স্বীকার করলেন, মুস্তাফিজুরের তুলনায়, বাকি তরুণরা প্রত্যাশামত খেলতে পারেননি।

ইউনিক্স : শুরুর কথা (Unix – Getting Started)

Huge Sell on Popular Electronics

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

 

ইউনিক্স কি ?

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

  • ১৯৬৯ সালে এটিএন্ডটি কর্মীদের দ্বারা বেল ল্যাবরেটরিতে প্রথম ইউনিক্স ডেভেলাপ করা হয়,
  • ইউনিক্সের বিভিন্ন ভার্সন পাওয়া যায়, Solaris Unix, AIX, HP Unix এবং BSD সহ লিনাক্সও অনেকটা ইউনিক্সের মত, যেটি ফ্রী ওএস।
  • ইউনিক্স কম্পিউটার একসাথে কয়েকজন ব্যবহারকারী ব্যবহার করতে পারেন।
  • ইউনিক্স কম্পিউটারে একজন ব্যবহারকারী একসাথে কয়েকটি প্রোগ্রাম চালু রাখতে পারেন।

 

ইউনিক্সের কাঠামো

ইউনিক্স কাঠামো চারটি মূল অংশ নিয়ে তৈরি হয়,

ইউনিক্সের কাঠামো

  • কার্নেল
  • সেল
  • কম্যান্ড ও ইউটিলিটি
  • ফাইল ও ডিরেক্টরি

 

সিস্টেম বুটআপ ও ইউনিক্সে লগইন

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


login : amrood
amrood's password:
Last login: Sun Jun 14 09:32:32 2009 from 62.61.164.73
$

 

 

কম্যান্ড প্রম্পটের মাধ্যমে কম্যান্ড দেয়া যায় ইউনিক্সে, যেমন ক্যালেন্ডার চেক করার জন্য cal কম্যান্ড দিতে পারি,


$ cal
      June 2009
Su  Mo Tu  We  Th  Fr  Sa
 1   2  3   4   5   6
 7   8  9  10  11  12  13
14  15 16  17  18  19  20
21  22 23  24  25  26  27
28  29 30
$

 

 

পাসওয়ার্ড পরিবর্তন করা

এটি আমরা করতে পারি passwd কম্যান্ড ব্যবহার করে,


$ passwd
Changing password for amrood
(current) Unix password:******
New UNIX password:*******
Retype new UNIX password:*******
passwd: all authentication tokens updated successfully
$

 

 

ফাইল ও ডিরেক্টরি তালিকাবদ্ধ করা

ls কমান্ডে -l অপশন ব্যবহার করে এটি করা যায়, নিচের উদাহরণে ব্যপারটি দেখানো হল,


$ ls -l
total 19621
drwxrwxr-x 2 amrood amrood 4096 Dec 25 09:59 uml
-rw-rw-r-- 1 amrood amrood 5341 Dec 25 08:38 uml.jpg
drwxr-xr-x 2 amrood amrood 4096 Feb 15 2006 univ
drwxr-xr-x 2 root root 4096 Dec 9 2007 urlspedia
-rw-r--r-- 1 root root 276480 Dec 9 2007 urlspedia.tar
drwxr-xr-x 8 root root 4096 Nov 25 2007 usr
-rwxr-xr-x 1 root root 3192 Nov 25 2007 webthumb.php
-rw-rw-r-- 1 amrood amrood 20480 Nov 25 2007 webthumb.tar
-rw-rw-r-- 1 amrood amrood 5654 Aug 9 2007 yourfile.mid
-rw-rw-r-- 1 amrood amrood 166255 Aug 9 2007 yourfile.swf
$

 

এখানে d..... দ্বারা শুরু হওয়া এন্ট্রি ডিরেক্টরি বুঝায়।

 

Whoami কম্যান্ড

Who am I? প্রশ্নটির উত্তরের জন্য এই কোড ব্যবহার করতে পারি আমরা,


$ whoami
 amrood
$

 

 

লগইন অবস্থায় কে কে আছে

এধরনের তিনটি কম্যান্ড users, who, এবং w, পাওয়া যায়।


$ users
 amrood bablu qadir
$ who
amrood ttyp0 Oct 8 14:10 (limbo)
bablu ttyp2 Oct 4 09:08 (calliope)
qadir ttyp4 Oct 8 12:09 (dent)
$

 

 

লগআউটের জন্য

কম্যান্ড প্রম্পটে logout কম্যান্ড টাইপ করলে সিস্টেম সবকিছু পরিষ্কার করে যোগাযোগ বিচ্ছিন্ন করে দেবে।

 

সিস্টেম সাটডাউন

নিচের যেকোনো এক পদ্ধতির কমান্ডে সিস্টেম সাটডাউন করা যায়,

কম্যান্ড বিবরণ
halt তৎক্ষণাৎ সিস্টেমকে বন্ধ করে।
init 0 সাটডাউনের আগে সবকিছু ক্লিন করে সিস্টেম অফ হয়ে যাওয়া
init 6 সাটডাউনের মাধ্যমে রিবুট
poweroff পাওয়ার অফের মাধ্যমে সাট ডাউন
reboot সিস্টেম রিবুট হওয়া
shutdown সিস্টেম সাটডাউন হওয়া

সাটডাউনের জন্য সুপার ইউজার বা রুট হতে হয়, তবে কিছু ব্যতিক্রমও আছে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : কুইক গাইড (DCN – Quick Guide)

Huge Sell on Popular Electronics

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

 

ডাটা কমিউনিকেশনের সারসংক্ষেপ

পরস্পর সংযুক্ত কম্পিউটার ও তদসংশ্লিষ্ট অনুষঙ্গ (যেমন প্রিন্টার ইত্যাদি) নিয়ে যে ব্যবস্থা তাকে কম্পিউটার নেটওয়ার্ক বলে।কম্পিউটার নেটওয়ার্ককে বিভিন্ন বিষয়ের উপর নির্ভর করে ভাগ করা যায় যথা,

  • ভৌগলিক কারণ
  • আন্তর্সম্পর্ক
  • এডমিনিস্ট্রেশন
  • স্থাপত্যগত কারণ

 

আন্তঃসংযোগ

কয়েকপ্রকার ভাবে নেটওয়ার্কের উপাদানগুলো নিজেদের মধ্যে সংযুক্ত থাকতে পারে,

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

 

এডমিনিস্ট্রেশন

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

 

নেটওয়ার্কের স্থাপত্য কাঠামো

ক্লায়েন্ট-টু-সার্ভার, সদৃশ, হাইব্রিড বিভিন্ন রকম নেটওয়ার্ক হতে পারে, এর কাঠামোর উপর ভিত্তি করে।

  • এক বা একাধিক সিস্টেম সার্ভার হিসেবে কাজ করতে পারে,
  • দুটি সিস্টেম পয়েন্ট-টু-পয়েন্ট অথবা ব্যাক-টু-ব্যাক ভাবে সংযুক্ত থাকতে পারে,
  • দুই রকমের ব্যবস্থার সমন্বয়ে হাইব্রিড ব্যবস্থা থাকতে পারে।

 

 

নেটওয়ার্ক অ্যাপ্লিকেশন

কম্পিউটার ও তদসংশ্লিষ্ট অনুষঙ্গ নেটওয়ার্ক থেকে সংযুক্ত থাকতে পারে। এরা যে সুবিধাগুলো দেয় তা হল,

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

 

 

কম্পিউটার নেটওয়ার্ক টাইপ

 

  • পারসোনাল এরিয়া নেটওয়ার্ক,

পারসোনাল এরিয়া নেটওয়ার্ক

  • লোকাল এরিয়া নেটওয়ার্ক

লোকাল এরিয়া নেটওয়ার্ক

  • মেট্রোপলিটান এরিয়া নেটওয়ার্ক,

মেট্রোপলিটান এরিয়া নেটওয়ার্ক

  • ওয়াইড এরিয়া নেটওয়ার্ক,

ওয়াইড এরিয়া নেটওয়ার্ক

  • ইন্টারনেটওয়ার্কিং

 

 

নেটওয়ার্ক লেন টেকনোলোজি

নেটওয়ার্ক লেন টেকনোলোজি কয়েক রকমের হতে পারে,

 

  • ইথারনেট,
  • ফাস্ট ইথারনেট,
  • গিগা ইথারনেট,
  • ভার্চুয়াল লেন

ভার্চুয়াল লেন

 

 

 

কম্পিউটার নেটওয়ার্ক টপোলজি

একই নেটওয়ার্কে লজিকাল ও ফিজিকাল টপোলজি একই বা ভিন্ন উভয় রকমেরই হতে পারে। এর প্রকরণগুলো হল,

  • পয়েন্ট টু পয়েন্ট,

পয়েন্ট টু পয়েন্ট

  • বাস টপোলজি,

বাস টপোলজি

  • স্টার টপোলজি,

স্টার টপোলজি

  • রিং টপোলজি,

রিং টপোলজি

  • মেস টপোলজি,

মেস টপোলজি

  • ট্রি টপোলজি,

ট্রি টপোলজি

  • ডেইজি চেইন,

ডেইজি চেইন

  • হাইব্রিড টপোলজি।

হাইব্রিড টপোলজি

 

 

কম্পিউটার নেটওয়ার্ক মডেল

লেয়ারড টাস্ক, ওএসআই ও ইন্টারনেট মডেল, এই তিন রকম হয়ে থাকে।

 

 

কম্পিউটার নেটওয়ার্ক সিকিউরিটি

এর তিনটি প্রধান রূপ হল সিক্রেট কী এনক্রিপশন, পাবলিক কী এনক্রিপশন ও ম্যাসেজ ডাইজেস্ট।

 

 

এসব ছাড়াও ফিজিকাল লেয়ার, ডিজিটাল ট্রান্সমিশন ইত্যাদিও ডিসিএনের আওতাভুক্ত।

 

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ডিসিএন বিষয়ক আলোচনা (Discuss DCN)

Huge Sell on Popular Electronics

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

 

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

 

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

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক সার্ভিসসমূহ (DCN – Network Services)

Huge Sell on Popular Electronics

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

 

 

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

 

ডিরেক্টরি সার্ভিস

এই ধরণের সফটওয়ার সিস্টেম তথ্য সংরক্ষণ, ব্যবস্থাপনা ও এতে প্রবেশের সাথে সংশ্লিষ্ট সকল কাজ তত্ত্বাবধায়ন করে থাকে। এর কয়েকটি দিক আছে,

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

 

ফাইল সার্ভিস

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

 

কমুনিকেশন সার্ভিস

নেটওয়ার্ক বিভিন্ন কমুনিকেশনের মাধ্যম নিয়ন্ত্রণ করে যেমন,

  • ইমেইল,
  • সামাজিক যোগাযোগ,
  • ইন্টারনেট চ্যাট,
  • ডিসকাশন বোর্ড,
  • রিমোট এক্সেস।

 

এপ্লিকেশন সার্ভিস

নেটওয়ার্ক কিছু এপ্লিকেশন ভিত্তিক সার্ভিস দিয়ে থাকে, এগুলো হল,

  • রিসোর্স শেয়ারিং,
  • ডাটাবেস,
  • ওয়েব সার্ভিস ইত্যাদি ।

 

 

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : এপ্লিকেশন প্রটোকল : (DCN – Application Protocols)

Huge Sell on Popular Electronics

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

 

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

যেসব প্রটোকল সরাসরি ব্যবহারকারীর জন্য কাজ করে।যেমন ইমেইল।

আর যেসব প্রটোকল ব্যবহারকারীর জন্য সাহায্যকারী প্রটোকলকে সাহায্য করে। যেমন ডিএনএস।

 

কয়েক ধরণের এপ্লিকেশন প্রটোকল সম্পর্কে নিচে আলোচনা করা হল।

ডোমেইন নেম সিস্টেম বা ডিএনএস

ক্লায়েন্ট সার্ভার মডেলে কাজ করে। ট্রান্সপোর্ট লেয়ার কমুনিকেশনে UDP প্রটোকল ব্যবহার করে, এটি UDP port 53 ব্যবহার করে, FQDN এর সাথে প্রস্তাবিত হয় এবং সংশ্লিষ্ট আইপি এড্রেসের সাথে প্রকল্পিত হয়।

সিম্পল মেইল ট্রান্সফার প্রটোকল

এক ইউজার থেকে আরেক ইউজারের কাছে মেইল পাঠাতে ব্যবহৃত হয়, এটি সার্ভার সাইডে প্রেরণের জন্য SMTP ব্যবহার করে, SMTP TCP port number 25 এবং 587 ব্যবহার করে থাকে।

ফাইল ট্রান্সফার প্রটোকল বা এফটিপি

এটি বহুল ব্যবহৃত প্রটোকল, TCP port 20 ব্যবহার করে থাকে, এই পদ্ধতিতে ইউজার সার্ভারে ফাইলের জন্য রিকোয়েস্ট করে। সার্ভার টিসিপি কানেকশন ব্যবহার করে প্রক্রিয়া সম্পন্ন করে থাকে।

পোস্ট অফিস প্রটোকল

ইউজার এজেন্ট ব্যবহৃত সাধারণ ট্রান্সফার প্রটোকল। TCP port 110 ব্যবহার করে।

হাইপার টেক্সট ট্রান্সফার প্রটোকল

এটি ওয়ার্ল্ড ওয়াইড ওয়েবের ভিত্তি। পেজ ও টেক্সট ডকুমেন্টে হাইপারলিঙ্ক ব্যবহার করে। এইচটিটিপি ১.১ ও১.০, এই দুটি ভার্সন আছে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ক্লায়েন্ট সার্ভার মডেল : (DCN – Client Server Model)

Huge Sell on Popular Electronics

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

 

দুটি রিমোট এপ্লিকেশন প্রক্রিয়া দুই ধরণের উপায়ে যোগাযোগ রাখতে পারে,

  • সদৃশ থেকে সদৃশ এপ্লিকেশনে যোগাযোগঃ দুটি রিমোট এপ্লিকেশন একই লেভেলে শেয়ারড রিসোর্স ব্যবহার করে এটি করতে পারে,
  • ক্লায়েন্ট থেকে সার্ভারে যোগাযোগঃ একটি রিমোট প্রক্রিয়া ক্লায়েন্ট হিসেবে সার্ভার রূপে ক্রিয়াশীল অন্য রিমোট প্রক্রিয়ার কাছে রিকোয়েস্ট পাঠাতে পারে। ক্লায়েন্ট সার্ভার মডেলে যেকোনো প্রক্রিয়া ক্লায়েন্ট অথবা সার্ভার হিসেবে কাজ করতে পারে।

ক্লায়েন্ট সার্ভার মডেল

 

যোগাযোগ

ক্লায়েন্ট সার্ভার মডেলে দুটি প্রক্রিয়া বিভিন্ন উপায়ে নিজেদের মধ্যে যোগাযোগ রাখতে পারে,

  • সকেটের মাধ্যমে,
  • রিমোট প্রসেস সেল আরপিসি

 

সকেট

সার্ভাররূপে ক্রিয়াশীল প্রসেস, পোর্ট ব্যবহার করার মাধ্যমে সকেট খোলে, এবং ক্লায়েন্টের রিকোয়েস্টের জন্য অপেক্ষা করে। ক্লায়েন্টরূপে ক্রিয়াশীল প্রক্রিয়া অনুরূপ সকেট খোলে তবে তার কাজ হল রিকোয়েস্ট প্রেরণ করা।

 

রিমোট প্রক্রিয়া সেল

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

  • ক্লায়েন্ট প্রসেস ক্লায়েন্ট স্লাবকে কল করে, এটি প্রোগ্রাম সঙ্ক্রান্ত সকল প্যারামিটার প্রেরণ করে।
  • এরপর সকল প্যারামিটার প্যাকড(মার্শালড) হয় এবং সিস্টেম এগুলোকে নেটওয়ার্কের অপর প্রান্তে প্রেরণের উদ্দেশে একটি কল দেয়।
  • কার্নেল নেটওয়ার্কের মাধ্যমে ডাটা প্রেরণ করে এবং অন্য প্রান্ত সেটিকে গ্রহণ করে।
  • রিমোট হোষ্ট সার্ভার স্লাবে ডাটা প্রেরণ করে যেখানে এটি আনমার্শালড।
  • এরপর প্যারামিটারকে প্রক্রিয়ায় পাঠানো হয় এবং এরপরে প্রক্রিয়াটি সম্পন্ন হয়।
  • একই প্রক্রিয়ায় ক্লায়েন্টের কাছে ফলাফল পাঠানো হয়।

 

তথ্যসূত্রঃ http://www.tutorialspoint.com/data_communication_computer_network/client_server_model.htm

 

২৩০ ওয়ার্ড, বোনাস আশা করছি। ধন্যবাদ।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : এপ্লিকেশন লেয়ার : ভূমিকা (DCN – Application Layer Introduction)

Huge Sell on Popular Electronics

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

 

এপ্লিকেশন লেয়ার ওসিআই এবং টিসিপি/আইপি লেয়ারড মডেলের সবচেয়ে উঁচু লেয়ার। এটি এর ইউজার ও ইউজার এপ্লিকেশন উভয়ের সাথে সম্পৃক্ততার স্বাতন্ত্র্যের কারণে দুটি লেয়ারড মডেলেই বিদ্যমান একটি বিষয়। এই লেয়ার কমুনিকেশন সিস্টেমের সাথে জড়িত-এমন এপ্লিকেশনের জন্য প্রযোজ্য।

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

যখন এপ্লিকেশন লেয়ার প্রটোকল রিমোট হোষ্টে অবস্থিত এর সদৃশ এপ্লিকেশন লেয়ার প্রটোকল(peer application layer protocol) এর সাথে যোগাযোগ করতে চায় তখন এটি তথ্য বা ডাটা ট্রান্সপোর্ট লেয়ারে অর্পণ করে, ট্রান্সপোর্ট লেয়ার তার নিচের সব লেয়ারের সহযোগিতায় বাকি কাজ সম্পন্ন করে।

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

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

আরেকটি উদাহরণ হল ফাইল ট্রান্সফার প্রটোকল, যা ব্যবহারকারীকে টেক্সটবেজড বা বাইনারি ফাইল নেটওয়ার্কে ট্রান্সফার করতে সাহায্য করে। ব্যবহারকারী হয় গ্রাফিকাল ইউজার ইন্টারফেস(জিইউআই)ভিত্তিক সফটওয়ার যেমন ফাইলজিলা বা কিউটএফটিপি ব্যবহার করে, অথবা কমান্ড লাইন মোডে এফটিপি ব্যবহার করে ফাইল ট্রান্সফার প্রটোকল ব্যবহার করতে পারে।

যে সফটওয়ারই ব্যবহার করা হোক না কেন, এটিই সফটওয়ারে ব্যবহৃত এপ্লিকেশন লেয়ারে প্রতীয়মান প্রটোকল। ডিএনএস এমন একটি প্রটোকল যা ইউজার এপ্লিকেশন প্রটোকল যেমন এইচটিটিপিকে এর কাজ সম্পন্ন করতে সাহায্য করে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ইউজার ডায়াগ্রাম প্রটোকল (DCN – User Datagram Protocol)

Huge Sell on Popular Electronics

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

 

টিসিপি/আইপি প্রটোকল স্যুইটের সরলতম ট্রান্সপোর্ট লেয়ার কমিউনিকেশন প্রটোকল হল ইউজার ডায়াগ্রাম প্রটোকল । এটিতে কম সংখ্যক যোগাযোগ কৌশল প্রয়োগ করা হয়। ইউজার ডায়াগ্রাম প্রটোকলকে অনির্ভরযোগ্য যোগাযোগ প্রটোকল বলা হলেও এটি আইপি সার্ভিস ব্যবহার করে যেটিতে সেরা সরবরাহ কৌশল ব্যবহৃত হয়।

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

 

ইউজার ডায়াগ্রাম প্রটোকলের রিকোয়ারমেন্ট

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

 

ইউজার ডায়াগ্রাম প্রটোকলের বৈশিষ্ট্য

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

 

ইউজার ডায়াগ্রাম প্রটোকল হেডার

ইউজার ডায়াগ্রাম প্রটোকলের হিডার

ইউজার ডায়াগ্রাম প্রটোকলের হিডার(header) চারটি মূল প্যারামিটার ব্যবহার করে,

  • সোর্স পোর্ট,
  • ডেসটিনেশন পোর্ট,
  • লেন্থ,
  • চেকসাম

 

ইউজার ডায়াগ্রাম প্রটোকল অ্যাপ্লিকেশন

যেসব এপ্লিকেশনে ডাটা ট্রান্সফারের জন্য ইউজার ডায়াগ্রাম প্রটোকল ব্যবহৃত হয়,

  • ডোমেইন নেম সার্ভিস,
  • সিম্পল নেটওয়ার্ক মেনেজমেন্ট প্রটোকল,
  • ট্রিভিয়াল ফাইল ট্রান্সফার প্রটোকল,
  • রাউটিং ইনফরমেশন প্রটোকল,
  • কার্বারোতে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ট্রান্সমিশন কন্ট্রোল প্রটোকল (DCN – Transmission Control Protocol)

Huge Sell on Popular Electronics

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

 

ট্রান্সমিশন কন্ট্রোল প্রটোকল বা টিসিপি ইন্টারনেট প্রটোকল স্যুইটের সবচেয়ে গুরুত্বপূর্ণ প্রটোকলসমূহের একটি। ইন্টারনেটজাতীয় নেটওয়ার্কের ডাটা ট্রান্সমিশনের জন্য এটি একটি বহুল ব্যবহৃত প্রটোকল।

 

বৈশিষ্ট্য

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

 

হিডার

টিসিপি হিডারের দৈর্ঘ্য ২০ বাইট থেকে ৬০ বাইট পর্যন্ত হতে পারে।

এড্রেসিং

দুটি রিমোট হোষ্টের মাঝে যোগাযোগ পোর্ট নাম্বারের ভিত্তিতে হতে পারে। পোর্ট নাম্বার তিনটি শ্রেণীতে বিভক্ত,

  • সিস্টেম পোর্ট,
  • ইউজার পোর্ট,
  • ব্যক্তিগত বা ডাইনামিক পোর্ট

 

কানেকশন ম্যানেজমেন্ট

টিসিপি সার্ভার/ ক্লায়েন্ট মডেলে কাজ করে। যোগাযোগের জন্য ত্রিমুখী সমন্বয় ব্যবহৃত হয়। এরপর যোগাযোগ এসটাব্লিশমেন্টের পরে কাজ সম্পন্ন হলে যোগাযোগ রিলিজ করে দেয়া হয়।

ব্যান্ডউইথ ম্যানেজমেন্ট

টিসিপি ব্যান্ডউইথ ম্যানেজমেন্টের জন্য উইন্ডো সাইজ কনসেপ্ট ব্যবহার করে।

 

এরর কন্ট্রোল ও ফ্লো কন্ট্রোল

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

 

মাল্টিপ্লেক্সিং

দুই বা ততোধিক ডাটা স্ট্রিমকে এক সেশনে সমন্বয় করার পদ্ধতিকে মাল্টিপ্লেক্সিং বলে।

 

কনজেশন

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

  • এডিটিভ ইনক্রিজ, মাল্টিপ্লিকেটিভ ডিক্রিজ ,
  • স্লো স্টার্ট,
  • টাইমআউট রিএক্ট

 

টাইমার ম্যানেজমেন্ট

বিভিন্ন ধরণের কাজ নিয়ন্ত্রণের জন্য টিসিপি বিভিন্ন ধরণের টাইমার ব্যবহার করে,

  • কিপ এলাইভ টাইমার
  • রিট্রান্সমিশন টাইমার,
  • পারসিস্ট টাইমার,
  • টাইমড ওয়েইট

 

ক্রাশ রিকভারি

টিসিপি অত্যন্ত নির্ভরযোগ্য প্রটোকল, এটি সেগমেন্টে প্রেরণকৃত প্রত্যেকটি বাইটের সিকোয়েন্স বজায় রাখে। কোনও টিসিপি সার্ভার যোগাযোগ চলাকালে ক্রাশ করলে এটি এর সকল হোষ্টের কাছে টিপিডিইউ সম্প্রচার বার্তা পাঠায়।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ট্রান্সপোর্ট লেয়ার : ভূমিকা (DCN – Transport Layer Introduction)

Huge Sell on Popular Electronics

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

 

ওএসআই মডেলের লেয়ার-৪ ট্রান্সপোর্ট লেয়ার হিসেবে পরিচিত। ডাটা ট্রান্সপোর্ট সঙ্ক্রান্ত সকল মডিউল ও প্রণালী এই লেয়ারে সম্পন্ন হয়। অন্য সকল লেয়ারের মত লেয়ার-৪ ট্রান্সপোর্ট লেয়ারও রিমোট হোষ্টে সদৃশ ট্রান্সপোর্ট লেয়ারে যোগাযোগ বজায় রাখে।

 

ট্রান্সপোর্ট লেয়ার রিমোট হোষ্টের দুটি প্রক্রিয়ার মধ্যে peer-to-peer এবং end-to-end যোগাযোগ বজায় রাখে। ট্রান্সপোর্ট লেয়ার ঊর্ধ্বতন লেয়ার থেকে ডাটা সংগ্রহ করে তাকে ক্ষুদ্র ক্ষুদ্র সেগমেন্টে বিভক্ত করে এবং নেটওয়ার্ক লেয়ারে ডেলিভারির জন্য সরবরাহ করে।

 

কার্যাবলী

  • ট্রান্সপোর্ট লেয়ার প্রথম লেয়ার যা ঊর্ধ্বতন লেয়ার থেকে ডাটা সংগ্রহ করে তাকে ক্ষুদ্র ক্ষুদ্র সেগমেন্টে বিভক্ত করে এবং নেটওয়ার্ক লেয়ারে ডেলিভারির জন্য সরবরাহ করে।এটি সেগমেন্টের প্রতিটি বাইটের হিসাব রাখে।
  • এই লেয়ার নিশ্চিত করে প্রেরণকৃত ডাটা সঠিক জায়গায় পৌঁছেছে।
  • বিভিন্ন হোষ্টের মধ্যে ডাটার এন্ডটু এন্ড ডেলিভারি নিশ্চিত করে যা একই সাবনেটে থাকতে পারে আবার নাও পারে।
  • সার্ভারের সকল প্রক্রিয়া যা নেটওয়ার্কের মাধ্যমে যোগাযোগ করবে তারা TSAPs দ্বারা সজ্জিত হবে, এদের পোর্ট নাম্বারও বলা হয়।

 

ইন্ড টু ইন্ড কমিউনিকেশন

রিমোট নেটওয়ার্কে যে প্রক্রিয়ায় সদৃশ হোষ্ট অনুরূপ সদৃশ হোষ্ট খুঁজে পায় সেটিকে পোর্ট নাম্বার দ্বারা চিহ্নিত করা যায়। TSAPs এক্ষেত্রে খুব উপযোগী।

ইন্ড টু ইন্ড কমিউনিকেশন

দুটি প্রধান ট্রান্সপোর্ট লেয়ার প্রটোকল হল,

  • ট্রান্সমিশন কন্ট্রোল প্রটোকল যা দুটি হোষ্টের মধ্যে নির্ভরযোগ্য যোগাযোগ নিশ্চিত করে,
  • ইউজার ডাটাগ্রাম প্রটোকল যা দুটি হোষ্টের মধ্যে অনির্ভরযোগ্য যোগাযোগ নিশ্চিত করে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক লেয়ার প্রটোকল (DCN – Network Layer Protocols)

Huge Sell on Popular Electronics

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

 

সব কম্পিউটারেরই একটি আইপি এড্রেস থাকে যার মাধ্যমে স্বতন্ত্রভাবে শনাক্ত করা যায়। আইপি এড্রেস লেয়ার-৩(নেটওয়ার্ক লেয়ার) লজিকাল এড্রেস। প্রতিবার কম্পিউটার রিস্টার্ট করার সময় এই আইপি এড্রেস পরিবর্তিত হতে পারে।

 

এড্রেস রেসোলিউশন প্রটোকল

যোগাযোগের সময় হোষ্টের অভীষ্ট মেশিনের লেয়ার-২(এমএকে ) এড্রেস প্রয়োজন হয়, এমএকে এড্রেসকে বস্তুগতভাবে মেশিনের নেটওয়ার্ক ইন্টারফেস কার্ডে ঢুকিয়ে রাখা হয় যা অপরিবর্তনীয়।

 

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

এড্রেস রেসোলিউশন প্রটোকল

হোষ্ট একবার এমএকে এড্রেস পেয়ে গেলে এটি লেয়ার-২ লিঙ্ক প্রটোকল ব্যবহার করে রিমোট হোষ্টের সাথে যোগাযোগ করতে পারে। এই এমএকে টু আইপি ম্যাপিংকে প্রেরণকারী ও গ্রহণকারী উভয় হোষ্টের এআরপি ক্যাচি(ARP cache)তে সংরক্ষণ করা হয়। পরবর্তীতে যদি তাদের যোগাযোগ করার প্রয়োজন হয় তবে তারা সরাসরি তাদের এআরপি ক্যাচি রেফার করতে পারবে।

 

রিভার্স এআরপি একধরনের কৌশল যেখানে হোষ্ট, রিমোট হোষ্টের এমএকে এড্রেস জানে কিন্তু যোগাযোগের জন্য তাকে আইপি এড্রেসও জানতে হবে।

 

ইন্টারনেট কন্ট্রোল ম্যাসেজ প্রটোকল বা আইসিএমপি

আইসিএমপি নেটওয়ার্ক নিরীক্ষণ ও এরর কন্ট্রোল প্রটোকল।

 

ইন্টারনেট প্রটোকল ভার্সন ৪(Pv4)

টিসিপি/আইপি হোষ্ট এড্রেসিং কৌশলে ব্যবহৃত ৩২ বিট এড্রেসিং স্কিম হল ইন্টারনেট প্রটোকল ভার্সন ৪(IPv4)। এটি পর্যায়ক্রমিক এড্রেসিং স্কিম ব্যবহার করে। আইপি এড্রেস বহু রকম হতে পারে,

 

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

 

যদিও আইপি তেমন নির্ভরযোগ্য নয়, এটি সরবরাহের সেরা প্রক্রিয়া নিশ্চিত করে।

 

ইন্টারনেট প্রটোকল ভার্সন ৬(IPv6)

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

  • ডুয়েল স্টাক ইমপ্লিমেন্টেশন,
  • টানেলিং,
  • এনএটি-পিটি

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ইন্টারনেটওয়ার্কিং (DCN – Internetworking)

Huge Sell on Popular Electronics

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

 

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

ইন্টারনেটওয়ার্কিং

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

 

টানেলিং

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

টানেলিং

 

প্যাকেট ফ্রাগমেন্টেশন

বেশিরভাগ ইথারনেট সেগমেন্টের ম্যাক্সিমাম ট্রান্সমিশন ইউনিট(এমটিইউ) ১৫০০ বাইটে সীমাবদ্ধ রাখা থাকে। এপ্লিকেশনের উপর ভিত্তি করে ডাটা প্যাকেট এরচেয়ে কম বা বেশি প্যাকেট লেন্থ পেতে পারে। ট্রানজিট পাথের যন্ত্রপাতির হার্ডওয়ার ও সফটওয়ারের সক্ষমতার উপরও নির্ভর করে সেই যন্ত্র কতটা ডাটা নিয়ন্ত্রণ করতে পারবে বা কত বড় প্যাকেট প্রক্রিয়াজাত করতে পারবে।

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

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক রাউটিং (DCN – Network Layer Routing)

Huge Sell on Popular Electronics

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

 

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

রাউটার সবসময় ডিফল্ট রাউটারের মাধ্যমে কনফিগার করা হয়। নির্দিষ্ট লক্ষ্যের জন্য একাধিক পাথ থাকলে রাউটার নিচের বিষয়গুলোর উপর ভিত্তি করে সিদ্ধান্ত নেয়।

  • হপ কাউন্ট
  • ব্যান্ডউইথ
  • মেট্রিক
  • প্রিফিক্স লেন্থ
  • ডিলে

রাউটগুলো স্ট্যাটিকালি কনফিগারড হতে পারে। এক রাউট অন্য রাউটের চেয়ে বেশি কাঙ্খিতরূপে কনফিগারড হতে পারে।

 

ইউনিকাস্ট রাউটিং

ইন্টারনেট ও ইন্ট্রানেটের বেশিরভাগ ট্র্যাফিক ইউনিকাস্ট ডাটা বা ইউনিকাস্ট ট্র্যাফিক নামে পরিচিত। ইউনিকাস্ট ডাটা রাউটিং করা হলে তাকে ইউনিকাস্ট রাউটিং বলে।

ইউনিকাস্ট রাউটিং

 

ব্রডকাস্ট রাউটিং

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

ব্রডকাস্ট রাউটিং দুই ভাবে হয়ে থাকে,

  • একটি রাউটার ডাটা প্যাকেট তৈরি করে এবং একটি একটি করে হোষ্টে প্রেরণ করে।
  • যখন রাউটার সম্প্রচারের জন্য প্যাকেট গ্রহণ করে তখন এটি ইন্টারফেস থেকে প্যাকেট প্লাবিত করে ফেলে।

ব্রডকাস্ট রাউটিং

 

মাল্টিকাস্ট রাউটিং

মাল্টিকাস্ট রাউটিং ব্রডকাস্ট রাউটিংএর বিশেষায়িত রূপ, মাল্টিকাস্ট রাউটিংএ ডাটা কেবলমাত্র নডে প্রেরণ করা হয় যা প্যাকেট গ্রহণ করতে চায়। রাউটারকে জানতে হয় নড আছে কিনা এবং ফরোয়ার্ড করার জন্য মাল্টিকাস্ট প্যাকেট গ্রহণ করবে কিনা।

মাল্টিকাস্ট রাউটিং

 

এনিকাস্ট রাউটিং

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

এনিকাস্ট রাউটিং

 

ইউনিকাস্ট রাউটিং প্রটোকল

ইউনিকাস্ট প্যাকেট রাউটিং করার জন্য দুই ধরণের রাউটিং প্রটোকল পাওয়া যায়,

  • ডিস্টেনস ভেক্টর রাউটিং প্রটোকল এবং
  • লিঙ্ক স্টেট রাউটিং প্রটোকল

 

মাল্টিকাস্ট রাউটিং প্রটোকল

মাল্টিকাস্ট রাউটিং প্রটোকল একধরনের অপটিমাল ট্রি ব্যবহার করে রাউটিং এর জন্য,

  • DVMRP - ডিস্টেনস ভেক্টর মাল্টিকাস্ট রাউটিং প্রটোকল
  • MOSPF - মাল্টিকাস্ট ওপেন সর্টেস্ট পাথ ফার্স্ট
  • CBT - কোর বেসড ট্রি
  • PIM - প্রটোকল ইন্ডিপেন্ডেন্ট মাল্টিকাস্ট

 

প্রটোকল ইন্ডিপেন্ডেন্ট মাল্টিকাস্ট বর্তমানে বেশি ব্যবহৃত হয়, এর দুটি প্রকরণ দেখা যায়,

  • পিআইএম ডেনস মোড
  • পিআইএম স্পারস মোড

 

ফ্লাডিং ও সর্টেস্ট পাথ রাউটিংএর এল্গারিদম,

কমন সর্টেস্ট পাথ এল্গারিদম হল,

  • Dijkstra's algorithm
  • Bellman Ford algorithm
  • Floyd Warshall algorithm

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক এড্রেসিং (DCN – Network Addressing)

Huge Sell on Popular Electronics

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

 

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

  • আইপি,
  • আইপিএক্স,
  • অ্যাপলটক

নেটওয়ার্ক এড্রেসিং

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

 

নেটওয়ার্ক এড্রেস নিচের যেকোনো একরকমের হতে পারে,

  • ইউনিকাস্ট(এক হোষ্টের জন্য নির্ধারিত)
  • মাল্টিকাস্ট(গ্রুপের জন্য নির্ধারিত)
  • ব্রডকাস্ট(সবার জন্য নির্ধারিত)
  • এনিকাস্ট(নিকটতম হোষ্টের জন্য নির্ধারিত)

 

রাউটার বাই ডিফল্ট কখনো ব্রডকাস্ট ট্রাফিককে ফরোয়ার্ড করে না।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক লেয়ার : ভূমিকা (DCN – Network Layer Introduction)

Huge Sell on Popular Electronics

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

 

ওএসআই মডেলের লেয়ার-৩ কে নেটওয়ার্ক লেয়ার বলা হয়, নেটওয়ার্ক লেয়ার হোষ্ট ও নেটওয়ার্ক এড্রেসিং সংক্রান্ত বিষয়, সাবনেটওয়ার্ক ব্যবস্থাপনা ও ইন্টারনেটওয়ার্কিং নিয়ন্ত্রণ করে থাকে। সাবনেটের আওতায় বা বাইরে সোর্স থেকে লক্ষ্যে প্যাকেট পৌঁছে দেয়া নেটওয়ার্ক লেয়ারের দায়িত্ব। দুটি ভিন্ন সাবনেটের ভিন্ন এড্রেসিং স্কিম বা অসম্পৃক্ত এড্রেসিং টাইপ থেকে থাকতে পারে। প্রটোকলের ক্ষেত্রেও একই রকম, দুটি ভিন্ন সাবনেট ভিন্ন প্রটোকলের ক্ষেত্রে ক্রিয়াশীল থাকতে পারে। এড্রেসিং স্কিম ও প্রটোকল নিয়ন্ত্রণ করে সোর্স থেকে লক্ষ্যে প্যাকেট পৌঁছে দেয়া নেটওয়ার্ক লেয়ারের দায়িত্ব।

 

লেয়ার-৩ ফাংশনালিটি

নেটওয়ার্ক লেয়ারের কাজ করে এমন যন্ত্রপাতির প্রধান কাজ থাকে রাওটিং। রাওটিং একক কোনও লক্ষ্য অর্জনের জন্য একাধিক কাজের সমন্বয় হতে পারে।যেমন,

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

 

 

নেটওয়ার্ক লেয়ারের বৈশিষ্ট্য

আদর্শ ফাংশনালিটি অর্জিত হলে লেয়ার-৩ যেধরনের সুবিধা দিতে পারে সেগুলো হল,

  • সার্ভিস ম্যানেজমেন্টের মান,
  • ভারসাম্য ও লিঙ্ক ব্যবস্থাপনা,
  • নিরাপত্তা,
  • বিভিন্ন স্কিমের সাবনেট ও প্রটোকলের সমন্বয় সাধন,
  • ফিজিকাল নেটওয়ার্ক ডিজাইনকে ভিত্তি করে বিভিন্ন লজিকাল নেটওয়ার্ক ডিজাইন,
  • L3 VPN ও টানেল এন্ডটু এন্ড কানেক্টিভিটির ক্ষেত্র তৈরি করে দিতে পারে।

 

ইন্টারনেট প্রটোকল নেটওয়ার্ক লেয়ার প্রটোকল হিসেবে এন্ডটু এন্ড ডিভাইসের যোগাযোগের জন্য প্রসিদ্ধ। এটি IPv4 ও IPv6 দুটি প্রকরণে পাওয়া যায়। IPv4 বহুদিন রাজত্ব করার পর একে প্রতিস্থাপিত করতে IPv6 আনা হয়েছে IPv4 এর ক্রুটিগুলো সরিয়ে দিতে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ডাটা লিঙ্ক কন্ট্রোল এবং প্রটোকল (DCN – Data-link Control & Protocols)

Huge Sell on Popular Electronics

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

 

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

  • থামা এবং আবার শুরু করাঃ এই নিয়ন্ত্রণ পদ্ধতি প্রয়োজনে প্রেরণকারীকে থামিয়ে রাখে সেই পর্যন্ত যতক্ষণ গ্রহণকারীর কাছ থেকে ডাটা ফ্রেম পৌঁছানো নিশ্চিত না হয়।

থামা এবং আবার শুরু করা

  • স্লাইডিং উইন্ডোঃ এই নিয়ন্ত্রণ পদ্ধতিতে প্রেরণকারী ও গ্রহণকারীর দ্বারা নির্ধারিত সংখ্যক ডাটা ফ্রেম পৌঁছানো নিশ্চিত হলেই কেবল প্রক্রিয়া নিশ্চিতকরণ সম্পন্ন হয়।

 

 

ভুল নিয়ন্ত্রণ

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

  • ভুল নির্ণয় বা খুঁজে বের করা,
  • ইতিবাচক এসিকে,
  • নেতিবাচক এসিকে,
  • রিট্রান্সমিশন

 

অটোম্যাটিক রিপিট রিকোয়েস্ট বা এআরকিউ ব্যবহার করে ডাটা লিঙ্ক লেয়ারের মাধ্যমে ভুল নিয়ন্ত্রণের কৌশল তিনটি,

 

স্টপ এন্ড ওয়েট এআরকিউ

স্টপ এন্ড ওয়েট এআরকিউ

এই পদ্ধতিতে যে বিষয়গুলো হতে পারে তা হল,

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

 

গো ব্যাক এন এআরকিউ

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

গো ব্যাক এন এআরকিউ

সিলেক্টিভ রিপিট এআরকিউ

সিলেক্টিভ রিপিট এআরকিউ প্রক্রিয়ায় প্রেরণকারী কেবল এনএসিকে সম্পন্ন প্যাকেট প্রেরণ করে।

সিলেক্টিভ রিপিট এআরকিউ

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ক্রুটি নির্ণয় ও সংশোধন (DCN – Error Detection & Correction)

Huge Sell on Popular Electronics

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

 

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

 

ডাটা লিঙ্ক লেয়ার ক্রুটি নিয়ন্ত্রণের জন্য কিছু কৌশল ব্যবহার করে,যাতে করে ফ্রেম(ডাটা বিট স্ট্রিম) নির্ভুলতার একটি নির্দিষ্ট মান বজায় রাখতে পারে।

 

ক্রুটির প্রকরণগুলো হল

তিন ধরণের ক্রুটি দেখা যায়,

  • সিঙ্গেল বিট এররঃ

সিঙ্গেল বিট এরর

একটি ফ্রেমে কেবল একটি বিটে ক্রুটি,

  • মাল্টিপল বিট এররঃ

মাল্টিপল বিট এরর

ফ্রেম একের বেশি এমন বিট গ্রহণ করে যা ক্রুটিপূর্ণ,

  • বড় ক্রুটিঃ

বড় ক্রুটি

একের বেশি ক্রমিক বিট ক্রুটিপূর্ণ

 

এরর কন্ট্রোল ম্যানেজমেন্ট দুটি পদ্ধতিতে কাজ করে, ক্রুটি নির্ণয় ও ক্রুটি সংশোধন ।

 

ক্রুটি নির্ণয়

রিসিভড ফ্রেমের ক্রুটি নির্ণয় প্যারীটি চেক ও সাইক্লিক রেডানড্যান্সি চেক বা সিআরসি দ্বারা করা হয়। উভয় ক্ষেত্রেই মূল ডাটার সাথে কিছু অতিরিক্ত ডাটা প্রেরণ করা হয়। গ্রহীতা যন্ত্র সেই ডাটা সঠিকভাবে গ্রহণ না করলে বোঝা যায় সিস্টেম ক্রুটিমুক্ত নয়।

 

প্যারীটি চেক

মূল ডাটার সাথে এক বিট অতিরিক্ত ডাটা প্রেরণ করা হয়।তার থেকে অড প্যারীটি বা ইভেন হলে ইভেন প্যারীটি নির্ণয় করে প্রক্রিয়ার মাধ্যমে ক্রুটি নির্ণয় করা হয়।

প্যারীটি চেক

 

সাইক্লিক রেডানড্যান্সি চেক বা সিআরসি

এ প্রক্রিয়ায় ভিন্নভাবে ক্রুটি নির্ণয় করা হয়।প্রেরণকৃত ডাটার বাইনারি ডিভিশনের মাধ্যমে এটি করা হয়।

সাইক্লিক রেডানড্যান্সি চেক বা সিআরসি

 

ক্রুটি সংশোধন

ডিজিটাল জগতে দুইভাবে ক্রুটি সংশোধন করা হয়,

  • ব্যাকওয়ার্ড এরর কারেকশনঃ রিসিভার গৃহীত ডাটায় ক্রুটি পেলে প্রেরককে পুনরায় ডাটা ট্রান্সমিশনের অনুরোধ জানায়,
  • ফরোয়ার্ড এরর কারেকশনঃ রিসিভার গৃহীত ডাটায় ক্রুটি পেলে ভুল সংশোধন কোড ব্যবহার করে ক্রুটি সারায়।

 

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

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ডাটা লিঙ্ক লেয়ার : ভূমিকা (DCN – Data-link Layer Introduction)

Huge Sell on Popular Electronics

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

 

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

ডাটা লিঙ্ক লেয়ার এমন দুটি হোষ্টের মাঝে কাজ করে যারা কিছ কিছু ক্ষেত্রে সরাসরি সম্পৃক্ত, এই সরাসরি সম্পৃক্ততা দুটি পয়েন্টের মধ্যে বা সম্প্রচারগতও হতে পারে। ব্রডকাস্ট নেটওয়ার্কের সিস্টেম একই লিঙ্কে থাকে। ডাটা লিঙ্ক লেয়ারের কাজ আরও জটিল হয়ে যায় যখন একক সংঘর্ষ ডোমেইনে সেটিকে অনেকগুলো হোষ্ট নিয়ে কাজ করতে হয়।

ডাটা স্ট্রিমকে বাইট বাই বাইট সিগন্যালে রূপান্তরিত করা ও তাকে সংশ্লিষ্ট হার্ডওয়ারে প্রেরণের দায়িত্বও ডাটা লিঙ্ক লেয়ারের। রিসিভিং এন্ডে ডাটা লিঙ্ক লেয়ার হার্ডওয়ার থেকে ডাটা নিয়ে ফ্রেম ফরমেটে রূপ দিয়ে ঊর্ধ্বতন লেয়ারে প্রেরণ করে। ডাটা লিঙ্ক লেয়ারের দুটি সাব লেয়ার আছে,

  • লজিকাল লিঙ্ক কন্ট্রোলঃ এটি প্রটোকল, ফ্লো কন্ট্রোল ও এরর কন্ট্রোল নিয়ে কাজ করে।
  • মিডিয়া এক্সেস কন্ট্রোলঃ এটি মাধ্যমের প্রকৃত কন্ট্রোল নিয়ে কাজ করে।

 

ডাটা লিঙ্ক লেয়ারের কিছু ফাংশনালিটি আছে, এগুলো হল,

  • ফ্রেমিংঃ ডাটা লিঙ্ক লেয়ার নেটওয়ার্ক লেয়ার থেকে ডাটা প্যাকেট নিয়ে ফ্রেমে প্রক্রিয়াজাত করে।
  • এড্রেসিংঃ ডাটা লিঙ্ক লেয়ার লেয়ার-২ হার্ডওয়ার এড্রেসিং মেকানিজম প্রবর্তন করে।
  • সিনক্রোনাইজেশনঃ যখন ডাটা ফ্রেমকে লিঙ্কে পাঠানো হয় তখন উভয় যন্ত্রকে সমন্বিত হতে হয়।
  • এরর কন্ট্রোলঃ এটি সিগন্যাল সংক্রান্ত ভুল নিয়ন্ত্রণে কার্যকর।
  • ফ্লো কন্ট্রোলঃ দুটি যন্ত্রের ট্রান্সফারের গতি যেন এক হয় তা নিয়ন্ত্রণে ডাটা লিঙ্ক লেয়ার এটি ব্যবহার করে।
  • মাল্টি এক্সেসঃ মাল্টিপল সিস্টেমে সংঘর্ষ ছাড়া শেয়ারড মিডিয়া ব্যবহারের জন্য এই ফাংশনালিটি প্রয়োজন হয়।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক সুইচিং (DCN – Network Switching)

Huge Sell on Popular Electronics

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

 

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

 

  • যোগাযোগবিহীনঃ ফরোয়ার্ডিং টেবিলের সূত্রে ডাটা ফরোয়ার্ড হয়ে থাকে। পূর্ববর্তী কোনও সম্পর্কের প্রয়োজন হয়না, তথ্যসূত্রিতা ঐচ্ছিক।
  • যোগাযোগ সমৃদ্ধঃ লক্ষ্যের দিকে ডাটা সুইচিংএর আগে দুটি এন্ডপয়েন্টের মাঝে একটি প্রাকগঠিত সার্কিট প্রয়োজন হয়, ডাটা সেই সার্কিটে প্রবাহিত(ফরোয়ার্ড) হয়। ট্রান্সফার সম্পন্ন হলে সেই সার্কিট পরবর্তী ব্যবহারের জন্য রেখে দেয়া হয় অথবা তখনি সরিয়ে ফেলা হয়।

 

সার্কিট সুইচিং

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

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

 

  • সার্কিট প্রতিষ্ঠা করা,
  • ডাটা ট্রান্সফার,
  • সার্কিটের সংযোগ বিচ্ছিন্ন করা

সার্কিট সুইচিং

 

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

 

 

ম্যাসেজ সুইচিং

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

ম্যাসেজ সুইচিং

এই পদ্ধতিকে সার্কিট সুইচিংএর বিকল্প হিসেবে ধরা হয়।

 

ম্যাসেজ সুইচিংএর কিছু ড্রব্যাক আছে,

 

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

 

 

প্যাকেট সুইচিং

ম্যাসেজ সুইচিংএর সময় কমানো থেকে প্যাকেট সুইচিং ধারনার উদ্ভব, এতে ম্যাসেজকে ছোটছোট প্যাকেটে ভাগ করা হয়।সুইচিং তথ্যকে প্রত্যেক প্যাকেটের হিডারে (header) স্বাধীনভাবে সম্প্রচারের জন্য রাখা হয়।

 

প্যাকেট সুইচিং

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : মাল্টিপ্লেক্সিং (DCN – Multiplexing)

Huge Sell on Popular Electronics

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

 

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

 

ফ্রিকোয়েন্সি ডিভিশন মাল্টিপ্লেক্সিং

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

 

টাইম ডিভিশন মাল্টিপ্লেক্সিং

টাইম ডিভিশন মাল্টিপ্লেক্সিং প্রাথমিক অবস্থায় ডিজিটাল সিগন্যালের ক্ষেত্রে প্রযোজ্য হলেও এরা এনালগ সিগন্যালের ক্ষেত্রেও প্রযোজ্য হতে পারে। টাইম ডিভিশন মাল্টিপ্লেক্সিংএ শেয়ারড চ্যানেল টাইম স্লটের ভিত্তিতে এর ইউজারদের মধ্যে বন্টিত থাকে। প্রত্যেক ইউজার বরাদ্ধকৃত সময়ের মধ্যে ডাটা ট্রান্সমিট করতে পারে। টাইম ডিভিশন মাল্টিপ্লেক্সিং সমন্বয়মূলক(সিঙ্ক্রোনাইজেশন) মোডে কাজ করে।

 

ওয়েভলেন্থ ডিভিশন মাল্টিপ্লেক্সিং

আলোর বিভিন্ন তরঙ্গদৈর্ঘ্য থাকে। ফাইবার অপটিক মোডে মাল্টিপল অপটিক্যাল কেরিয়ার সিগন্যাল বিভিন্ন তরঙ্গদৈর্ঘ্য ব্যবহার করে অপটিক্যাল ফাইবারে মাল্টিপ্লেক্সড হয়। এটি এনালগ মাল্টিপ্লেক্সিং কৌশল এবং বস্তুত ফ্রিকোয়েন্সি ডিভিশন মাল্টিপ্লেক্সিংএর মতই কাজ করে কিন্তু আলোকে সিগন্যাল হিসেবে ব্যবহার করে।

 

উপরন্তু, প্রতিটা তরঙ্গদৈর্ঘ্যের জন্য টাইম ডিভিশন মাল্টিপ্লেক্সিং অধিক ডাটা সিগন্যাল সংরক্ষণ সমন্বয় করে।

 

কোড ডিভিশন মাল্টিপ্লেক্সিং

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

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ওয়ারলেস ট্রান্সমিশন (DCN – Wireless Transmission)

Huge Sell on Popular Electronics

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

 

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

ওয়ারলেস ট্রান্সমিশন

 

রেডিও ট্রান্সমিশন

রেডিও ফ্রিকোয়েন্সি ব্যবহার করা সহজ কারণ এগুলোর বড় তরঙ্গদৈর্ঘ্য দেয়াল বা এরকম কাঠামো ভেদ করে যেতে পারে। এক মিলিমিটারের মত ক্ষুদ্র থেকে ১ লক্ষ কিলোমিটার পর্যন্ত বৃহৎ তরঙ্গদৈর্ঘ্যের বেতার তরঙ্গ হতে পারে। ৩ হার্জ(অত্যন্ত ছোট) থেকে ৩০০ গিগাহার্জ(অত্যন্ত বড়) রেডিও ফ্রিকোয়েন্সি হতে পারে। রেডিও ফ্রিকোয়েন্সি ছয়টি ব্যান্ডে ভাগ করা আছে।

রেডিও ট্রান্সমিশন

 

রেডিও ট্রান্সমিশন আর্থ

 

মাইক্রোওয়েভ ট্রান্সমিশন

১০০ মেগাহার্জের বেশি তাড়িতচৌম্বক তরঙ্গ সোজা লাইনে চলার প্রবণতা দেখায় এবং নির্দিষ্ট ষ্টেশনে বিমিংএর মাধ্যমে এদের দ্বারা সিগন্যাল প্রেরণ করা যায়। যেহেতু মাইক্রোওয়েভ সরল রেখায় চলে, তাই প্রেরক ও গ্রাহক যন্ত্র দৃষ্টিরেখার সমান্তরাল হতে হয়। মাইক্রোওয়েভের তরঙ্গদৈর্ঘ্য ১ মিলিমিটার থেকে ১ মিটার ও ফ্রিকোয়েন্সি ৩০০ গিগাহার্জ থেকে ৪৩০ টেরাহার্জ পর্যন্ত হতে পারে।

 

মাইক্রোওয়েভ ট্রান্সমিশন

 

ইনফ্রারেড ট্রান্সমিশন

ইনফ্রারেড তরঙ্গ দৃশ্যমান আলোক বর্ণালী ও মাইক্রোওয়েভের মাঝামাঝি একটি বিষয়, তরঙ্গদৈর্ঘ্য ৭০০ ন্যানোমিটার থেকে ১ মিলিমিটার ও ফ্রিকোয়েন্সি ৩০০ মেগাহার্জ থেকে ৩০০ গিগাহার্জ পর্যন্ত হতে পারে।স্বল্পদূরত্বে যোগাযোগের ক্ষেত্রে যেমন টেলিভিশনের রিমোট কন্ট্রোলে এদের ব্যবহার করা হয়।

 

আলোক ট্রান্সমিশন

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

আলোক ট্রান্সমিশন

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ট্রান্সমিশন মিডিয়া (DCN – Transmission Media)

Huge Sell on Popular Electronics

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

 

ট্রান্সমিশন মিডিয়া হল কম্পিউটার নেটওয়ার্কের যোগাযোগের বস্তুগত মাধ্যম।

 

চৌম্বক মাধ্যম

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

 

টুইস্টেড পেয়ার ক্যাবল

টুইস্টেড পেয়ার ক্যাবল একক মাধ্যম থেকে দুটো প্লাস্টিকে মোড়ানো তামার তার যা পরস্পরের উপর জড়ানো থাকে। একটি তার মূল সিগন্যাল বহন করে, অন্যটি গ্রাউন্ড রেফারেন্সের জন্য ব্যবহৃত হয়। টুইস্টগুলো নয়েজ ও ক্রসটক কমায়(তাড়িতচৌম্বক ইন্টারফেরেন্সের জন্য)। দুই ধরণের টুইস্টেড পেয়ার ক্যাবল হয়,

টুইস্টেড পেয়ার ক্যাবল

  • শিল্ডেড টুইস্টেড পেয়ার(এসটিপি)ক্যাবল।
  • আনশিল্ডেড টুইস্টেড পেয়ার(ইউটিপি) ক্যাবল।

 

কোএক্সিয়াল ক্যাবল

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

কোএক্সিয়াল ক্যাবল

 

পাওয়ার লাইন

পাওয়ার লাইন কমুনিকেশন লেয়ার-১ প্রযুক্তি যা ডাটা সিগন্যাল ট্রান্সমিট করতে পাওয়ার ক্যাবল ব্যবহার করে। পাওয়ার লাইন কমুনিকেশনে তারের মাধ্যমে মডিউলেটেড ডাটা প্রেরণ করা হয়। অপর প্রান্তের গ্রহীতা সেই ডাটাকে ডিমডিউলেটেড করে ইন্টারপ্রেট করে। দুই ধরণের পাওয়ার লাইন পাওয়া যায়,

  • সরু ব্যান্ডের পিএলসি এবং
  • ব্রডব্যান্ড পিএলসি

 

ফাইবার অপটিক্স

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

ফাইবার অপটিক্স

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : এনালগ ট্রান্সমিশন : (DCN – Analog Transmission)

Huge Sell on Popular Electronics

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

 

এনালগ মাধ্যমে ডাটা প্রেরণ করতে হলে ডাটাকে এনালগ সিগন্যালে রূপান্তরিত করে নিতে হয়। ডাটা রূপান্তরের ক্ষেত্রে দুটি বিষয় হয়ে থাকে,

  • ব্যান্ডপাসঃ ফিল্টারের মাধ্যমে চাহিদামত ফ্রিকোয়েন্সি ফিল্টারিং ও অতিক্রম করানো হয়।
  • লো পাসঃ লো পাস একধরনের ফিল্টার যার মধ্য দিয়ে কম ফ্রিকোয়েন্সির সিগন্যাল প্রেরিত হয়।

 

ডিজিটাল থেকে এনলগে রূপান্তর

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

  • এমপ্লিচিউড শিফট কীইংঃ এই রূপান্তর প্রক্রিয়ায় এনালগ ক্যারিয়ার সিগন্যালের এমপ্লিচিউড বাইনারি ডাটা প্রদর্শনের উদ্দেশে রূপান্তরিত হয়।

এমপ্লিচিউড শিফট কীইং

  • ফ্রিকোয়েন্সি শিফট কীইংঃ এই রূপান্তর প্রক্রিয়ায় এনালগ ক্যারিয়ার সিগন্যালের ফ্রিকোয়েন্সি বাইনারি ডাটা প্রদর্শনের উদ্দেশে রূপান্তরিত হয়। এই পদ্ধতি দুটি ফ্রিকোয়েন্সি ব্যবহার করে।

ফ্রিকোয়েন্সি শিফট কীইং

  • ফেজ শিফট কীইংঃ এই রূপান্তর প্রক্রিয়ায় মূল ক্যারিয়ার সিগন্যালের ফেজ বাইনারি ডাটা প্রদর্শনের উদ্দেশে পরিবর্তিত হয়।

ফেজ শিফট কীইং

  • কোয়াড্রেচার ফেজ শিফট কীইংঃ কোয়াড্রেচার ফেজ শিফট কীইং দুটি বাইনারি ডিজিট একসাথে প্রদর্শনের জন্য ফেজকে রূপান্তরিত করে। এটি দুটি ভিন্ন ফেজে হয়ে থাকে।

 

এনালগ থেকে এনলগে রূপান্তর

এনালগ ডাটা প্রদর্শনের জন্যও এনালগ সিগন্যাল রূপান্তরিত হতে পারে। এই প্রক্রিয়াকে এনালগ মডুলেশন বলা হয়। ব্যান্ডপাস যখন হয় তখন এনালগ মডুলেশন প্রয়োজন হয়। এটি তিনভাবে হতে পারে,

এনালগ থেকে এনলগে রূপান্তর

  • এমপ্লিচিউড মডুলেশনঃ এই মডুলেশন প্রক্রিয়ায় ক্যারিয়ার সিগন্যালের এমপ্লিচিউড এনালগ ডাটা প্রদর্শনের উদ্দেশে রূপান্তরিত হয়।

এমপ্লিচিউড মডুলেশন

  • ফ্রিকোয়েন্সি মডুলেশনঃ এই মডুলেশন প্রক্রিয়ায় ক্যারিয়ার সিগন্যালের ফ্রিকোয়েন্সি মডুলেশনের ভোল্টেজ লেভেলের পরিবর্তন(এনালগ ডাটা)প্রদর্শনের উদ্দেশে রূপান্তরিত হয়।

ফ্রিকোয়েন্সি মডুলেশন

  • ফেজ মডুলেশনঃ এই মডুলেশন প্রক্রিয়ায় ক্যারিয়ার সিগন্যালের ফেজ মডুলেশনের ভোল্টেজ লেভেলের পরিবর্তন(এনালগ ডাটা)প্রদর্শনের উদ্দেশে পরিবর্তিত হয়।

ফেজ মডুলেশন

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ডিজিটাল ট্রান্সমিশন : (DCN – Digital Transmission)

Huge Sell on Popular Electronics

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

 

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

 

ডিজিটাল থেকে ডিজিটালে রূপান্তর

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

 

লাইন কোডিং

ডিজিটাল ডাটাকে ডিজিটাল সিগন্যালে পরিণত করার প্রক্রিয়াকে লাইন কোডিং বলে। ডিজিটাল ডাটাকে বাইনারি ফরম্যাটে পাওয়া যায়, একে ১ থেকে ১০ পর্যন্ত সিরিজের অন্তর্নিহিতভাবে সংরক্ষণ করা যায়।

লাইন কোডিং

লাইন কোডিং

 

ইউনিপোলার এনকোডিং

ইউনিপোলার এনকোডিং স্কিম ডাটা রিপ্রেজেন্ট করার জন্য সিঙ্গেল ভোল্টেজ লেভেল ব্যবহার করে, এক্ষেত্রে বাইনারি ১ প্রকাশ করতে উঁচু ভোল্টেজ ও বাইনারি ০ প্রকাশ করতে কোনও ভোল্টেজ ট্রান্সমিটেড হয় না। এদের ইউনিপোলার নন-রিটার্ন-টু-জিরোও বলা হয়।

ইউনিপোলার এনকোডিং

 

পোলার এনকোডিং

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

  • পোলার ননরিটার্ন টু জিরো

পোলার ননরিটার্ন টু জিরো

  • রিটার্ন টু জিরো,

রিটার্ন টু জিরো

  • ম্যানচেস্টার,
  • ডিফারেন্সিয়াল ম্যানচেস্টার

 

বাইপোলার এনকোডিং

বাইপোলার এনকোডিং তিন ধরণের ভোল্টেজ লেভেল ব্যবহার করে, পজেটিভ, নেগেটিভ ও জিরো।

বাইপোলার এনকোডিং

 

ব্লক কোডিং

ব্লক কোডিং তিন ধরণের হয়,

  • ডিভিশন,
  • সাবস্টিটিউশন,
  • কম্বিনেশন

 

ব্লক কোডিং সম্পন্ন হওয়ার পর একে লাইন কোডেড করা হয়।

 

এনালগ থেকে ডিজিটাল রূপান্তর

এনালগ তরঙ্গকে ডিজিটাল ডাটায় পরিণত করতে পালস কোড মডুলেশন ব্যবহার করা হয়। এটি তিন ধাপে হয়,

  • সেম্পলিং

সেম্পলিং

  • কোয়ান্টাইজেশন

কোয়ান্টাইজেশন

  • এনকোডিং

এনকোডিং

 

ট্রান্সমিশন মোড

দুটি কম্পিউটারে কীভাবে ডাটা ট্রান্সমিটেড হবে তা নির্ণয় করে ট্রান্সমিশন মোড,এর দুটি প্রকরণ ঘটে,

  • প্যারালাল ট্রান্সমিশন

প্যারালাল ট্রান্সমিশন

  • সিরিয়াল ট্রান্সমিশন।

সিরিয়াল ট্রান্সমিশন

 

সিরিয়াল ট্রান্সমিশন দুই রকমের হয়,

  • এসিনক্রোনাস সিরিয়াল ট্রান্সমিশন
  • সিনক্রোনাস সিরিয়াল ট্রান্সমিশন

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : ফিজিকাল লেয়ার : ভূমিকা (DCN – Physical Layer Introduction)

Huge Sell on Popular Electronics

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

 

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

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

 

সিগন্যাল

ফিজিকাল মাধ্যমে ডাটা যখন প্রেরিত হয়, সেটিকে প্রথমে তাড়িতচৌম্বক সিগন্যালে রূপান্তরিত করে নেয়া হয়। ডাটা নিজে এনালগ(যেমন মানবকণ্ঠ) বা ডিজিটাল(কোনও ডিস্কে একটি ফাইল)হতে পারে, যেকোনো এনালগ বা ডিজিটাল উভয় প্রকার ডাটাকে এনালগ বা ডিজিটাল সিগন্যালে রূপান্তরিত করে নেয়া সম্ভব।

  • ডিজিটাল সিগন্যালঃ ডিজিটাল সিগন্যাল প্রকৃতিগতভাবে পৃথক বা অসংলগ্ন, এরা ভোল্টেজ পালসের ক্রম প্রকাশ করে। কম্পিউটার সিস্টেমের সার্কিটসংক্রান্ত অংশে ডিজিটাল সিগন্যাল ব্যবহৃত হয়।
  • এনালগ সিগন্যালঃ এনালগ সিগন্যাল স্বাভাবিকভাবে পাওয়া ক্রমাগত সিগন্যাল, যা ক্রমাগত আসা তাড়িতচৌম্বক তরঙ্গ দ্বারা প্রকাশিত।

 

ট্রান্সমিশনে বিঘ্ন

সিগন্যালগুলো যখন মাধ্যমগুলোর ভেতর দিয়ে ভ্রমণ করে, অনেক সময় সেখানে বিঘ্ন ঘটতে পারে, এর প্রধান প্রধান কারণগুলো হল,

  • ডাটা অপচয়
  • বিচ্ছুরণ
  • বিলম্ব সংক্রান্ত বিকৃতি
  • নয়েজ

 

নয়েজঃ এনালগ বা ডিজিটাল সিগন্যালে নিয়মিত বিঘ্ন বা অস্থিরতাকে সিগন্যালের নয়েজ বলে। এটি মূল ডাটাকে বিকৃত করে। নয়েজ নিচের যেকোনো রকমের হতে পারে,

  • থারমাল নয়েজ
  • ইন্টারমডুলেশন
  • ক্রসটক
  • ইম্পালস

 

রান্সমিশন মিডিয়া

দুটি কম্পিউটার ব্যবস্থার তথ্য যে মাধ্যমের ভেতর দিয়ে প্রেরিত হয় তাকে ট্রান্সমিশন মিডিয়া বলে, এটি দুই ধরণের হতে পারে,

  • গাইডেড মিডিয়াঃ সকল তারজাতীয় মিডিয়া গাইডেড মিডিয়া, যেমন ইউটিপি, কোএক্সিয়াল ক্যাবল এবং ফাইবার অপটিক্স। এই মিডিয়ায় প্রেরক এবং গ্রহীতা সরাসরি যুক্ত থাকে।
  • আনগাইডেড মিডিয়াঃ তারবিহীন বা বেতার মিডিয়াকে আনগাইডেড মিডিয়া বলে ধরা হয়।

 

চ্যানেল ক্যাপাসিটি

ডাটা ট্রান্সমিশনের গতিকে চ্যানেল ক্যাপাসিটি বলা হয়। এটি বেশ কিছু বিষয়ের উপর নির্ভর করে,

  • ব্যান্ডউইথ
  • এরর রেট
  • এনকোডিং

 

মাল্টিপ্লেক্সিং

একক মাধ্যমে মাল্টিপল ডাটা স্ট্রিম মেশানো এবং প্রেরণের কৌশলকে মাল্টিপ্লেক্সিং বলে।

 

সুইচিং

এর মাধ্যমে ডাটাকে উৎস থেকে এমন গন্তব্যে প্রেরণ করা হয় যা সরাসরি সংযুক্ত নয়।

 

সুইচিং

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : কম্পিউটার নেটওয়ার্ক সিকিউরিটি (DCN – Computer Network Security)

Huge Sell on Popular Electronics

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

 

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

  • ইন্টারাপশনঃ কোনও সাইটে ঢুকতে না পারা বা এজাতীয় সমস্যা।
  • গোপনীয়তা লঙ্ঘনঃ কারো ব্যক্তিগত সীমায় প্রবেশ বা তার বিনা অনুমতিতে বা অগোচরে তথ্য গ্রহণ,
  • ইন্টেগ্রিটিঃ ডাটা সংশোধন বা প্রকৃত অধিকার আছে এমন ব্যক্তির সমন্বয়ে সিস্টেমে বিচরণ সংশ্লিষ্ট বিষয়,
  • অথেনটিসিটিঃ যখন আক্রমণকারী ব্যক্তি হিসেবে নিরাপত্তা বিঘ্নিত করে এবং অন্য ব্যক্তি বা প্রতিষ্ঠানের নিরাপত্তার জন্য হুমকি হয়।

কম্পিউটার নেটওয়ার্ক সিকিউরিটি

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

ক্রিপ্টোগ্রাফি হল এক ধরণের কৌশল যাতে সরল টেক্সট ডাটাকে এনক্রিপ্ট করা হয় যাতে ডাটা বোঝা ও ব্যাখ্যা করা কঠিন হয়। ক্রিপ্টোগ্রাফির বেশ কিছু এলগরিদম বর্তমানে পাওয়া যায়,

  • সিক্রেট কী
  • পাবলিক কী
  • ম্যাসেজ ডাইজেস্ট

 

সিক্রেট কী এনক্রিপশন

প্রেরক ও গ্রাহকের কাছে গোপন সূত্র(কী) থাকে।

পাবলিক কী এনক্রিপশনঃ এই এনক্রিপশন ব্যবস্থায় সব ইউজারের কাছে গোপন সূত্র(কী) থাকে। শেয়ারড ডোমেইনে এটি সম্ভব নয়।

 

ম্যাসেজ ডাইজেস্ট

প্রকৃত তথ্য প্রেরণ করা হয় না, সাঙ্কেতিক মান প্রেরণ করা হয়। গ্রহীতার প্রান্ত থেকে সেই সাঙ্কেতিক মান অনুধাবন ও নির্ণয় করে ডাটা নির্ণয় করা হয়। এমডি-৫ হেসিং এরকম ম্যাসেজ ডাইজেস্টের উদাহরণ।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : কম্পিউটার নেটওয়ার্ক মডেল (DCN – Computer Network Models)

Huge Sell on Popular Electronics

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

 

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

 

লেয়ারের কাজ

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

লেয়ারের কাজ

 

ওএসআই মডেল

ওপেন সিস্টেম ইন্টারকানেক্ট সব কমুনিকেশন সিস্টেমের জন্য আদর্শ, আইএসও দ্বারা প্রতিষ্ঠিত এই মডেলের সাতটি লেয়ার আছে,

 

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

 

ইন্টারনেট মডেল

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

  • এপ্লিকেশন লেয়ারঃ এপ্লিকেশন ব্যবহারকারীকে নেটওয়ার্ক ব্যবহারের সুযোগ করে দেয়, যেমন এফটিপি, এইচটিটিপি ইত্যাদি।
  • ট্রান্সপোর্ট লেয়ারঃ হোষ্টগুলোর মাঝে কীভাবে ডাটা প্রবাহিত হবে তা ঠিক করা এই লেয়ারের দায়িত্ব।
  • ইন্টারনেট লেয়ারঃ ইন্টারনেট প্রটোকল বা আইপি এই লেয়ারে কাজ করে।
  • লিঙ্ক লেয়ারঃ প্রকৃত ডাটা প্রেরণ বা গ্রহণ করার কৌশল এই লেয়ার নির্ধারণ করে।

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : কম্পিউটার নেটওয়ার্ক টোপোলজি (DCN – Computer Network Toplogies)

Huge Sell on Popular Electronics

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

 

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

 

পয়েন্ট টু পয়েন্ট

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

পয়েন্ট টু পয়েন্ট

 

বাস টপোলজি

বাস টপোলজির ক্ষেত্রে সব যন্ত্রগুলো একটি যোগাযোগ মাধ্যম বা তার শেয়ার করে। একই সময়ে একাধিক হোষ্ট ডাটা প্রেরণ করলে বাস টপোলজির ক্ষেত্রে সমস্যা হতে পারে। এজন্য বাস টপোলজি সিএসএমএ/সিডি প্রযুক্তি ব্যবহার করে অথবা একটি হোষ্টকে বাসমাস্টার ধরে সমস্যা সমাধান করে।

বাস টপোলজি

 

স্টার টপোলজি

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

  • লেয়ার-১ ডিভাইস যেমন হাব বা রিপিটার
  • লেয়ার-২ ডিভাইস যেমন সুইচ বা ব্রিজ
  • লেয়ার-৩ ডিভাইস যেমন রাউটার বা গেটওয়ে

স্টার টপোলজি

স্টার টপোলজি সাশ্রয়ী এবং একে কনফিগার করাও সহজ।

 

রিং টপোলজি

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

রিং টপোলজি

 

মেস টেকনোলজি

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

মেস টেকনোলজি

  • ফুল মেসঃ হোষ্টগুলো পয়েন্ট টু পয়েন্ট কানেকশনে অন্য সবগুলো হোষ্টের সাথে যুক্ত থাকে।
  • পারসিয়ালি মেসঃ হোষ্টগুলো পয়েন্ট টু পয়েন্ট কানেকশনে অন্য কয়েকটি(সবগুলোর সাথে না) হোষ্টের সাথে যুক্ত থাকে।

 

ট্রি টপোলজি

বর্তমান সময়ে ব্যবহৃত সবচেয়ে কমন নেটওয়ার্ক টপোলজি, ক্রমবিন্যাসগত টপোলজি নামেও পরিচিত।

ট্রি টপোলজি

 

ডেইজি চেইন

এই টপোলজি সবগুলো হোষ্টকে লিনিয়ার বিন্যাসে সংযুক্ত রাখে।

ডেইজি চেইন

 

হাইব্রিড টপোলজি

কয়েকটি টপোলজি সমন্বিত হয়ে কাজ করে এই নেটওয়ার্ক কাঠামো গঠন করে।

হাইব্রিড টপোলজি

 

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : নেটওয়ার্ক লেন টেকনোলজি (DCN – Network LAN Technologies)

Huge Sell on Popular Electronics

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

 

বিভিন্ন নেটওয়ার্ক লেন টেকনোলজি নিয়ে আলোচনা করা যাক,

 

ইথারনেট

লেন টেকনোলজিতে এটি বহুল প্রচলিত, ১৯৭০ সালে Bob Metcalfe এবং D.R. Boggs এটি আবিস্কার করেন। IEEE 802.3 তে ১৯৮০ সালে আদর্শ হিসেবে এটিকে গ্রহণ করা হয়।

 

ইথারনেট মিডিয়া ব্যবহার করে। শেয়ার করা মিডিয়ার ডাটা পরস্পর সংঘর্ষ প্রবণ হতে পারে। ইথারনেট সংঘর্ষ শনাক্ত করার জন্য CSMA/CD প্রযুক্তি ব্যবহার করে। সচরাচর দেখা যাওয়া ইথারনেট 10BASE-T বৈশিষ্ট্যের যার ১০ এমবিপিএস গতি, BASE দ্বারা বেসব্যান্ড, এবং টি দ্বারা Thick Ethernet বোঝায়।

 

দ্রুত ইথারনেট

দ্রুত বর্ধনশীল সফটওয়ার ও হার্ডওয়ার প্রযুক্তির উপযোগী ইথারনেট ইউটিপি, অপটিক্যাল ফাইবার ও তারবিহীন ভাবেও চলতে পারে। ১০০ এমবিপিএস গতি লাভ এর পক্ষে সম্ভব। IEEE 803.2 তে 100BASE-T নামে এটি শনাক্ত করা যায়, Cat-5 twisted pair cable ব্যবহার করে। ইথারনেট হোষ্টের মাঝে তারের মাধ্যমে মিডিয়া শেয়ার করতে CSMA/CD ব্যবহার করে, তারবিহীন উপায় CSMA/CA ব্যবহার করে। অপটিক্যাল ফাইবারে দ্রুত ইথারনেট 100BASE-FX নামে পরিচিত।

 

গিগা ইথারনেট

১৯৯৫ সালে গিগা ইথারনেটের যাত্রা শুরু, এটি 1000 mbits/second গতিসম্পন্ন EEE802.3ab সমর্থিত এই গিগা ইথারনেট at-5, Cat-5e এবং Cat-6 ক্যাবল ব্যবহার করতে পারে। IEEE802.3ah অপটিক্যাল ফাইবারে গিগা ইথারনেট বোঝায়।

 

ভার্চুয়াল লেন

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

ভার্চুয়াল লেন

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : কম্পিউটার নেটওয়ার্ক টাইপ (DCN – Computer Network Types)

Huge Sell on Popular Electronics

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

 

সাধারণত নেটওয়ার্কের বিস্তৃতি বলতে এর ভৌগলিক বিস্তৃতি বোঝায়, এটি আমাদের ব্যবহৃত সেলফোন থেকে এর ব্লুটুথ হেডফোন পর্যন্ত ক্ষুদ্র দূরত্বের হতে পারে আবার ইন্টারনেটের মত বিশ্বব্যপী বিস্তৃতও হতে পারে।

 

পারসোনাল এরিয়া নেটওয়ার্ক

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

 

লোকাল এরিয়া নেটওয়ার্ক বা লেন

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

 

মেট্রোপলিটন এরিয়া নেটওয়ার্ক বা মেন

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

 

ওয়াইড এরিয়া নেটওয়ার্ক

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

 

ইন্টারনেটওয়ার্ক

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

  • ওয়েবসাইট,
  • ইমেইল,
  • ইনস্ট্যান্ট ম্যাসেজিং,
  • ব্লগিং,
  • সোশ্যাল মিডিয়া,
  • মার্কেটিং,
  • নেটওয়ার্কিং,
  • রিসোর্স শেয়ারিং

ডেটা কমিউনিকেশন ও কম্পিউটার নেটওয়ার্ক : সংক্ষিপ্ত বিবরণ (DCN – Overview)

Huge Sell on Popular Electronics

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

 

পরস্পর সংযুক্ত কম্পিউটার ও তদসংশ্লিষ্ট অনুষঙ্গ (যেমন প্রিন্টার ইত্যাদি) নিয়ে যে ব্যবস্থা তাকে কম্পিউটার নেটওয়ার্ক বলে। এই নেটওয়ার্ক তারযুক্ত বা তারবিহীন উভয় ধরনেরই হতে পারে।

কম্পিউটার নেটওয়ার্ককে বিভিন্ন বিষয়ের উপর নির্ভর করে ভাগ করা যায় যথা,

 

ভৌগলিক কারণ

আমাদের নিজস্ব টেবিল, বিল্ডিং, শহর এসবের তারতম্যের ভিত্তিতে বিভাজন হতে পারে,

আন্তর্সম্পর্ক

প্রত্যেকটি একক যন্ত্রের অন্য যন্ত্রের সাথে সংযুক্ত হওয়ার প্রকরণের উপর নির্ভর করে এই বিভাজন হতে পারে,

এডমিনিস্ট্রেশন

প্রশাসন ব্যক্তি মালিকানাধীণ না পাবলিক তার উপর ভিত্তি করে নেটওয়ার্কিং ভিন্ন হতে পারে,

স্থাপত্যগত কারণ

কম্পিউটার নেটওয়ার্ক বিভিন্ন ধরণের কারণে বিভাজিত হতে পারে যেমন ক্লায়েন্ট সার্ভার, হাইব্রিড ও অন্যান্য কারনেও স্থাপত্যগত পার্থক্য দেখা যেতে পারে।

 

নেটওয়ার্ক এপ্লিকেশন

কম্পিউটার ও তদসংশ্লিষ্ট অনুষঙ্গ নেটওয়ার্কের আকারে সংযুক্ত থাকে, এরা অনেক ধরণের সেবাদান করতে পারে,

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

অ্যাপ এম এল এর ইতিহাস (AppML History)

Huge Sell on Popular Electronics

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

 

১৯৯৯ সালে রেফসনেস ডাটা (Refsnes Data) অ্যাপ এম এল এর প্রথম সংস্করণ ডেভলাপ করে।এমনকি তখনও অ্যাপ এম এল মূলত ওয়েব ক্লায়েন্ট ও ওয়েব সার্ভারের মধ্যে এইচটিটিপি কমিউনিকেশনের উপর নির্ভরশীল ছিল। পরবর্তীতে এই পদ্ধতিই এজ্যাক্স নামে পরিচিতি লাভ করে। ২০০০ সালের সেপ্টেম্বরে নরওয়ের একজন গ্রাহকের আগ্রহে প্রায় ৩০টি এপ্লিকেশনের ডাটা উইন্ডোজ ডেক্সটপ থেকে ইন্টারনেটে সরানোর উদ্যোগ নেয়া হয়, কেবল অ্যাপ এম এল ব্যবহার করে।

 

২০০১ সালে অ্যাপ এম এল নির্ভর সিস্টেম প্রথম বাণিজ্যিক এজ্যাক্স এপ্লিকেশন বাজারে আসে। প্রচণ্ড সফল হয়, প্রচলিত ব্যবস্থার ৭৫ শতাংশে নেমে আসে ওয়েব ডেভলাপমেন্টের সময়। তখন থেকে এর উন্নয়ন চলছে, প্রায় ১০০০ চলায়মান এপ্লিকেশন সিস্টেমের আওতায় আছে।

 

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

 

১৯৯৯ সালেই উপলব্ধি করা হয়েছিল, ভবিষ্যতের এপ্লিকেশন যেকোনো প্লাটফর্মেই চালানো যাবে এমন হবে। পরবর্তী সময়ে ওয়েব ডেভলাপাররা বুঝতে পারেন, ওয়েব এপ্লিকেশনগুলো আসলে ইন্টারনেট সার্ভিসে রূপ নিতে যাচ্ছে, কারণ মানুষ ইন্টারনেট সার্ভিসের উপর নির্ভরশীল হয়ে পরছে। এজন্যই ভবিষ্যতের এপ্লিকেশনগুলো SOA (Service Oriented Architecture) পরিকাঠামোতে লেখা নিরাপদ, এগুলোকে হতে হবে সাধারণ ও স্থিতিস্থাপক যাতে বিভিন্ন ধরণের চাহিদা পূরনে তা সক্ষম হয়।

 

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

 

অ্যাপ এম এল রেফারেন্সঃ ডাটা ফাইল (AppML Reference – Data Files)

Huge Sell on Popular Electronics

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

 

ডাটাবেসের বৈশিষ্ট্য

ডাটাবেসের বৈশিষ্ট্য ডাটাবেসকে ডাটা সোর্সরূপে প্রদর্শন করে।এর কিছু উপবৈশিষ্ট্য আছে,

উপাদান বিবরণ
"type" ডাটা ফাইলের ধরণ ("csvfile", "xmlfile", or "jsonfile")
"filename" ফাইলের নাম
"record" এক্সএমএল ডাটা নডের নাম (যদি xmlfile হয়)
"items" ডাটা আইটেম

 

টেক্সট ফাইল থেকে ডাটা

এই মডেল কমা দিয়ে আলাদা করা টেক্সট ফাইল থেকে টাইটেল, আর্টিস্ট, মূল্য এসব রেকর্ড খুঁজে নেয়,(আইটেম ১, ২, ৫ এর মত)।

উদাহরণ


{
 "data": {
     "type"    : "csvfile",
     "filename": "cd_catalog.txt",
     "items"   : [
         {"name": "Title", "index": 1},
         {"name": "Artist","index": 2},
         {"name": "Price", "index": 5}
     ]
 }
 }

উদাহরণের ব্যাখ্যা টেক্সট ফাইলের অনুরূপ

 

এক্সএমএল ফাইল থেকে ডাটা

এই মডেল এক্সএমএল ফাইলের সিডি নড থেকে টাইটেল, আর্টিস্ট, মূল্য এসব রেকর্ড খুঁজে নেয়।

উদাহরণ


{
 "data": {
     "type"    : "xmlfile",
     "filename": "cd_catalog.xml",
     "record"  : "CD",
     "items"   : [
         {"name": "Artist", "nodename": "ARTIST"},
         {"name": "Title",  "nodename": "TITLE"},
         {"name": "Country","nodename": "COUNTRY"}
     ]
 }
 }

উদাহরণের ব্যাখ্যা এক্সএমএল ফাইলের অনুরূপ

 

জেএসওএন ফাইল থেকে ডাটা

এই মডেল জেএসওএন ফাইলের সিডি অবজেক্টের আরি থেকে টাইটেল, আর্টিস্ট, মূল্য এসব রেকর্ড খুঁজে নেয়।

উদাহরণ


{
 "data" : {
     "type" : "jsonfile",
     "filename" : "cd_catalog.js",
     "record" : "cd",
     "items" : [
         {"name" : "Title", "nodename" : "title"},
         {"name" : "Artist", "nodename" : "artist"},
         {"name" : "Price", "nodename" : "price"}
     ]
 }
 }

উদাহরণের ব্যাখ্যা জেএসওএন ফাইলের অনুরূপ

 

অ্যাপ এম এল রেফারেন্স (AppML Reference)

Huge Sell on Popular Electronics

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

 

অ্যাপ এম এল এইচটিএমএল এট্রিবিউট

উদাহরণ,


<div appml-include-html="inc_header.htm"></div>
 
 <h1>Customers</h1>
 <table appml-data="customers.js" appml-controller="myController">
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 
<divappml-include-html="inc_footer.htm"></div>

 

 

 

Attribute Description Explained
appml-controller AppML controller হিসাবে বিবৃত AppML Controllers
appml-data এপ্লিকেশনের জন্য ডাটা সোর্স বিবৃত করে AppML Data
appml-include-html যে এইচটিএমএল ব্যবহৃত হবে তার বিবরণ AppML Includes
appml-repeat যে এইচটিএমএল পুনরাবৃত্ত হবে তার বিবরণ AppML Howto

 

অ্যাপ এম এল ম্যাসেজ

উদাহরণ,


function myController($appml) {
     if ($appml.message == "display") {
         if ($appml.display.name == "CustomerName") {
             $appml.display.value = $appml.display.value.toUpperCase();
         }
     }
 }

 

 

 

Message Description
"ready" অ্যাপ এম এল শুরুর পরে দেখায়, লোড করতে প্রস্তুত
"loaded" অ্যাপ এম এল লোডেড, ডাটা দেখাতে প্রস্তুত
"display" অ্যাপ এম এল কোনও ডাটা আইটেম দেখানোর আগে দেখায়।
"done" অ্যাপ এম এল সম্পন্ন হওয়ার পর দেখায়
"submit" অ্যাপ এম এল ডাটা সাবমিটের আগে দেখায়
"error" অ্যাপ এম এল কোনও ভুলের সম্মুখীন হলে দেখায়

 

অ্যাপ এম এল ম্যাসেজ অধ্যায়ে এগুলো আরও বিস্তারিত ব্যাখ্যা করা হবে।

 

অ্যাপ এম এল মডেল

উদাহরণ ,


{
 "security": "admin",
 "rowsperpage" : 10,
 
 "database": {
     "connection": "mysql",
     "sql"       : "SELECT * FROM Customers",
     "orderby"   : "CustomerName"}},
 
 "filteritems" : [
     {"item" : "CustomerName", "label" : "Customer"},
     {"item" : "City"},
     {"item" : "Country"}], 
 
 "sortitems" : [
     {"item" : "CustomerName", "label" : "Customer"},
     {"item" : "City"},
     {"item" : "Country"}]
 }

 

 

অ্যাপ এম এল মডেলের বৈশিষ্ট্য

 

উপাদান বর্ণনা
"data" মডেলের ফাইল সোর্স বর্ণনা করে।
"database" মডেলের ডাটাবেস সোর্স বর্ণনা করে।
"filteritems" ফিল্টারের সীমাবদ্ধতা নির্দেশ করে
"rowsperpage" প্রতি পেজে সারির সংখ্যা খুঁজে, বিবৃত করে
"security" মডেলের নিরাপত্তা বিবৃত করে
"sortitems" সর্টিং সীমাবদ্ধতা বিবৃত করে।

 

এপ্লিকেশন নিরাপত্তা

এপ্লিকেশনে ঢুকতে এডমিন মেম্বার হিসেবে লগ ইন করতে হবে।

উদাহরণ,


{
 "security": "admin",
 "database": {
     "connection": "mysql",
     "sql"       : "SELECT * FROM Customers",
     "orderby"   : "CustomerName"}
 }
প্রাইভেট মডেলঃ মডেলে নিজের প্রাইভেট ডাটা যোগ করার উপায় আছে, এই উদাহরণে ডাটার ক্ষেত্রে সীমাবদ্ধতা দেখানো হল,
"restrictions" : {
     "fname" : {"maxlength": 40},
     "price" : {"max": 999,"min": 100}
     }

 

 

মডেল ডাটা সার্ভার এপ্লিকেশনেও ব্যবহৃত হয়, অ্যাপ এম এল কন্ট্রোলার দ্বারা।

নিচের উদাহরণে ইনপুট ভ্যালিডেশনের জন্য মডেল ডাটা ব্যবহৃত হয়েছে।


function myController($appml) {
     if ($appml.message == "submit") {
         var price = document.getElementById("price").value;
         if (price < $appml.model.restrictions.price.min) {
             $appml.displayError(15, "Price too low!");
             return;
         }
 }

 

 

 

অ্যাপ এম এল ওয়েবম্যাট্রিক্স (AppML WebMatrix)

Huge Sell on Popular Electronics

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

 

কারো যদি ওয়েব সার্ভার না থাকে তবে অ্যাপ এম এল ওয়েবম্যাট্রিক্স ব্যবহার করে তৈরি করে নেয়া যায়।

 

ওয়েবম্যাট্রিক্স

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

  • ওয়েবের উদাহরণ ও টেম্পলেট,
  • বিভিন্ন ওয়েব ল্যাঙ্গুয়েজের জন্য সাপোর্ট(যেমন পিএইচপি, এএসপি ডট নেট, নড জেএস ইত্যাদি),
  • একটি ওয়েব সার্ভার,
  • ডাটাবেস সার্ভার(মাইএসকিউএল, এসকিউএল সার্ভার কমপ্যাক)

ওয়েবম্যাট্রিক্স দিয়ে একদম ফাঁকা ওয়েব সাইট দিয়ে শুরু করে বা বিভিন্ন টেম্পলেট ব্যবহার করে সাইট তৈরি করা যায়।

ওয়েবম্যাট্রিক্সে কিছু বিল্ট ইন টুল আছে ডাটাবেস, নিরাপত্তা, সার্চ ইঞ্জিন অপটিমাইজেশন ও ওয়েব পাবলিশিং সংক্রান্ত। ওয়েবম্যাট্রিক্স ইন্সটল করার জন্য লিঙ্ক, http://www.microsoft.com/web/webmatrix

 

শূন্য পিএইচপি সাইট

ওয়েবম্যাট্রিক্স থেকে Template Gallery, সেখান থেকে PHP, তার ভেতর থেকে Empty Site সিলেক্ট করতে হয়। সেখান থেকে সাইট নেম চেঞ্জ করে DemoAppml বা অন্য কিছু দিতে হয়। এরপর Next বাটন চাপতে হয়।

new web

 

এইচটিএমএল টেস্ট পেজ তৈরি

ওয়েবম্যাট্রিক্সে New থেকে New File সেটি থেকে HTML টাইপ হিসেবে নির্ধারণ করতে হয়। ফাইল নেমকে customers.htm বা অন্য কোনও নামে চেঞ্জ করে দিতে হয়, এরপর OK বাটনে চাপতে হয়।

pic_matrix

নতুন ফাইলে এইচটিএমএল যেভাবে পরিবর্তিত হবে তা নিচের উদাহরণে দেখানো হল,

customers.htm


<!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href=
 "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script> 
 <body>
 
 <div class="container" appml-data="customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
 <tr>
   <th>Customer</th>
   <th>City</th>
   <th>Country</th>
 </tr>
 <tr appml-repeat="records">
   <td>{{CustomerName}}</td>
   <td>{{City}}    </td>
   <td>{{Country}} </td>
 </tr>
 </table>
 </div>
 
 <script>
 var customers = {
 "records":[
 {"CustomerName":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
 {"CustomerName":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Around the Horn","City":"London","Country":"UK"},
 {"CustomerName":"B's Beverages","City":"London","Country":"UK"},
 {"CustomerName":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},
 {"CustomerName":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},
 {"CustomerName":"Blondel père et fils","City":"Strasbourg","Country":"France"},
 {"CustomerName":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},
 {"CustomerName":"Bon app'","City":"Marseille","Country":"France"},
 {"CustomerName":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},
 {"CustomerName":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},
 {"CustomerName":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},
 {"CustomerName":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}
 ]};
 </script>
 
 </body>
</html>

 

 

টেস্টপেজ রান করানোর জন্য ওয়েবম্যাট্রিক্সে Right-click করে Launch in browser সিলেক্ট করতে হবে।

 

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

ওয়েবম্যাট্রিক্সে Databasesথেকে New Databaseসেখান থেকে MySQL Database নির্দিষ্ট করে দিতে হবে, ডাটাবেস নেম চেঞ্জ করে OK করে দিতে হবে।

 Web Mattix

ওয়েবম্যাট্রিক্সে Files সিলেক্ট করে web.config ফাইল ওপেন করতে হবে।

 

 

অ্যাপ এম এল কনফিগার করা

ফাইলনেম চেঞ্জ করে appml_config.php করতে হয়,

appml_config.php


<?php echo("Access Forbidden");exit();?>
 {
 "dateformat" : "yyyy-mm-dd",
 "databases" : [{
     "connection" : "mydatabase",
     "host" : "localhost",
     "dbname" : "DemoDB",
     "username" : "DemoDBUkbn5",
     "password" : "l6|U6=V(*T+P" 
 }]
 }

 

 

 

কনফিগারেশন ফাইলের ব্যাখ্যা

 

বৈশিষ্ট্য বর্ণনা
dateformat মডেলে ব্যবহৃত ডেট ফরম্যাট
connection মডেলে ব্যবহৃত কানেকশন নেম
host সার্ভারের আইপি বা হোষ্ট নেম
dbname ডাটাবেসে থাকা নাম
username ইউআইডিতে থাকা নাম
password আইডির পাসওয়ার্ড

 

 

অ্যাপ এম এল কপি করা

http://www.w3schools.com/appml/2.0.3/appml.php.txt. থেকে ডাউনলোড করে ওয়েবসাইটে কপি করে appml.php নামে রিনেম করতে হয়।

pic copy

ডাটাবেস টেবিল তৈরি করা

Create_Customers.js


{
"database" : {
"connection" : "mydatabase",
"execute" : [
"DROP TABLE IF EXISTS Customers",
"CREATE TABLE IF NOT EXISTS Customers (CustomerID INT NOT NULL AUTO_INCREMENT,PRIMARY KEY (CustomerID),CustomerName NVARCHAR(255),ContactName NVARCHAR(255),Address NVARCHAR(255),City NVARCHAR(255),PostalCode NVARCHAR(255),Country NVARCHAR(255))",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Alfreds Futterkiste\",\"Maria Anders\",\"Obere Str. 57\",\"Berlin\",\"12209\",\"Germany\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Around the Horn\",\"Thomas Hardy\",\"120 Hanover Sq.\",\"London\",\"WA1 1DP\",\"UK\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Blauer See Delikatessen\",\"Hanna Moos\",\"Forsterstr. 57\",\"Mannheim\",\"68306\",\"Germany\")"
]
}}


 

 

Create_Customers model রান করাতে এইচটিএমএল পেজ তৈরি করতে হয়,

Create_Customers.htm


<!DOCTYPE html>
 <html lang="en-US">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
<div appml-data="appml.php?model=Create_Customers"></div>
</body>
 </html>

 

 

এইচটিএমএল পেজ রান করাতে ওয়েবম্যাট্রিক্সে Right-click করে Launch in browser সিলেক্ট করতে হবে।

 

এপ্লিকেশন তৈরি করা

কাস্টমার এপ্লিকেশন মডেল তৈরি করে customers.js নামে সংরক্ষণ করতে হয়।

Customers.js


{
 "rowsperpage" : 10,
 "database" : {
 "connection" : "mydatabase",
 "sql" : "SELECT * FROM Customers",
 "orderby" : "CustomerName"
 }
 }

 

 

কাস্টমার এপ্লিকেশন রান করাতে এইচটিএমএল পেজ তৈরি করতে হয়,

customers.htm


<!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href= "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
<div class="container" appml-data="appml.php?model=customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
 <tr>
 <th>Customer</th>
 <th>City</th>
 <th>Country</th>
 </tr>
 <tr appml-repeat="records">
 <td>{{CustomerName}}</td>
 <td>{{City}}</td>
 <td>{{Country}}</td>
 </tr>
 </table>
 </div>
</body>
 </html>

 

 

এইচটিএমএল পেজ রান করাতে ওয়েবম্যাট্রিক্সে Right-click করে Launch in browser সিলেক্ট করতে হবে।

 

অ্যাপ এম এল ডট নেট (AppML .NET)

Huge Sell on Popular Electronics

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

 

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

 

টেস্ট পেজ তৈরি করা

প্রথমে টেস্ট পেজ তৈরি করে সেটিকে পিএইচপি সার্ভারে customers.htm নাম দিয়ে(বা অন্য কোনও নামও চলবে) সংরক্ষণ করতে হবে।

customers.htm


<!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href=
 "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
 
 <div class="container" appml-data="customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
 <tr>
      <th>Customer</th>
      <th>City</th>
      <th>Country</th>
 </tr>
 <tr appml-repeat="records">
      <td>{{CustomerName}}</td>
      <td>{{City}}    </td>
      <td>{{Country}} </td>
 </tr>
 </table>
 </div>
 
 <script>
 var customers = {
 "records":[
 {"CustomerName":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
 {"CustomerName":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Around the Horn","City":"London","Country":"UK"},
 {"CustomerName":"B's Beverages","City":"London","Country":"UK"},
 {"CustomerName":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},
 {"CustomerName":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},
 {"CustomerName":"Blondel père et fils","City":"Strasbourg","Country":"France"},
 {"CustomerName":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},
 {"CustomerName":"Bon app'","City":"Marseille","Country":"France"},
 {"CustomerName":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},
 {"CustomerName":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},
 {"CustomerName":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},
 {"CustomerName":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}
 ]};
 </script>
 
 </body>
 </html>

 

 

এরপর পেজটিকে ব্রাউজারে টেস্ট করতে হবে।

 

ডাটাবেস কানেকশন তৈরি করতে হবে

এসকিউএল সার্ভার ডাটাবেসে প্রবেশযোগ্যতা থাকলে(বা অন্য কোনও OLEDB ডাটাবেস যেমন এমএস এক্সেস) ডাটাবেস কানেকশন ডিফাইন করে সার্ভারে appml_config.aspx নাম দিয়ে সংরক্ষণ করতে হয়।

appml_config.aspx (SQL Server Example)


<%
 Response.write("Access Forbidden")
 Response.end
 %>
 {
 "dateformat" : "yyyy-mm-dd",
 "databases" : [
 "connection" : "mydatabase",
 "provider"   : "SQLOLEDB",
 "host"       : "myserver",
 "dbname"     : "DemoDB",
 "username"   : "DemoDBUkbn5",
 "password"   : "l6|U6=V(*T+P"
 }]
 }

 

appml_config.aspx (MS Access Example)


<%
 Response.write("Access Forbidden")
 Response.end
 %>
 {
 "dateformat" : "yyyy-mm-dd",
 "databases" : [
 {
 "connection" : "mydatabase",
 "connectionstring" :
 "Provider=Microsoft.Jet.OLEDB.4.0;data source=C:\\database\\Northwind.mdb"
 }
 }

 

উপরের উদাহরণের কানেকশন বাস্তব নয়, নাম ও পাসওয়ার্ড উদাহরণমাত্র।

 

কনফিগারেশন ফাইলের ব্যাখ্যা

বৈশিষ্ট্য বর্ণনা
dateformat মডেলে যে ডেট ফরম্যাট ব্যবহৃত হবে
connection মডেলে যে কানেকশন নেম ব্যবহৃত হবে
connectionstring OLEDB ড্রাইভার যেমন এমএস এক্সেস ইত্যাদির ক্ষেত্রে প্রযোজ্য
provider ডাটাবেস সফটওয়ারের পরিবেশক
host ডাটাবেসের আইডি বা হোষ্ট
dbname ডাটাবেসের নাম
username ডাটাবেসের ইউজারনেম
password ডাটাবেসের পাসওয়ার্ড

 

ডাটাবেস টেবিল তৈরি করা

ডাটাবেসে কাস্টমার টেবিল তৈরির মডেল নিচের উদাহরণে দেয়া হল,

create_customers.js


{
"database" : {
"connection" : "mydatabase",
"execute" : [
"DROP TABLE IF EXISTS Customers",
"CREATE TABLE IF NOT EXISTS Customers (CustomerID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,(CustomerID), CustomerName NVARCHAR(255),ContactName NVARCHAR(255),Address NVARCHAR(255),City NVARCHAR(255),PostalCode NVARCHAR(255),Country NVARCHAR(255))",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Alfreds Futterkiste\",\"Maria Anders\",\"Obere Str. 57\",\"Berlin\",\"12209\",\"Germany\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Around the Horn\",\"Thomas Hardy\",\"120 Hanover Sq.\",\"London\",\"WA1 1DP\",\"UK\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Blauer See Delikatessen\",\"Hanna Moos\",\"Forsterstr. 57\",\"Mannheim\",\"68306\",\"Germany\")"
]
}}


 

 

create_customers.js model চালু করার জন্য এইচটিএমএল পেজ তৈরি করতে হয়,

create_customers.htm


<!DOCTYPE html>
 <html>
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
 
 <div appml-data="appml.aspx?model=create_customers"></div>
 
 </body>
 </html>

 

এইচটিএমএল পেজটিকে ওয়েব ব্রাউজারে চালু করতে হয়।

 

 

এপ্লিকেশন তৈরি করা

কাস্টমার এপ্লিকেশনের মডেল তৈরি করে তাকে customers.js নাম দিয়ে সংরক্ষণ করতে হয়।

 

customers.js


{
 "rowsperpage" : 10,
 "database" : {
     "connection" : "mydatabase",
     "sql" : "SELECT * FROM Customers",
     "orderby" : "CustomerName"
 }
 }

 

 

এইচটিএমএল পেজ তৈরি করে তাতে কাস্টমার এপ্লিকেশন রান করাতে হয়,

customers.htm


<!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href= "http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script> 
 <body>
 
 <div class="container" appml-data="appml.aspx?model=customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
 </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
 </tr>
 </table>
 </div>
 
 </body>
</html>

 

 

 

 

অ্যাপ এম এল পিএইচপি (AppML PHP)

Huge Sell on Popular Electronics

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

 

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

 

টেস্ট পেজ তৈরি করা

টেস্ট পেজ তৈরি করে customers.htm রূপে (বা অন্যকোনও রূপে) পিএইপি সার্ভারে সংরক্ষণ করতে হবে।

customers.htm


 <!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
 
 <div class="container" appml-data="customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
 <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
 </tr>
 <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}    </td>
     <td>{{Country}} </td>
 </tr>
 </table>
 </div>
 
 <script>
 var customers = {
 "records":[
 {"CustomerName":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
 {"CustomerName":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Around the Horn","City":"London","Country":"UK"},
 {"CustomerName":"B's Beverages","City":"London","Country":"UK"},
 {"CustomerName":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},
 {"CustomerName":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},
 {"CustomerName":"Blondel père et fils","City":"Strasbourg","Country":"France"},
 {"CustomerName":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},
 {"CustomerName":"Bon app'","City":"Marseille","Country":"France"},
 {"CustomerName":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},
 {"CustomerName":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},
 {"CustomerName":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},
 {"CustomerName":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}
 ]};
 </script>
 
 </body>
</html>

 

ব্রাউজারে সেই ওয়েবপেজটি পরীক্ষা করে দেখতে হয়।

 

একটি ডাটাবেস কানেকশন তৈরি করতে হয়

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

 

appml_config.php


<?php echo("Access Forbidden");exit();?>
 {
 "dateformat" : "yyyy-mm-dd",
 "databases" : [{
     "connection" : "mydatabase",
     "host" : "localhost",
     "dbname" : "DemoDB",
     "username" : "DemoDBUkbn5",
     "password" : "l6|U6=V(*T+P" 
 }]
 }

 

উপরে বিবৃত কানেকশন বাস্তব নয়, নাম আর পাসওয়ার্ড উদাহরণমাত্র।

 

কনফিগারেশন ফাইলের বিস্তারিত

 

বৈশিষ্ট্য বর্ণনা
ডাটা ফরম্যাট মডেলে যে ডাটা ফরম্যাট ব্যবহৃত হবে
কানেকশন মডেলে যে কানেকশন ব্যবহৃত হবে
হোস্ট ডাটাবেসের আইপি হোস্ট
dbname ডাটাবেসের নাম
username ডাটাবেসের ইউজার নেম
password ডাটাবেসের পাসওয়ার্ড

 

create_customers.js


{
"database" : {
"connection" : "mydatabase",
"execute" : [
"DROP TABLE IF EXISTS Customers",
"CREATE TABLE IF NOT EXISTS Customers (CustomerID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,(CustomerID),CustomerName NVARCHAR(255),ContactName NVARCHAR(255),Address NVARCHAR(255),City NVARCHAR(255),PostalCode NVARCHAR(255),Country NVARCHAR(255))",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Alfreds Futterkiste\",\"Maria Anders\",\"Obere Str. 57\",\"Berlin\",\"12209\",\"Germany\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Around the Horn\",\"Thomas Hardy\",\"120 Hanover Sq.\",\"London\",\"WA1 1DP\",\"UK\")",
"INSERT INTO Customers(CustomerName,ContactName,Address,City,PostalCode,Country)VALUES (\"Blauer See Delikatessen\",\"Hanna Moos\",\"Forsterstr. 57\",\"Mannheim\",\"68306\",\"Germany\")"
]
}}


 

create_customers.js model চালানোর জন্য এইচটিএমএল পেজ তৈরি করতে হয়,

create_customers.htm


 <!DOCTYPE html>
 <html>
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
 
 <div appml-data="appml.php?model=create_customers"></div>
 
 </body>
 </html>

 

এখন ব্রাউজারে এইচটিএমএল পেজটি চালাতে হবে।

 

এপ্লিকেশন মডেল তৈরি করা

কাস্টমারের এপ্লিকেশনের জন্য মডেল তৈরি করতে হয়। এটিকে customers.js নাম দিতে হবে।

customers.js


{
 "rowsperpage" : 10,
 "database" : {
     "connection" : "mydatabase",
     "sql" : "SELECT * FROM Customers",
     "orderby" : "CustomerName"
 }
 }

 

কাস্টমারের এপ্লিকেশন রান করানোর জন্য এইচটিএমএল পেজ তৈরি করতে হবে,

 

customers.htm


<!DOCTYPE html>
 <html lang="en">
 <title>Customers</title>
 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
 <body>
 
 <div class="container" appml-data="appml.php?model=customers">
 <h1>Customers</h1>
 <table class="table table-striped table-bordered">
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
 </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
 </tr>
 </table>
 </div>
 
 </body>
</html>

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন ভূমিকা (JSON – Introduction)

Huge Sell on Popular Electronics

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

 

জেএসওএন(JSON) জাভাস্ক্রিপ্ট অবজেক্টের মূল্যায়ন করে

জেএসওএন ফরম্যাট সিনট্যাক্সভাবে জাভাস্ক্রিপ্ট অবজেক্টের কোডের অনুরূপ। সাদৃশ্য থাকায় জেএসওএন ডাটাকে নেটিভ জাভাস্ক্রিপ্ট অবজেক্টে রূপ দিতে জাভাস্ক্রিপ্ট পারসার(এক্সএমএলের মত) ব্যবহার না করে আদর্শ জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করে থাকে।

 

নিচের কোডগুলো ব্যবহার করে এই উদাহরণটি পরীক্ষা করে দেখা যেতে পারে

জেএসওএন উদাহরণ,


 <!DOCTYPE html>
 <html>
 <body>
 
 <h2>JSON Object Creation in JavaScript</h2>
 
 <p id="demo"></p>
 
 <script>
 var text = '{"name":"John Johnson","street":"Oslo West 16","phone":"555 1234567"}';
 
 var obj = JSON.parse(text);
 
 document.getElementById("demo").innerHTML =
 obj.name + "<br>" +
 obj.street + "<br>" +
 obj.phone;
 </script>
 
 </body>
 </html>

 

 

এটি অনেকটাই এক্সএমএলের মত কারণ

  • এক্সএমএল ও জেএসওএন উভয়ই আত্মবিবৃতি মূলক অর্থাৎ মানুষের দ্বারা পঠনযোগ্য।
  • এক্সএমএল ও জেএসওএন উভয়ই স্তরবিন্যাসগত (মানের ভেতর মান)।
  • এক্সএমএল ও জেএসওএন উভয়ের ক্ষেত্রেই পারসার ব্যবহার করা যায় এবং বিভিন্ন প্রোগ্রামিং ভাষায় ব্যবহৃত হতে পারে।
  • এক্সএমএল ও জেএসওএন উভয়ের ক্ষেত্রেই XMLHttpRequest প্রয়োগযোগ্য হতে পারে।

 

এটি অনেকক্ষেত্রে এক্সএমএলের মত নয় কারণ

 

  • জেএসওএন এন্ড ট্যাগ ব্যবহার করে না।
  • জেএসওএন একটু খাটো।
  • জেএসওএন দ্রুত লিখা ও পড়া যায়।
  • জেএসওএন অ্যারি(arrays) ব্যবহার করতে পারে।

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

 

 

 

জেএসওএন কেন?

 

এজাক্স এপ্লিকেশনে জেএসওএন ব্যবহার এক্সএমএল এরচেয়ে দ্রুত ও সহজ।

 

এক্সএমএল ব্যবহার করে

 

  • এক্সএমএল ডকুমেন্ট আনতে হয়,
  • পুরো ডকুমেন্টের লুপে এক্সএমএল ডোম (XML DOM) ব্যবহার করতে হয়,
  • মান নির্ণয় ও চলকে সংরক্ষণ করতে হয়,

 

জেএসওএন ব্যবহার করে,

  • একটি জেএসওএন স্ট্রিং বের করতে হয়,
  • জেএসওএন ব্যবহার করে সেই স্ট্রিংকে খণ্ডিত করতে হয়।

 

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন কর্মপ্রণালীঃ JSON How To

Huge Sell on Popular Electronics

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

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

জেএসওএন উদাহরণঃ অবজেক্ট থেকে স্ট্রিং

জাভাস্ক্রিপ্ট স্ট্রিং তৈরি করা যাক যেটিতে জেএসওএন সিনট্যাক্স আছে,


var text = '{ "employees" : [' +
 '{ "firstName":"John" , "lastName":"Doe" },' +
 '{ "firstName":"Anna" , "lastName":"Smith" },' +
 '{ "firstName":"Peter" , "lastName":"Jones" } ]}';

 

 

জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্ট সিনট্যাক্সের একটি সাবসেট। JSON.parse(text) নামক জাভাস্ক্রিপ্ট ফাংশন ব্যবহার করে জেএসওএন টেক্সটকে জাভাস্ক্রিপ্ট অবজেক্টে পরিনত করা যায়।


var obj = JSON.parse(text);


 

 

পেজে নতুন জাভাস্ক্রিপ্ট অবজেক্ট ব্যবহার করা যাক,


<p id="demo"></p>
<script>
 document.getElementById("demo").innerHTML =
 obj.employees[1].firstName + " " + obj.employees[1].lastName;
 </script>

 

eval() এর ব্যবহার

পূর্ববর্তী ব্রাউজার যাদের JSON.parse ব্যবহারের সুযোগ নেই তাদের জন্য জেএসওএন টেক্সটকে জাভাস্ক্রিপ্ট অবজেক্টে পরিনত করতে eval() ব্যবহার করা একটি উপায়।
উদাহরণ,


var obj = eval ("(" + text + ")");


 

এখানে বলা উচিৎ, eval() ফাংশন যেকোনো জাভাস্ক্রিপ্টকে কম্পাইল ও সম্পাদন করতে পারে, যেটি অনেক নিরাপত্তাজনিত সমস্যা সৃষ্টি করে, তাই একে এড়িয়ে চলাই ভাল।
জেএসওএন টেক্সটকে জাভাস্ক্রিপ্ট অবজেক্টে পরিনত করতে জেএসওএন পারসার ব্যবহার করা উচিৎ, জেএসওএন পারসার কেবল জেএসওএন টেক্সটকে বুঝতে পারে, স্ক্রিপ্টকে কম্পাইল করে না, ব্রাউজারে যা নেটিভ জেএসওএন সাপোর্ট দেয়, জেএসওএন পারসার অনেকটা দ্রুতও। প্রধান প্রধান যেসব ব্রাউজারে নেটিভ জেএসওএন সাপোর্ট সংযুক্ত, এবং সর্বাধুনিক ECMAScript (JavaScript) সম্পন্ন, সেগুলো হল,

Web Browsers Support

  • Firefox 3.5
  • Internet Explorer 8
  • Chrome
  • Opera 10
  • Safari 4

পূর্ববর্তী ব্রাউজারগুলোর জন্য একটি জাভাস্ক্রিপ্ট লাইব্রেরী এখানে আছে, https://github.com/douglascrockford/JSON-js

Douglas Crockford জেএসওএন ফরম্যাটকে গড়ে তুলেছেন।

অ্যাপ এম এল ফর্ম (AppML Forms)

Huge Sell on Popular Electronics

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

 

এই অধ্যায়ে দেখানো হবে কীভাবে ডাটাবেসের বিপরীতে ইনপুট ফর্ম তৈরি করা যায়।

 

ফর্ম মডেল তৈরি করা

model_customersform.js


{
 "database" : {
     "connection" : "localmysql",
     "maintable" : "Customers",
     "keyfield" : "CustomerID",
     "sql" : "SELECT * FROM Customers"},
 "updateItems" : [
     {"item" : "CustomerName"},
     {"item" : "Address"},
     {"item" : "PostalCode"},
     {"item" : "City"},
     {"item" : "Country"}]
 }

 

 

এইচটিএমএল ফর্ম তৈরি করা

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

HTML Form


<div id="Form01" appml-data="local?model=model_customersform"
 class="jumbotron">
 
 <div class="form-group">
   <label for="customername">Customer:</label>
   <input id="customername" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="address">Address:</label>
   <input id="address" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="city">City:</label>
   <input id="city" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="postalcode">Postal Code:</label>
   <input id="postalcode" class="form-control">
 </div>
 
 <div class="form-group">
   <label for="country">Country:</label>
   <input id="country" class="form-control">
 </div>
 
 </div>

 

 

এইচটিএমএল ফর্মের ব্যাখ্যা

appml-data="local?model=model_customersform" দ্বারা ফরমের জন্য অ্যাপ এম এল এপ্লিকেশন বোঝায়।

 

এইচটিএমএল ফর্ম কমান্ড তৈরি করা

পছন্দসই স্টাইলশিট ব্যবহার করে(এখানে bootstrap ব্যবহার করা হয়েছে) কাঙ্খিত ফর্ম কমান্ড তৈরি করা হয়,

inc_formcommands.htm


<button type="button" class="close" onclick="document.getElementById('Form01').style.display='none';">X</button>
 
 <button type="button" class="close">X</button>
 
 <div class="btn-toolbar" style="margin-bottom:20px;">
 <div class="btn-group">
 
 <button type="button" class="btn btn-default" onclick="appml('Form01').newRecord();">
 <span class="glyphicon glyphicon-new-window"></span> New</button>
 
 <button type="button" class="btn btn-primary" onclick="appml('Form01').saveRecord();">
 <span class="glyphicon glyphicon-floppy-disk"></span> Save</button>
 
 <button type="button" class="btn btn-default" onclick="appml('Form01').deleteRecord();">
 <span class="glyphicon glyphicon-trash"></span> Delete</button>
 
 </div>
 </div>
 
 <div id="appmlmessage" class="alert alert-warning" style="display:none;">
 <button type="button" class="close"
 onclick="this.parentNode.style.display='none';">X</button>
 <div id="message"></div>
 
</div>

 

 

ফর্ম কমান্ড অন্তর্ভুক্তি

ফরমে ফর্ম কমান্ড অন্তর্ভুক্ত করা হয়,

HTML Form


<div id="Form01" appml-data="local?model=model_customersform"
 class="jumbotron">
 
 <div appml-include-html="inc_formcommands.htm"></div>
 
 <div class="form-group">
 <label for="customername">Customer:</label>
 <input id="customername" class="form-control">
 </div>
 
 <label for="address">Address:</label>
 <input id="address" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="city">City:</label>
 <input id="city" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="postalcode">Postal Code:</label>
 <input id="postalcode" class="form-control">
 </div>
 
 <div class="form-group">
 <label for="country">Country:</label>
 <input id="country" class="form-control">
 </div>
 
 </div>

 

 

 

 

ডাটা টেবিলে ক্লিকেবল কলাম যোগ করা

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

 

HTML Source


<div appml-data="local?model=model_customerslist">
 
 <h1>Customers</h1>
 <div appml-include-html="inc_listcommands.htm"></div>
 <div appml-include-html="inc_filter.htm"></div>
 
 <table class="table table-striped table-bordered">
   <tr>
     <th></th>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td style="cursor:pointer;width:34px;"
         onclick="appml('Form01').run({{CustomerID}})">
         <span class="glyphicon glyphicon-edit"></span></td>
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 
</div>

 

 

নতুন কলামের অনক্লিক ইভেন্ট অ্যাপ এম এল এর একটি এপ্লিকেশন রান করায়, যা এইচটিএমএল উপাদানের মধ্যে id="Form01" পরিচিতি নিয়ে অবস্থান করে।

 

  • appml('Form01') অ্যাপ এম এল এর এপ্লিকেশন পুনরাবৃত্তি করায়,
  • run({{CustomerID}}) প্যারামিটাররূপে কাস্টমার আইডির সাথে এপ্লিকেশন রান করায়।

 

চূড়ান্ত পর্যায়ে, ফর্মকে লুকিয়ে রাখা

ফর্মকে লুকিয়ে রাখতে একধরনের স্টাইল ব্যবহার করা হয়,

 

HTML


<div id="Form01" appml-data="local?model=model_customersform"
 appml-controller="myFormController"
 class="jumbotron" style="display:none">

 

ফর্মে একটি কন্ট্রোলার ব্যবহার করা হয় যেন এটি কেবল তখনই দৃশ্যমান হবে যখন এটি লোডেড ও ডাটা প্রদর্শনের জন্য প্রস্তুত।

Controller


<script>
 function myFormController($appml) {
     if ($appml.message == "ready") {return -1;}
     if ($appml.message == "loaded") {
         document.getElementById("Form01").style.display="";
     }
 }
 </script>

 

 

 

অ্যাপ এম এল লিস্ট (AppML Lists)

Huge Sell on Popular Electronics

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

 

এই অধ্যায়ে আমরা একটি ডাটাবেস থেকে রেকর্ড লিস্ট করব।

 

নতুন মডেল তৈরি করা

পূর্ববর্তী অধ্যায়ে ডাটাবেস তৈরি করতে মডেল ব্যবহার করা হয়েছে। এখন ফিলটার ও সংক্ষিপ্ত বর্ণনাসহ নতুন মডেল তৈরি করব,

 model_customerslist.js


{
 "rowsperpage" : 10,
 "database" : {
     "connection" : "localmysql",
     "sql" : "SELECT * Customers",
     "orderby" : "CustomerName"
 },
 "filteritems" : [
     {"item" : "CustomerName", "label" : "Customer"},
     {"item" : "City"},
     {"item" : "Country"}
 ],
 "sortitems" : [
     {"item" : "CustomerName", "label" : "Customer"},
     {"item" : "City"},
     {"item" : "Country"}
 ]
 }

 

এপ্লিকেশনে এই মডেল ব্যবহার করতে হবে,


<div appml-data="local?model=model_customerslist">
 <h1>Customers</h1>
 <div appml-include-html="inc_listcommands.htm"></div>
 
 <table class="table table-striped table-bordered">
   <tr> 
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}} </td>
     <td>{{Country}} </td>
   </tr>
 </table>
 </div>

 

আই ই বা ফায়ারফক্স ব্রাউজারে লোকাল ডাটাবেস ব্যবহার কাজে আসবে না। ক্রোম বা সাফারি ব্যবহার করতে হবে।

 

এইচটিএমএল ফিলটার টেম্পলেট তৈরি

ফিলটারের জন্য এইচটিএমএল টেম্পলেট তৈরি করতে হয়,

inc_filter.htm


<div id="appml_filtercontainer" class="jumbotron" style="display:none;">
   <button id="appmlbtn_queryClose" type="button" class="close"><span>&times;</span></button>
   <h2>Filter</h2>
   <div id="appml_filter">
     <div appml-repeat="filteritems">
       <div class="row">
         <div class="col-sm-3">
           <label>{{label||item}}:</label>
         </div>
         <div class="col-sm-2">
           <input id="appml_datatype_{{item}}" type='hidden'>
           <select id="appml_operator_{{item}}" class="form-control">
             <option value="0">=</option>
             <option value="1">&lt;&gt;</option>
             <option value="2">&lt;</option>
             <option value="3">&gt;</option>
             <option value="4">&lt;=</option>
             <option value="5">&gt;=</option>
             <option value="6">%</option>
           </select>
         </div>
         <div class="col-sm-7">
           <input id="appml_query_{{item}}" class="form-control">
         </div>
       </div>
     </div>
   </div>
   <div id="appml_orderby">
     <h2>Order By</h2>
     <div class="row">
       <div class="col-sm-5">
         <select id='appml_orderselect' class="form-control">
           <option value=''></option>
           <option appml-repeat="sortitems" value="{{item}}">{{label || item}}</option>
         </select>
       </div>
       <div class="col-sm-7">
         ASC <input type='radio' id="appml_orderdirection_asc"
         name='appml_orderdirection' value='asc'>
         DESC <input type='radio' id="appml_orderdirection_desc"
         name='appml_orderdirection' value='desc'>
       </div>
     </div>
   </div>
   <br>
   <button id="appmlbtn_queryOK" type="button" class="btn btn-primary">OK</button>
 </div>

 

 

ফিলটার এইচটিএমএলকে "inc_filter.htm" জাতীয় নামের সঠিক ফাইলে সংরক্ষণ করতে হয়, appml-include-html এর সাথে প্রোটোটাইপে ফিলটার এইচটিএমএলকে অন্তর্ভুক্ত করতে হয়,


<div appml-data="local?model=model_customerslist">
 
 <h1>Customers</h1>
 <div appml-include-html="inc_listcommands.htm"></div>
 <div appml-include-html="inc_filter.htm"></div>
 <table class="table table-striped table-bordered">
   <tr> 
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}} </td>
     <td>{{Country}} </td>
   </tr>
 </table>
 </div>