środa, maja 19

Kreatywność użytkownika ??, nie istnieje / a może jest za duża

Witam;

Ostatnim czasem zakrzątam sobie głowę SCJP, Grails i CleanCode, ale dzisiaj postanowiłem przerwać moje działania i napisać małego posta.

Czy można tak zbudować ekran by nie można było wpisać niepoprawnych informacji?. Nie, na tym mógł bym zakończyć posta, ale ….

Programiści starają się zbudować ekran, a na nim tak doskonałe walidatory by nie pozwalały na wprowadzenie błędnych danych, ale ….(to już 2 ale)

Niech nasza formatka posiada dwa pola: 'imię', 'nazwisko'.

1. Nasze pola są mandatory.
Po pewnym czasie zobaczymy na bazie pola wypełnione 'spacją'. Użytkownik był sprytny, że wprowadzał spacje, nasz błąd. Naprawa banalna, dodajemy trim() wołamy isEmpty() i mamy walidatora poprawionego.

2. Nasze pola są mandatory, odporne na psute stringi.
Aż tu pewnego dnia zobaczymy na bazie pola 'imię' = '????', 'nazwisko' = ????. Naprawimy to poprzez sprytnego regexp'a. Teraz nasze pole powinno się zaczynać od literki, następnie może zawierać tylko takie znaki jakie my zdefiniowaliśmy. Success.

3. Nasze pola są mandatory, odporne na puste stringi, można wpisać tylko to, co chcemy. Jednym słowem nie do złamania.
Pewnego dnia przychodzi zgłoszenie od klienta, raport użytkowników nie zawiera poprawnych danych. Oczywiście nasze pola są mega bezpieczne i jak może raport źle działać przecież sam go pisałem:P, więc do zgłoszenie zabieramy się z dużą rezerwą i niedowierzaniem. Testowa generacja raportu pozwala stwierdzić, że pojawił się string 'Brak danych'. Konsternacja. Sam pisałem raport wiem, że wstawiałem żadnych domyślnych wartości, więc co pozostaje, przepytanie kolegów czy nie wprowadzali jakiejś nowej modyfikacji. Nikt się nie przyznaje. Szukamy dalej, aż tu nagle naszym oczom ukazuje się user'a który to 'imię' = 'Brak', nazwisko = 'Danych'.
A teraz jak poprawić walidację.


A w międzyczasie nasz kreatywny user świętuje zwycięstwo.



Z inwencją twórczą user'ów się nie wygramy. Mam, nadzieję, że użytkownicy naszych systemów są na tyle inteligentni i wiedzą, że wpisanie 'Brak Danych' == null.


to tak z życia programisty ;p


Pozdrawiam,
Arkadiusz Borek

wtorek, maja 4

The Differences Between Good Designers and Great Designers

Witam;

Zajęty pracą, oraz sprawami dnia codziennego nie mam czasu na nic twórczego(poza pracą ;p), ale dzisiaj w południe było mi dane przeczytać bardzo dobry wpis na stronie www.drawar.com. Wpis był interpretacją prezentacji 9 skills that separate good designers zrobioną przez Cameron Moll.

Prezentacja nie miała za wiele wspólnego z java, ale bez większych problemów można ją przenieść na nasze podwórko.

Pozdrawiam,
Arkadiusz Borek

ps. Ze strony prezentacje pobierzcie ją w wersji pdf, mnie design tej prezentacji bardzo zaciekawił.