מסמך Markdown (.md)
CommonMark תקןMarkdown (MD) היא שפת סימון קלת משקל, שתוכננה בידי John Gruber כדי שיהיה קל לקרוא ולכתוב אותה כטקסט פשוט ולהמיר אותה ל-HTML מובנה.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי Markdown על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי Markdown על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
אין חתימה קבועה (Markdown הוא טקסט פשוט)ייצוג ASCII: אין חתימת ASCII קבועה
תקינה: CommonMark Specification / GitHub Flavored Markdown (GFM)
מפרט טכני
| מבנה המכולה | קובץ טקסט פשוט בקידוד UTF-8 המשתמש בסימני פיסוק קלים לעיצוב (כותרות, רשימות, הדגשה, נטוי ובלוקי קוד) |
| דחיסה | טקסט לא דחוס (ניתן לדחיסה באמצעות Gzip או Brotli) |
| סדר בתים (Endianness) | זרם טקסט UTF-8 / Unicode |
| מרחבי צבע | לא רלוונטי (סימון טקסט פשוט) |
| ערוצים ומבנה | כותרות, ציטוטים בבלוק, רשימות ממוספרות ולא ממוספרות, גדרות קוד, קישורים, תמונות וטבלאות |
| ממדים מרביים | אורך מסמך טקסט ללא הגבלה |
| שקיפות | אין (טקסט בלבד) |
| הזרמה ופרוגרסיביות | ניתוח בהזרמה של בלוקים ואסימונים בשורה אחר שורה |
מטריצת השוואה טכנית: Markdown מול מתחרים
| תכונה טכנית | Markdown (נוכחי) | HTML | TXT | |
|---|---|---|---|---|
| פשטות כתיבה | הקלדת טקסט פשוט מהירה במיוחד | תחביר תגים מפורט (<p>, <div>) | הקלדה מהירה (ללא עיצוב) | דורש עורך פריסה גרפי |
| קריאות אנושית (גולמי) | קריאות טבעית ומושלמת של הטקסט | עמוס בתגים ובסוגריים | קריאות מושלמת של הטקסט | בייטים גולמיים בינאריים בלתי קריאים |
| המרת HTML | פלט ישיר ודטרמיניסטי ביחס של 1:1 | שפת רשת טבעית | דורש עיצוב ידני | פלט גרפי קבוע |
| כלי פיתוח | התמיכה משתנה בין תוכנות. | התמיכה משתנה בין תוכנות. | התמיכה משתנה בין תוכנות. | הפצת מסמכים |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
בלוקי קוד מוצגים כפיסקאות רגילות או שכותרות נכשלות בעיצוב.
גורם שורש: רווח חסר אחרי סמל הכותרת '#' או גדרות קוד משולשות (```) לא סגורות.
שחזור: אמת את תחביר ה-Markdown ועצב אותו מחדש באמצעות File2File.app Markdown Linter.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
ממירי Markdown מאפשרים לעיתים קרובות HTML גולמי בתוך הטקסט, שעלול לאפשר XSS אם אינו מנוקה.
ווקטורי תקיפה ידועים
- הזרקת XSS באמצעות רכיבי HTML גולמיים (למשל <script> או <img onerror=...>) המשולבים בטקסט Markdown.
- מניעת שירות באמצעות מבני ציטוט או רשימות מקוננים לעומק במנתחים שאינם תואמים למפרט.
- סכמות URL זדוניות ('javascript:') בתוך תחביר הקישורים של Markdown.
שיטות מומלצות להגנה: העבר תמיד את פלט ה-HTML שנוצר דרך DOMPurify, וחסום פרוטוקולי URL לא בטוחים.
היסטוריה ואבני דרך
יתרונות מרכזיים
- קריאות גבוהה: טקסט מעוצב נשאר נקי וטבעי גם במסוף בסיסי או בעורך טקסט פשוט.
- Markdown נפוץ בתיעוד, אך התחביר והתצוגה משתנים בין תוכנות.
- אין תלות בספק: קובצי טקסט פשוט יישארו קריאים לאורך זמן בלי תוכנת צפייה קניינית.
מגבלות טכניות וחסרונות
- במפרט המקורי משנת 2004 היו כללי ניתוח עמומים, שהובילו בהדרגה להבדלים בין ניבים (CommonMark, GFM ו-Kramdown).
- אין תמיכה מובנית בתכונות פריסת עמוד מורכבות כמו פריסות מגזין מרובות עמודות, גלישת טקסט או מספרי עמודים.
- תמונות מקושרות חיצונית ואינן נשמרות בתוך קובץ המסמך.
עובדות טכניות מעניינות
- Aaron Swartz, שפיתח את Markdown עם John Gruber כשהיה בן 17, היה גם ממייסדי Reddit ובנה את RSS 1.0.
- מאגרי GitHub רבים משתמשים בקובץ README.md כדי להציג את הפרויקט, אך אפשר להשתמש בשמות אחרים או לא לכלול קובץ כזה.
- פילוסופיית העיצוב של Markdown קובעת: "מטרת העיצוב העיקרית של תחביר העיצוב של Markdown היא להפוך אותו לקריא ככל האפשר."
שאלות טכניות נפוצות
למה משמש Markdown?
Markdown משמש לכתיבת תיעוד, קובצי README ב-GitHub, פוסטים בבלוגים ורשימות באפליקציות כמו Obsidian ו-Notion, וכן לכתיבת הודעות בפלטפורמות כמו Discord ו-Slack.
איך אוכל להמיר Markdown ל-PDF או HTML?
ניתן להמיר קובצי Markdown (.md) למסמכי PDF מעוצבים או לקוד HTML נקי בלחיצת כפתור אחת באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.
מה זה GitHub Flavored Markdown (GFM)?
GFM היא גרסה מורחבת של Markdown מטעם GitHub המוסיפה תמיכה בטבלאות, רשימות מטלות עם תיבות סימון ([x]), טקסט מחוק (~~text~~), ובלוקי קוד מודגשי תחביר.