مستند Markdown (.md)
مواصفة قياسيMarkdown (MD) لغة الترميز خفيفة الوزن الأكثر شيوعاً في العالم. صممها John Gruber لتكون سهلة القراءة والكتابة كنص عادي، ولتحويلها بسلاسة إلى HTML منظّم.
فحص البيانات الوصفية
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات Markdown من خلال فحص تسلسل البايت الثنائي البادئ:
توقيع رأس الملف على مستوى البايت (Magic Bytes)
تتعرف أنظمة التشغيل ومحللات الملفات على ملفات Markdown من خلال فحص تسلسل البايت الثنائي البادئ:
التوقيع الست عشري (الإزاحة 0):
لا توجد بصمة ثابتةتمثيل ASCII: لا توجد بصمة ثابتة
التوحيد القياسي: مواصفة CommonMark / Markdown بنكهة GitHub (GFM)
المواصفات الفنية
| هيكلية الحاوية | ملف نصي عادي بترميز UTF-8 يستخدم علامات ترقيم بسيطة للتنسيق، مثل العناوين والقوائم والخط العريض والمائل وكتل الشيفرة |
| الضغط | نص غير مضغوط (يمكن ضغطه بسهولة باستخدام Gzip أو Brotli) |
| ترتيب البايتات (Endianness) | تدفق نصي بترميز UTF-8 / Unicode |
| مساحات الألوان | لا ينطبق (ترميز نصي) |
| القنوات والبنية | عناوين واقتباسات وقوائم نقطية أو مرقّمة وأسوار شيفرة وروابط تشعبية وصور وجداول |
| الحد الأقصى للأبعاد | طول المستند النصي غير محدود |
| الشفافية | لا يوجد (نص خالص) |
| البث والتحميل التدرجي | تحليل تدفقي للأسطر، مع تقسيم الكتل والرموز المضمنة |
مصفوفة المقارنة التقنية: Markdown مقابل المنافسين
| السمة التقنية | Markdown (الحالي) | HTML | TXT | |
|---|---|---|---|---|
| بساطة التأليف | كتابة نص عادي سريعة للغاية | صياغة مطولة باستخدام الوسوم (<p>، <div>) | كتابة سريعة (بدون تنسيق) | يتطلب محرر تخطيط رسومي |
| سهولة القراءة للبشر (النص الخام) | سهولة قراءة النص الخام بصيغته الطبيعية | مليئة بالعلامات والأقواس | نص واضح سهل القراءة | بايتات خام ثنائية غير مقروءة |
| تحويل HTML | تحويل مباشر بنتيجة محددة واحداً لواحد | لغة ويب أصلية | يتطلب تنسيقًا يدويًا | إخراج رسومي ثابت |
| أدوات المطورين | يختلف الدعم حسب البرنامج. | يختلف الدعم حسب البرنامج. | يختلف الدعم حسب البرنامج. | توزيع المستندات |
أنماط التلف الشائعة ودليل الاسترداد بالنظام الست عشري
تظهر كتل الأكواد كفقرات عادية أو تفشل العناوين في التنسيق.
السبب الجذري: غياب مسافة بعد رمز العنوان # أو عدم إغلاق سياج كتلة الشيفرة المحاط بثلاث علامات اقتباس خلفية (``` ).
الاسترداد: تحقّق من صياغة Markdown وأعِد تنسيقها باستخدام مدقّق Markdown في File2File.app.
تحليل الأمان ومتجهات الهجوم على المحلّل
غالباً ما تسمح محولات Markdown بعناصر HTML مضمنة دون تنقية افتراضية؛ وقد يؤدي ذلك إلى ثغرات XSS.
ناقلات الهجوم المعروفة
- حقن XSS من خلال عناصر HTML الخام (مثل '<script>' أو '<img onerror=...>') المضمنة داخل نص Markdown.
- حجب الخدمة بسبب بنى اقتباس أو قوائم متداخلة بعمق في المحللات غير المطابقة للمواصفات.
- روابط Markdown التي تستخدم بروتوكولات ضارة مثل javascript: قد تتيح تنفيذ شيفرة غير آمنة.
أفضل الممارسات الدفاعية: نظّف دائمًا مخرجات HTML المُنشأة باستخدام DOMPurify، وامنع بروتوكولات عناوين URL غير الآمنة.
الأصول التاريخية والمحطات الرئيسية
المزايا الرئيسية والإيجابيات
- سهلة القراءة للبشر: يظل النص المنسّق واضحاً وطبيعياً حتى عند عرضه في طرفية بسيطة أو محرر نصوص عادي.
- يشيع استخدام Markdown في التوثيق، لكن الصياغة والعرض يختلفان حسب البرنامج.
- لا يرتبط بمورّد بعينه؛ ستظل الملفات النصية العادية مقروءة لقرون دون الحاجة إلى برنامج عرض خاص.
القيود الفنية والسلبيات
- اتسمت مواصفة 2004 الأصلية بالغموض في قواعد التحليل، ما أدى إلى ظهور لهجات مختلفة مثل CommonMark وGFM وKramdown.
- لا يدعم أصلياً ميزات تخطيط الصفحات المعقدة، مثل تخطيط المجلات متعدد الأعمدة والتفاف النص وترقيم الصفحات.
- يتم ربط الصور المضمنة خارجيًا بدلاً من تخزينها داخل ملف المستند.
معلومات تقنية طريفة
- آرون شوارتز، الذي شارك في تطوير Markdown مع جون غروبر في سن 17 عامًا، شارك أيضًا في تأسيس Reddit وبنى RSS 1.0.
- يستخدم كل مستودع غيت هاب في العالم ملف 'README.md' لتقديم قاعدة الشيفرة البرمجية للمطورين.
- تذكر فلسفة تصميم Markdown: «الهدف التصميمي الأسمى لبنية تنسيق Markdown هو جعلها سهلة القراءة قدر الإمكان».
الأسئلة التقنية المتكررة
فيمَ يُستخدم Markdown؟
يُستخدم Markdown لكتابة التوثيق، وملفات README الخاصة بـ GitHub، ومنشورات المدونات، وتدوين الملاحظات في تطبيقات مثل Obsidian وNotion، وكتابة الرسائل على منصات مثل Discord وSlack.
كيف يمكنني تحويل Markdown إلى PDF أو HTML؟
يمكنك تحويل ملفات Markdown (.md) إلى مستندات PDF منسّقة أو HTML واضح بنقرة واحدة باستخدام File2File.app في متصفحك.
ما هو Markdown المدعوم من GitHub (المعروف بـ GFM)؟
GFM هي نسخة Markdown الموسعة من GitHub، وتدعم الجداول وقوائم المهام ذات مربعات الاختيار ([x]) والنص المشطوب (~~text~~) وكتل الشيفرة المميّزة بناءً على صياغتها.