MessagePack Görüntüleyici
MessagePack hex veya base64 blob’unu yapıştır, JSON olarak oku. Kodlamayı kendimiz tespit ederiz, tarayıcında çözeriz, yükleme yok.
MessagePack Görüntüleyici ne yapar
Bir Cloudflare Worker log’unda hex blob’a bakıp “bunun içinde aslında ne var?” diye düşündüysen, bu sayfa tam ona göre. MessagePack, çıktısı 83a76f72646572496478a84f52442d37343231... gibi görünen bir ikili serileştirme formatıdır — kabloda kompakt, gözle okunaksız. Hex’i (ya da base64’ü — biz kendimiz tespit ederiz) sol panele yapıştırırsın, sağ panel sana çözülmüş JSON ağacını gösterir.
Çözüm yerel olarak resmi @msgpack/msgpack kütüphanesiyle yapılır; çoğu Node ve tarayıcı uygulaması da bunu kullanır. Format açık olan MessagePack wire-format spec’ini takip eder, yani msgpack-python, msgpack-c, msgpack-java ya da spec’e uyan başka bir uygulamanın ürettiği herhangi bir payload burada çalışır. Yükleme adımı yok — baytlar tarayıcından dışarı çıkmaz; blob’da customer: 'Ava Chen' ya da iç bir subscriberId: 'SUB-1001' varken bu fark yaratır.
Çözüm 300ms debounce’luydur; yapıştırıp düzenleyip yine yapıştırabilirsin, hiçbir şeye tıklaman gerekmez. Convert düğmesi yok, spinner yok — yazarsın, okursun.
Bir MessagePack payload’unu nasıl görürsün
Üç adım. Log’dan kopyalanmış hex dizeleri, Kafka mesajından çekilmiş base64 alanlar veya bir debugger’dan yapıştırdığın ham baytlar için işe yarar.
Sol panele hex ya da base64 yapıştır
Kodlanmış MessagePack’i soldaki editöre at. Kendimiz tespit ederiz: boşluklar, virgüller, 0x önekleri ve \x kaçışları temizlendikten sonra hex olarak temiz parse oluyorsa hex sayarız; değilse base64 (RFC 4648) deneriz. İkisi de olur. Hex kodlanmış bir sipariş örneği:
83a76f72646572496478a84f52442d37343231a56974656d739282a3736b75a7534b552d313031a37174790282a3736b75a7534b552d323434a37174790182a8637573746f6d6572a841766120436865 6eBu blob, müşteri Ava Chen için iki kalemli (SKU-101 x2 ve SKU-244 x1) bir siparişe çözülür.
Çözülmüş JSON’u sağda oku
Sağdaki panel salt-okunurdur ve çözülmüş payload’u biçimlendirilmiş JSON olarak gösterir — girintiler JSON.stringify(obj, null, 2) ile aynı. Map’ler nesne, dizilel array, int/float sayı olarak çıkar; ikili blob’lar bayt uzunluğu görünen bir Uint8Array olarak gelir. Timestamp uzantı tipinden gelen zamanlar ISO dizgeleri olarak basılır.
Tıklamadan iterasyon yap
Girdiyi düzenle, JSON 300ms’lik bir duraktan sonra güncellenir. Baytlar geçerli MessagePack değilse parse olmuş gibi yapmayız; neyin bozuk olduğunu (kesik buffer, beklenmeyen tip baytı vb.) söyleriz. Karşılaştırma için bilinen bir Order payload’unu yüklemek üzere Örnek msgpack düğmesini kullan.
Bunu gerçekten ne zaman kullanırsın
Log’daki MessagePack mesajını incelemek
Servisin yapılandırılmış bir log’a msgpack-kodlu payload’ları hex olarak yazıyor (çoğu durumda base64’ten kısadır). Üretimde bir şey patladığında, log satırından hex’i kopyalar, buraya yapıştırır ve üreticinin gerçekten ne gönderdiğini anında görürsün — orderId ORD-7421, doğru kalemler, yanlış customer alanı, ne olursa.
Bir Redis veya Kafka payload’unu debuglamak
Birçok backend, sıcak yollarda JSON yerine MessagePack kullanır; çünkü %30-50 daha küçük ve daha hızlı parse edilir. Redis’ten bir değer çektiğinde ya da kcat -e ile bir Kafka topic’ine baktığında baytlar base64 olarak gelir. Tüketici ile üreticinin şemada anlaştığını teyit etmek için buraya yapıştır.
Diller arası round-trip’leri doğrulamak
Python’da msgpack.packb(...) ile kodlar, Go’da msgpack.Unmarshal(...) ile çözersin. Go tarafı yanlış bir tip görünce, Python’dan baytları hex olarak dök ve bu görüntüleyiciden geçir — bug’ın encoder’da mı decoder’da mı olduğunu, bir öğleden sonra tartışmadan önce söyler.
Kayıtlı dosyadan MessagePack okumak
Jupyter notebook export’undan, oyun kayıdından ya da analitik dump’tan gelen bir <code>.msgpack</code> dosyan var. Üzerinde <code>xxd -p</code> çalıştır, hex’i al, yapıştır, oku. Sırf bir kaydın nasıl göründüğünü görmek için yepyeni bir Python REPL’de kütüphaneyi kurmaktan hızlıdır.
Sık sorulanlar
Verim tarayıcıdan dışarı çıkıyor mu?
Hayır. Çözüm tamamen bu sekmede, sayfayla birlikte gelen @msgpack/msgpack kütüphanesiyle çalışır. Fetch yok, yükleme yok, baytlar üzerinde telemetri yok. Sekmeyi kapat, veri gider. Yine de — URL çubuğunu kamuya açık alan gibi düşün, oraya payload koyma; pano’nda gizli şey varsa temizle.
Hex yerine base64 yapıştırabilir miyim?
Evet. Görüntüleyici otomatik tespit eder: girdiyi boşluk, virgül, 0x öneki ve Python tarzı \x kaçışları temizlendikten sonra hex olarak parse edebiliyorsa hex sayar; aksi halde standart base64 dener. Aynı payload için ikisi de çalışır. Çoğu log kısa mesajlar için hex, daha büyükler için base64 kullanır.
İkili alanlar, timestamp’ler ve uzantı tipleri ne olur?
İkili (bin ailesi) Uint8Array olarak çözülür ve JSON ağacında { "0": 134, "1": 12, ... } şeklinde basılır (standart JSON’da yerel bayt tipi yok — Uint8Array dokümanı için MDN’e bak). Timestamp uzantı tipinden gelen değerler yerel Date nesnelerine çözülür ve ISO 8601 dizgeleri olarak serileştirilir. Diğer uzantı tipleri { type, data } tuple’ları olarak gelir — tip kodunu ve ham baytları görürsün.
Çözülmüş çıktı sunucumun gönderdiğinden neden farklı?
İki klasik şüpheli. Bir: girdin kesik — log kesilmesi çoğu zaman son birkaç baytı keser ve msgpack uzunluk öneki olan alanlara dayanır, bu yüzden eksik kuyruk kafa karıştırıcı bir hata ya da kısmi çıktı verir. İki: üretici özel bir uzantı tipi kullandı, alıcı bunu bilmiyor. Yapı imkansız görünüyorsa baytları resmi spec ile karşılaştır.
Devasa payload’ları çözebilir mi?
Modern tarayıcılarda birkaç megabaytlık hex sorunsuz yapışır. Onun ötesinde, girdi tarafındaki Ace editör ağırlaşmaya başlar — o noktada dosyayı bir Node script’inde kütüphaneyle doğrudan okumak daha iyi. Darboğaz çözücü değil; editör.
Örnektekine benzer hex’i nasıl üretirim?
Python’da: import msgpack; msgpack.packb(obj).hex(). JS’te: Array.from(encode(obj)).map(b => b.toString(16).padStart(2, '0')).join(''). Go’da: fmt.Sprintf("%x", msgpack.Marshal(obj)). Çoğu dilin tek satırlık bir yolu vardır; çıkan hex doğrudan buraya yapıştırılır.
Diğer MessagePack araçları
Görüntülemek bir yön — bunlar tam round-trip’i ve komşu formatları halleder: