Schemat generowania waypointów OP

Wszystko co może pomóc w rozwoju serwisu opencaching.pl, sugestie, pomysły, także zauważone błędy

Moderator: Moderatorzy

starypatyk
Wyjadacz
Posty: 244
Rejestracja: środa 20 lutego 2008, 14:10
Podziękował;: 9 razy
Otrzymał podziękowań: 59 razy

Schemat generowania waypointów OP

Post autor: starypatyk »

Cześć!

Wykorzystaliśmy już prawie połowę waypointów OPxxxx dostępnych przy obecnym schemacie generowania - tj. gdy xxxx jest liczbą szesnastkową - czyli gdy dostępne znaki to: 0123456789ABCDEF.

Tak wygląda historia przydzielania waypointów:
OP0001 - 2006.05.25
OP1000 - 2008.07.08
OP2000 - 2009.09.26
OP3000 - 2010.12.18
OP4000 - 2011.09.13
OP5000 - 2012.05.16
OP6000 - 2013.01.19
OP7000 - 2013.08.25
OP7C89 - 2014.02.16

Obecny schemat prawdopodobnie wyczerpałby się w ciągu ok. 3 lat.

Chcemy zmienić ten schemat już teraz, żeby zapewnić dużo dłuższy czas do jego wyczerpania. Staraliśmy się, żeby schemat po modyfikacji miał następujące cechy:
  • waypoint pozostał 6-znakowy i rozpoczynał się od OP,
  • wszystkie już wygenerowane waypointy pozostały niezmienione,
  • "numery" waypointów były nadawane "kolejno", tzn. w taki sposób, który pozwoli dość łatwo ocenić, czy kod jest "świeży", czy już ma swoje lata,
  • waypoint nie powinien zawierać znaków łatwych do przekłamania - również przy odręcznym zapisywaniu,
  • tak jak dotychczas waypoint zawierał tylko cyfry i duże litery alfabetu łacińskiego.
Po dyskusji w RT/RR, proponujemy następujący schemat - począwszy od waypointa OP8000 zestaw dostępnych znaków będzie następujący:
0123456789ABCDEFGHJKLMNPQRSTUWXYZ

Nie korzystamy z liter O, I oraz V - ze względu na ich podobieństwo odpowiednio do cyfr 0 i 1 oraz litery U (szczególnie podczas ręcznego przepisywania).

Sekwencja waypointów byłaby więc następująca:

OP7FFE
OP7FFF
OP8000
OP8001
...
OP8009
OP800A
OP800B
OP800C
OP800D
OP800E
OP800F
OP800G
OP800H
OP800J
...
OP800Y
OP800Z
OP8010
OP8011
...
OP80ZZ
OP8100
OP8101
...
OPZZZZ

Takie podejście daje nam ok. 900 tys. dostępnych waypointów, zamiast ok. 30 tys. dostępnych przy obecnym schemacie.

Jeżeli nie będzie bardzo poważnych zastrzeżeń do nowego systemu, to planujemy wdrożyć go niebawem, żeby zdążyć przed wykorzystaniem waypointa OP8000 (zostało już tylko niecałe 800 waypointów).

Pozdrawiam,
Darek Olszewski (starypatyk)
Obrazek
Teokryt
Wyjadacz
Posty: 463
Rejestracja: poniedziałek 06 sierpnia 2012, 12:19
Podziękował;: 23 razy
Otrzymał podziękowań: 43 razy

Re: Schemat generowania waypointów OP

Post autor: Teokryt »

Idea ogólnie ok jednak.. zmniejszył bym zakes literowy znaków, choć B i 8 sie już nie da wykluczyć to np: M i N, Q dlatego że O jest odrzucone.
Czy duzym problemem bylo by wdrożenie systemu później np po OP9FFF i zacząć od OPA000? bardziej by się wyróżniało a wątpię czy w ogolę dojdziemy do 900k waypointów w jakiejkolwiek znanej nam przyszłości - 4096 keszy schodzi w około 7 miesięcy (obecnie), czyli tak jak pisałeś koło 3-4 lat. dostarczenie 900k keszy wystarczy nam na... 128 lat wiec z problemem braku waypointow spotkać sie może wnuczek najmłodszego obecnie keszera ;)
Awatar użytkownika
filips
Forumator
Posty: 2199
Rejestracja: środa 20 lutego 2008, 14:10
Podziękował;: 38 razy
Otrzymał podziękowań: 97 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: filips »

cześć,
jakiś czas temu zadałem to pytanie: http://forum.opencaching.pl/viewtopic.php?f=14&t=7443 i wtedy dostałem jednoznaczną odpowiedź, że trzymamy się hexa i dokładamy jeszcze jedno pole. Tak samo robią oc.de. Pytanie, czy jak my zrobimy inaczej, to czy nasze bazy się nie rozsynchronizują? (ew nie będzie można ich zsynchronizować w przyszłości)?

