অ্যাপ এম এল টিউটোরিয়াল (AppML Tutorial)

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

 

অ্যাপ এম এল কি?

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

  • অবজেক্ট থেকে
  • ফাইল থেকে
  • ডাটাবেস থেকে

অ্যাপ এম এল কেন?

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

  • এইচটিএমএলকে ডাটা এট্রিবিউটের সাহায্যে প্রসারিত করে
  • এইচটিএমএলে কন্ট্রোলার যোগ করে এইচটিএমএল ডাটার আচরণ কন্ট্রোল করে

অ্যাপ এম এল বোঝা খুব সহজ এবং এটি ডেভলাপ করাও বিশেষভাবে সহজ।

অ্যাপ এম এল এর উদাহরণ

নিচের উদাহরণে দেখানো হয়েছে অ্যাপ এম এল কীভাবে এইচটিএমএলে কাজ করে থাকে,


 

<!DOCTYPE html>
<html lang="en-US">
<title>Customers</title>
<link rel="stylesheet" href="style.css">
<script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
<body>
<h1>Customers</h1>
<table appml-data="customers.js">
<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>
</body>
</html>

 

নোটঃ AppML, সহজ, দ্রুত, এবং চটপটে ওয়েব এপ্লিকেশন ডেভেলপমেন্ট এর জন্য একটি টুল।

সহজ এবং কর্মতৎপর

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

অ্যাপ এম এল সিঙ্গেল পেজ এপ্লিকেশন(এসপিএ) তৈরির পদ্ধতিকে সহজ ও কার্যকর করেছে। এমনকি কেউ যদি আগে ওয়েব ডেভলাপমেন্ট না করে থাকে তার কাছেও অ্যাপ এম এল ব্যবহার অনেক সহজ হবে। কেউ যদি আগে থেকে দক্ষ ওয়েব ডেভলাপার হয়ে থাকেন তবে তিনি দ্রুত অ্যাপ এম এল এর উপযোগিতা সম্পর্কে বুঝতে পারবেন।

 

Configure IIS for PHP

Configure IIS for PHP

মানসিক চাপ নিয়ন্ত্রণ ও ব্যবস্থাপনাঃ Stress Management for Professionals

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

 

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

চাপের প্রধান কারণগুলো শনাক্ত করা যাক

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

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

যোগাযোগ, যোগাযোগ এবং… শুধুই যোগাযোগ

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

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

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

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

ব্যক্তিজীবন বনাম কর্মজীবন

ব্যক্তিগত কারণে কর্মক্ষেত্রে সমস্যা হচ্ছে কিনা তা বোঝার চেষ্টা করুন। ব্যক্তিগত সমস্যা সমাধানে পরিবার সবচেয়ে বেশি সাহায্য করতে পারবে। ব্যক্তিগত সমস্যা পরিবারের সদস্য বা ঘনিষ্ঠজন, স্বামী বা স্ত্রী এঁদের সাথে আলাপ আলোচনা করে সমাধান করা যেতে পারে। সমাধানের চেষ্টা ব্যর্থ হলে ম্যানেজারের সাথে কথা বলে কিছুদিনের জন্য কাজ থেকে ছুটি নিয়ে ব্যক্তিগত বা ব্যক্তিগত সমস্যা মিটিয়ে পরে আবার কাজে যোগ দিতে পারেন।

চাপ স্বল্পকালীন হতে পারে

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

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

নিচের কোনও পদ্ধতি আপনার জন্য উপযুক্ত কিনা তা দেখুন

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

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

 

স্ক্রাম সফটওয়্যার ব্যবস্থাপনা পদ্ধতি । Scrum Software Management

স্ক্রাম: সারসংক্ষেপ

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

Please also check in Word document (with pictures) at: http://salearningschool.com/training_slides/software_engineering/scrum.doc

 

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

 

এক্ষেত্রে নতুন কি আছে তা বুঝতে হলে বিদ্যমান পদ্ধতি কি তা পর্যালোচনা করতে হবে। গতানুগতিক সফটওয়ার ডেভলাপমেন্ট পদ্ধতিতে ডেভলাপমেন্ট প্রক্রিয়ার আগে সফটওয়ারের রিকোয়ারমেন্ট ঠিক করা হয়।

 

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

 

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

 

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

 

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

 

পূর্ববর্তী যে ক্ষেত্রগুলোতে আমরা এজাইল পরিকাঠামো দেখতে পেয়েছি তার মধ্যে আছে Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997), and Dynamic Systems Development Method (DSDM) (1995) এসব। ২০০১ সালে এজাইল মেনিফেস্টো প্রকাশিত হওয়ার পর থেকে এদেরকে একসাথে এজাইল প্রণালীর মধ্যে ধরা হয় ।

 

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

 

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

 

  • প্রক্রিয়া ও যন্ত্রের উপর ব্যক্তি ও পারস্পরিক ক্রিয়া।
  • কম্প্রিহেন্সিভ ডকুমেন্টেশনের মাধ্যমে সফটওয়ারের উপর কাজ।
  • কন্ট্রাক্ট নিগোসিয়েশনের মাধ্যমে ব্যবহারকারীর সম্পৃক্ততা নিশ্চিতকরণ।
  • পরিকল্পনা অনুযায়ী পরিবর্তন সাধন ও নিয়ন্ত্রণ।

অর্থাৎ আমরা সমস্যাগুলোকে সমানভাবে সমাধান করতে চাই।

…Manifesto for Agile Software Development, Authors: Beck, Kent, et al. (2001)

এজাইল মেনিফেস্টো যে নীতির ভিত্তিতে বিবৃত তা নিচের ছকে (ইংরেজি টার্মে) দেয়া হল।

Principle Description
Satisfaction and Delivery Customer satisfaction through early and continuous working software.
Welcoming Change Welcome changing requirements, even at later stages of development.
Deliver Frequently Deliver working software frequently (weekly rather than monthly).
Communication is the Key Ensure close association of developers with business people on daily basis.
Environment and Trust Build projects around motivated individuals. Give them necessary support and trust them.
Face-to-face Communication Encourage face-to-face conversation to ensure efficient and effective communication.
Software as Measure of Progress Working software is the primary measure of progress.
Sustainable Development Promote sustainable development with the ability to maintain a constant pace throughout the development.
Attention to Details Continuous attention to technical excellence and good design.
The Power of Less Simplicity is essential.
Self-organizing Teams Regular attention of the team on becoming effective in changing circumstances.

 

এজাইলের প্রক্রিয়াঃ

 

