środa, 22 marca 2017

Dzień 16.

  Rozpocząłem od grzebania w back-endzie, bo już wczoraj wiedziałem mnie więcej gdzie. Poprawka była w miarę prosta, bo polegała na zmianie repozytorium, z którego będą pobierane dane. Przeklikałem trochę, żeby sprawdzić czy działa przenoszenie między różnymi obiektami, a przy okazji znalazłem jakiś błąd, który zgłosiłem i będzie do naprawienia później, poza oficjalnym zamówieniem klienta. A znalazłem błąd dlatego, że myślałem, iż to moja poprawka coś popsuła, a tym czasem problem jest gdzieś indziej i nie aktualizuje się jedno pole, mimo iż powinno być puste. W ten sposób nie mogłem odnaleźć swojego obiektu wpłaty, który był przenoszony do innego rodzaju darczyńcy. Nagle ślady po tych wpłatach były w 3 innych obiektach, a ona sama była tylko w jednym. Wiedziałem już, że to nie moja wina, więc przestałem się na razie przejmować, a kolega na Slacku zasugerował, w której metodzie może być błąd.
  Nadszedł czas próby, a więc kolejny typ obiektu, gdzie ostrzegano mnie, że wpłaty dla niego są inaczej rozwiązane. Oczywiście okazało się, że po przeniesieniu obiektu wpłaty do tegoż obiektu darczyńcy, zaczęły się problemy z wyświetlaniem, a "zły duch Symfony", jak nazywam tego duszka, który wyskakuje podczas błędów pokazał mi, że brakuje jednego pola. Sprawdziłem co i jak i poprosiłem o poradę techniczną. W międzyczasie było krótkie spotkanie statusowe z PM-em i zaraz później poszliśmy do głównego architekta, żeby przedstawić problem i pogadać o rozwiązaniach. Skończyło się wymuszonym ustawianiu tego pola na wartość 1 przy przenoszeniu w jedną stronę, a w drugą zachowywała się automatycznie. Problem rozwiązaliśmy (bo sam tylko kawałek napisałem) w sposób taki, że sprawdzaliśmy czy obiekt przenoszony jest (a w zasadzie to !jest) instanceof obiektu rozszerzonego i jeśli nie był to tworzyliśmy obiekt rozszerzonego typu, gdzie po zmianach w jego konstruktorze robiliśmy kopię obiektu podstawowego (rozszerzony dziedziczył po klasie podstawowej) i dodawaliśmy na sztywno ustawione na 1 wspomniane dodatkowe pole. Troszkę mi się "pozajączkowało" (pojęcie autorstwa mojej polonistki z podstawówki) przy tym kopiowaniu atrybutów, bo było ich sporo i skopiowałem o jeden za dużo, dzięki czemu wpłaty uległy cudownemu rozmnożeniu, ale nie było z nimi żadnych relacji z darczyńcą, więc pieniądze niejako spadły z nieba, a już szczególnie, że to projekt dla klienta, który jest organizacją katolicką zajmującą się redystrybucją donacji. :)

  W międzyczasie jeden kolega chciał skorzystać z moich skilli administracyjnych, bo zainstalował wreszcie Linuksa, tylko coś mu nie działało wchodzenie do MySQL-a na konto roota bez hasła. Ja na szczęście od razu ustawiłem sobie hasło, bo już widziałem jak się kończy domyślne ustawienie braku hasła na koncie roota w MySQL-u. W domu też musiałem walczyć z tym, że przy domyślnej instalacji było coś nie tak, więc już swoje zmarnowałem na grzebanie po sieci. U mnie skończyło się to przestawieniem jakiegoś pluginu do autentykacji, tyle że ja mogłem się do swojej bazy zalogować, a kolega nie bardzo. Jako, że to była świeża instalacja i nie miał tam żadnych danych, postanowiłem spróbować innego sposobu. Odinstalowałem wszystkie paczki mysql-server-*, mysql-common z opcją --purge, usunąłem /etc/mysql/ oraz przede wszystkim wszystkie bazy z /var/lib/mysql. Po tej operacji ponowiłem instalację paczek mysql-server*  i wtedy, gdy pojawiło się okienko z pytaniem o hasło roota, kazałem mu na moich oczach coś tam ustawić, a później sprawdzać czy może się logować na konto roota w MySQL ze zwykłego konta użytkownika przez: mysql -uroot -p. Na szczęście zadziałało i więcej o nic nie pytał.