Wiem, że temat nie jest łatwy, ale wydaje mi się, że logiczniej i jednak łatwiej do zaaplikowania w różnych miejscach było by trzymanie się hexa i dodanie jednej cyfry. W geokretach też mamy ten "problem" i właśnie tak zrobimy.

Tak czy owak należy się cieszyć, że popularność serwisów przerosła założenia pierwszych programistów i że pula waypointów jednak się niedługo wyczerpie :)
Awatar użytkownika
Rob
Forumator
Posty: 888
Rejestracja: wtorek 15 czerwca 2010, 11:26
Podziękował;: 64 razy
Otrzymał podziękowań: 62 razy

Post autor: Rob »

Myślę, że pierwotny pomysł jest lepszy. Rozszerzenie ilości znaków do 5 może powodować konieczność modyfikacji aplikacji "trzecich". Co do kompatybilności z innymi serwisami to nie oszukujmy się, funkcjonalność naszego serwisu jest już daleko do przodu. Ja bym wykorzystał wszystkie znaki, no może oprócz O.
ObrazekObrazek
Awatar użytkownika
Boguś z Polska
Rada Techniczna
Posty: 138
Rejestracja: środa 20 listopada 2013, 22:54
Podziękował;: 17 razy
Otrzymał podziękowań: 22 razy

Re: Schemat generowania waypointów OP

Post autor: Boguś z Polska »

Wydłużenie o kolejny znak może spowodować więcej problemów, niż użycie większej liczby znaków. U nas w bazie pola do wpisania waypointa w innych systemach mają 6 albo 7 znaków - czyli dokładnie tyle, jakiej długości te kody są. Jeżeli więc w innych systemach też to tak zakodowano, to wydłużenie kodu waypointa z większym prawdopodobieństwem rozwali integrację, niż jego rozszerzenie o kolejne znaki.
Post powyżej służy do samodzielnego złożenia. Wstaw wybrane przez siebie emotikony w odpowiednie miejsca.
https://bogus-z-polska.pl/
Teokryt
Wyjadacz
Posty: 463
Rejestracja: poniedziałek 06 sierpnia 2012, 12:19
Podziękował;: 23 razy
Otrzymał podziękowań: 43 razy

Re: Schemat generowania waypointów OP

Post autor: Teokryt »

O jakiej integracji mowa? chcac szuka cniemieckich albo czeskich keszy trzeba sie u nich rejestrować. Wiec echm, nie ma integracji. Wspólna jest... nazwa.
Awatar użytkownika
ronja
Forumator
Posty: 1956
Rejestracja: środa 24 września 2008, 19:51
Podziękował;: 163 razy
Otrzymał podziękowań: 259 razy

Re: Schemat generowania waypointów OP

Post autor: ronja »

Nijak się nie znam fachowo na opisanym wyżej problemie kodów (poza wiedzą potoczną), ale jestem pełen uznania dla ludzi, którzy mają świadomość istnienia tych zawiłości technicznych i chce im się nad nimi pracować - dla nas wszystkich.
Obrazek Obrazek
Awatar użytkownika
Banan
Nowy na forum
Posty: 5
Rejestracja: niedziela 17 marca 2013, 19:37
Podziękował;: 0
Otrzymał podziękowań: 1 raz
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: Banan »

Zgadzam się z Robem, proponowany schemat jest lepszym wyborem niż rozszerzanie schematu heksadecymalnego o kolejne pole, bo może to spowodować problemy w działaniu niektórych aplikacji i trzeba będzie czekać na reakcję programistów. Może się okazać, że jakaś aplikacja nie jest już rozwijana i przez takie zagranie możne stać się bezużyteczna.
Awatar użytkownika
filips
Forumator
Posty: 2199
Rejestracja: środa 20 lutego 2008, 14:10
Podziękował;: 38 razy
Otrzymał podziękowań: 97 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: filips »

Jako programista "jakiejś aplikacji" twierdzę, że oba rozwiązania mogą powodować problemy - zarówno rozszerzenie o kolejne pole (jak pisze przedpiśca), jak i proponowane rozwiązanie (aplikacja może sprawdzać poprawność wpisanego waypointa czy generować link na jego podstawie przeliczając go z hexa na deca).

Filip
Teokryt
Wyjadacz
Posty: 463
Rejestracja: poniedziałek 06 sierpnia 2012, 12:19
Podziękował;: 23 razy
Otrzymał podziękowań: 43 razy

Re: Schemat generowania waypointów OP

Post autor: Teokryt »

Zawsze link możesz pozostawic w takim formacie:
opencaching.pl/OPxxxx
Awatar użytkownika
filips
Forumator
Posty: 2199
Rejestracja: środa 20 lutego 2008, 14:10
Podziękował;: 38 razy
Otrzymał podziękowań: 97 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: filips »