Dynamic System Development Methodology (DSDM) বা বিএসডিএমঃ  এটি সফটওয়ার প্রোজেক্টের জন্য উপযোগী এজাইল কাঠামো। গতানুগতিক পদ্ধতির সাথে মিলাতে এটি তৈরি করা হয়েছে। বিসডিএম এর সর্বশেষ সংস্করণকে বলে বিসডিএম এটার্ন , এটার্ন নামটি আর্কটিক টার্নের সংক্ষেপ যা আর্কটিক পাখির নাম যা বহুদুর উড়তে পারে যা রুপক অর্থে এজাইল কাঠামোর প্রাধান্যভিত্তিক ও সহযোগিতামূলক বৈশিষ্ট্যের মত উপাদানগত বিস্তৃতির ব্যপকতা নির্দেশ করে।

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

Extreme Programming (XP) বা এক্সপিঃ এটি এক প্রকারের এজাইল সফটওয়ার ডেভলাপমেন্ট, এটি ক্ষুদ্র ডেভলাপমেন্ট চক্রেই ঘনঘন উৎপাদনের স্বার্থে কাজ করে যা উৎপাদনশীলতা বৃদ্ধি করে ও এমন ক্ষেত্র তৈরি করে যা গ্রাহকের নতুনতর রিকোয়ারমেন্ট সমন্বয় করতে পারে। এই প্রণালীর নামকরণের ধারণা নেয়া হয়েছে ‘এক্সট্রিম’ ধারণা থেকে কারণ প্রথাগত সফটওয়ার প্রকৌশল উপাদানকে ‘এক্সট্রিম’ অর্থাৎ চূড়ান্ত পর্যায়ে নেয়া হয়েছে। (‘এক্সট্রিম’ প্রোগ্রামিং সফটওয়ার ডেভলাপমেন্টের একটি ধারা যেখানে কর্মীদের অধিক মানসম্পন্ন সফটওয়ার বেশি উৎপাদনশীলতার সাথে উৎপাদনে উৎসাহিত করে)। এক্সপি যে বিষয়গুলো নিয়ে কাজ করে সেগুলো হল বিশ্লেষণ, ডেভলাপমেন্ট এবং নতুনভাবে উদ্ভাবিত ধারনার পরীক্ষামূলক ক্ষেত্র যা কিনা চূড়ান্তভাবে উৎপাদিত পণ্যের অন্তর্নিহিত মানের তুলনা করে।

Test-driven Development (TDD) বা টিডিডিঃ এটি এক প্রকারের সফটওয়ার ডেভলাপমেন্ট প্রক্রিয়া যেটিতে অত্যন্ত ক্ষুদ্র ডেভলাপমেন্টের চক্র ঘনঘন পুনরাবৃত্তি করা হয়।  প্রথমে ডেভলাপার কাঙ্খিত পরিবর্তন বা নতুন ফাংশন সংবলিত স্বয়ংক্রিয় টেস্ট কেস লিখেন, এরপর এটি টেস্ট পাসের সর্বনিম্ন কোড নির্দেশ করে, এরপর নতুন কোডকে গ্রহণযোগ্য মানে নিয়ে আসা হয়।

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

কানবানঃ এটি পণ্যের মান উন্নয়ন ও ধরে রাখার একটি সিস্টেম, এটি Just-In-Time (JIT) বা জিআইটি নামক পদ্ধতি অনুসরণ করে, যার মাধ্যমে কোম্পানি খরচের তালিকা নিয়ন্ত্রণ করে। কানবান উৎপাদন ব্যবস্থা নিয়ন্ত্রণের একটি খুব ভাল টুল, এবং উন্নতির জন্য খুব নির্ভরযোগ্য সিস্টেমও বটে।

 

শেষ কথাঃ 

 

স্ক্রাম পরিকাঠামোঃ স্ক্রাম হল জটিল ধরণের পণ্য তৈরি ও মান বজায় রাখার একধরনের পরিকাঠামো। Ken Schwaber এবং Jeff Sutherland স্ক্রাম ডেভলাপ করেছেন। স্ক্রামের নিয়ম কানুনের পেছনেও এঁরাই আছেন।

 

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

 

স্ক্রাম প্রক্রিয়ার পরিকাঠামোঃ  

 

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

 

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

 

শেষ কথাঃ স্ক্রাম সেইধরনের পরিকাঠামো যেখানে নির্ধারিত নিয়ম, ইভেন্ট, ভূমিকা ইত্যাদিকে নিয়মের শৃঙ্খলায় আনা হয়, মৌলিক নিয়মের বাইরে না গিয়ে যেকোনো সংগঠনই স্ক্রাম ব্যবহার করতে পারে।

 

স্ক্রামে তিন ধরণের ভূমিকা পাওয়া যায়, স্ক্রামমাস্টার, পণ্যের মালিক এবং টিম।

 

স্ক্রামমাস্টারঃ স্ক্রামমাস্টার সমস্ত স্ক্রাম প্রক্রিয়াটির কর্তা, তার দায়িত্বে যে বিষয়গুলো থাকে তা হল,

 

  • প্রক্রিয়াটি সঠিকভাবে সম্পন্ন করা,
  • উৎপাদনশীলতায় প্রভাব রাখে এমন বাধা সরিয়ে রাখা,
  • সংবেদনশীল মীটিং আয়োজন ও সম্পাদন করা।

 

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

 

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

 

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

 

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

 

  • স্প্রিন্ট
  • স্প্রিন্টের পরিকল্পনা
  • দৈনিক স্ক্রাম মীটিং
  • স্প্রিন্ট রিভিউ
  • স্প্রিন্টের Retrospective

 

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

 

স্প্রিন্টের পরিকল্পনাঃ দুটি প্রশ্ন থেকে এই ধাপ আলোচনা করে,

  • স্প্রিন্ট ইনক্রিমেন্টে কি করা প্রয়োজন ও কীভাবে।
  • স্প্রিন্টে প্রয়োজনীয় কাজ কীভাবে সম্পন্ন করা হবে।

এই সমন্বয়ের ইনপুট গুলো হল,

  • পণ্যের ব্যাকলগ
  • পণ্যের সর্বশেষ ইনক্রিমেন্ট
  • স্প্রিন্টের সময়কালে অনুমিত ধারনক্ষমতা
  • টিমের পূর্ববর্তী সাফল্য।

 

 

