MessagePack Doğrulayıcı
Hex veya base64 olarak MessagePack yapıştırın ve sorunsuz parse olup olmadığını görün. Bayt sayısı, üst düzey türü gösterir; başarısız olursa parser hatasını aynen yansıtır.
Giriş
Çıkış
MessagePack Doğrulayıcı nedir?
MessagePack üreten bir servisle entegre oluyorsunuz ve wire formatı sizi durmadan şaşırtıyor — yanlış bayt sayısı, sondaki tuhaf baytlar, parser hangi alanın bozulduğuna dair hiçbir ipucu vermeden anlaşılmaz biçimde ölüyor. Bu araç bir MsgPack payload’unun hex veya base64 dökümünü alır, gerçek bir decoder’dan geçirir ve diğer uçtan gerçekte ne çıktığını söyler.
Girdinizi @msgpack/msgpack’ın decoder’ından geçiriyoruz. Parse olursa bayt sayısını, üst düzey türü (map, array, string, int…) ve anahtar veya dizi uzunluğunu söyleriz, böylece kafanızdaki şemayla karşılaştırabilirsiniz. Başarısız olursa parser’ın hata mesajını aynen gösteririz — genellikle tam da bozulan ofsete işaret eder.
Hex ve base64 otomatik algılanır. Boşluklar, virgüller, 0x önekleri ve \xNN kaçışları tolere edilir, böylece bir Wireshark yakalamasından, sunucu kayıtlarından veya Python repr() dökümünden doğrudan yapıştırabilirsiniz. Hiçbir şey tarayıcınızdan çıkmaz — decoder yerelde çalışır.
MessagePack Doğrulayıcı nasıl kullanılır
Yapıştırın yeter. Doğrulayıcı her tuş vuruşunda çalışır (300 ms debounce ile), yani bir düğmeye basmanız gerekmiyor.
Hex veya base64 MsgPack yapıştırın
Kodlanmış payload’unuzu sol panele bırakın. Hex ile kodlanmış küçük bir sipariş nesnesini yüklemek için Örnek MsgPack’a basın — geçerli bir sonucun nasıl göründüğünü görmek istediğinizde işe yarar. Decoder MessagePack şartnamesini izler, bu yüzden uyumlu bir encoder’ın ürettiği her şey temiz şekilde gidip geri döner. Örnek hex (tek bir int 1):
01Bu, pozitif fixint 1’in wire baytıdır. Daha büyük payload’lar — maps, dizi, string — 0x80–0x9f (fixmap/fixarray) veya 0xa0–0xbf (fixstr) gibi format baytlarıyla başlar.
Doğrulama raporunu okuyun
Sağ panel otomatik olarak doldurulur. Başarıda küçük bir rapor alırsınız — algılanan giriş formatı (hex ya da RFC 4648’e göre base64), kodlanmış bayt sayısı, üst düzey tür, anahtar/dizi sayısı ve çözümlenmiş değerin JSON önizlemesi (panel okunaklı kalsın diye 2 KB’da kesilir).
Hataları araştırın
Bir parse hatasında sağ panel ✗ Invalid MessagePack ardından decoder’ın hata dizesini gösterir. Yaygın olanlar: "Insufficient bytes" (hex’iniz kesilmiş), "Unrecognized type byte" (yanlışlıkla JSON veya metin yapıştırdınız ya da girdi bozuk) ve "Extra bytes were found" (bir uzunluk öneki ya da framing baytı sızmış). Altta yatan bayt akışını kafanızda bir Uint8Array olarak düşünün — hataların çoğu kodlama bug’ı değil, framing veya uzunluk sorunlarıdır.
Bunu gerçekten ne zaman kullanırsınız
Önbellek hatasını ayıklamak
Redis anahtarınız MessagePack ile kodlanmış bir sipariş (orderId: 'ORD-7421', items, customer) tutuyor ve consumer deserialize’da hata fırlatıyor. redis-cli --no-raw GET hex’ini yapıştırın, wire formatının en azından geçerli olup olmadığına bakın ve üst düzey türün decoder’ınızın beklediğiyle eşleştiğini doğrulayın.
Wire yakalamasını doğrulama
Wireshark veya tcpdump ile ağdan bir frame yakaladınız, baytları dışa aktardınız ve framing’i elle izlemeden önce içindeki MsgPack’in iyi biçimli olup olmadığını bilmek istiyorsunuz. Yapıştırın, türe ve bayt sayısına bir göz atın, devam edin.
Bir producer’ı doğrulama
Go veya Rust’ta özel bir encoder mı yazdınız? Bilinen bir fixture’ı ({sku: 'SKU-101', qty: 2}) kodlayın, hex olarak dökün ve buraya yapıştırın. Yazdığınız map’in aynısı olarak geri okunursa encoder’ınız MessagePack formatına uyumludur.
Hata raporundan önce ön kontrol
Upstream bir kütüphaneye issue mı açıyorsunuz? Önce payload’un gerçekten geçerli MsgPack olduğunu doğrulayın — "kütüphane bug’ı" raporlarının yarısı bozuk girdidir. Burada 30 saniyelik bir yapıştırma size bir gidiş-dönüş kazandırır.
Sık sorulan sorular
Payload tarayıcımdan çıkıyor mu?
Hayır. Decode işlemi bu sayfada @msgpack/msgpack decoder’ı ile JavaScript içinde çalışır. Hiçbir şey yüklenmez, loglanmaz veya bir backend’e gönderilmez — sekmeyi kapatın, veriler gider. Aynı model masaüstü bir hex görüntüleyicideki gibi, sadece tarayıcınızda.
İkili dosya yüklemesi mi alır, yoksa sadece hex/base64 mi?
Yalnızca hex ve base64. Tarayıcılar, dosya seçici olmadan bir dosyanın baytlarını sayfaya açmaz ve çoğu kopyala-yapıştır akışı zaten hex (xxd, hexdump -C, hata ayıklayıcı ipuçlarından) veya base64 (REST API yanıtları, log satırlarından) üretir. Ham bir .msgpack dosyanız varsa önce xxd -p file.msgpack veya base64 file.msgpack çalıştırın.
Hex ile base64’ü nasıl ayırt ediyor?
Hex önce algılanır: girdi (boşluklar, virgüller, 0x önekleri ve \xNN kaçış dizileri çıkarıldıktan sonra) tamamen hex karakterlerinden oluşuyor ve uzunluğu çift ise hex olarak ele alırız. Aksi halde base64 olarak atob’a aktarırız. Rapordaki "Detected input format" satırı hangi yolun seçildiğini söyler — deadbeef gibi her iki kodlamada da geçerli olabilen belirsiz bir dize için faydalıdır.
Neden bazen "Extra bytes were found" diyor?
MessagePack akışları tam olarak tek bir üst düzey değer olmalıdır. Uzunluk önekli bir frame (örn. çerçeveleyen bir taşıma protokolü tarafından eklenmiş 4 baytlık big-endian uzunluk) veya art arda yapıştırılmış iki payload yapıştırdıysanız, decoder ilk değeri okur ve kalan kısımdan şikayet eder. Çerçevelemeyi kırpın ya da ayrı mesajlara bölün.
MessagePack uzantılarını (timestamp, özel tipler) çözebilir mi?
Varsayılan @msgpack/msgpack decoder’ı yerleşik timestamp uzantı türünü (-1) doğal olarak işler ve önizlemede JS Date olarak gösterir. Özel uzantı türleri (0–127) genel bir {type, data} biçimine çözülür — doğrulayıcı payload’u yine de geçerli olarak raporlar, ancak içeriği yorumlamak için kendi ExtensionCodec’inize ihtiyacınız olur.
Bu ile MessagePack Viewer arasındaki fark nedir?
Viewer göz atmak içindir — her anahtar ve değerin ağaç tarzı dökümünü gösterir. Bu doğrulayıcı "geçerli mi öyle bile?" sorusu içindir — hızlı evet/hayır, artı bayt sayısı ve üst düzey tür. Doğrulayıcı parse ettiğini söylüyor ve tür doğruysa, içeriği gerçekten okumak için Viewer’a geçin.
Diğer MessagePack araçları
Payload’un geçerli olduğunu doğruladıktan sonra bu araçlar gerisini halleder: