MessagePack Temizleyici
Dağınık MessagePack hex veya base64 dizelerini temizler. 0x öneklerini söker, \xNN kaçışlarını açar, Python b'...' literallerini çözer ve yapıştırma artıklarını kırpar.
MessagePack Temizleyici aslında ne yapar
Bir saniye kendine karşı dürüst ol: MessagePack ikili bir formattır. Bir Cloudflare Worker logundan kopyala-yapıştır yaparken birkaç bayt kesildiyse, hiçbir araç onları sihirli şekilde geri getiremez — o baytlar gitti, ve github.com/msgpack/msgpack adresindeki spesifikasyon yeterince uzunluk-önekli, dolayısıyla eksik bir kuyruk ne yaparsan yap çözmede başarısız olur. Bu yüzden bu sayfa bozuk ikili veriyi onarıyormuş gibi DAVRANMAZ.
Asıl yaptığı şey daha sıkıcı ama yararlı: hex ve base64 (RFC 4648) dökümlerinin terminalinden, hata ayıklayıcından, iOS konsolundan ve panondan geçerken biriktirdiği biçimlendirme gürültüsünü temizler. Somut olarak: çevredeki boşlukları kırpar, sarmalayan tırnakları soyar, Python b'...' byte literallerini çözer, \xNN kaçış dizilerini ham hex basamaklarına açar, 0x öneklerini söker ve yükün içindeki virgülleri ve boşlukları atar. Temiz sonuç, gerçek bir msgpack kod çözücüsünün — resmi @msgpack/msgpack kütüphanesi veya uyumlu herhangi bir uygulama — hiç şikayet etmeden kabul edeceği şeydir.
Somut örnek: solda b'\x83\xa7orderId\xa8ORD-7421...' yapıştır, Temizle’ye bas, sağda doğrudan MessagePack Görüntüleyicimize atabileceğin veya hızlı bir Node REPL’inde Uint8Array’e aktarabileceğin ham hex dizesini al. Süslü bir şey yok. Sadece gürültüyü temizliyoruz.
Yapıştırılmış bir MessagePack dizesi nasıl temizlenir
Üç adım. Bir log satırından bir şey kopyaladığın ve onun bir kod çözücüye verebileceğin hex olmasını istediğin an için yapıldı.
Dağınık dizeyi sol panele yapıştır
Elinde ne varsa sol editöre at — bir Python repr(), iOS cihaz konsol satırı, curl --data-binary @file | xxd çıktısı, Cloudflare Worker log girdisi, herhangi bir şey. Temizleyicinin girdiyi güzel görmeye ihtiyacı yok. Önekler ve kaçışların karıştığı kasten çirkin bir örnek için Dağınık hex örneği tuşuna bas. Yapıştırabileceğin şeyin örneği:
b'\x83\xa7orderId\xa8ORD-7421\xa5items\x92\x82\xa3sku\xa7SKU-101\xa3qty\x02\x82\xa3sku\xa7SKU-244\xa3qty\x01\xa8customer\xa8Ava Chen'Şu, msgpack-python tarafından yazdırılan gerçek bir Python byte literali. Temizleyici b'...' sarmalayıcısını tanır, soyar ve her \xNN dizisini ham hex’e çevirir.
Temizle’ye tıkla
Yeşil Temizle!! düğmesine bas. Temizlemenin tıklamayla tetiklenmesi bilerek — çıkanı kabul etmeden önce neyin girdiğini görmen lazım. Sağ panel temiz hex’i (veya otomatik algılanan base64’ü) gösterir, editörlerin altındaki not paneli uyguladığımız her dönüşümü listeler ki hiçbir şey sessizce olmasın.
Sonucu gerçek bir kod çözücüye ver
Sağ panelden temiz dizeyi al ve MessagePack Görüntüleyicimize ya da MessagePack’tan JSON’a aracımıza at. Baytlar gerçekten sağlamsa ve sadece biçimlendirme sorunsa, çözülmüş JSON’ını göreceksin — SKU-101 satır kalemleri, müşteri Ava Chen, hepsi. Kod çözücü hâlâ şikayet ediyorsa, sorun gerçek bozulma veya kesilme, ve tek çözüm baytları kaynaktan tekrar almaktır.
Bunu gerçekten ne zaman kullanacaksın
Cloudflare Worker logundan baytları çıkar
Worker’lar ikili yükleri 0x83 0xa7 6f 72 64 65 72... şeklinde, baytlar arasında boşlukla ve her birinin başında 0x ile loglamayı sever. Satırı kopyala, buraya yapıştır, ve temizleyici tek tıkla önekleri ve boşlukları söker — sana gerçek bir kod çözücünün yiyeceği 83a76f7264657249... dizesini bırakır.
Hata ayıklayıcıdan gelen Python repr’ini çöz
pdb’de bir kesme noktasına vurdun, p msgpack.packb(order) çalıştırdın ve b'\x83\xa7orderId\xa8ORD-7421' aldın. Bu bir Python byte literali — b öneki ve tırnaklar verinin parçası değil. Temizleyici onları soyar ve her \xNN dizisini gerçek hex çiftine açar, böylece sonucu elle yeniden yazmadan görüntüleyiciye yapıştırabilirsin.
curl --data-binary | xxd dökümünü temizle
Sunucunun ne aldığını incelemek için curl --data-binary @msg.bin https://api.example.com | xxd çalıştırdın. xxd çıktısının solunda satır numaraları, sağında ASCII, ortasında boşluklarla hex baytları var. Adres sütununu ve ASCII sütununu kendin kırp, ortayı temizleyiciye yapıştır, ve baytlar arası boşlukları kaldırır, böylece hex tekrar tek bir sağlam dize olur.
iOS cihaz konsolundan yapıştır
iOS konsol çıktısı bazen ikili yükü tek tırnaklarla sarmalar ve yumuşak satır sonları ekler. Temizleyici sarmalayan tırnakları ve boşlukları tek geçişte halleder, bu da bir şeyi çözmeden önce metin editöründe bul-değiştir oyunu oynamandan kurtarır.
Sık sorulan sorular
Bu araç bozuk MessagePack ikili verisini onarabilir mi?
Hayır, ve bunu yapabildiğini iddia eden herhangi bir araçtan şüphelenmelisin. MessagePack uzunluk-önekli bir ikili formattır — bir uzunluk alanının ortasında bir bayt eksik veya yanlışsa, kod çözücü orada ne olması gerektiğini tahmin edemez. Bu sayfa yalnızca yapıştırma artıklarını ve biçimlendirme gürültüsünü düzeltir. Baytların gerçekten bozuksa, çözüm onları kaynaktan tekrar almaktır: isteği yeniden çalıştır, log saklama deposundan yeniden oku, veritabanından yeniden dışa aktar. Eksik baytlar için yazılım yedeği yoktur.
Burada “temizlemek” tam olarak ne anlama geliyor?
Altı somut normalleştirme: çevredeki boşlukları kırpar; sarmalayan tek veya çift tırnakları soyar; Python b'...' / b"..." byte literallerini çözer; \xNN kaçış dizilerini ham hex basamaklarına açar; her baytın 0x önekini söker; baytlar arası boşlukları ve virgülleri kaldırır. Tüm bunlardan sonra, sonuç yapısal olarak sağlam olduğunu doğrulamak için bir kez hex veya base64 olarak ayrıştırılır. Editörlerin altındaki not paneli, girdine gerçekten uygulanan her dönüşümü listeler.
Yazarken otomatik temizleme yerine neden bir Temizle düğmesi var?
Bilerek. Diğer araçlarımızın çoğu girdi değişiminde otomatik güncellenir çünkü girdi okunabilirdir ve anında geri bildirim istersin. Bu tam tersi — girdi bir yığın kaçış dizisi ve hedefin çıktıya güvenmeden önce neyin dönüştürüldüğünü doğrulamak. Tıkla-tetikli olmak demek ki yapıştırabilir, girdiye bakabilir, tıklayabilir ve sonra not panelini okuyup bizim beklediğin şeyi yaptığımızı doğrulayabilirsin.
Verim tarayıcıdan ayrılıyor mu?
Hayır. Bütün temizleme bu sekmede yerel olarak çalışır. Fetch yok, yükleme yok, girdi üzerinde telemetri yok. Sekmeyi kapat ve veri gider. Yine de URL çubuğuna kamusal bir alan gibi davran — sırlı yükleri sorgu dizesine yapıştırma ve işin bittiğinde panonda hassas bir şey taşındıysa onu temizle.
Girdim hex yerine base64 ise ne olacak?
Otomatik algılanır. Girdi (boşluklar, virgüller, 0x ve \xNN kaçışları temizlendikten sonra) tamamen hex karakterlerinden oluşuyor ve çift uzunluktaysa, hex olarak işleriz. Aksi takdirde standart base64 deneriz. Her iki durumda da temiz çıktı algılanan formatı korur — temiz hex hex kalır, temiz base64 base64 kalır. Sonucu bir sonraki adımda MessagePack Görüntüleyicisine at, o da aynı şekilde otomatik algılar.
Çıktı bazen neden girdiyle birebir aynı görünüyor?
Çünkü girdin zaten temizdi — yapacak bir şey yok. O durumda not paneli “Girdi zaten temizdi.” gösterir. Bu normal ve iyidir. Temizleyici meşgul görünmek için dönüşümler uydurmaz.
Diğer MessagePack araçları
Biçimlendirmeyi temizlemek ilk adım. Dize temizlendikten sonra, bunlar baytları çözer ve gidiş-dönüş yapar: