Po przerwie powrót do tematu poruszanego w poprzednich wpisach. Jednym z warunków zadania była wymagana unikalność identyfikatora na przestrzeni 10 lat. Dodatkowo wiedzieliśmy, że w ciągu sekundy będzie (w przybliżeniu) generowany jeden identyfikator. Oznacza to, że w ciągu 10 lat będzie ponad 315360000. Dla uproszczenia załóżmy, że będzie ich około 316224000 (to wtedy, gdyby każdy rok liczył 366 dni).
Ciąg dalszy "Powrót identyfikatora" »Tuesday, February 19. 2013
Tuesday, February 12. 2013
Security B-sides Kraków 2013
Uwaga, uwaga. Security B-sides Kraków. Oczywiście Kraków, 2 i 3 marca, a więc już wkrótce.
Według obecnej wersji agendy, na dzień dobry - ja :)
Zapraszam wszystkich zainteresowanych. Edycję warszawską wspominam bardzo pozytywnie, mimo dość spartańskich warunków :)
EDIT:
Wygląda na to, że jednak się pospieszyłem z zapowiedzią:
Z przyczyn technicznych jestesmy zmuszeni przesunac termin konferencji. Rozpoczynamy prace nad nowym terminem.
Patrz: Nowy termin – do ustalenia
Ulf Nitj’sefni
Mózg to fascynujące ustrojstwo. Czasami zastanawiam się, czy to ja posiadam mózg, czy mój mózg posiada mnie. Na przykład lubi wybrać sobie temat, nad którym postanowi sobie pracować, kompletnie ignorując przy tym fakt, że pora bardziej odpowiednia do snu, niż do myślenia. Mogę albo usiłować spać (czyli wiercić się przez najbliższą godzinę), albo temat pokonać. Przy okazji temat jest odrobinę związany z poprzednią zagadką, więc będę miał mniejsze wyrzuty sumienia związane z chwilowym brakiem kontynuacji tematu.
Ciąg dalszy "Ulf Nitj’sefni" »Thursday, February 7. 2013
Zagadka: ciąg dalszy
Widzę, że moja zagadka nie spotkała się z wielkim zainteresowaniem. No ale cóż, to mój blog i mogę na nim pisać o tak nudnych tematach, na jakie mam tylko ochotę. Zwłaszcza, że temat jest ciekawy i ma praktyczne zastosowanie dla ludzi z obu stron barykady.
Kilka pytań naprowadzających:
- jakie są oczekiwania odnośnie generowanych identyfikatorów,
- czy wymagania są spełnione,
Pytania pomocnicze:
- jak długi (w bitach) jest identyfikator,
- czy wykonalne jest sprawdzenie wszystkich wartości,
- ile wartości trzeba sprawdzić, by trafić w użyty identyfikator,
- czy generowane identyfikatory są unikalne,
Monday, February 4. 2013
Zagadka: co jest tutaj źle?
Załóżmy, że w aplikacji identyfikatory przyznawane wszystkim obiektom generowane są przez następujący kod:
def random_id_generator(): start_timestamp = 1356994800 while True: current_timestamp = int(time.time()) timestamp = (current_timestamp - start_timestamp) / 60 r = struct.unpack("B", os.urandom(1))[0] << 24 yield struct.pack("L",(r ^ timestamp)).encode("hex")
Założenie jest takie, że przyznawane identyfikatory nie powinny być sekwencyjne, tak by enumeracja obiektów z użyciem bezpośredniego użycia identyfikatora była nieefektywna. Przewiduje się generowanie nie więcej niż jednego identyfikatora na sekundę. Identyfikatory muszą pozostać unikalne przez okres 10 lat.
Pytanie - ile widzicie błędów w tym podejściu?