দৈনিক স্ক্রাম মীটিংঃ দৈনিক স্ক্রাম মীটিং ১৫ মিনিটব্যপী টাইমবক্সের আওতাধীন ইভেন্ট যাতে দিনের কাজের পরিকল্পনা ও সারসংক্ষেপ নির্ধারণ করা হয়।এতে বিগত দিনের স্ক্রাম মীটিংএর পর্যালোচনার পাশাপাশি পরবর্তী ২৪ ঘণ্টার কার্যপ্রণালী ঠিক করা হয়।

 

স্প্রিন্ট রিভিউঃ স্প্রিন্ট রিভিউ স্প্রিন্টের শেষে থাকে, এটিতে ইনক্রিমেন্টের পরিমান, এবং পণ্যের ব্যাকলগের(যদি থাকে) পরিমান করা হয়।এটি প্রতি স্প্রিন্টের শেষে থাকে এবং এটিতে পণ্যের ইনক্রিমেন্ট  পর্যালোচনা করা হয়।

 

স্প্রিন্টের Retrospective স্প্রিন্টের Retrospective হয় একটি স্প্রিন্টের রিভিউ এবং আরেকটি স্প্রিন্টের প্ল্যানিংএর মধ্যবর্তী সময়ে। এটিও স্ক্রামের জন্য অত্যন্ত গুরুত্বপূর্ণ।

 

 

স্ক্রাম আর্টিফ্যক্টসঃ স্ক্রাম প্রক্রিয়া পরিকাঠামোয় যে আর্টিফ্যক্টগুলো দেখা যায় সেগুলো হল,

 

  • পণ্যের ব্যাকলগ
  • স্প্রিন্ট ব্যাকলগ
  • বার্ন ডাউন চার্ট
  • ইনক্রিমেন্ট

 

এগুলো স্ক্রাম প্রক্রিয়া পরিকাঠামোয় সর্বনিম্ন আর্টিফ্যক্টস, এরচেয়ে অনেক বেশি আর্টিফ্যক্টও  স্ক্রাম পরিকাঠামোয় থেকে থাকতে পারে।

 

ইউজার স্টোরিঃ <Type of User> হিসেবে

কোন কাজ করতে গিয়ে <To Perform Some Task>,

ফলাফলে এটি হল, achieve some goal/benefit/value> এটি ইউজার স্টোরির একটি উদাহরণ।

ব্যাঙ্কের এটিএম বুথকে কেন্দ্র করে উদাহরণ দেয়া যাক,

User Story: Customer’s Cash Withdrawal

As a Customer,

I want to withdraw cash from an ATM,

So that I don’t have to wait in line at the Bank

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

 

স্ক্রামের বার্ন ডাউন চার্টঃ এতে ঘণ্টা হিসেবে কর্ম দিবসের হিসাব করা হয়, যেমন দুই সপ্তাহের একটি স্প্রিন্টের হিসাব দেখা যাক,

 

  • স্প্রিন্টের সময়কালঃ ২ সপ্তাহ
  • সপ্তাহে দিনের সংখ্যাঃ ৫ দিন
  • দিনে ঘণ্টার সংখ্যাঃ ৬
  • রিসোর্সের সংখ্যাঃ ৬

তাহলে স্প্রিন্টের শুরুতে সময়ের মোট একক থাকল, ২*৫*৬*৬=৩৬০ঘণ্টা। তবে বাস্তব ক্ষেত্রে ৩৬ ঘণ্টা পর্যন্ত সময় কমে নিচের ছকের মত হয়ে দাঁড়ায়।

 

কাজের ক্ষেত্রে দীর্ঘসুত্রিতা থাকলে ছকটি যেমন হয় তা হল,

 

বার্ন ডাউন চার্ট দিনের এককে মাপা হয় তাই দৈনিক সময় ব্যবধানের জন্য স্প্রিন্ট টাইমলাইনে বিচ্যুতি থেকে যেতে পারে, তখন ছকটি যেমন হবে তা নিচে দেয়া হল,

 

 

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

  • Numeric Sizing (1 through 10)
  • T-shirt Sizes (XS, S, M, L, XL XXL, XXXL)
  • Fibonacci Sequence (1, 2, 3, 5, 8, 13, 21, 34, etc.)
  • Dog Breeds (Chihuahua,………,Great Dane) ইত্যাদি।

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

স্ক্রামের টুলসঃ কিছু টুলস যা স্ক্রামকে কার্যক্ষেত্রে প্রায়োগিক রূপ দেয় সেগুলো নিচের ছকে দেখানো হল,

Axosoft Airgile Agile Cockpit Jira (GreenHopper) Mingle
Scrumwise Agilo For Scrum Banana Scrum Kunagi OnTime Now
Version One AgileWrap Daily-Scrum Intervals Pango Scrum
Acunote Agile Tracking Tool* Digaboard* iMeta Agility Pivotal Tracker
Agile Agenda Agile Task EasyBacklog Ice Scrum* pmScrum
Agile Bench Agile Soup Explain PMT Hansoft Prj Planner
Agile Buddy Agile Manager Agile Express* GravityDev Project Cards
Agile Fant* Agile Log Fire Scrum* Fulcrum* Quantum Whisper
Quick Scrum Retrospectiva* Scrum’d Scrum Factory* Scrumpy
Rally Dev Scrinch* Scrum Dashboard* Scrum Edge Scrum Pad
Redmine Backlogs Scrum 2 Go Scrum Desk Scrum Do Tweet Scrum
Scrumrf Scrum Time* Scrumwise Select Solution Factory Tackle*
Urban Turtle ScrumTool Scrum Works Timebox Tangy Orange Scrum

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

স্ক্রামের সার্টিফিকেশনঃ স্ক্রামের নিয়ন্ত্রণকারী জোট কিছু সার্টিফিকেশন দিয়ে থাকে, সেগুলো হল,

  • Certified ScrumMaster (CSM)
  • Certified Scrum Product Owner (CSPO)
  • Certified Scrum Practitioner (CSP)
  • Certified Scrum Coach (CSC)
  • Certified Scrum Trainer (CST)

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

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

৩৫০ ওয়ার্ডের অর্ডার ২১০০ ওয়ার্ড হয়েছে। এরচেয়ে কমানোও সম্ভব না। ভাল বোনাস আশা করছি। ধন্যবাদ।

 

রাগ নিয়ন্ত্রণঃ Anger Management

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

 

রাগ নিয়ন্ত্রণ বা ব্যবস্থাপনার সারসংক্ষেপ

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

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

রাগের বৈপরীত্য

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

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

রাগ নিয়ন্ত্রণ ও ব্যবস্থাপনাঃ প্রচলিত ধারণা ও বাস্তবতাঃ

