Programiści

Narzędzia dla programistów — UUID, znaczniki czasu, Base64, systemy liczbowe i kody, wszystko działa offline w przeglądarce.

Identyfikatory i czas

3

Kodowanie

5

Kolory i tekst

6

Pogrupowane według sytuacji, nie formatu

Ta kategoria to nie tyle temat, co szuflada. Narzędzia w niej to drobne konwersje potrzebne, gdy właściwym zadaniem jest coś innego, więc są wypisane tutaj według sytuacji, w której po nie sięgasz.

„W tym logu jest nieprzejrzysty ciąg znaków i nie wiem, co to jest.” Jeśli wygląda jak 550e8400-e29b-41d4-a716-446655440000, to dekoder UUID powie Ci, jaka to wersja i, dla v1, v6 i v7, kiedy powstał znacznik czasu. Jeśli wygląda jak SGVsbG8= albo kończy się na ==, to Base64 — zdekoduj go. Jeśli to goła dziesięciocyfrowa liczba zaczynająca się od 17, to znacznik czasu Unix sprzed mniej więcej teraz.

„Potrzebuję identyfikatora.” Generator UUID obsługuje v1 oraz od v3 do v7 i wygeneruje ich tysiące naraz do zasiania testowej bazy danych.

„Ten znacznik czasu myli się o czynnik tysiąca.” Sekundy czy milisekundy — konwerter znaczników czasu obsługuje oba i pokazuje, który z nich podałeś.

„Potrzebuję z tego URI danych prawdziwego pliku.” Albo odwrotnie: Base64 na obraz.

„Jaki to dokładnie kolor?” Wybór koloru do konwersji między notacjami, wybór koloru z obrazu do odczytania wartości ze zrzutu ekranu albo makiety.

„To musi być snake_case, a jest camelCase.” Konwerter wielkości liter.

„Ile w systemie dziesiętnym wynosi 0xDEADBEEF i co się stanie, jeśli jest ze znakiem?” Konwerter systemów liczbowych, który — inaczej niż większość — obsługuje liczby ujemne i kod uzupełnień do dwóch.

Identyfikatory ujawniają więcej, niż się wydaje

Jedna sprawa przenikająca całą kategorię, warta wspomnienia tutaj, bo żadna pojedyncza podstrona narzędzia jej nie obejmuje: kilka z tych formatów niesie informacje, których wcale nie zamierzałeś publikować.

UUID v1 zawiera znacznik czasu i adres MAC maszyny. Taki był pierwotny zamysł — unikalność gwarantowana przez „ta maszyna, w tym momencie”. To także znaczy, że UUID v1 w publicznym URL mówi każdemu, kto się tym interesuje, dokładnie kiedy rekord powstał, i daje mu stały identyfikator serwera, który go utworzył. Możesz to sam sprawdzić, wklejając taki UUID do dekodera.

UUID v7 też zawiera znacznik czasu Unix, celowo, bo to, że sortowanie po ID i sortowanie po czasie utworzenia jest tym samym, jest ogromnie użyteczne dla lokalności indeksu bazy danych. Koszt jest ten sam co przy v1: identyfikatory v7 są uporządkowane, więc ich publiczne ujawnianie odsłania czasy utworzenia i pozwala oszacować, ile rekordów tworzysz na godzinę, obserwując dwa z nich.

v4 to wersja, która nie ujawnia niczego — 122 bity losowości i żadnej struktury. Dlatego pozostaje domyślnym wyborem dla wszystkiego, co widzi użytkownik, i dlatego zasada „v7 dla klucza głównego, v4 dla publicznego identyfikatora” ma sens dla tej samej tabeli.

Base64 ujawnia wszystko, natychmiast, każdemu. To nie jest zaciemnianie. Sekret Kubernetes jest kodowany w Base64, żeby wartości binarne przetrwały YAML, a nie żeby je chronić.

Wszystko na tej stronie działa lokalnie, co w tej kategorii ma większe znaczenie niż zwykle: identyfikatory produkcyjne, tokeny i fragmenty logów to dokładnie ten rodzaj danych, którego nie powinno się wklejać do cudzego serwera w celu odkodowania.

Byłbym wdzięczny, gdybyś udostępnił te strony znajomym, dodał je do zakładek lub linkował do nich. Dziękuję! 🙏