Bardzo dużo systemów IT zapisuje dane osobowe ludzi, w tym ich imiona i nazwiska. Zazwyczaj dodaje się jakieś walidacje, bo jak inaczej. Tyle że to jest bardzo ryzykowne

Tutaj lista założeń, które wielu myśli że są prawdziwe, a wcale nie są. Sam wiele razy się naciąłem Zainspirowane postem @ZohanTSW

  1. People have exactly one canonical full name.
  2. People have exactly one full name which they go by.
  3. People have, at this point in time, exactly one canonical full name.
  4. People have, at this point in time, one full name which they go by.
  5. People have exactly N names, for any value of N.
  6. People’s names fit within a certain defined amount of space.
  7. People’s names do not change.
  8. People’s names change, but only at a certain enumerated set of events.
  9. People’s names are written in ASCII.
  10. People’s names are written in any single character set.
  11. People’s names are all mapped in Unicode code points.
  12. People’s names are case sensitive.
  13. People’s names are case insensitive.
  14. People’s names sometimes have prefixes or suffixes, but you can safely ignore those.
  15. People’s names do not contain numbers.
  16. People’s names are not written in ALL CAPS.
  17. People’s names are not written in all lower case letters.
  18. People’s names have an order to them. Picking any ordering scheme will automatically result in consistent ordering among all systems, as long as both use the same ordering scheme for the same name.
  19. People’s first names and last names are, by necessity, different.
  20. People have last names, family names, or anything else which is shared by folks recognized as their relatives.
  21. People’s names are globally unique.
  22. People’s names are almost globally unique.
  23. Alright alright but surely people’s names are diverse enough such that no million people share the same name.
  24. My system will never have to deal with names from China.
  25. Or Japan.
  26. Or Korea.
  27. Or Ireland, the United Kingdom, the United States, Spain, Mexico, Brazil, Peru, Russia, Sweden, Botswana, South Africa, Trinidad, Haiti, France, or the Klingon Empire, all of which have “weird” naming schemes in common use.
  28. That Klingon Empire thing was a joke, right?
  29. Confound your cultural relativism! People in my society, at least, agree on one commonly accepted standard for names.
  30. There exists an algorithm which transforms names and can be reversed losslessly. (Yes, yes, you can do it if your algorithm returns the input. You get a gold star.)
  31. I can safely assume that this dictionary of bad words contains no people’s names in it.
  32. People’s names are assigned at birth.
  33. OK, maybe not at birth, but at least pretty close to birth.
  34. Alright, alright, within a year or so of birth.
  35. Five years?
  36. You’re kidding me, right?
  37. Two different systems containing data about the same person will use the same name for that person.
  38. Two different data entry operators, given a person’s name, will by necessity enter bitwise equivalent strings on any single system, if the system is well-designed.
  39. People whose names break my system are weird outliers. They should have had solid, acceptable names, like 田中太郎.
  40. People have names.

Żródło: https://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/

Tłumaczyć nie będę, jak pracujesz w IT musisz rozumieć albo umieć to gdzieś wkleić :P
#programowanie #ciekawostki
19

Komentarze (19)

@maximilianan myślisz że ludzie mają proste imiona dopóki nie przyjdzie ci Hiszpan albo Indonezyjczyk nie zapisze go w oryginalnej pisowni (a ty ujrzysz prostokąciki)

@ZohanTSW ach w sensie że kodowanie znaków, ok ok

@ZohanTSW albo przyjdą Chińczycy z takimi samymi imionami lub nazwiskami, albo z własnoręcznie wymyśloną angielską wersją tego imienia i będą próbować gdzieś dokleić

@maximilianan

Mamy 191 krajów, kilkanaście razy tyle kultur, kilkadziesiąt alfabetów. Jeśli spróbujesz niepozwalać na zapisanie jakiegoś imienia jako "niepoprawne" wg jakiegoś kryterium to na pewno miliony ludzi na świecie nie będą mogli poprawnie wpisać swojego oficjalnego imienia.


Kodowanie znaków to tylko mała część problemu.


W Polsce częstym przykładem takiego błędu jest wymóg, by miało przynajmniej 3 znaki.

89a13560-fa71-41ac-b396-2e8b736b9403

@Ragnarokk a z kolei jak nie zrobisz żadnej weryfikacji, to może hiszpański Chińczyk się wpisze, ale dostaniesz też Pana Tadeusza xD

@Ragnarokk właśnie w swoją szukajkę wklepałem Oo no i oczywiście znalazło mi wszystkie imiona które zawierają Oo i to wygląda jakby jakieś boty rejestrowały numery PESEL w Polsce xd


Trzech mężczyzn ma na pierwsze imię Oo, żaden na drugie, za to 0 kobiet ma tak na pierwsze i 3 na drugie imię xd

@Ragnarokk mam osoby w systemie, które mają jedną literę nazwiska a nawet taką, która ma kropkę, samą kropkę. XD

@ZohanTSW

Nie mówię o weryfikacji merytorycznej nawet, jak zweryfikujesz Adolfa Hitlera - ktoś może się tak nazywać. Bardziej chodzi o to, że często system nie pozwala na imie typu "X Æ A-12" jak ten geniusz musk nazwał

Widzę że masz trochę doświadczenia z bazami danych, zapewne więcej niż ja (bo mam około 0), więc zapytam - zauważyłem, że w tej csv ze strony rządowej nie ma takiej sytuacji, że jest tylko jedna osoba w kraju z takim imieniem. Najmniej jest 2. Czyżby był jakiś offset ustawiony? To jakaś popularna praktyka, czy zwyczajny błąd?


w tym csv po prostu nie istnieje wpis w którym właścicielem imienia jest jedna osoba

@ZohanTSW

Nie znam powodów by tak miało być - a nawet jeśli to zrobienie -1 przed wyświetleniem na frontendzie to nie jest kosmiczna technologia

@Ragnarokk no brak jednostkowego przykładu jest nieprawdopodobny, a jakiś dziwny offset totalnie bezsensowny xd

@Ragnarokk poznałem kiedyś typa zza granicy, powiedzmy Ahmeda, który nie miał nazwiska. Ale korporacja kazała robić maile nazwisko.imie@domena.com, więc Ahmed dostał maila z pytaniem o nazwisko „I need your full name and surname due to company policy”, na co zgodnie z prawda odpisał „just Ahmed”.


dostal maila just.ahmed@domena.com

@wombatDaiquiri widać, że profesjonalista w IT.

@wombatDaiquiri @Legendary_Weaponsmith

Prawda jest taka, że to dokładnie jest sposób, w jaki nazwiska powstawały. Kiedyś ludzie mieli imiona i póki jeden był w wiosce nie było to problemu. A potem jak było dwóch to jakiś losowy przydomek dostawał - najczęściej normalny jak Kowal, Bednarz czy Rzeżnik. Ale czasem coś bardziej oryginalnego

@Ragnarokk jeśli na moim systemie komuś uda się przejść przez formularze, to i tak nie oznacza, że uda się go przepchnąć dalej.

Obsługa ręczna wyjątków i tyle.

Zaloguj się aby komentować