wtorek, 16 maja 2017

Dzień 39., 40. i 41.

    Ponownie kila dni w jednym wpisie, bo ostatnio nie ma dla mnie zbytnio zadań, więc się douczam. Przez 2 dni uczyłem się o serwisach w Symfony2. Znalazłem jakiś krótki kurs po polsku, a później zrobiłem przykłady z dokumentacji Sf2. Wiem już co to jest service container, jak się tworzy własne i pobiera gotowe serwisy oraz że kontroler też może być serwisem, ale o tym ostatnim czytałem jakieś artykuły, że to może być zło. Senior kazał mi też poczytać o serwisach tagowanych oraz zrozumieć, ale z tym ostatnim to nie jest tak do końca pewien, póki nie trafię na zastosowanie praktyczne. Serwisy niby też zrozumiałem i zrobiłem jakieś własne, ale jak ponownie sięgnąłem do projektu, w którym miałem zmienić serwis, to dalej nie wiem jak to zrobić, bo ten kod jest zbyt zagmatwany.

    Gdzieś w trakcie tych trzech dni, zdarzyły mi się zadania programistyczne. Jedno na godzinę, które nawet nie pamiętam, ale dwa pozostałe już ciekawsze. Projekt Manager szukał dla mnie jakichś zadań i coś tam odgrzebał, albo mu po drodze zgłoszono. Zacząłem więc dzielnie szukać błędu, który widziałem naocznie u dziewczyn z zaprzyjaźnionej firmy, z którą dzielimy biuro. Siadam do błędu, grzebię, kod wygląda znajomo, bo już coś w nim robiłem na samym początku pracy, ale i tak schodzą mi 4 godzinę na analizę, co się w tym projekcie dzieje i czemu pewne pola są różnie opisane, chociaż spełniają tę samą role, a także nie mają relacji, tylko są kopiowane. Poprawiam i działa. W międzyczasie jest mowa, że wiszą jakieś moje stare merge requesty w tym projekcie, bo PM coś tam przegląda. No to i ja przejrzę czemu to jeszcze wisi. Przeglądam, przeglądam a tam znajomy kod. Okazuje się, że już raz ten problem rozwiązałem, tylko nikt go nie wypchnął, a ja w tym projekcie poruszałem się wtedy jak dziecko we mgle, więc zupełnie tego nie kojarzyłem. Ale przynajmniej dwa raz tak samo napisałem kawałek kodu, więc pewnie jest dobrze. ;) A próby zrzucania odpowiedzialności na mnie (powiedziałem PM-owi, że już raz to zrobiłem, tylko nie zostało zaakceptowane) są po prostu śmieszne, bo nie mam obowiązku pamiętania wszystkiego co robiłem, zwłaszcza w czasach, gdy nie do końca ogarniałem co się dzieje.

   Trafiła mi się też ciekawostka, w której sam jestem sobie winny i jest w sumie śmieszna. Dostałem zadanie o braku aktualizacji wyświetlanych danych po zastosowaniu filtrów. Jedna z poprawek dotyczyła front-endu, bo korzystał nie z tych danych, które przekazywała back-end, a druga była w back-endzie i moje wersja jest taka, że zostało zrobione to źle, ale kolegi, który to pisał jest taka, że nie zostało to właściwie zaimplementowane. Ot, wyświetlanie sumy wpłat dla wszystkich użytkowników zamiast dla przefiltrowanych, to niewłaściwa implementacja. Koniec końców, napisałem własną implementację, wzorując się na kawałku kodu, który zliczał liczbę wpłat. Przepisałem zapytanie DQL zmieniając co trzeba i oglądam wyniki. Pierwszy działa, więc sprawdzam w innych kategoriach. Też działa, ale że kwoty były duże, to sprawdziłem na 3 wynikach. I tu się prawie zgadzało, gdyby nie to, że po przecinku powinno być 40 gr, a u mnie było zero. Sprawdzam gdzie indziej i to samo. No to mamy problem... Sprawdzam front-end, bo tam widziałem jakieś zaokrąglanie, ale console.log z tymi liczbami wyświetla dobry wynik. Zabieram się więc do czystego SQL-a, ale tam również jest dobrze i nie spodziewałem się, żeby było inaczej. Przeglądam kod i nagle olśnienie! Jeśli zwraca się wynik zapytania rzutowany na (int) zamiast na (float), to się nie ma co dziwić, że wyświetlają się liczby całkowite. :)


