Unikalne identyfikatory w kanałach Atom
Unikalny, niezmienny identyfikator jest konieczny, aby rozpoznać twój kanał i jego wpisy pośród innych. Nawet, jeśli zmienisz tytuł kanału, przeniesiesz jego plik albo użytkownik pobierze go z innego źródła, to zawsze jego czytnik będzie mogł rozpoznać, że to ten sam kanał.
Podobnie jest z wpisami — identyfikator jest potrzebny do ich aktualizacji i odrzucania duplikatów.
Jeśli kanał nie będzie miał unikalnego identyfikatora, czytniki mogą go zignorować. Jeśli różne wpisy dostaną taki sam identyfikator to ich treść zostanie zgubiona. Jeśli wpisy będą dostawały przypadkowe identyfikatory to każda aktualizacja będzie dublowała wszystkie wpisy czyniąc kanał bezużytecznym w czytnikach agregujących (np. Thunderbird, Opera).
Jak zagwarantować unikalny identyfikator?
Ważne jest, żeby nikt nigdy przypadkiem nie użył takiego samego identyfikatora, jak ty.
URL
Dlatego identyfikatory mogą być adresami internetowymi. Adres nie musi wskazywać na istniejący plik. Może być zupełnie zmyślony, oby tylko był pod twoją kontrolą, czyli np. używał domeny należącej do ciebie.
Identyfikator dla kanału może być po prostu adresem (URI) twojego kanału, ale jeśli przeniesiesz kanał pod inny adres, nie zmieniaj identyfikatora — niech nadal wskazuje w to samo miejsce, co zawsze.
<id>http://moja-domena.pl/kanaly/atom/2006/moj-pierwszy-kanal</id>
Dla wpisów możesz użyć identyfikatora kanału z dodanym np. ID z bazy danych albo datą opublikowania wpisu (również musisz uważać, żeby aktualizacja wpisu nie zmieniała jego identyfikatora).
<id>http://moja-domena.pl/kanaly/atom/2006/moj-pierwszy-kanal/wpis/314</id>
UUID
Odpowiedni identyfikator potrafi wygenerować serwer MySQL za pomocą funkcji uuid()
, np. kwerendą SELECT UUID()
.
Innym sposobem jest wygenerowanie zupełnie losowych identyfikatorów i przechowywanie ich razem z kanałem i jego wpisami. Jeśli wylosowany identyfikator będzie to odpowiednio dużą
liczbą (czyli bylejaki rand()
nie wystarczy), to w praktyce nie zdarzy się kolizja z innym.
UUID zapisuje się w formacie:
urn:uuid:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Gdzie x to cyfry szesnastkowe (0-9, a-f), np.
<id>urn:uuid:f439e29a-16a6-1029-85eb-f6d54af2e08a</id>
Tag
Mark Pilgrim proponuje rozwiązanie, które jest połączeniem obu tych metod — Tag URI.
Pytania? Komentarze? Napisz na forum kursu lub edytuj tę stronę.
Zmodyfikowano: 28.08.2007, 00:13