Gdzieś tam po drodze odezwał się jeszcze inny kolega, który również miał problemy, ale jemu się udało dodać zwykłego użytkownika i jakos mu to działało. Wspomniał coś o "jakichś tam socketach", ale nie wiedział bardzo o co chodzi. Ten pierwszy, który mnie prosił o pomoc też przeczytał o socketach, ale też nie rozumiał czego od niego chcą. Okazuje się, że można być programistą i nie wiedzieć co to socket. Wyjaśniłem na szybko, a w razie czego sobie doczytają, skoro nie zastanawiali się nigdy jak ten mysql-client z terminala działa, skoro nie podają numeru portu. Z resztą, może nigdy  nie pisali kodu, który musiał się łączyć z bazą na innej maszynie, tylko wszystko było lokalnie.

  Skończyłem poprzednie zadanie z przenoszeniem między różnymi obiektami i wziąłem się za nowe w tym samym projekcie. Klasyczne zadanie typu "zajmie Ci to góra godzinę, bo to prosta poprawka w wyświetlanym formacie". No pewnie, to zawsze są proste zadania, a później się okazuje, że żeby wygenerować PDF-a, muszę odpalić specjalnie dopisany skrypt do symfoniowego app/console i jakimś cudem ten skrypt się wywala i wypluwa z siebie losowe zipy. Także zanim się zaczęło grzebanie w zadaniu, trzeba było przejrzeć skrypt, posprawdzać gdzie przestaje działać (die("Boom!");) i rozgryzać co się stało, skoro wszystko pasuje do dokumentacji tej biblioteki. Ktoś gdzieś w sieci napisał, że też miał taki błąd przy aktualizacji do php5.6, ale jego rozwiązanie zupełnie tutaj nie pasowało. Zrobiliśmy wreszcie jakiś quickfix, który zadziałał, ale bez rozumienia czemu tak się w zasadzie dzieje, bo tu by już trzeba było głębiej grzebać w bibliotece, a na to już było późno, bo i tak nadgodziny robiliśmy powoli.

  Na koniec jeszcze czekała mnie poprawka w README.MD od tego projektu i skoro poprzednią zrobiłem przez interface www GitLaba, to teraz chciałem zrobić to samo (na GitHubie tak robiłem, bo było szybciej i był od razu podgląd czy markdown dobrze działa). Usłyszał to architekt i powiedział, żebym więcej tak nie robił, bo kiedyś coś im się tak rozsypało i że mam to robić lokalnie, a w PHPStormie mam podgląd i powinno wystarczyć. Średnio wystarcza, bo podgląd tabelek nie działa. No ale zrobiłem to lokalnie. Tylko, że bezpośrednio w gałęzi develop, bo nie chciałem w tym celu robić oddzielnego brancha i merge requesta. Po wykonaniu pusha, ze zdziwieniem zobaczyłem, że nie ma znanej mi już informacji, że mam kliknąć w link i zgłosić merge request. Jutro czekam na komentarz, że nie pracujemy na gałęzi develop i jestem niegrzecznym chłopcem. O 19.30 i informacją, że za 10 minut wszyscy mają wyjść z firmy, już ciężko się myśli i pamięta o rzeczach, do których jeszcze nie ma się wyrobionych nawyków.


2 komentarze:

  1. i jeszcze napisz, ze zaczynasz o 8:00 rano

    OdpowiedzUsuń
    Odpowiedzi
    1. Na szczęście już dawno nie zaczynałem o 8:00. Zaczynam między 10:00 a 10:30 zależnie jak mi się z komunikacją poszczęści, bo do pracy jadę prawie godzinę.

      Usuń