cutty devlog #0 — czemu jeszcze jedna skracarka linków
pivot ewoluował do cutty.dev. Ten devlog to historia rozwoju, ale produkt żyje dalej pod nową nazwą i nowym stackiem.
$ git log –oneline pivot/
pivot ma w /projekty/pivot/ swoją stronę-dokumentację, gdzie wszystko jest poukładane jak w README: featurki, stack, API, roadmap. Profesjonalnie. Bezosobowo. Tak, jakby projekt napisał kompetentny zespół, który ma standup co rano.
Ten post jest o tym, jak to wyglądało naprawdę. Trochę o tym, że jedna z tych „kompetentnych osób” to ja, druga też ja, a standup robi mi Simba o szóstej rano, kładąc się na klawiaturze.
== prolog ==
Dwa lata temu wkleiłem znajomemu link do dokumentu na Google Drive. Link miał 217 znaków, z czego 180 to był token autoryzacji wyglądający jak hasło wifi sąsiada. Znajomy spojrzał, powiedział „ej, możesz mi to inaczej wysłać” i poszedł zrobić sobie kawę.
Wtedy pomyślałem: muszę mieć własną skracarkę.
Potem przez dwa lata jej nie miałem.
== „to weekend roboty” ==
To zdanie, które każdy programista wypowiada przynajmniej raz przed każdym projektem, który zajmie mu trzy miesiące. Wypowiedziałem je w sobotę 17 maja, około 22:30, po trzecim espresso i jednej myśli: „co ja właściwie robię z życiem, skoro nie mam własnej skracarki linków”.
Pierwsza rzecz, którą napisałem — nazwa. Bo dobra nazwa robi 70% projektu, a zła zabija go zanim ktokolwiek napisze pierwszą linię kodu. (Tak, mam projekty, które padły bo nazwa brzmiała głupio. Nie pytaj.)
Lista nazw, którą rozważałem:
ln— komenda unixowa, idealna semantyka, ale brzmi jak rejestracja samochodujmp— assemblerowy skok, hardcore, ale 90% odbiorców nie złapie301— kod HTTP redirect, pierwsza myśl normalsa: „co to za błąd”tnij— polski rozkaz, swojski, ale traci unix-vibecut,sed,mov,hop,bounce,warp— wszystkie dobre, ale za miękkie
W końcu padło pivot. Z Metasploita — w slangu pentesterskim pivot to przeskakiwanie przez skompromitowanego hosta, żeby dostać się dalej w sieć. Krótki link to literalnie pivot przez mojego hosta do twojego celu. Semantycznie się zgadza, brzmi groźniej niż „skracarka”, i jest na tyle prosto, że babcia nie zapyta co to znaczy. Bo nie zapyta — zignoruje. Lepiej.
== plan na MVP ==
Trzy endpointy, jedna tabela:
POST /pivot # tworzy krótki link
GET /p/{slug} # 301 redirect
GET /p/{slug}+ # statystyki (plus na końcu jak w bit.ly)
Schema bazy:
CREATE TABLE wp_esej_pivot (
slug VARCHAR(8) PRIMARY KEY,
url TEXT NOT NULL,
hits INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
I to wszystko. Słownik base62, 4 znaki = 14.7M unikalnych. Generuję random, sprawdzam czy nie ma kolizji, jak jest — retry. Statystycznie nieosiągalne przy moich kilkudziesięciu linkach miesięcznie, ale lubię kod, który ma sens nawet w teorii.
== co już zostało zrobione ==
- [x] nazwa
- [x] spec (TEN post + strona /projekty/pivot/)
- [x] decyzja: bez nowego runtime, wszystko w PHP wewnątrz motywu WP
== co jeszcze nie ==
- [ ] jakiekolwiek linie kodu
Ale spokojnie. W przyszłym tygodniu.
(Jak Simba pozwoli.)
// PS: jak ktoś z was ma swoją skracarkę linków od weekendu i jakoś jeszcze nie umarł — daj znać, porównamy bazy danych.
// PPS: jak ktoś z was JESZCZE NIE MA swojej skracarki — co robisz z życiem.