রাগ নিয়ে বহুল প্রচলিত অনেক ধারণা আছে, এগুলো তলিয়ে দেখা যাক এবং প্রকৃত বাস্তবতা সম্পর্কেও আলোচনা করা যাক।

  • ১ম প্রচলিত ধারণাঃ রাগ দেখালে তা প্রশমিত হয়, রাগ পুষে রাখা ভাল নয়।
    বাস্তবতাঃ একটি কথা আছে, ‘রাগ পুষে রাখা আর হাতের মধ্যে জ্বলন্ত কয়লা ধরে রাখা একই কথা’। রাগ অবশ্যই প্রশমিত করতে হবে কিন্তু তা আক্রমণাত্মক উপায়ে নয়, কারণ সেটি কেবল সংঘর্ষের প্রবণতাই বাড়াবে।
  • ২য় প্রচলিত ধারণাঃ রাগ অন্যের কাছ থেকে মনোযোগ, সম্মান ও আনুগত্য পেতে সাহায্য করে।
    বাস্তবতাঃ কারো উপর প্রভাব বিস্তার করার ক্ষমতা কাউকে বোঝার দক্ষতা থেকে আসে, তাকে ভয় দেখিয়ে নয়। ধমকাধমকি করে প্রভাব বিস্তারের চেষ্টা করলে অধিনস্তরা সম্মান তো করবেই না বরং অন্যের মতামত গ্রহন করতে না পারলে নিজেরই অনেক বড় ব্যবধান রচিত হবে।
  • ৩য় প্রচলিত ধারণাঃ আমি আমার রাগ নিয়ন্ত্রণ করতে পারি না।
    বাস্তবতাঃ অন্য অনেক আবেগের মতই, রাগও আমরা যে পরিস্থিতির ফলাফল। সম্ভাব্য বহুমুখী দৃষ্টিভঙ্গি থেকে পরিস্থিতি বিশ্লেষণ করতে পারলে রাগ নিয়ন্ত্রণ ও ভুল বিবেচনা এড়ানো সম্ভব হয়।
  • ৪র্থ প্রচলিত ধারণাঃ রাগ ব্যবস্থাপনা হল রাগ দমন করার পদ্ধতি শেখা।
    বাস্তবতাঃ রাগ দেখিয়ে প্রশমিত করা যায় না, আবার রাগকে অন্য কোন ভাবে দমন করাও যায় না,বরং এটিকে অহিংস কোন উপায়ে বয়ে যেতে দেয়াই ভাল। রাগ ব্যবস্থাপনায় এবিষয়টিই মানুষকে দেখানো হয়।

কেন রাগ নিয়ন্ত্রণ ও ব্যবস্থাপনা কেন?

দীর্ঘস্থায়ী রাগ মানুষের স্বাস্থ্যের, সামাজিক ও ব্যক্তিগত জীবনেও স্বল্পকালীন ও দীর্ঘমেয়াদী ঝুঁকিতে পরিণত হতে পারে। দৈনন্দিন জীবনে বন্ধুত্ব ও সম্পর্কের ক্ষতি, অবিশ্বাস ও অশান্তিরও কারণ হতে পারে।

রাগ স্বাস্থ্য, চিন্তাজগত ও ক্যারিয়ারের যেসব ক্ষতি করে

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

রাগের লক্ষণ

রাগের মানসিক লক্ষণগুলো হল,

  • অস্বস্তি
  • বিরক্তি
  • অস্থিরতা

রাগের কিছু শারীরিক লক্ষণ আছে, এগুলো হল,

  • হৃদস্পন্দন বেড়ে যাওয়া
  • পেশী আড়ষ্ট হয়ে যাওয়া
  • কপালে ঘাম জমা।

এই মানসিক ও শারীরিক লক্ষণগুলো মিলে আমাদের কিছু আক্রমণাত্মক আচরণ পরিলক্ষিত হয় যেমন,

  • চেঁচানো, তর্ক করা,
  • জিনিসপত্র ছুঁড়ে ফেলা,
  • দেয়ালে লাথি মারা, বালিশে ঘুষি মারা বা আছড়ে দরজা বন্ধ করা,
  • কান্না করা ইত্যাদি।

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

রাগ ব্যবস্থাপনাঃ রাগের সূত্রঃ

রাগ বোঝা ও অনুধাবন করার চারটি কার্যকর পদ্ধতি আছে যেগুলোর সাহায্যে বৈরী পরিস্থিতিতে আমাদের দেহ মনে রাগের উৎপত্তি বুঝতে পারি ।

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

রাগ ব্যবস্থাপনাঃ রাগী আচরণ

নেতিবাচক আবেগের বিশ্লেষণ

নেতিবাচক আবেগের বিশ্লেষণে যে জিনিসগুলো দেখা হয় সেগুলো হল,

  • হীনমন্যতাসূচক ধারণাঃ উদাহরণস্বরূপ, এমন ভাবা যে,’আমাকে কেউ পাত্তা দেয় না, আমাকে ঘৃণা করে’ এসব হীনমন্যতাসূচক ধারণা পোষণ করা।
  • অনমনীয় দৃষ্টিভঙ্গিঃ অন্যের মতামতের প্রতি অনমনীয় দৃষ্টিভঙ্গি রাখা।
  • অপরিনতভাবে ধারণা করা ও সিদ্ধান্তে আসাঃ অপরিনতভাবে ধারণা করা ও সিদ্ধান্তে আসাটা নেতিবাচক আবেগের আরেকটি উদাহরণ।
  • রাগ করার যুক্তি খোঁজাঃ রাগ করার যুক্তি খোঁজা বিরক্তি ও ভুল বোঝাবোঝির সমন্বয়ে হয়ে থাকে।
  • দোষারোপ করাঃ সমস্যা বিষয়ে নিজের ভূমিকা না দেখে অন্যকে দোষারোপ করা নেতিবাচক আবেগের আরেকটি উদাহরণ।

রাগ ব্যবস্থাপনাঃ রাগের চক্র ও এবিসিডি মডেল

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

ইংরেজিতে এই এবিসিডি মডেলকে এভাবে দেখানো হয়,
A (Activation Agent)
B (Believing)
C (Conclusions)
D (Dispute)

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

রাগ ব্যবস্থাপনাঃ রাগ নিয়ন্ত্রণ

রাগের কারণ অনুধাবন, সূত্র বিশ্লেষণ ও রাগের এঙ্গার বাটন(Anger Buttons) সনাক্ত করে রাগ নিয়ন্ত্রণের চেষ্টা করা উচিৎ। রাগ দমনের কিছু উপায় হল,

  • গভীরভাবে নিশ্বাস নেয়া
  • ব্যয়াম করা
  • অনুভূতি প্রয়োগ যথা গান শোনা বা শান্ত প্রকৃতির কথা মনে রাখা
  • মনেমনে ধীর গতিতে সংখ্যা গোনা

