৫ টি কন্সট্যান্টের শক্তিতে ওয়ার্ডপ্রেস ডিবাগিং

সর্বদা define( 'WP_DEBUG', true ); যখনই করিব প্লাগিন কিংবা থিম শুরু!

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

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

WP_DEBUG

এই কন্সট্যান্টের ভ্যালু ডিফল্টভাবে false থাকে। এটিকে যদি আমরা true করে দেই তাহলে আমাদের PHP কোডে যত নোটিশ, ওয়ার্নিং, এরর আছে সব দেখাবে (যদি থাকে)। এটি ডিবাগিংয়ের জন্য সব থেকে প্রয়োজনীয় কন্সট্যান্ট। আমরা ‍‍‍‍‍যখন কোন থিম বা প্লাগিন ডেভেলপ করবো অথবা এডিট করব তখনো WP_DEBUG কে true করে নিব। সিনিয়র ডেভেলপাররা সর্বদা এটিকে রিকোমেন্ড করে থাকেন। সুতরাং, সর্বদা define( 'WP_DEBUG', true ); যখনই করিব প্লাগিন কিংবা থিম শুরু 😀

WP_DEBUG_LOG

এই কন্সট্যান্টটি হলো WP_DEBUG এর একটি সহযোগী কন্সট্যান্ট অর্থাৎ এটি WP_DEBUG এর উপর নির্ভরশীল। WP_DEBUG এর মান false হলে এই কন্সট্যান্টটি কাজ করবে না, মান অবশ্যই true হতে হবে। WP_DEBUG_LOG এর মান true করা থাকলে সিস্টেম সব রকমের PHP এরর debug.log নামের একটি ফাইলে সেভ করে রাখবে। ফাইলটি সেভ হলে wp-content ডিরেক্টরিতে থাকবে। যেহেতু এররগুলি ফাইলে সেভ করা থাকবে সেহেতু আমাদের যখন ইচ্ছে আমরা দেখতে পারবো। মজার বিষয় হলো আমরা চাইলে error_log() ফাংশন ব্যবহার করে debug.log ফাইলে কাস্টম কিছু লিখতেও পারি। এজাক্স রিকোয়েস্ট ডিবাগিং এ যা বেশ কার্যকরী একট উপায়। ডিফল্টভাবে এই কন্সট্যান্টের মান false থাকে।

WP_DEBUG_DISPLAY

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

SCRIPT_DEBUG

নামেই কর্ম পরিচয়! নাম দেখেই বোঝা যায় এটি স্ক্রিপ্ট ডিবাগিং এর জন্য ব্যবহৃত হয়। তবে জাভাস্ক্রিপ্ট ছাড়াও এটি সিএসএস এর জন্যও ব্যবহার হয়। ওয়ার্ডপ্রেস সাধারণত কোর CSS এবং JS ফাইলগুলিকে একত্র করে মিনিফাইড ভার্সন সার্ভ করে থাকে। তাই ননমিনিফাইড বা ডেভেলপমেন্ট ভার্সনের স্ক্রিপ্ট এবং সিএসএস প্রয়োজন হলে SCRIPT_DEBUG এর ভ্যালু true সেট করতে হবে। বিভিন্ন থার্ডপার্টি প্লাগিন এবং থিমও এই কন্সট্যান্টটির উপর নির্ভর করে মিনিফাইড এবং ননমিনিফাইড ফাইল সার্ভ করে থাকে। আমরাও চাইলে এই সুবিধাটি ব্যবহার করতে পারি নিচের মত করে –

SAVEQUERIES

এই কন্সট্যান্টটি ব্যবহার করা হয় ডাটাবেজের কুয়েরি ডিবাগিংয়ের জন্য। SAVEQUERIES এর মান true সেট করা হলে সব ডাটাবেজ কুয়েরি গুলি এ্যারে আকারে গ্লোবাল $wpdb->queries এ স্টোর হয়ে থাকে। আমরা $wpdb->queries কে প্রিন্ট করে যেসব কুয়েরি রান করেছে সেসব দেখতে পারি এবং কুয়েরি চলতে কি পরিমাণ সময় লেগেছে তাও জানতে পারি।

ডাটাবেজ কুয়েরি ডিবাগিংয়ের জন্য WP Debug Bar টি দারুন একটি প্লাগিন এবং মজার বিষয় হলো এই প্লাগিনটি SAVEQUERIES কন্সট্যান্টের উপর নির্ভরশীল! SAVEQUERIES এর মান false থাকলে প্লাগিনটি কাজ করবে না।

বি.দ্র. – এই লেখাটি Debugging in WordPress এর উপর নির্ভর করে লেখা।

— ধন্যবাদ 🙂

আমরা সবাই প্রজা

আমরা সবাই প্রজা আমাদের এই রাজার রাজত্বে
নইলো মোরা রাজার নৌকায় চড়বো কি শর্তে
আমরা সবাই প্রজা!

আমরা মিষ্টি কথায় ভুলি, আমরা দুষ্ট কথায় চলি
আমরা তাদের মাথায় তুলে সুখের নৃত্য করি
আমরা সবাই প্রজা!

আমরা তো বোকা খাই প্রতি পদে ধোঁকা
উন্নয়নের জোয়ারে ডুবে মরে আছি খাঁ খাঁ
আমরা সবাই প্রজা!

আছে দরবেশ বাবা, আছে চাটুকারের থাবা
জননী বাংলা নিঃসন্তান, মোরা ধর্ষিত জনতা!
আমরা সবাই প্রজা!

-_-

আমি কিভাবে শিখব? পর্ব: ইউটিউব

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

আপনি কি ফেসবুকে সেই টুলস বা টেকনলজি সম্পর্কিত গ্রুপে প্রশ্ন করবেন, নাকি আপনার পরিচিত কাউকে গিয়ে জিজ্ঞেস করবেন, নাকি বসে বসে অপেক্ষা করবেন কেউ এসে বিষয়গুলি আপনার মাথায় ঠুকিয়ে দিয়ে যাবে? আপনি কি করবেন?

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

এই কৌশলটি শুধুমাত্র কোন বিষয়ে দ্রুত ধারনা নেবার জন্য এবং আমি এভাবেই শিখি 🙂