আসল কাজে বাধা দেওয়া ছোট কাজগুলোর জন্য একটা ব্রাউজার টুলবক্স
বেশিরভাগ কোডিং সমস্যা বড় আর আকর্ষণীয়। যেগুলো আসলে আপনাকে ধীর করে দেয় সেগুলো তা নয়। আপনার সামনে একটা মিনিফায়েড API রেসপন্স, একটা JWT যা পড়া যাচ্ছে না, একটা URL যা তার কোয়েরি স্ট্রিং নষ্ট করে ফেলছে, আর একটা রেজেক্স যা প্রায় কাজ করে। এসবের কোনোটারই কোনো ডিপেন্ডেন্সি, CLI ইনস্টল, বা বিজ্ঞাপনে ভরা একটা ট্যাবের দরকার নেই। এসবের দরকার ত্রিশ সেকেন্ড আর একটা পরিষ্কার টেক্সট বক্স।
এই সংকলনের পেছনের পুরো ধারণাটাই এটা: একটা পৃষ্ঠায় বিনামূল্যের ডেভেলপার ইউটিলিটি যা তাৎক্ষণিক লোড হয়, পুরোপুরি আপনার ব্রাউজারে চলে, আর কখনো সাইন আপ করতে বলে না। JSON ফরম্যাটিং, Base64, URL এনকোডিং, JWT ডিকোডিং, কালার কনভার্সন, রেজেক্স টেস্টিং, টাইমস্ট্যাম্প গণিত, আর একটা HTTP স্ট্যাটাস রেফারেন্স—সবই এক জায়গায়। আপনি Google প্রথমে যা দেখায় তাতে আপনার ডেটা পেস্ট করা বন্ধ করেন, আর সেই এলোমেলো সাইটটা এটা লগ করছে কিনা তা নিয়ে দুশ্চিন্তা করাও বন্ধ করেন।
প্রতিটা টুল আসলে কী করে
JSON ফরম্যাটার এসকেপড, এক-লাইনের JSON-এর একটা দেয়াল নিয়ে সেটাকে এমন কিছুতে বদলে দেয় যা মানুষ স্ক্যান করতে পারে। ধরুন একটা webhook ফায়ার হলো আর আপনার লগ কাঁচা বডিটা একটা বিশাল স্ট্রিং হিসেবে ধরে রাখল। এটা পেস্ট করুন, দুই বা চার-স্পেস ইনডেন্টেশন বাছাই করুন, আর একটা পড়ার উপযোগী ট্রি পাবেন, সিনট্যাক্স ত্রুটি থাকলে সেটা নির্দিষ্ট করে দেখানো হবে। এটা ফরম্যাট করার সাথে সাথে যাচাই করে, তাই একটা ছুটকো ট্রেইলিং কমা বা একটা কোট না-করা কী আপনার অ্যাপের তিন স্তর গভীরে নীরবে ব্যর্থ হওয়ার বদলে সামনে চলে আসে।
Base64 এনকোড/ডিকোড সেই কর্মী টুল যা আপনি না ভেবেই বারবার ব্যবহার করেন। ডেটা URI, Basic Auth হেডার, কনফিগ ফাইলে গোঁজা বাইনারি ব্লব, একটা টোকেনের অংশ—সবই Base64। ক্রেডেনশিয়াল প্রত্যাশামতো পাঠানো হচ্ছে কিনা নিশ্চিত করতে একটা হেডার ভ্যালু ডিকোড করুন, বা এটা ইনলাইন করতে একটা ছোট ছবি এনকোড করুন। এটা UTF-8 পরিচ্ছন্নভাবে সামলায়, যা গুরুত্বপূর্ণ যখনই আপনার ইনপুট প্লেইন ASCII নয়।
URL এনকোড/ডিকোড টুল সেই চিরায়ত বাগ ঠিক করে যেখানে একটা কোয়েরি প্যারামিটারে একটা স্পেস, একটা অ্যাম্পারস্যান্ড, বা একটা প্লাস চিহ্ন থাকে আর নীরবে আপনার অনুরোধ ভেঙে দেয়। আপনি যদি হাতে একটা লিংক বানাচ্ছেন আর ভ্যালুটা হলো name=John & Co, তাহলে সেই অ্যাম্পারস্যান্ডটা %26-এ এসকেপ করা দরকার, নাহলে সার্ভার এটাকে একটা প্যারামিটার সেপারেটর হিসেবে পড়বে। পেস্ট করুন, এনকোড করুন, কপি করুন। আপনি যখন percent কোডে ভরা একটা লগ করা URL-এর দিকে তাকিয়ে আসলে কী অনুরোধ করা হয়েছিল তা বের করার চেষ্টা করছেন তখন ডিকোডিং উলটো পথে কাজ করে।

