Τρίτη, Ιανουαρίου 19, 2010

Ου 666! Ου undefined_value από τις ταυτότητες!

Ως φλασιά βετεράνου του Βιετνάμ, θυμήθηκα στο προηγούμενο post μου την υπόθεση με το "666" στις ταυτότητες. Δεν μου είχε κόψει να το ψάξω όταν ήταν ακόμα φρέσκο το θέμα - μικρό παιδί κι εγώ - οπότε να η ευκαιρία για να περάσει και η αποψινή βραδιά (μιζέρια τώρα τελευταία...)

[Αν υπάρχει κάποιος πιο έμπειρος σε barcode encoding, ας διορθώσει γιατί πιθανώς να έχω καταλάβει λάθος. Από αυτά που διάβασα μέχρι τώρα έχω καταλήξει στα εξής...]

Το πρόβλημα εντοπίζεται στα barcodes που ΘΑ είχαν οι ταυτότητες. Τα συγκεκριμένα barcodes χρησιμοποιούν το πρότυπο κωδικοποίησης EAN-13 (πλέον IAN). Το εν λόγω πρότυπο ορίζει 13 "bytes" πληροφορίας και 3 "bytes" για calibration (σημεία αναφοράς για τον barcode reader). Χρησιμοποιώ καταχρηστικά την λέξη "byte" γιατί είναι πιο σύντομο από τον "συνδυασμό ασπρόμαυρων γραμμών". Η διάταξη των bytes σε ένα barcode είναι:
d|dddddd|dddddd|

όπου d = data, | = calibration. Κάθε d αντιστοιχεί σε ένα ψηφίο, από 0 ως 9.

Οι πολέμιοι των barcodes δηλώνουν ότι τα calibration bytes αντιστοιχούν στα ψηφία 6, οπότε το barcode πάει κάπως έτσι...
d6dddddd6dddddd6
...δηλαδή το 666 "είναι εντέχνως κρυμμένο" στο barcode.

Λεπτομέρεια: το κάθε byte (πληροφορία ή calibration) αποτελείται από 2 μαύρες γραμμές που χωρίζονται από 2 άσπρες και οι κυριότερες λεπτομέρειες είναι το πάχος των γραμμών και αν το byte ξεκινάει με άσπρο ή μαύρο. Για να μπλεχτούν λίγο τα πράγματα, υπάρχουν τρία διαφορετικά encodings των bytes. Για να μπλεχτούν περισσότερο τα πράγματα, το πρώτο αριστερά ψηφίο ορίζει τον συνδυασμό των encodings που θα έχει το barcode. Λεπτομέρειες εδώ, ανοίξτε το link γιατί δεν κάθομαι να σχεδιάζω barcodes.

Το θέμα είναι... βάσει ποιου encoding αντιστοιχίζεις το κάθε calibration byte στην τιμή 6;

Ας ξεκινήσουμε από τα σίγουρα. Το μεσαίο calibration byte έχει μια ιδιαιτερότητα. Δεν έχει 4 γραμμές. Έχει 5. Άσπρο-Μαύρο-Άσπρο-Μαύρο-Άσπρο. Ασχέτος πάχους γραμμών,δεν υπάρχει encoding για byte 5 γραμμών, το μεσαίο calibration byte δεν αντιστοιχεί σε καμία τιμή. Αυτό που βλέπω δεν είναι 666, είναι 6undefined6. Άρα 666... ντεν έκει αυτοκίνητο καρντιά μου.

Για χάρη της συζήτησης, συνεχίζω. Το δεξί calibration byte όντως δείχνει να αντιστοιχεί στον αριθμό 6 σύμφωνα με το R-encoding (λεπτομέρειες στο προηγούμενο link).

Το αριστερό calibration byte μπορεί να ανήκει στο G-encoding, οπότε είναι όντως 6, ή αν ανήκει στο L-encoding.... δεν ορίζεται καν! Άρα ή εχουμε 6undefined6 ή undefinedundefined6...

Με το μπαρδόν, αλλά το undefined26 δεν είναι το σημάδι του Αντίχριστου. Στην χειρότερη των περιπτώσεων είναι το σημάδι από το σκυλάκι της γειτόνισας που "μάρκαρε" την γλάστρα.

Έκανα μια ερώτηση πριν μερικές σειρές: βάσει ποιου encoding αντιστοιχίζεις calibration byte σε τιμή; Η απάντηση μάλλον είναι "δεν αντιστοιχίζεις". Από αυτά που διάβασα, δεν είδα κάπου να αναφέρει το διεθνές πρότυπο ότι τα calibration bytes έχουν encoding και αντιστοιχούν σε τιμές. Επειδή μπορεί να μοιάζει με 6, δεν σημαίνει ότι είναι και 6. Ο σκοπός του calibration byte είναι να δώσει στον barcode scanner ένα ενδεικτικό πάχος γραμμής και να τον βοηθήσει να προσανατολιστεί για να ξέρει ποιά είναι η πάνω πλευρά του barcode. Αυτά. Ούτε 6άρια, ούτε encoding, ούτε τίποτα.

Τώρα, αν εσύ θέλεις να βλέπεις 666 σώνει και καλά... ε, τι να κάνουμε, δημοκρατία έχουμε... κι εγώ θα βλέπω σώνει και καλά το Flying Spaghetti Monster και τον Σουβλακέα...

Ενδιαφέρον trivia: σε σελίδα πολέμιων του barcode γίνεται η εξής κορυφαία διευκρίνηση. Το barcode με το 666, λέει, δεν πειράζει να μπει στην ταυτότητα, λέει, αλλά δεν πρέπει να μπει στο κούτελο ή στο δεξί χέρι, λέει. Τα σχόλια δικά σας.

Disclaimer: ναι, οκ, αρχαιολογία το θέμα. Τώρα βαριόμουν, τώρα το θυμήθηκα, τώρα το έψαξα.

2 σχόλια:

gpanag είπε...

Auto to ar8ro 8a to kanw sticky! Aksizei na paei kai se IT periodiko, RAM, ktlp...

dtsomp είπε...

Έχω τις επιφυλάξεις μου για δημοσίευση σε περιοδικό. Πρώτα απ' όλα, θέλω να σιγουρέψω κάποια πράγματα για τα οποία δεν είμαι 100% σίγουρος. Δεύτερον, καταλαβαίνεις ότι ένα τέτοιο άρθρο βάζει σε ευθεία αντιπαράθεση εκδότη και Εκκλησία...