রাগ নিয়ন্ত্রণের ভাল উপায় খুঁজে বের করা ও পরিস্থিতি সম্পর্কে ধীর মনে অনুধাবন করাও ভাল উপায়।

রাগ নিয়ন্ত্রণ করে যোগাযোগ দক্ষতা বাড়ানোর উপায়

  • অন্যের কথা মনোযোগ দিয়ে শোনা
  • সরাসরি সিদ্ধান্তে উপনীত না হওয়া
  • সাথেসাথে প্রতিক্রিয়াশীল না হওয়া
  • নিজের প্রকৃত অনুভূতি প্রকাশ করা

এছাড়াও নিজের পুরনো নেতিবাচক চিন্তাভাবনা পরিবর্তন করে ইতিবাচক মানসিকতা অর্জনের চেষ্টা করা উচিৎ।

রাগ ব্যবস্থাপনাঃ কিছু টিপস

রাগ ব্যবস্থাপনার কিছু পরীক্ষিত উপদেশ এরকম,

  • কথা বলার আগে চিন্তা করা
  • শান্তভাবে রাগ প্রকাশ
  • ব্যয়াম করা
  • নিজেকে সময় দেয়া
  • সমাধান সনাক্ত করা
  • বিবৃতিতে ‘আমি’ সত্ত্বা ব্যবহার করা
  • দ্বেষ প্রকাশ পায় এমনভাবে কথা না বলা
  • রসবোধ প্রয়োগ করা
  • সিথিলায়ন অনুশীলন করা
  • রাগ নিয়ন্ত্রণে নিজে ব্যর্থ হলে প্রফেশনাল সাহায্য নেয়া যেতে পারে

 

কিছু উৎস যা তথ্যের সূত্র হিসেবে কাজে লাগতে পারেন

  • Davies, William (2000); Overcoming Irritability and Anger; Constable & Robinson; ISBN: 1854875957
  • Garber, Kathy S (2002); Stop Anger, Be Happy; Trafford; ISBN: 155395095
  • Lindenfield, Gael (2000); Managing Anger; Thorsons Publishers; ISBN: 0007100345

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন ফাংশন ফাইল (JSON Function Files)

জেএসওএন ফাংশন ফাইল

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

জেএসওএন ফাংশন ফাইল (JSON Function Files)

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

জেএসওএন উদাহরণঃ এই উদাহরণে myTutorials.js থেকে একটি মেনু পড়া হবে ও সেটিকে ওয়েবপেজে দেখানো হবে।


<div id="id01"></div>
<script>
function myFunction(arr) {
     var out = "";
     var i;
     for(i = 0; i<arr.length; i++) {
     out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
     }
     document.getElementById("id01").innerHTML = out;
}
</script>
<script src="myTutorials.js"></script>

 

 

উদাহরণের ব্যাখ্যা

প্রথমতঃ অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়ঃ
অক্ষরভিত্তিক শ্রেণীবিন্যাস নির্ধারণ করে কোনো অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়। প্রত্যেকটি অবজেক্টের দুটি বৈশিষ্ট্য নির্ধারণ করে দেয়া হয়, display এবং url । শ্রেণীবিন্যাসকে myArray নাম দেয়া হয়।
myArray


var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

দ্বিতীয়তঃ শ্রেণীবিন্যাস দেখানোর জন্য জাভাস্ক্রিপ্টের একটি ফাংশন তৈরি করা হয়ঃ myFunction() নামের ফাংশন তৈরি করা হয় যা থেকে অবজেক্টগুলো দৃশ্যমান হয় ও এইচটিএমএল লিঙ্ক জাতীয় উপাদান প্রদর্শন করে।

myFunction()


 

function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
    out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}

 

 

myFunction() কে myArray এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়। যথা,


myFunction(myArray);


 

 

তৃতীয়ত, কোন অক্ষরভিত্তিক শ্রেণীবিন্যাসকে আর্গুমেন্ট হিসেবে ব্যবহার করা(শ্রেণীবিন্যাস চলকের পরিবর্তে)ঃ
myFunction() কে array literal(অক্ষরভিত্তিক শ্রেণীবিন্যাস)এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়,

Calling myFunction()


myFunction([
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]);

 

 

চতুর্থতঃ ফাংশন কলকে এক্সটারনাল js fileএ রাখা হয়ঃ
myTutorials.js নামক এক্সটারনাল js fileএ ফাংশন কলকে রাখা হয়।

myTutorials.js


myFunction([
    {
    "display": "JavaScript Tutorial",
    "url": "http://www.w3schools.com/js/default.asp"
    },
    {
    "display": "HTML Tutorial",
    "url": "http://www.w3schools.com/html/default.asp"
    },
    {
    "display": "CSS Tutorial",
    "url": "http://www.w3schools.com/css/default.asp""
    }
 ]);

 

 

ফাংশন কলের পরিবর্তে পেজে এক্সটারনাল স্ক্রিপ্ট যোগ করা হয়,
Add External Script


<script src=”myTutorials.js”></script>


 

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন এইচটিটিপি রিকুয়েস্ট (JSON Http Request)

জেএসওএন এইচটিটিপি রিকুয়েস্ট

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

 

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

এই অধ্যায়ে চারটি ছোট ছোট ধাপে দেখানো হবে কীভাবে XMLHttp ব্যবহার করে জেএসওএন ডাটা পড়া হয়।

জেএসওএন উদাহর

এই উদাহরণে myTutorials.txt, থেকে একটি মেনু পড়া হবে ও সেটিকে ওয়েবপেজে দেখানো হবে।


<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr);
    } 
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
        out += '<a href="' + arr[i].url + '">' +
        arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}
</script>

 

 

উদাহরণের ব্যাখ্যা

প্রথমতঃ অবজেক্টের শ্রেণীবিন্যাস (Array) তৈরি করা হয়ঃ
অক্ষরভিত্তিক শ্রেণীবিন্যাস (Array) নির্ধারণ করে কোনো অবজেক্টের শ্রেণীবিন্যাস (Array) তৈরি করা হয়। প্রত্যেকটি অবজেক্টের দুটি বৈশিষ্ট্য নির্ধারণ করে দেয়া হয়, display এবং url । শ্রেণীবিন্যাস (Array) কে myArray নাম দেয়া হয়।