টোকেন টুল, আর একটা গুরুত্বপূর্ণ সতর্কতা
JWT ডিকোডার একটা টোকেনকে তার তিনটা ডট-আলাদা করা অংশে ভাগ করে আর হেডার ও পেলোডকে সাধারণ JSON হিসেবে দেখায়। আপনি যখন অথ ডিবাগ করছেন, এটা সোনার মতো: কোন অ্যালগরিদম টোকেনে সাইন করেছে তা যাচাই করুন, sub পড়ুন, exp ক্লেইম এখনও পার হয়নি তা নিশ্চিত করুন, আর আপনার গেটওয়ে ক্লায়েন্টকে ঠিক কোন স্কোপ বা রোল দিচ্ছে তা দেখুন।
এখানেই মানুষ ভুলে যায়। একটা JWT ডিকোড করা মানে এটা যাচাই করা নয়। পেলোডটা শুধুই Base64url — টোকেন হাতে থাকা যে কেউ তার প্রতিটা ক্লেইম পড়তে পারে, আর এই টুল ঠিক সেটাই করে, আর কিছু নয়। এটা সিগনেচার যাচাই করে না, তাই একটা ডিকোড করা টোকেন আপনাকে বলে একটা টোকেন কী বলছে, এটা আসল কিনা তা নয়। একটা অথরাইজেশন সিদ্ধান্তের জন্য কখনোই একটা ডিকোডারের ক্লেইমকে ভরসা করবেন না; সেটা আপনার সার্ভারের কাজ, সাইনিং কী দিয়ে। ডিকোডারটা বোঝার আর ডিবাগ করার জন্য ব্যবহার করুন, কখনো যাচাই করার জন্য নয়।
রেজেক্স টেস্টার সবচেয়ে বিরক্তিকর ইউটিলিটির চক্রটা বন্ধ করে দেয়। আপনার প্যাটার্ন লিখুন, কিছু নমুনা টেক্সট ফেলুন, আর আপনি টাইপ করার সাথে সাথে ম্যাচ লাইভ হাইলাইট হতে দেখুন। ক্যাপচার গ্রুপগুলো তালিকাভুক্ত করা থাকে, তাই আপনি নিশ্চিত করতে পারেন গ্রুপ দুই সত্যিই বছরটা ধরছে, পুরো তারিখটা নয়। এটা আপনার আসল কোডবেসের ভেতরে একটা প্যাটার্ন পরীক্ষা করার এডিট-সেভ-রিরান চক্রকে হারিয়ে দেয়, আর একটা লোভী কোয়ান্টিফায়ার কেন আপনার ইচ্ছার চেয়ে বেশি গিলে ফেলছে তা শেখার দ্রুত উপায়।
বাকিটা গোল করলে: HEX↔RGB কনভার্টার একটা #1a2b3c-কে rgb(26, 43, 60)-এ আর উলটোদিকে ফ্লিপ করে দেয়, যখন আপনার ডিজাইন টোকেন আর আপনার CSS-এর মধ্যে দ্বিমত। Unix টাইমস্ট্যাম্প কনভার্টার 1718900000-কে একটা বাস্তব তারিখ ও সময়ে বদলে দেয়, যা আপনি প্রতিবারই চাইবেন যখন একটা ডেটাবেস epoch সেকেন্ড সংরক্ষণ করে আর আপনার চোখ সেটা পড়তে পারে না। আর HTTP স্ট্যাটাস কোড রেফারেন্স আপনাকে অনুমান করা থেকে বাঁচায়, একটা API কল ভুল পথে গেলে 422 নাকি 409 সঠিক উত্তর তা নিয়ে।

