Markdown Document (.md)
CommonMark StandartMarkdown (MD), John Gruber tarafından, temel bir terminal veya düz metin düzenleyicide bile zahmetsizce okunabilir ve yazılabilir olması, aynı zamanda yapılandırılmış HTML'e sorunsuz bir şekilde dönüştürülmesi için tasarlanmış, dünyanın en popüler hafif biçimlendirme dilidir.
İncele ve Meta Veriler
İşletim sistemleri ve dosya çözümleyicileri, Markdown dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
Bayt düzeyinde başlık imzası (sihirli baytlar)
İşletim sistemleri ve dosya çözümleyicileri, Markdown dosyalarını başlangıçtaki ikili sihirli bayt dizisini inceleyerek tanımlar:
HEX İMZASI (OFSET 0):
Sabit imza yok (Markdown düz metindir)ASCII GÖSTERİMİ: Sabit imza yok
Standartlaştırma: CommonMark Specification / GitHub Flavored Markdown (GFM)
Teknik Özellikler
| Kapsayıcı mimarisi | Hafif noktalama biçimlendirmesi (başlıklar, listeler, kalın, italik, kod blokları) kullanan düz UTF-8 metin dosyası |
| Sıkıştırma | Sıkıştırılmamış metin (Gzip veya Brotli ile kolayca sıkıştırılır) |
| Bayt Düzeni (Endianness) | UTF-8 / Unicode metin akışı |
| Renk Uzayları | N/A (Plaintext Markup) |
| Kanallar ve Yapı | Başlıklar, alıntı blokları, sırasız/sıralı listeler, kod çitleri, köprüler, görüntüler ve tablolar |
| Maksimum Boyutlar | Sınırsız metin belgesi uzunluğu |
| Şeffaflık | Yok (salt metin) |
| Akış ve Aşamalı İşleme | Blokların ve satır içi öğelerin satır satır akışlı belirteçleştirilmesi |
Teknik karşılaştırma matrisi: Markdown ve rakipleri
| Teknik Nitelik | Markdown (Güncel) | HTML | TXT | |
|---|---|---|---|---|
| Yazma Kolaylığı | Son derece hızlı düz metin yazımı | Ayrıntılı etiket sözdizimi (<p>, <div>) | Hızlı yazım (biçimlendirme yok) | Grafik düzenleme yazılımı gerektirir |
| Ham metnin okunabilirliği | Kusursuz doğal metin okunabilirliği | Etiketler ve parantezler nedeniyle karmaşık | Kusursuz metin okunabilirliği | İkili okunamaz ham baytlar |
| HTML Dönüşümü | Doğrudan 1'e 1 deterministik çıktı | Web'in yerleşik dili | Manuel biçimlendirme gerektirir | Sabit grafiksel çıktı |
| Geliştirici Araçları | Destek, yazılıma göre değişir. | Destek, yazılıma göre değişir. | Destek, yazılıma göre değişir. | Belge dağıtımı |
Yaygın Bozulma Modları ve Hex Kurtarma Kılavuzu
Kod blokları normal paragraflar olarak işlenir veya başlıklar biçimlendirilemez.
Kök Neden: Başlık '#' sembolünden sonra eksik boşluk veya kapatılmamış üçlü ters tırnak (```) kod sınırları.
Kurtarma: Markdown sözdizimini File2File.app Markdown Linter ile doğrula ve yeniden biçimlendir.
Güvenlik Analizi ve Ayrıştırıcı Saldırı Vektörleri
Markdown dönüştürücüler genellikle varsayılan olarak ham satır içi HTML'e izin verir; bu da temizlenmediği takdirde Siteler Arası Betik Çalıştırma (XSS) açıklarına yol açabilir.
Bilinen Saldırı Vektörleri
- Markdown metninin içine gömülü ham HTML öğeleri (örn. '<script>' veya '<img onerror=...>') aracılığıyla XSS enjeksiyonu.
- Uyumlu olmayan ayrıştırıcılarda derinlemesine iç içe geçmiş alıntı blokları veya liste yapıları yoluyla hizmet reddi (DoS).
- Markdown bağlantı sözdizimi içinde kötü amaçlı köprü şemaları ('javascript:').
Savunmaya yönelik en iyi uygulamalar: Oluşturulan HTML çıktısını her zaman DOMPurify ile temizle ve güvenli olmayan URL protokollerine izin verme.
Tarihsel kökenler ve önemli dönüm noktaları
Temel Avantajlar ve Artılar
- Maksimum insan okunabilirliği: Biçimlendirilmiş metin, temel bir terminalde veya düz metin düzenleyicide görüntülendiğinde bile temiz ve doğal görünür.
- Markdown belgelerde sık kullanılır, ancak sözdizimi ve görüntüleme araca göre değişir.
- Sıfır satıcı bağımlılığı: Düz metin dosyaları, tescilli görüntüleme yazılımlarına ihtiyaç duyulmadan yüzyıllar boyunca okunabilir kalacaktır.
Teknik Kısıtlamalar ve Eksiler
- Orijinal 2004 spesifikasyonundaki belirsiz ayrıştırma kuralları, farklı lehçelerin (CommonMark, GFM ve Kramdown) ince ince ayrışmasına yol açtı.
- Çok sütunlu dergi düzenleri, metin kaydırma veya sayfa numaraları gibi karmaşık sayfa düzeni özellikleri için yerel destek yoktur.
- Görseller belge dosyasının içinde saklanmaz; bunlara harici bağlantılarla başvurulur.
İlginç Teknik Bilgiler
- John Gruber ile birlikte Markdown'ı 17 yaşında geliştiren Aaron Swartz, aynı zamanda Reddit'in kurucu ortaklarındandır ve RSS 1.0'ı inşa etmiştir.
- Dünyadaki her bir GitHub deposu, kod tabanını geliştiricilere tanıtmak için bir 'README.md' dosyası kullanır.
- Markdown tasarım felsefesi şunu belirtir: 'Markdown biçimlendirme sözdizimi için temel tasarım hedefi, onu olabildiğince okunabilir kılmaktır.'
Sıkça Sorulan Teknik Sorular
Markdown ne için kullanılır?
Markdown; dokümantasyon, GitHub README dosyaları ve blog yazıları yazmak, Obsidian ve Notion gibi uygulamalarda not almak ve Discord ile Slack gibi platformlarda mesaj oluşturmak için kullanılır.
Markdown'ı PDF veya HTML formatına nasıl dönüştürebilirim?
Markdown (.md) dosyalarını web tarayıcında File2File.app ile tek tıkla biçimlendirilmiş PDF belgelerine veya temiz HTML koduna dönüştürebilirsin.
GitHub Flavored Markdown (GFM) nedir?
GFM, Markdown'ın GitHub tarafından genişletilmiş sürümüdür. Tablolar, onay kutulu görev listeleri ([x]), üstü çizili metin (~~text~~) ve sözdizimi vurgulu kod blokları desteği ekler.