oczywiście. Mój post był (kontr)przykładem dla słów kolegi banana:
Może się okazać, że jakaś aplikacja nie jest już rozwijana i przez takie zagranie możne stać się bezużyteczna.
ergo obie opcje mogą powodować niekompatybilności.
Awatar użytkownika
futrzak
Bywalec
Posty: 74
Rejestracja: wtorek 06 stycznia 2009, 14:47
Podziękował;: 4 razy
Otrzymał podziękowań: 10 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: futrzak »

Zgadzam się, że praktycznie każda zmiana w formacie może powodować konieczność reakcji programistów. Szkoda tylko, że nie ma jednomyślności pomiędzy różnymi 'krajowymi' implementacjami opencaching. Szkoda głównie ze względu na OKAPI, które przynajmniej z założenia jest kodem wspólnym dla wszystkich instalacji OC, a taka niejednomyślność w tę ideę może godzić. To z kolei może prowadzić do komplikacji w projektach, które łączą informacje z różnych instalacji OC. Tak czy inaczej, wyjście jakieś trzeba znaleźć i wcale nie twierdzę, że 'niemieckie' jest lepsze :wink:
ObrazekObrazekObrazek
Awatar użytkownika
wrygiel
Wyjadacz
Posty: 299
Rejestracja: czwartek 18 sierpnia 2011, 08:54
Podziękował;: 11 razy
Otrzymał podziękowań: 60 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: wrygiel »

Info dla futrzaka i filipsa (bo chyba nie znacie bazy OC i możecie o tym nie wiedzieć). No i dla innych programistów tu zaglądających również ;)

W bazie danych OC są całkowicie oddzielne pola na kod i na wewnętrzne ID. Te kody są rozjechane od dłuższego już czasu, tzn. dec2hex(cache_code) wcale nie jest zawsze równy ID (internal_id). I nasz OC poprawnie z takim rozjechaniem działa, tzn. kod nie zakłada korelacji z dec2hex. W serwisach typu GC i OX (opencaching.com) w ogóle zaś nie ma takiej korelacji. Obydwa te serwisy mają też dłuższe kody niż 6 znaków, więc wszystkie liczące się zewnętrzne aplikacje są raczej przygotowane na takie rzeczy. Problem może dotknąć jedynie niektórych aplikacji zintegrowanych jedynie z OCPL, i to tylko takich, które i tak są od lat zintegrowane nie do końca poprawnie (ze względu na wspomniane wyjątki w korelacji dec2hex).

Zrzuty struktur baz danych OCPL i OCDE można zobaczyć "na żywo" tutaj (tabela caches, pole wp_oc):
http://www.opencaching.de/okapi/devel/dbstruct
http://opencaching.pl/okapi/devel/dbstruct

Co do interakcji pomiędzy samymi serwisami OC. Między innymi dlatego w OKAPI jako klucza głównego użyłem kodu (cache_code), a wszystkich zewnętrznych deweloperów "odstręczam" od używania internal_id, poprzez zarówno dokumentację (np. "do not use this, unless you know what you're doing; use the "code" as an identifier"), jak i implementację (w niektórych metodach celowo ukrywam lub utrudniam dostęp poprzez internal_id). Użycie kodu gwarantuje, że skrzynka jest unikalna w kontekście światowym. Użycie internal_id gwarantuje unikalność tylko w danym, jednym serwisie.

Podsumowując, raczej nie ma co się obawiać o kompatybilność, obojętnie którą opcję byśmy wybrali.
Obrazek Obrazek
Proszę nie piszcie "prywatnych wiadomości" przez forum. Kontakt na email - rygielski@gmail.com.
Awatar użytkownika
futrzak
Bywalec
Posty: 74
Rejestracja: wtorek 06 stycznia 2009, 14:47
Podziękował;: 4 razy
Otrzymał podziękowań: 10 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: futrzak »

Pole `wp_oc` jest typu varchar(6), więc przy przejściu na nowy schemat mamy konieczność ingerencji w strukturę tabeli. To samo może się wydarzyć w aplikacjach 'zależnych'. Musimy być czujni :)

EDIT: Powyższe przy założeniu, że zmieniamy długość waypointa, ale skoro nie zmieniamy, to problemu być nie powinno. Nigdy nie przyglądałem się schematowi generowania kodu waypointa szesnastkowego i szczerze mówiąc nawet nie przyszło mi do głowy, aby zakładać, że powstaje on na podstawie wewnętrznego id za pomocą konwersji dec2hex wprost.
ObrazekObrazekObrazek
Awatar użytkownika
wrygiel
Wyjadacz
Posty: 299
Rejestracja: czwartek 18 sierpnia 2011, 08:54
Podziękował;: 11 razy
Otrzymał podziękowań: 60 razy
Kontakt:

Re: Schemat generowania waypointów OP

Post autor: wrygiel »

varchar(6) jest tylko w branchu OCPL, w OCDE np. już nie. Ale ogólnie racja, to też był jeden z argumentów za tym, żeby pozostać przy 6 znakach. ;)
Obrazek Obrazek
Proszę nie piszcie "prywatnych wiadomości" przez forum. Kontakt na email - rygielski@gmail.com.
ODPOWIEDZ