স্থানীয় প্রসেসিং, তাই সংবেদনশীল জিনিসও পেস্ট করতে পারেন
প্রোডাকশন ডেটা স্পর্শ করা যে কারো জন্য এটাই সবচেয়ে গুরুত্বপূর্ণ অংশ। এখানকার প্রতিটা টুল ক্লায়েন্ট-সাইডে JavaScript-এ চলে। আপনার ইনপুট কখনো ব্রাউজার ছেড়ে যায় না — কোনো আপলোড নেই, সার্ভারে কোনো রাউন্ড ট্রিপ নেই, লগ করার কিছু নেই। এর মানে আপনি একটা আসল অ্যাক্সেস টোকেন পেস্ট করে তার ক্লেইম যাচাই করতে পারেন, একটা ক্রেডেনশিয়ালযুক্ত Base64 হেডার ডিকোড করতে পারেন, বা গ্রাহক ডেটায় ভরা একটা API রেসপন্স ফরম্যাট করতে পারেন—নেটওয়ার্ক পার না করেই। প্রমাণ চান? আপনার ডেভ টুল খুলুন, নেটওয়ার্ক ট্যাব দেখুন, আর পেস্ট করুন। আপনি কিছুই বের হতে দেখবেন না। সংবেদনশীল পেলোডের জন্য, একটা শুধুই-স্থানীয় টুল কোনো বাড়তি সুবিধা নয়; এটাই একমাত্র দায়িত্বশীল বিকল্প।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
এই ডেভেলপার টুলগুলো কি সত্যিই সাইন-আপ ছাড়া বিনামূল্যে?
হ্যাঁ। প্রতিটা ইউটিলিটি বিনামূল্যে ব্যবহারযোগ্য, কোনো অ্যাকাউন্ট লাগে না, আর কোনো ব্যবহার সীমা নেই। পেজ খুলুন আর কাজ শুরু করুন।
আমি এই টুলগুলো ব্যবহার করলে আমার ডেটা কি সার্ভারে পাঠানো হয়?
না। সবকিছুই আপনার ব্রাউজারে ক্লায়েন্ট-সাইডে চলে। আপনার ইনপুট কখনো আপলোড হয় না, তাই আপনি নিরাপদে টোকেন, ক্রেডেনশিয়াল, আর ব্যক্তিগত API রেসপন্স পেস্ট করতে পারেন।
JWT ডিকোডার কি টোকেনের সিগনেচার যাচাই করে?
না। এটা শুধু হেডার আর পেলোড ডিকোড করে যাতে আপনি ক্লেইম পড়তে পারেন। ডিকোড করা মানে যাচাই করা নয়। সিগনেচার যাচাইয়ের জন্য সাইনিং কী দরকার, আর সেটা আপনার সার্ভারের কাজ।
Base64 এনকোডিং আর এনক্রিপশনের মধ্যে পার্থক্য কী?
Base64 হলো এনকোডিং, এনক্রিপশন নয়। এটা যে কারো দ্বারা সম্পূর্ণ বিপরীতমুখী আর কোনো নিরাপত্তা দেয় না। এটা বাইনারি ডেটাকে টেক্সট হিসেবে উপস্থাপনের জন্য, লুকানোর জন্য নয়।
রেজেক্স টেস্টার কোন রেজেক্স ফ্লেভার সমর্থন করে?
এটা আপনার ব্রাউজারে চলা JavaScript রেগুলার এক্সপ্রেশন ইঞ্জিন ব্যবহার করে, লাইভ ম্যাচ হাইলাইটিং আর আপনি টাইপ করার সাথে সাথে ক্যাপচার গ্রুপ আউটপুটসহ।
আমি কি অবৈধ JSON ফরম্যাট করতে পারি?
ফরম্যাটার চেষ্টা করবে, আর JSON ভাঙা থাকলে এটা ত্রুটির অবস্থান নির্দেশ করে আর কী ভুল তা জানায়, যাতে আপনি ঠিক করে আবার ফরম্যাট করতে পারেন।
