Praktyczne, ponadczasowe poradniki dla programistow. Kazdy opiera sie na prawdziwych poleceniach i dzialajacych przykladach oraz jasno mowi, kiedy nie uzywac opisywanego narzedzia.
Ponizej znajdziesz wszystko, od najnowszych.
Praktyczne, ponadczasowe poradniki dla programistow. Kazdy opiera sie na prawdziwych poleceniach i dzialajacych przykladach oraz jasno mowi, kiedy nie uzywac opisywanego narzedzia.
Ponizej znajdziesz wszystko, od najnowszych.
Twój frontend działa na http://localhost:5173, API na http://localhost:4000, a zapytanie fetch, które bez problemu działało w Postmanie, w przeglądarce kończy się ścianą czerwonego tekstu: Access to fetch at 'http://localhost:4000/api/users' from origin 'http://localhost:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Całkiem możliwe, że twój serwer obsłużył to zapytanie i zwrócił 200. Przeglądarka po prostu odmówiła przekazania odpowiedzi do twojego JavaScriptu. Ta odmowa to same-origin policy. CORS to sposób, w jaki serwer mówi przeglądarce, żeby złagodziła tę zasadę dla konkretnych stron. Każda poprawka poniżej sprowadza się do jednego nagłówka odpowiedzi, którego przeglądarka nie dostała. ...
Otwierasz funkcję, żeby naprawić błąd w jednej linijce, i czterdzieści minut później wciąż śledzisz, która gałąź ustawia którą zmienną. Trzy niepowiązane ze sobą zadania są zespawane w jeden blok, i żadne z nich nie ma nazwy. Pociągasz za jedną nitkę i nie wiesz, które inne się poruszają. To właśnie spaghetti code, i nazwa nie ma nic wspólnego z wcięciami czy stylem nazewnictwa. Opisuje przepływ sterowania: wykonanie skacze między warunkami tak, jak jeden makaron krzyżuje się z każdym innym w misce, a podążanie jedną ścieżką do końca oznacza trzymanie w głowie czterech poziomów if naraz. ...
Jak dostać się do bazy danych, która nasłuchuje tylko na localhost? Instancja Postgres na zdalnym serwerze celowo wiąże się z 127.0.0.1. Nic w sieci nie może jej dosięgnąć, tylko procesy działające na tej samej maszynie. Twój laptop nie jest tą maszyną, więc psql -h remote-server -p 5432 kończy się błędem, zanim w ogóle dojdzie do uwierzytelnienia. Otwarcie tego portu na świat przekreślałoby sens trzymania bazy na loopbacku. Chcesz na chwilę pożyczyć widok, jaki zdalna maszyna ma na 127.0.0.1, z własnego terminala. W momencie logowania SSH ma już otwarte, szyfrowane i uwierzytelnione połączenie między dwiema maszynami. Port forwarding wykorzystuje to połączenie do przesyłania ruchu spoza twojej powłoki. ...
Workflow, który przy każdym push uruchamia npm ci, za każdym razem pobiera z registry te same kilkaset pakietów, nawet gdy lockfile nie zmienił się od tygodnia. W projekcie z prawdziwym drzewem zależności to minuta czy dwie stracone, zanim ruszy pierwszy test, i płacisz to ponownie przy każdym push i każdym pull request. actions/cache przechowuje te pobrania między uruchomieniami i przywraca je, gdy nic istotnego się nie zmieniło. Jak action decyduje o hit czy miss actions/cache zapisuje każdy wpis pod wartością key, którą sam wybierasz, ograniczoną do brancha, który go utworzył. Uruchomienie może odczytać cache z własnego brancha i z brancha domyślnego. Przy przywracaniu action porównuje twój key z tym, co jest zapisane: ...
Sporo produkcyjnego ruchu LLM sprowadza się do jednego słowa. Eskalować to zgłoszenie czy nie. Spam czy nie spam. Który z sześciu handlerów ma obsłużyć zdarzenie. Żeby dostać to jedno słowo, wysyłasz cały prompt do ogólnoprzeznaczeniowego modelu, czekasz, aż zdekoduje odpowiedź token po tokenie, i wyciągasz obiekt JSON z wyniku. Płacisz cenę i opóźnienie generowania tekstu, a to, co dostajesz, to decyzja mieszcząca się w enumie. “Model system one” to nazwa, jaką TypeSafe AI nadało modelowi zbudowanemu pod ten drugi kształt: bierze fragment stanu plus zestaw typowanych pytań i zwraca odpowiedź na każde z nich w jednym przebiegu, bez generowania tekstu. Termin pożycza podział Daniela Kahnemana na szybkie, automatyczne myślenie “System 1” i powolne, świadome rozumowanie “System 2”. Jev, implementacja TypeSafe, jest tu przykładem roboczym. Nazwa należy do dostawcy, ale sam pomysł jest starszy: jeśli output ogranicza się do znanego zbioru odpowiedzi, model może jedną z nich wybrać zamiast napisać. Pytanie dla twojego systemu brzmi, czy ten kształt pasuje do prawdziwego wąskiego gardła. ...
Poproś agenta CLI do kodowania o naprawienie failującego testu, a nie odpowie ci sugestią. Odczyta wynik testu, otworzy plik, zmieni linijkę, uruchomi test ponownie i zgłosi się z powrotem, dopiero gdy przejdzie. Ta pętla jest produktem, nie okno czatu. Model wewnątrz pętli przyciąga najwięcej uwagi i to też ta część, która zmienia się najszybciej: dostawcy podmieniają go co kilka miesięcy, a wielu agentów pozwala go samemu wybrać. To, co zostaje na miejscu, to harness owinięty wokół modelu — do jakich narzędzi ma dostęp, jak zarządza kontekstem, co może uruchomić bez pytania i gdzie te komendy się wykonują. Dwaj agenci na tym samym modelu mogą zachowywać się zupełnie inaczej właśnie przez to. Harness to jest to, co naprawdę wybierasz. ...
Bug odtwarza się na serwerze testowym, a nie na twoim laptopie. Serwer testowy nie ma Visual Studio, a instalowanie tam pełnego IDE, żeby ustawić jeden breakpoint, nie wchodzi w grę. Debugowanie zdalne jest zrobione właśnie na taki przypadek. Mały samodzielny program działa na maszynie docelowej, twoje lokalne Visual Studio łączy się z nim przez sieć, a ty dostajesz breakpointy i podgląd zmiennych na procesie, który nie działa nigdzie w pobliżu twojego biurka. ...
Dostawca webhooków potrzebuje adresu URL, pod który może wysłać POST, a twój serwer siedzi na localhost:3000. Albo kolega chce przeklikać branch, który akurat uruchomiłeś, albo telefon musi trafić do serwera deweloperskiego, żeby sprawdzić layout. Serwer działa. Nic spoza twojej sieci się do niego nie dostanie. Przekierowanie portu na routerze by zadziałało, ale wystawia twój domowy IP i wymaga uprawnień administratora, których często nie masz. Cloudflare Tunnel idzie w drugą stronę. cloudflared, mały daemon uruchomiony obok serwera, otwiera połączenie wychodzące do brzegu sieci Cloudflare, a Cloudflare odsyła przez nie ruch z powrotem. Nie otwierasz żadnego portu przychodzącego i nie potrzebujesz publicznego IP. ...
Testy są zielone od trzech tygodni. Dziś npm test pada na asercji, która nie ma nic wspólnego z tym, co właśnie zmieniłeś, a git log v1.4.0..HEAD pokazuje 340 commitów od czterech osób od ostatniego release’a, o którym ktoś był pewien, że działa. Przeczytanie każdego diffa kosztuje cały dzień. Losowe przełączanie się między commitami idzie szybciej, ale wciąż nie jest planem. git bisect zamienia to w wyszukiwanie binarne. Podajesz mu jeden commit, o którym wiesz, że jest dobry, i jeden, o którym wiesz, że jest zepsuty; narzędzie robi checkout commita w połowie drogi między nimi i czeka, aż przetestujesz właśnie ten commit i zgłosisz wynik. Każda odpowiedź zmniejsza zakres o połowę. 340 commitów da się rozstrzygnąć w maksymalnie 9 testach, bo 2^9 = 512. ...
Co DNS naprawdę robi przy każdym żądaniu Każde żądanie do example.com zaczyna się od wyszukania, które nie ma nic wspólnego z twoją aplikacją: coś musi zamienić tę nazwę na adres IP, zanim jakikolwiek pakiet TCP opuści maszynę. Tym tłumaczeniem jest DNS, Domain Name System, i działa przy każdym żądaniu, niezależnie od tego, czy klientem jest przeglądarka, curl, czy usługa backendowa łącząca się z inną po hostname. Nie ma za tym jednej tabeli. DNS to hierarchia serwerów, z których każdy odpowiada za wycinek przestrzeni nazw, odpytywanych po kolei, aż przyjdzie odpowiedź. Znajomość tego łańcucha zamienia “strona nie działa” w “certyfikat wygasł” albo “rekord wciąż wskazuje na stary adres IP”: dwa zupełnie różne problemy, które z poziomu karty przeglądarki wyglądają identycznie. ...