czwartek, 13 kwietnia 2017

Dzień 29.

  Po powrocie pochorobowym, usłyszałem, żebym się zajął jakimś bugiem, który wyszedł w mojej poprawce sprzed jakiegoś czasu. Funkcjonalność, nad która pracowałem przez ostatni tydzień, została przekazana koledze, który wcześniej w tym projekcie grzebał. Niewiele tam już zostało, ale jak zrozumiałem z komentarza chyba to skończył. Chociaż w kuchni mi mówił, że nie skończył, ale być może chodziło o inny issue, bo PM kazał zając się tym bugiem.
  Siadam do buga. Jak to się mówi, u mnie działało, bo nie wysłałbym merge requesta z niedziałającym kodem, ale faktycznie na devie kawałek kodu nie działał, co widziałem u PM-a na kompie i sam sprawdzałem. Zmieniam więc brancha na tego z poprawką, uruchamiam projekt i 500. No tak, przecież ostatnim pullem popsułem sobie bazę, więc znowu się zaczyna jazda. Próbowałem znowu zakomentowywać te genderowe kawałki, które ostatnio bruździły, ale zaczęło się coś jeszcze sypać. Pomyślałem, że w takim razie zrobię znowu pulla to może się coś naprawi i dociągną jakieś ciekawe poprawki. Zrobiłem pulla i co? I... projekt się wysypuje już na głównej stronie. Dobra - myślę - odpalam builda, niech dropuje tę bazę i ustawia wszystko jak trzeba. Robię builda, errory. Robię migrację errory. Krzyczę w końcu, że zrobiłem pulla i cały projekt się rozsypał. Podchodzi kolega i pyta czy composer install robiłem. Mówię, że nie robiłem, bo niby po co, skoro to nie świeża instalacja i skąd niby miałem wiedzieć, że to potrzebne. No nic, odpalam composera. Jeb! Pół ekranu na czerwono. Zerknąłem tylko i mówię: - Ej, composer to mi się wcześniej nie sypał. Kolega patrzy i mówi, żeby olać, może będzie działać. No ładnie... - pomyślałem. Odpalamy znowu builda i dalej nic. Zabrał mi klawiaturę i zagląda do kodu. Skasował ze 2 linijki w widoku i ze 2 w kontrolerze JS. Sprawdzamy - działa. Aha - mówi - P. miał tę poprawkę spushować. Oddaje mi klawiaturę i mówi, że robimy hotfiksa. Wywalam po 3 linijki z widoków i jedną z kontrolera. Przeklikujemy się i na razie wszystko działa. Każe mi skomitować i zrobić merge requesta na siebie. Jak na Ciebie? - pytam - Możesz akceptować em-ery? No mogę - odpowiedział. Wysyłam więc em-era i ustawiam na niego w GitLabie. Idziemy do niego i patrzę jak się loguje na deva i ściąga moje zmiany. Dobra nasza, przynajmniej w głównej gałęzi mam działający projekt, więc mogę pogrzebać w swoim kodzie, gdzie niby jest błąd. Przeglądam co się tam działo, znajduję zapytanie do bazy, które było odpowiedzialne za "niedziałanie" i robię je z parametrami na sztywno w phpmyadminie. Działa poprawnie. Patrzę jeszcze raz w kod i przy okazji łamię to zapytanie na kilka linijek, bo się długie zrobiło. Wygląda sensownie, w kontrolerze też wszystko ok, więc jeszcze raz sprawdzam, czy aby na pewno nie działa. Pierwszy test i... działa. No nic, zaznaczam więcej użytkowników - działa. Sprawdzam drugi przypadek - działa. Sprawdzam na innej kategorii użytkownika - działa. Sprawdzam po kolei wszystkie kategorie użytkowników i warianty - działa. Czary, bug się sam naprawił. Zrobiłem podsumowanie zadania opisując kolejność działań i stwierdzając, że bug jest nie do odtworzenia i prawdopodobnie była jakaś kolizja z czyimś innym fragmentem kodu, chociaż nie mam pojęcia w jaki sposób miałoby się to wydarzyć. No nic, zmieniam status zadania i robię sobie przerwę, żeby strzelić nowy popis w kuchni...

  Ostatnio, gdy tylko w kuchni pojawia się nasz prezes, mnie się musi cos przydarzyć. Nigdy mi się takie rzeczy nie zdarzały i nie byłem człowiekiem awarią. Tutaj zaczęło się od ekspresu do kawy (przy tym akurat prezesa nie było, ale się później ze mnie nabijał). Jakiś czas później ktoś źle otworzył opakowanie z kawą i tak zostawił. Mnie przy nasypywaniu do młynka dużo się rozsypało. Poprawiłem wycięcie, ale oczywiście prezes wszedł jak sprzątałem ziarna ze stołu, więc wyszedłem na jakąś ciamajdę, co nie umie kawy przesypać. Dzisiaj numer stulecia. Biorę szklankę z logiem coca-cola, chyba z jakichś prezentów z McDonalda, bo miałem podobne i nalewam gorącej wody z baniaka. Po chwili dolewam zimnej, żeby nadawała się do picia. Nagle coś upada na kratkę pod kranikami, chlapie po nogach, a mnie w ręce zostaje pusta szklanka. No, Kumar jego mać, w życiu nie odpadło mi dno od szklanki! Spoglądam z niedowierzaniem i pokazuję co się stało. Prezes znowu jakiś komentarz, że coś ze mną nie tak, ale pytam ile razy w życiu odpadło komuś dno w szklance? Kolega, który tam jeszcze był, powiedział, że raz widział taką sytuację, więc stwierdziłem, że dziękuję za pociesznie i to nie ja mam jakieś dziwne moce. Podchodzę do dystrybutora i czuję, że mokra podłoga. Patrzę, no jak ma nie być mokra jak poleciało ze 200 ml wody. No to biorę po 2 ręczniki papierowe i wycieram. I znowu i znowu. Prezes patrzy, bo widzi te ruchy. Pokazuję podłogę i mówię, że naprawdę odpadło mi dno jak nalałem wody, a nie rozbiłem tej szklanki, ani wcześniej nie podpiłowałem.

  Po powrocie na górę biorę się za nowe zadanie. Całkiem nowy projekt (no dobra, raz w nim robiłem prostą zmianę, ale to nie wymagało zagłębiania się). Znowu się zaczyna problem, że nie działa strona startowa. Czyszczę cache. Nie działa. Robię pull&build. Nie działa. Znowu marudzę, że kolejny projekt po ściągnięciu mi nie działa. Podchodzi kolega i ręcznie wywala katalog app/cache, po czym tworzy nowy. Nagle projekt działa. No litości... Na szczęście już czytałem o podobnych przypadkach, że symfoniowe czyszczenie cache'a czasem nie działa. OK, biorę się za analizę błędu. Zły duch Symfony mówi, że nie wolno korzystać z tej metody, bo jest protected. Sprawdzam - no jest. Zmieniam na public, ale znowu zły duch. Zmieniam jeszcze w klasie abstrakcyjnej i zły duch znika. Myślę sobie, no super, ale to nie może być takie proste. Ktoś w końcu założył w jakimś celu, że ta klasa ma być protected. Patrzę na autora plików - główny architekt. No nie, na pewno nie można tego tak rozwiązać. Szukam, myślę, kombinuję. No nie da się inaczej, bez dopisania kupy nadmiarowego kodu. Idę do architekta. Opowiadam i patrzymy u niego. Przegląda i mówi, że dobra, zmiana dostępu do tej metody na public jest wskazana i może coś źle założył. Wracam do siebie, poprawiam, gotowe. Minęła godzina, a mogłem to mieć zrobione w 10 minut, no ale cóż, brak doświadczenia kosztuje. A jednocześnie wiem, że nie mogę sobie frywolnie zmieniać takich rzeczy, bo wtedy cierpi bezpieczeństwo.

  Kolejne zadanie. Nasz kontroler korzysta z zewnętrznego API, gdzie chyba coś się zmieniło. Niby w naszym testerze ma się wyświetlać obrazek captcha, ale coś ja tego nie widzę w kodzie. Klikam i klikam, czytam opis zadania i w końcu mówię do PM-a, że chyba nie bardzo wiem o co tu chodzi. Ten mi o obrazku, to ja mówię, że w kodzie nie widzę, żeby się tu wyświetlał obrazek. No to on, żebym zobaczył co przychodzi w requeście z API. No widzę, że obrazek w base64, ale ja tu nie widzę wyświetlania. Słyszy to architekt i mówi, że gadam bzdury, bo na pewno było. No dobra, pytam jeszcze raz PM-a czy na pewno tu się pojawiał obrazek. On mi pokazuje w innej części aplikacji, ale obrazka nie ma. Odpala aplikację na Androidzie i też nie ma obrazka, tylko czerwony "błąd". No widzisz, a był obrazek - mówi PM. Ta, tylko nikt go nie widział - pomyślałem. Dobra - mówię - to grzebię dalej, skoro wiem o co chodzi. Pogrzebałem i jest jakiś kod który gdzieś do tempa wrzuca ten obrazek, ale za cholerę nie ma wyświetlania w tym testerze. Skaczę sobie po kodzie i analizuję co się tam dzieje, ale wpadam w klasyczną pętlę. Podchodzi mój rycerz, który ostatnio mi pomaga i pyta co słychać. To odpowiadam, że znowu się zapętliłem i moje var_dumpy nie chcą działać, a już widziałem ich efekt. Przegląda, wchodzi w jakąś metodę, zabiera mi klawiaturę i na końcu dopisuje echo "DUPA"; Odświeżam i mam "dupę" zamiast ajaksa. A więc jasne, znowu gdzieś przegapiłem kawałek kodu, którego nie zrozumiałem. Słońce zaczęło chylić się ku zachodowi, więc postanowiłem się zbierać do domu. Jutro sobie zrobię obsługę tych błędów, bo już wiem gdzie i dodam do wyświetlania obrazka, którego tam wcześniej nie było i nikt mi nie wmówi, że białe jest czarne...


Brak komentarzy:

Prześlij komentarz