মূল লেখায় যান
বাংলা
কাজের টেবিলযেসব সরঞ্জাম কিছুই আপলোড করে না
ODERSA সংস্থার একটি কর্মশালাকিছু বাইরে যায় না, কিছু জমা থাকে না, কিছু আমাদের কাছে পৌঁছায় না।

কর্মশালা · Markdown থেকে HTML

কীভাবে কাজ করে : Markdown থেকে HTML

আপনার লেখার প্রতিটি HTML চিহ্ন এস্কেপ করা হয়, একটিও বাদ যায় না: আপনার Markdown-এ লেখা কোনো স্ক্রিপ্ট চোখে দেখা যাওয়া লেখা হয়েই বেরোয়, কখনও চালানোর মতো হয়ে নয়। এটি মানটির চেয়েও কড়া, আর যে সরঞ্জাম এমন একটি ফাইল বানায় যা কেউ খুলবে, তার জন্য এটিই একমাত্র নিরাপদ আচরণ।

সরঞ্জামটি খুলুন

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

নিরাপত্তার দিকে নীতির একটি কথা, যা ঠিকভাবে বলা দরকার। মানটি একটি Markdown নথির ভিতরে কাঁচা HTML অনুমোদন করে, আর আমরা তার লেখায় যাচাই করে দেখেছি যে সে বাস্তবায়নগুলিকে কোথাওই নিজেদের ফল পরিষ্কার করতে বলে না: “ফলাফলটি একটি পরিষ্কারকের মধ্যে দিয়ে চালিয়ে নিন” নির্দেশটি এসেছে কিছু লাইব্রেরির নথি থেকে, মান থেকে নয়। তাই আমরা সেটি মানের ঘাড়ে চাপাব না।

আমাদের পছন্দটি আরও সরল আর আরও কড়া: আপনার লেখার প্রতিটি HTML চিহ্ন এস্কেপ করা হয়। আপনার Markdown-এ লেখা একটি ট্যাগ ফলাফলে চোখে দেখা যাওয়া অবস্থাতেই বেরোয়, কখনও কাজ করা অবস্থায় নয়। আর লিঙ্কের বিপজ্জনক ঠিকানাগুলি নাম ধরে ধরে বাতিল করা হয়, লিঙ্কের লেখাটি সাদামাটা লেখা হিসেবে রেখে দিয়ে আর পর্দায় সে কথা জানিয়ে দিয়ে, ঠিকানার একটি অ্যাট্রিবিউটে কেবল http আর https-এর ঠিকানাই মানার যে প্রকাশ্য সুপারিশ আছে সেটি মেনে।

কীভাবে কাজ করে

  1. আপনার Markdown-টি বসিয়ে দিন। সেটি আপনার ডিভাইস ছেড়ে যায় না।
  2. কোথাও ঢুকিয়ে দেওয়ার একটি টুকরোর বদলে নিজে থেকেই চলে এমন একটি HTML ফাইল চাইলে “পুরো পাতা”-য় টিক দিন।
  3. ফলাফলটি কপি করুন বা ডাউনলোড করুন। কোনো ঠিকানা বাতিল হয়ে থাকলে ছকটি সেগুলির নাম বলে দেয়।

গৃহীত ফরম্যাট

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

Markdown ফরম্যাটের লেখা

দুই লক্ষ চিহ্ন পর্যন্ত। ফল বেরোয় HTML-এ, একটি টুকরো হিসেবে বা নিজে থেকেই চলে এমন একটি পাতা হিসেবে।

সামঞ্জস্যের ছক দেখুন

এর সীমা

মানটির একটি অংশ মাত্র, যার তালিকা উপরেই দেওয়া

আদর্শ মানটিতে মিলে যাওয়ার পাঁচশোরও বেশি উদাহরণ আছে, যার অনেকগুলিই এমন ক্ষেত্র ঢাকে যা কেউ কখনও লেখেই না: চার স্তর গভীরে বসানো তালিকা আর তার ধারাবাহিকতা, পরে সংজ্ঞা দেওয়া লিঙ্কের উল্লেখ, HTML-এর সাংখ্যিক এনটিটি। পাঁচশোটি ক্ষেত্র বানানো আর যাচাই করা আলাদা একটি প্রকল্পই হত। আমরা বরং ঠিক কী কী চলে তা ঘোষণা করতে চাই: এটি ছোট একটি প্রতিশ্রুতি, আর সেটি রাখা হয়।