var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

 

দ্বিতীয়তঃ শ্রেণীবিন্যাস দেখানোর জন্য জাভাস্ক্রিপ্টের একটি ফাংশন তৈরি করা হয়ঃ myFunction() নামের ফাংশন তৈরি করা হয় যা থেকে অবজেক্টগুলো দৃশ্যমান হয় ও এইচটিএমএল লিঙ্ক জাতীয় উপাদান প্রদর্শন করে।


function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
    out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}

 

 

myFunction() কে myArray এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়। যথা,


myFunction(myArray);


 

 

তৃতীয়তঃ টেক্সট ফাইল তৈরি করা হয়ঃ

myTutorials.txt: নামক ফাইলের মধ্যে অক্ষরভিত্তিক শ্রেণীবিন্যাসকে রাখা হয়।


[
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

চতুর্থতঃ XMLHttpRequest দ্বারা টেক্সট ফাইল পড়া হয়ঃ

XMLHttpRequest লেখা হয় টেক্সট ফাইল পড়ার জন্য, এবং শ্রেণীবিন্যাস দেখানোর জন্য myFunction() ব্যবহার করা হয়।

XMLHttpRequest


 

var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
   var myArr = JSON.parse(xmlhttp.responseText);
   myFunction(myArr);
   }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন সিনট্যাক্স (JSON Syntax)

জেএসওএন সিনট্যাক্স

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

 

জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্ট সিনট্যাক্সের একটি সাবসেট।

জেএসওএন সিনট্যাক্সের নিয়মাবলী

জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্টের অবজেক্ট নোটেশন সিনট্যাক্স থেকে উদ্ভূত ।

  • ডাটা নাম ও মানের জোড়ায় থাকে
  • ডাটা কমা দ্বারা আলাদা করা থাকে
  • কুঁকড়ানো ব্র্যাকেট {} দ্বারা অবজেক্ট আবদ্ধ থাকে
  • স্কয়ার ব্র্যাকেট [ ] দ্বারা শ্রেণীবিন্যাস আবদ্ধ থাকে।

 

জেএসওএন ডাটা – একটি নাম ও একটি মান

জেএসওএন ডাটাকে নাম ও মানের জোড়ায় লেখা হয়ে থাকে। নাম ও মানের জোড়া ডাবল কোটে আবদ্ধ ফিল্ড নেম, একটি কোলন চিহ্ন ও একটি মান নিয়ে গঠিত হয়।

উদাহরণ,


“firstName”:”John”


নোট : জেএসওএন নামে ডাবল কোটের দরকার হয়, জাভাস্ক্রিপ্টের নামের বেলায় দরকার হয় না।

 

জেএসওএন মান

জেএসওএন মান যেরকম হতে পারে

  • সংখ্যা (পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট )
  • স্ট্রিং (ডাবল কোটে থাকবে )
  • Boolean (সত্য বা মিথ্যা)
  • শ্রেণীবিন্যাস (স্কয়ার ব্র্যাকেট দ্বারা আবদ্ধ)
  • অবজেক্ট (কুঁকড়ানো ব্র্যাকেট দ্বারা আবদ্ধ)

 

জেএসওএন অবজেক্ট

জেএসওএন অবজেক্ট কুঁকড়ানো ব্র্যাকেট দ্বারা আবদ্ধ থাকে। জাভাস্ক্রিপ্টের মত জেএসওএন অবজেক্ট মাল্টিপল নাম ও মানের জোড়া সংরক্ষণ করে,

উদাহরণ,


{“firstName”:”John”, “lastName”:”Doe”}


 

 

জেএসওএন অ্যারে

স্কয়ার ব্র্যাকেট দ্বারা অ্যারে আবদ্ধ থাকে। জাভাস্ক্রিপ্টের মত জেএসওএন অ্যারে মাল্টিপল অবজেক্ট সংরক্ষণ করতে পারে।

উদাহরণ,


"employees":[
     {"firstName":"John", "lastName":"Doe"},
     {"firstName":"Anna", "lastName":"Smith"},
     {"firstName":"Peter","lastName":"Jones"}
]

 

উপরের উদাহরণে “employees” হল একটি শ্রেণীবিন্যাস যা তিনটি অবজেক্টকে ধরে রেখেছে, যাদের প্রত্যেকটি এক একজন ব্যক্তির নাম, (ফার্স্ট নেম ও লাস্ট নেম)।

 

জেএসওএন জাভাস্ক্রিপ্টের সিনট্যাক্স ব্যবহার করে

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


var employees = [
      {"firstName":"John", "lastName":"Doe"},
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter","lastName": "Jones"}
];

 

 

জাভাস্ক্রিপ্ট অবজেক্টের শ্রেণীবিন্যাসের প্রথম সত্ত্বাকে যেভাবে দেখানো যায়,


// returns John Doe
 employees[0].firstName + " " + employees[0].lastName;

 

 

এটিকে এভাবেও দেখানো যেতে পারে,


// returns John Doe
 employees[0]["firstName"] + " " + employees[0]["lastName"];

 

 

ডাটা এভাবে পরিবর্তিত হতে পারে,


employees[0].firstName = “Gilbert”;


 

 

এটি এভাবেও পরিবর্তিত হতে পারে,


employees[0][“firstName”] = “Gilbert”;


 

 

পরবর্তী অধ্যায়ে দেখানো হবে কীভাবে জেএসওএন টেক্সটকে জাভাস্ক্রিপ্ট অবজেক্টে পরিনত করা হয়।

 

জেএসওএন ফাইল

  • জেএসওএন ফাইলের ফাইল টাইপ হল “.json”
  • জেএসওএন টেক্সটের MIME টাইপ হল “application/json”

জাভাস্ক্রিপ্ট স্ট্রিং (JavaScript Strings)

জাভাস্ক্রিপ্ট স্ট্রিং (JavaScript Strings)

  • জাভাস্ক্রিপ্ট স্ট্রিং টেক্সট (লেখা) সংরক্ষণ ও কাজে লাগানোর জন্য ব্যবহার করা হয়।
  • জাভাস্ক্রিপ্ট স্ট্রিং সাধারণভাবে একগুচ্ছ বর্ণকে পরবর্তীতে ব্যবহারের জন্য সংরক্ষণ করে। যেমন: “John Doe”
  • স্ট্রিং কোটেশনর এর ভিতরে যেকোন লেখা হতে পারে। আপনি একক বা ডবল কোটেশন ব্যবহার করতে পারেন।

যেমন:


