Dokument Markdown (.md)
Specifikacija StandardMarkdown (MD) je najpopularniji laki jezik za označavanje na svetu, koji je dizajnirao Džon Gruber (John Gruber) da bude izuzetno lako čitljiv i pišljiv kao običan tekst, uz čisto pretvaranje u strukturirani HTML.
Pregled i metapodaci
Operativni sistemi i analizatori datoteka identifikuju Markdown datoteke proverom početnog binarnog niza bajtova:
Potpis zaglavlja na nivou bajtova (magični bajtovi)
Operativni sistemi i analizatori datoteka identifikuju Markdown datoteke proverom početnog binarnog niza bajtova:
HEKSADECIMALNI POTPIS (OFFSET 0):
Nema fiksnog potpisa (Markdown je običan tekst)ASCII REPREZENTACIJA: Nema fiksnog potpisa
Standardizacija: Specifikacija CommonMark / GitHub Flavored Markdown (GFM)
Tehničke specifikacije
| Arhitektura kontejnera | Obična UTF-8 tekstualna datoteka koja koristi lagano formatiranje interpunkcijom (naslovi, liste, podebljavanje, kurziv, blokovi koda) |
| Kompresija | Nekomprimovan tekst (lako se komprimuje pomoću Gzip ili Brotli) |
| Bajtni redosled (Endianness) | Tekstualni tok UTF-8 / Unicode |
| Prostori boja | Nije primenljivo (tekstualni jezik za označavanje) |
| Kanali i struktura | Naslovi, blok-citati, neuređene/uređene liste, ograde za kod, hiperveze, slike i tabele |
| Maksimalne dimenzije | Neograničena dužina tekstualnog dokumenta |
| Transparentnost | Nema (čist tekst) |
| Strimovanje i progresivno učitavanje | Postepena tokenizacija blokova i elemenata unutar reda, red po red |
Tehnička matrica poređenja: Markdown u odnosu na konkurente
| Tehnički atribut | Markdown (Trenutno) | HTML | TXT | |
|---|---|---|---|---|
| Jednostavnost pisanja | Izuzetno brzo kucanje običnog teksta | Opširna sintaksa oznaka (<p>, <div>) | Brzo kucanje (bez formatiranja) | Zahteva grafički uređivač rasporeda |
| Čitljivost za ljude (sirovi tekst) | Izuzetna čitljivost običnog teksta | Pretrpano oznakama i zagradama | Izuzetna čitljivost teksta | Binarni nečitljivi sirovi bajtovi |
| HTML konverzija | Direktan deterministički izlaz 1 na 1 | Izvorni jezik veba | Zahteva ručno formatiranje | Fiksni grafički izlaz |
| Alati za programere | Podrška se razlikuje u zavisnosti od programa. | Podrška se razlikuje u zavisnosti od programa. | Podrška se razlikuje u zavisnosti od programa. | Distribucija dokumenata |
Uobičajeni režimi oštećenja i vodič za heksadecimalni oporavak
Blokovi koda se prikazuju kao obični pasusi ili se zaglavlja ne formatiraju.
Osnovni uzrok: Nedostaje razmak nakon simbola '#' za zaglavlje ili zatvorene trostruke obrnute apostrofe (```) za blokove koda.
Oporavak: Validirajte i ponovo formatirajte Markdown sintaksu pomoću File2File.app Markdown Linter alata.
Bezbednosna analiza i vektori napada parsera
Markdown konverteri često podrazumevano dozvoljavaju sirovi ugrađeni HTML, što može dovesti do skriptovanja na više lokacija (XSS) ako se HTML ne sanira.
Poznati vektori napada
- XSS injekcija kroz sirove HTML elemente (npr. '<script>' ili '<img onerror=...>') ugrađene unutar Markdown teksta.
- Uskraćivanje usluge (DoS) kroz duboko ugnežđene strukture blok-citatâ ili lista u neusklađenim parserima.
- Zlonamerne šeme hiperveza ('javascript:') unutar sintakse Markdown veza.
Najbolje prakse za zaštitu: Uvek sanirajte generisani HTML izlaz pomoću DOMPurify i zabranite nebezbedne URI protokole.
Istorijat i prekretnice
Ključne prednosti
- Maksimalna čitljivost za ljude: formatirani tekst izgleda čisto i prirodno čak i kada se gleda u osnovnom terminalu ili uređivaču običnog teksta.
- Markdown se često koristi u dokumentaciji, ali se sintaksa i prikaz razlikuju među alatima.
- Nema zaključavanja kod određenog dobavljača (vendor lock-in): datoteke sa običnim tekstom ostaće čitljive vekovima bez vlasničkog softvera za pregled.
Tehnička ograničenja i nedostaci
- Originalna specifikacija iz 2004. imala je dvosmislena pravila parsiranja, što je dovelo do suptilne fragmentacije dijalekata (CommonMark vs GFM vs Kramdown).
- Nema izvornu podršku za složene funkcije preloma stranice, kao što su višestruki stubci u stilu časopisa, prelamanje teksta ili brojevi stranica.
- Ugrađene slike se povezuju spolja umesto da se čuvaju unutar datoteke dokumenta.
Zanimljivosti
- Aron Švarc, koji je sa Džonom Gruberom razvio Markdown sa 17 godina, takođe je suosnivač Reddita i tvorac RSS 1.0.
- Mnogi GitHub repozitorijumi koriste datoteku README.md da predstave projekat, ali repozitorijumi mogu da koriste i druga imena ili da nemaju takvu datoteku.
- Filozofija dizajna Markdowna navodi: 'Glavni cilj dizajna za Markdown sintaksu formatiranja jeste da ona bude što čitljivija.'
Često postavljana tehnička pitanja
Čemu služi Markdown?
Markdown se koristi za pisanje dokumentacije i GitHub README fajlova, objavljivanje tekstova na blogovima, vođenje beleški u aplikacijama kao što su Obsidian i Notion, kao i za pisanje poruka na platformama kao što su Discord i Slack.
Kako mogu da konvertujem Markdown u PDF ili HTML?
Možete da konvertujete Markdown (.md) datoteke u stilizovane PDF dokumente ili čist HTML kod jednim klikom pomoću File2File.app, direktno u veb-pregledaču.
Šta je GitHub Flavored Markdown (GFM)?
GFM je GitHubova proširena verzija Markdowna koja dodaje podršku za tabele, liste zadataka s poljima za potvrdu ([x]), precrtani tekst (~~text~~) i blokove koda s isticanjem sintakse.