আপনার Markdown-এ লেখা HTML এস্কেপ করা হয়, কখনও কপি করা হয় না

মানটি সেটি অনুমোদন করে, কিন্তু যে সরঞ্জাম খোলার জন্য বানানো একটি HTML ফাইল ফেরত দেয় তাকে নিরাপত্তাই বেছে নিতে হয়: কারও কাছ থেকে পাওয়া একটি Markdown-এ ঢুকিয়ে দেওয়া একটি স্ক্রিপ্ট চলে যেত। তাই প্রতিটি HTML চিহ্ন চোখে দেখা যাওয়া লেখা হয়ে যায়। জেনে রাখার মতো ফল: আপনি যদি ইচ্ছে করেই কোনো বিশেষ ফলের জন্য একটি ট্যাগ ব্যবহার করে থাকেন, তবে সেটি ফলাফলে খোলা অবস্থাতেই দেখা যাবে, আর সেটাই চাওয়া হয়েছে।

কেবল http, https, mailto আর আপেক্ষিক ঠিকানাগুলিই রাখা হয়

একটি Markdown লিঙ্ক ঠিকানার যেকোনো ধরনই বইতে পারে, তার মধ্যে সেগুলিও যেগুলি ক্লিক করলেই কোড চালিয়ে দেয়। পাতায় ঢুকিয়ে দেওয়া স্ক্রিপ্ট নিয়ে OWASP-এর প্রকাশ্য সুপারিশ বলে যে ঠিকানার একটি অ্যাট্রিবিউটে কেবল http আর https-ই মানা উচিত। সরঞ্জামটি এই নিয়মটিই মেনে চলে, লিঙ্কের লেখাটি রেখে দেয়, আর বাতিল করা ঠিকানাটি একটি ছকে জানিয়ে দেয়: চুপচাপ সেটি সরিয়ে দিলে আপনি ভাবতেন লিঙ্কটি কাজ করছে।

ছক বদলানো হয় না

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

এই সরঞ্জাম নিয়ে প্রশ্ন

আমার লেখাটি কি কোথাও পাঠানো হয়?

না। তিরিশ সেকেন্ডেই যাচাই করে নিন: F12 বোতাম দিয়ে ইন্সপেক্টর খুলুন, “Network” ট্যাব, তালিকাটি খালি করুন, তারপর আপনার Markdown-টি বসিয়ে বদলে নিন। একটি লাইনও আসে না। সংযোগ কেটে দিয়ে আবার করুন: বিশ্লেষকটি পাতার ভিতরেই লেখা।

আমার HTML ট্যাগটি ফলাফলে খোলা অবস্থায় দেখাচ্ছে কেন?

কারণ আপনার লেখার প্রতিটি HTML চিহ্নই এস্কেপ করা হয়, একটিও বাদ যায় না। Markdown-এর মানটি কাঁচা HTML অনুমোদন করে, কিন্তু যে সরঞ্জাম এমন একটি ফাইল বানায় যা কেউ খুলবে, সে নিজের না-লেখা কোনো লেখা থেকে আসা একটি ট্যাগ কপি করতে পারে না: পাওয়া কোনো নথিতে ঢুকিয়ে দেওয়া একটি স্ক্রিপ্ট চলে যেত। আপনার যদি কোনো নির্দিষ্ট ট্যাগ দরকার হয়, তবে বদলে নেওয়ার পরে নিজের সম্পাদকে সেটি জুড়ে দিন, জেনেবুঝে।

আমার একটি লিঙ্কে আর ক্লিক করা যাচ্ছে না।

কারণ তার ঠিকানাটি এমন একটি ধরন ব্যবহার করছে যা ক্লিক করলেই কোড চালিয়ে দিতে পারে। সরঞ্জামটি লিঙ্কের লেখাটি রাখে, ঠিকানাটি সরিয়ে দেয়, আর একটি ছকে তার নাম বলে দেয়। এই লিঙ্কটি যদি এমন কোনো নথি থেকে এসে থাকে যা আপনি নিজে লেখেননি, তবে এটি গুরুত্ব দিয়ে দেখার মতো একটি তথ্য। যেগুলি রাখা হয় সেগুলি হল http, https, mailto, পাতার ভিতরের নোঙর আর আপেক্ষিক ঠিকানা।

আমার ছকগুলি বদলাচ্ছে না।

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

ফলাফলটি কি মানের সঙ্গে মেলে?

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