var carname = “Volvo XC60”;
var carname = ‘Volvo XC60’;


 

 

আপনি স্ট্রিং এর ভিতরে যতবার খুশি কোটেশন ব্যবহার করতে পারেন, যতক্ষন পর্যন্ত না প্রথম ও শেষ কোটেশন মিলে যায়।

উদাহরণ:


var answer = “It’s alright”;
var answer = “He is called ‘Johnny'”;
var answer = ‘He is called “Johnny”‘;


 

 

স্ট্রিং এর দৈঘ্য

একটি স্ট্রিং এর দৈর্ঘ্য হবে প্রোপার্টি এ নির্দিষ্টকৃত দৈর্ঘ্য (length):

উদাহরণ:


var txt = “ABCDEFGHIJKLMNOPQRSTUVWXYZ”;
var sln = txt.length;


 

 

বিশেষ বর্ণ

যেহেতু স্ট্রিং কোটেশন এর ভিতরে লিখতে হয়, সেহেতু নিচের উদাহরণটিকে ভুল বুঝে:


var y = “We are the so-called “Vikings” from the north.”


উপরের স্ট্রেংটিকে মনে করে, “We are the so-called” .

এই সমস্যা সমাধানের উপায় হল, \ অক্ষরের অব্যাহতি (escape character) ব্যবহার করা।

এই অক্ষরের অব্যাহতি ব্যাকস্লাসটি বিশেষ বর্ণকে স্ট্রিং হিসেবে ফেরত দেয়।:

উদাহরণ:


var x = ‘It\’s alright’;
var y = “We are the so-called \”Vikings\” from the north.”


অব্যাহতি অক্ষর (\) অন্যান্য বিশেষ বর্ণকেও স্ট্রিং হিসেবে ব্যবহার করতে ব্যবহৃত হয়।

এখানে বিশেষ বর্ণের একটি তালিকা দেওয়া হল যা ব্যাকস্লাস (\) এর মাধ্যমে টেক্স স্ট্রিং হিসেবে ব্যবহার করা যায়:

কোড আউটপুট
\’ একক কোটেশন
\” ডবল কোটেশন
\\ ব্যাকস্লাস
\n নতুন লাইন
\r বহন ফেরত
\t ট্যাব
\b ব্যাকস্পেস
\f ফর্ম ফিড

 

লম্বা কোড এর লাইনকে ভেঙ্গে দেওয়া

সহজে পড়ার উপযোগী করার জন্য অনেক সময় প্রোগ্রামাররা 80 বর্ণের অধিক ক্যারেকটার এর লম্বা লাইনকে ভেঙ্গে লেখেন।

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

উদাহরণ:


document.getElementById(“demo”).innerHTML =
“Hello Dolly.”;


 

আপনি টেক্স স্ট্রিং এর ভিতরে একটি একক ব্যাকস্লাস (\) ব্যবহার করেও লাইটকে ভাঙ্গতে পারেন।

উদাহরণ:


document.getElementById(“demo”).innerHTML = “Hello \
Dolly!”;


 

নোট : \ মেথড ECMAScript (জাভাস্ক্রিপ্ট) স্ট্যান্ডার্ড নয়। কিছু ব্রাউজার \ (স্লাস) এর পেছনে স্পেস সাপোর্ট করে না।

একটি দীর্ঘ স্ট্রিং কে ভাঙ্গার নিরাপদ (কিন্তু একটু সময়সাপেক্ষ) পথ হচ্ছে স্ট্রিং সংযোযন ব্যবহার করা:

উদাহরণ:


document.getElementById(“demo”).innerHTML = “Hello” +
“Dolly!”;


 

আপনি কোড লাইনকে ব্যাকস্লাস দিয়ে ভাঙ্গতে পারবেন না:

উদাহরণ:


document.getElementById(“demo”).innerHTML = \
“Hello Dolly!”;


 

 

স্ট্রিং অবজেক্টও হতে পারে

সাধারণভাবে জাভাস্ক্রিপ্ট স্ট্রিং হচ্ছে আদিম মান (primitive values), অক্ষর দিয়ে তৈরি: var firstName = “John”

কিন্তু স্ট্রিং কে new কীওয়ার্ড এর সাহায্যে অবজেক্ট হিসেবেও ব্যবহার করা যেতে পারে : var firstName = new String(“John”)

উদাহরণ :


var x = “John”;
var y = new String(“John”);

// typeof x will return string
// typeof y will return object


 

নোট: স্ট্রিং কে অবজেক্ট হিসেবে ব্যবহার করবেন না। এটি প্রক্রিয়াকরণ গতিকে ধরি করে ফেলে এবং বাজে পার্শ্বপ্রতিক্রিয়া উৎপন্ন হয়।

 

যখন == সমান অপারেটর ব্যবহার করবেন, সমান স্ট্রিংগুলো সমান দেখাবে:

যেমন:


var x = “John”;
var y = new String(“John”);

// (x == y) is true because x and y have equal values


 

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


var x = “John”;
var y = new String(“John”);

// (x === y) is false because x and y have different types


 

বা, অবজেক্ট এর সাথে অবজেক্ট তুলনা করা যায় না:

যেমন:


var x = new String(“John”);
var y = new String(“John”);

// (x == y) is false because objects cannot be compared


 

 

স্ট্রিং প্রোপার্টি এবং মেথড

আদিম মান, যেমন “John Doe” এর কোন প্রোপার্টিজ এবং মেথড থাকতে পারে না (কেননা এরা অবজেক্ট নয়)।

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

 

স্ট্রিং মেথড সম্পর্কে পরবর্তী অধ্যায় এ আলোচনা করা হয়েছে।

 

স্ট্রিং প্রোপার্টিজ

প্রোপার্টি (Property) বর্ণনা
constructor যে ফাংশনটি স্ট্রিং অবজেক্ট এর প্রোটোটাইপ তৈরী করেছিলেন তা ফেরত দেয়
length স্ট্রিং এর length ফেরত দেয়
prototype আপনাকে একটি অবজেক্ট এর ভিতরে প্রোপার্টি এবং মেথড যোগ করার অনুমতি প্রদান করে।

 

স্ট্রিং মেথড