wtorek, 2 maja 2017

Dzień 37. i 38.

    Znów połączyłem 2 dni w jeden wpis, bo szkoda elektronów. Dzień 37. spędziłem na reinstalacji laptopa dla naszego Office Managera i tak zeszło z 6 h. System systemem, ale później aktualizacje, jakieś pakiety biurowe i inne takie i trochę na tym schodzi, żeby doprowadzić do użytku.
    Poza tym, dostałem jedną drobną poprawkę wycenioną na ... 5 minut. Wszystko fajnie, bo to jedna zmiana warunku true na false, ale z zegarkiem (Toggl) w ręce zmierzyłem, że zajęło mi to 7,5 minuty i to też nie całości pracy. Żeby zrobić taką poprawkę trzeba: otworzyć projekt, znaleźć odpowiedni plik (dobrze, że ja pisałem tę funkcjonalność to wiedziałem gdzie szukać), dokonać zmiany, przetestować, a wcześniej dobrze by było zrobić nowego brancha (chociaż po fakcie z developa też nie będzie tak źle), skomitować zmiany, zrobić pusha, otworzyć merge requesta, poustawiać tam co trzeba i opisać, a na koniec napisać w GitLabie, że się zrobiło. Także takie magiczne 5 minut się wydłuża do 10 co najmniej. Resztę czasu spędziłem oglądając do końca filmik o PHPStormie, który oglądałem z przerwami podczas instalacji Windowsów.

   Dzień następny, czyli dla niektórych długi weekend, spędziłem w pracy wraz z pięcioma kolegami, bo reszta wzięła urlopy. Nie było dla mnie żadnych zadań, ale przed przerwą ustaliłem z PM-em, że wyślę do niego i seniora plan czego chciałbym się pouczyć. Plan przesłałem i senior dzisiaj stwierdził, że fajnie, ale żebym głównie zajął się nauką Symfony, a nie resztą drobiazgów. Zabrałem się więc dzielnie do nauki serwisów, bo już raz robiłem podejście i wydawało mi się, że to proste i wszystko rozumiem, ale jak przyszło co do czego i większego serwisu, to już się gubiłem.
    Obejrzałem jakiś tutorial, napisałem prosty serwis na jego podstawie, ale to mi nie wystarczało, więc zabrałem się za dokumentację od Symfony. Czytam, czytam i przestaję rozumieć. Dochodzę do dependency injection i zaczyna się kłopot, bo tego już też raz nie zrozumiałem. Zacząłem więc czytać o DI. Czytam, czytam, przeglądam przykłady i nagle jakiś trybik w głowie przeskakuje. No kurde, przecież ja tego cały czas używam w kodzie, ale totalnie nieświadomie, dlatego że patrzę jak inni piszą kod i kopiuję rozwiązania. Żeby się upewnić czy rozumiem, wracam do filmiku o DI, który kiedyś oglądałem, ale totalnie nic nie zrozumiałem, bo brakowało w nim jakiejkolwiek teorii, tylko był przykład na kodzie. Teraz nagle wszystko stało się jasne. Ucieszony wstałem od biurka i pochwaliłem się swoim sukcesem seniorowi. Jak zwykle komentarz był ironiczny, ale muszę przywyknąć i zacząć olewać. Wolałbym coś bardziej motywującego, ale cóż... Generalnie postanowiłem po przerwie opowiedzieć o swoich odkryciach gumowej kaczuszce*, aby sprawdzić czy na pewno rozumiem, tylko jakoś nikogo nie widziałem w tej roli, więc zajrzałem do kodu napi... przepisanego serwisu z tutoriala i opowiadać o nim wyimaginowanej kaczuszce w myślach. Wyglądała na zadowoloną, więc teraz chętnie opowiedziałbym o tym żywemu człowiekowi. Zajrzałem też do kodu, który pisałem ostatnio - eksportera do Excela, gdzie oparty był na serwisach i też jakoś lepiej go rozumiałem. Jak będzie następna wolna chwila, to wrócę do projektu, gdzie nie potrafiłem zmienić korzystania z jednego serwisu na inny i zobaczymy, czy mój aktualny stan umysłowy to ogarnie. :)

* - Metoda gumowej kaczuszki