"Matko, ile tego!"

...czyli o edge case'ach

O mnie

O czym dzisiaj?

O czym dzisiaj?

Rozwiązanie

O czym dzisiaj?

Rozwiązanie

O czym dzisiaj?

Rozwiązanie

Edge case!

Karty {debe,kredy}towe

Standard (np. Visa)

American Express

Diners Club

UnionPay

16

14

14 lub 16

16 lub 19

3

4

3

3

Numer

CVV/CVC/...

A co z imieniem i nazwiskiem...?

Naming is hard

  1. People have exactly one canonical full name.
  2. People’s names fit within a certain defined amount of space.
  3. People’s names change, but only at a certain enumerated set of events.
  4. People’s names are case sensitive.
  5. People’s names are case insensitive.

Naming is hard

Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso

Pablo Diego José Francisco de Paula Juan Nepomuceno María de los Remedios Cipriano de la Santísima Trinidad Ruiz y Picasso

Czas (czasem) letni

Czas (czasem) dziurawy

1993​

1995

2011

Czas (czasem) magiczny

Nepal Standard Time +05:45

Przesadzam?

French satellite operator Eutelsat failed to account for last year’s leap year, leading to an embarrassing service outage that lasted for 48 hours.

To może low-level?

  1. Dereferencing a null pointer immediately crashes the program.
  2. Dereferencing a null pointer eventually leads to program termination.
  3. The null pointer has address 0.
  4. The null pointer has address 0 on modern platforms.

Gramy szybko...

...i wolno...

...albo wcale

Czy rozgrywka w szachach musi się skończyć?

Czym jest aleno?

Czym jest aleno?

Czym jest aleno?

Poszukajmy czegoś!

Ile wartości się spodziewamy w tym dropdownie?

Średnia 4.67.

Mediana 2.

Odchylenie 9.39.

Poszukajmy czegoś!

Maksimum

Ile!?

Może być gorzej

Może być... Dinozaur!?

Liczby... Co poza tym?

Problem: automatyczne tworzenie rezerwacji dla gości hotelowych.

  • Można wykupić tylko niektóre posiłki.
  • Można zmienić daty pobytu.
  • Można zmienić liczbę osób.
  • ...

Liczby... Co poza tym?

Liczby... Co poza tym?

scenario({
  name: 'hotel booking modified, manual status',
  hotelBooking: hotelBooking('R1 (M1) 3PAX 1-2 Confirmed'),
  existing: [
    existingReservation('X1. R1 D1 S1 10:00 4PAX CANCELED! [P1]'),
    existingReservation('X2. R1 D2 S1 10:00 4PAX PROVISIONAL! [P1]'),
  ],
  rules: [rule('P1 enabled (M1) R1 S1 10:00 All Confirmed')],
  patch: {
    cancel: [],
    create: [],
    update: [
      expectedReservation('X1. R1 D1 S1 10:00 3PAX CANCELED [P1]'),
      expectedReservation('X2. R1 D2 S1 10:00 3PAX PROVISIONAL [P1]'),
    ],
  },
});

TL;DR;

  1. Sama średnia to za mało.
  2. Dodanie mediany, odchylenia, minimum, maksimum... Też słabo.
  3. Histogram i dystrybuanta już lepiej.
  4. Wrzućcie to na wykres i tyle.
  5. Spisywanie decyzji tak, żeby dało się z nich zrobić testy to złoto.
  6. Dosłownie wam płacą za szukanie dziury w całym.

Brzmi ciekawie?

Brzmi ciekawie?

Forecasting Restaurant Occupancy

Coś jeszcze?

Coś jeszcze?

“Matko, ile tego!” czyli o edge case’ach

By Radosław Miernik

“Matko, ile tego!” czyli o edge case’ach

Wykład na ZOSIA 2025.

  • 39