মেথড (Method) বর্ণনা
charAt() সুনির্দিষ্ট ইনডেক্স এর (অবস্থান) নির্দিষ্ট বর্ণ ফেরত দেয়।
charCodeAt() সুনির্দিষ্ট ইনডেক্স এর নির্দিষ্ট ইউনিকোড বর্ণ ফেরত দেয়।
concat() দুই বা ততোধিক স্ট্রিং কে যুক্ত করে এবং তার একটি অনুলিপি ফেরত দেয়।
fromCharCode() ইউনিকোড মানকে বর্ণে পরিবর্তন করে।
indexOf() স্ট্রিং এর নির্দিষ্ট মান এর ভিতরে প্রথম পাওয়া কাঙ্খিত ঘটনা এর অবস্থান ফেরত দেয়।
lastIndexOf() স্ট্রিং এর নির্দিষ্ট মান এর ভিতরে শেষ পাওয়া কাঙ্খিত ঘটনা এর অবস্থান ফেরত দেয়।
localeCompare() বর্তমান অবস্থানের দুটি স্ট্রিং এর মধ্যে তুলনা করে।
match() রেগুলার এক্সপ্রেশন এর মধ্যে একটি স্ট্রিং কে খুঁজে এবং খুঁজে পাওয়া ফলাফল ফেরত দেয়।
replace() স্ট্রিং এর নির্দিষ্ট মান খোঁজে এবং নতুন একটি স্ট্রিং দ্বারা প্রতিস্থাপণ করে তা ফেরত দেয়।
search() স্ট্রিং এর নির্দিষ্ট মান খোঁজে এবং এর অবস্থান ফেরত দেয়।
slice() স্ট্রিং এর সার অংশ বের করে এবং নতুন একটি স্ট্রিং ফেরত দেয়।
split() স্ট্রিং কে বিভাজন করে সাবস্ট্রিং এর অ্যারে তৈরি করে।
substr() স্ট্রিং এর নির্দিষ্ট অংশ এর সার অংশ বের করে কিছুসংখ্যক বর্ণের মাধ্যমে।
substring() দুইটি নির্দিষ্ট অবস্থান এর মধ্যে একটি স্ট্রিং এর নির্দিষ্ট অংশ এক্সট্রাক্ট করে।
toLocaleLowerCase() স্ট্রিং কে ছোট হাতের অক্ষরে পরিণত কর।
toLocaleUpperCase() স্ট্রিং কে বড় হাতের অক্ষরে পরিণত করে।
toLowerCase() স্ট্রিং কে ছোট হাতের অক্ষরে পরিণত কর।
toString() স্ট্রিং অবজেক্ট এর মান ফেরত দেয়।
toUpperCase() স্ট্রিং কে বড় হাতের অক্ষরে পরিণত করে।
trim() স্ট্রিং এর উভয় প্রান্ত থেকে ফাঁকা স্পেস মুছে ফেলে।
valueOf() স্ট্রিং অবজেক্ট এর আদি মান ফেরত দেয়।

 

নিজে নিজে অনুশীলন কর!

অনুশীলন 01:

ইঙ্গিত: ভেরিয়েবল টেক্সট এ স্ট্রিং “Hello World!” নির্ধারণ কর।


<!DOCTYPE html>
<html>
<body>

<p id=”demo”></p>

<script>
var txt;
document.getElementById(“demo”).innerHTML = txt;
</script>

</body>
</html>


 

 

অনুশীলন 02:

ইঙ্গিত: টেক্সট ভেরিয়েবল এর মান  এর দৈর্ঘ্য প্রদর্শনের জন্য length প্রোপার্টি ব্যবহার কর।


<!DOCTYPE html>
<html>
<body>

<p id=”demo”></p>

<script>
var txt = “Hello World!”;
document.getElementById(“demo”).innerHTML = txt;
</script>

</body>
</html>


 

অনুশীলন 03:

ইঙ্গিত: স্ট্রিং টি ভেঙ্গে গেছে – ঠিকভাবে প্রদর্শনের জন্য অক্ষরের অব্যাহতি (escape character) ব্যবহার কর।


<!DOCTYPE html>
<html>
<body>

<p id=”demo”></p>

<script>
document.getElementById(“demo”).innerHTML = “We are “Vikings”.”;
</script>

</body>
</html>


 

অনুশীলন 04:

ইঙ্গিত: শ্রেণীবদ্ধভাবে সংযুক্ত দুটি স্ট্রিং প্রদর্শন করে “হ্যালো ওয়ার্ল্ড!”


<!DOCTYPE html>
<html>
<body>

<p id=”demo”>Display the result here.</p>

<script>
var str1 = “Hello “;
var str2 = “World!”;
</script>

</body>
</html>


 

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন টিউটোরিয়াল (JSON Tutorial)

JSON টিউটোরিয়াল

আদনান নাহিদ
সরকারি তিতুমির কলেজ

 

  • JSON: জাভাস্ক্রিপ্ট অবজেক্ট নটেশন (JavaScript Object Notation)।
  • JSON হল তথ্য সংরক্ষণ এবং তথ্য আদান প্রদানের জন্য একটি শব্দবিন্যাস ।
  • JSON XML এ ব্যবহারের একটি সহজতম বিকল্প ।

 

নিম্নলিখিত JSON উদাহরণটি কর্মচারীদের লক্ষ্য নির্ধারণ করে,, একটি অ্যারের সাথে ৩ জন কর্মচারীর রেকর্ড দেয়া হল :
JSON উদাহরণ


{"employees":[
      {"firstName":"John", "lastName":"Doe"},
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter", "lastName":"Jones"}
]}

 

নিম্নলিখিত XML উদাহরণটিও 3 কর্মচারীর সাথে কর্মীদের লক্ষ্য রেকর্ড নির্ধারণ করে ।
এক্সএমএল উদাহরণ


<employees>
     <employee>
         <firstName>John</firstName> <lastName>Doe</lastName>
     </employee>
     <employee>
         <firstName>Anna</firstName> <lastName>Smith</lastName>
     </employee>
     <employee>
         <firstName>Peter</firstName> <lastName>Jones</lastName>
     </employee>
 </employees>

JSON কি?

• JSON জাভাস্ক্রিপ্ট অবজেক্ট নটেশনকে ভিত্তি করে গড়ে ওঠে ।
• JSON একটি লাইটওয়েট তথ্য-ইন্টারচেঞ্জ ফরম্যাট ।
• JSON একটি স্বাধীন ভাষা ।
• JSON একটি “স্ব-বর্ণনা” এবং বুঝতে সহজ ।
* JSON জাভাস্ক্রিপ্ট সিনট্যাক্স ব্যবহার করে, কিন্তু JSON বিন্যাস শুধু লিখিত, যেমন XML । প্রোগ্রামিং ভাষা দ্বারা এই লেখাগুলো পড়া যায় ডাটা ফরম্যাট হিসাবে ব্যবহার করা যাব ।