Bir Apostrof Nasıl 38 Kamyonu Yolda Bıraktı

Bir İngiliz tedarik zinciri şirketi, her kamyonu yüklediklerinde bir EDIFACT DESADV mesajı gönderiyor. Bu mesajlar palet, kutu ve varış yeri bilgilerini içeriyor. Alıcı market zinciri, bu mesaj olmadan hiçbir teslimatı kabul etmiyor.

Ocak ayının bir cuma günü, gönderilen 38 mesajın tamamı reddedildi. 38 kamyon uyarısız varış noktalarına ulaştı ve şoförler beklerken her biri elle kaydedildi.

Sorun basit ama sinsi: bir apostrof işareti.

EDIFACT veri standardı ayırıcılardan oluşur. Varsayılan olarak bir segment apostrof (') ile biter, veri öğeleri artı işareti (+) ve bileşenler iki nokta üst üste (:) ile ayrılır. Soru işareti (?) kaçış karakteridir, eğer bu karakterlerden herhangi birinin önüne yazılırsa, sonraki karakter tam anlamıyla alınır. O'Neill adı, O?'Neill olarak gönderilmesi gerekir.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

O hafta, market zinciri St John's Retail Park'ta yeni bir mağaza açmıştı. Adres, NAD segmentine (teslimat tarafı) tam olarak yazıldığı gibi girdi. Mesaj oluşturan sistem, segmentleri dizgeleri birleştirerek oluşturuyordu. Hiç kimse kaçış karakteri eklemeyi hatırlamamıştı.

Nesne, "St John's Retail Park" adresindeki apostrof, EDIFACT ayrıştırıcısı tarafından segment sonu olarak yorumlandı. Mesaj ortasında kesilit. Alıcının sistemleri bozuk veri gördü ve hepsini reddetti.

Bu, yazılımda "kenar durumlar" (edge cases) neden önemli olduğunun mükemmel bir örneği. Adresler, isimler, açıklamalar, kullanıcı verileri her zaman beklenmedik karakterler taşıyabilir. Standart bir format kullanırken, özel karakterleri düzgün kaçıştırmak sadece iyilik değil, zorunluluktur. Eğer verini bir protokolün ayırıcılarına karşı korumuyorsan, gerçek dünyada başına gelecekler seni bekliyor.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz