poniedziałek, 20 marca 2017

Dzień 14.

  Rano próbowałem pogrzebać we front-endzie jednego projektu, ale trochę zapomniałem jak się pisze pewne rzeczy, więc za długo mi to szło. Dostałem polecenie, żeby to już olać i zająć się nowym projektem. Wrzucono mnie i nową koleżankę do nowego projektu, więc było spotkanie z PM-em, który opowiadał co i jak, aż zrobiła się 13.00. Koleżanka dostała klasyczne zadanie, czyli "zainstaluj sobie system, niech będzie to Linux Mint 18", więc tylko czekałem w napięciu aż coś się zacznie sypać. Zaczęło się dosyć szybko, bo już przy próbie bootowania świeżo nagranej płyty (żeby nie było, że znowu cos nie tak z pendrive'em itd.). Zajrzałem tam, nie startował nawet GRUB, więc powiedziałem, że za te podśmiechujki głównego architekta, że nie umiem zainstalować sobie Linuksa, ja się teraz będę śmiał, że on nie umie nagrać płyty. Coś tam w międzyczasie kombinowali z przepinaniem zewnętrznego napędu, aż w końcu ruszyło, bo zawołali mnie, żebym pomógł przy podziale na partycje. Pomogłem, zainstalowało się. Podszedłem sprawdzić jak wygląda pierwsze uruchomienie i było ok, Cinnamon się nie zawiesił. Na wszelki wypadek kazałem jej zrestartować parę razy komputer, bo u mnie to raz działało a raz wisiało. U niej zadziałało kilkukrotnie, więc mogła sobie doinstalowywać inne rzeczy. W tym komputerze była inna płyta główna niż w tych, w których mieliśmy problem i inna karta graficzna. Może jeden z tych elementów wpłynął na to, że tym razem instalacja i działanie było bezproblemowe. Poza pierwszym bootowaniem płyty instalacyjnej, ale później pan architekt mówił coś, że ta płyta chyba się źle nagrała, więc dopiąłem swego i przedrzeźniałem go, że nie umie nagrywać płyt. Teraz już zawsze będę tak odbijał piłeczkę, jak usłyszę, że taki ze mnie mechanik od mercedesów a z maluchem sobie nie mogłem poradzić!

  Od dzisiaj też pewnie będą śmichy-chichy ze mnie i ekspresu do kawy, bo nawet prezes podjął temat i mi docinał, że niezły buffer overflow zrobiłem. Do tej pory, gdy parzyłem kawę (Jessicka jest wiecznie poza pracą i tylko stoi jej puste krzesło i komputer przy wejściu), wsypywałem dwie zawartości młynka do ekspresu (ręcznie mielimy kawę, bo ekspres z tych tańszych) , bo jedna byłaby raczej za słaba, ale nie był to pełny młynek. Kolega, który był przy mnie powiedział, że zawsze widział, ze ludzie wsypują do młynka kawę z usypaną górką. No to zrobiłem z górką. Szkoda, że chwilę później mnie wołali na dół, że coś stało się z ekspresem. No cóż, ulało się trochę temu ekspresu i musiałem sprzątać. Później się dowiedziałem, że ten młynek z górką usypaną z kawy, który "ludzie robią" to był tylko jeden... :)

  No nic, po obiedzie w postaci kebabu i sprzątaniu kuchni, wróciłem wreszcie do zajęć programistycznych. Ściągnąłem projekt i zależności, uruchamiam i od razu error do kolegi Ajaksa. Zaglądam, a biedaczek ma jakieś kłopoty z bazą, którą wcześniej wgrałem (gdy już dostałem z zewnątrz, bo ta w builderze projektu się sypała przy imporcie). O dziwo, dane się wyświetlają, ale i tak co chwila error. Sprawdzam o co chodzi, a tam nie podoba mu się (w sumie to nie Ajaksowi tylko back-endowi) grupowanie danych przy selectach. Pytam wokół czy ktoś coś i architekt na hasło "strict" kojarzy, że była jakaś zmiana w MySQL-u. No więc szukam zmiany, stosuję i poprawiam readme.md w projekcie. Okazało się, że w wersji 5.7, którą mam wraz z system zmieniono pewne rzeczy, a jak je sprytnie odmienić, najlepsze rozwiązanie znalazłem tu:

How to Disable Strict SQL Mode in MySQL 5.7

  Dobrałem się wreszcie do projektu, przejrzałem trochę plików i akurat podszedł kolega, który ma być dla nas supportem w tym projekcie i momentalnie mi wskazał, gdzie w encji są ograniczenia, których szukam. Wcześniej tego na oczy nie widziałem, więc pewnie nawet bym tam nie zajrzał, także kolejna ciekawostka w moim rozwoju. Poprawiłem encje, "popsułem" bazę, bo były constrainty i zaczęło działać. Teraz tylko wypadałoby to zrobić zgodnie ze sztuką, więc potrzebowałem diffa do migracji bazy i tutaj miałem kolejną niespodziankę, bo wygenerował się pusty. Miałem więc okazję, żeby pobawić się różnymi komendami php app/console doctrine:migration:xxx i zobaczyć jak to działa, bo do tej pory używałem tylko doc:schema:update. Przy okazji dowiedziałem się, że można operować skrótami komend w konsoli Symfony. Gdy dostałem pierwszy raz info od seniora, żeby zrobić doctrine:mig:mig -n, pomyślałem że po prostu nie chciało mu się pisać doctrine:migration:migrate, ale kolega powiedział, że można nawet d:m:m napisać, ale mig:mig jest zabawniejsze i łatwiej zapamiętać. Zaczęło się od tego, że polecił mi komendę app/console d:d:d, ale nie sprawdzaj jej, drogi Czytelniku! To taka sama zła komenda, jak w jednym mądrym poradniku o pisaniu skryptów w Bashu, gdzie jako przykład użycia przełączników podano komendę: rm -rf /. Autora tego poradnika, ktoś powinien mocno uderzyć w głowę...


P.S. Nowej koleżance poleciłem od razu instalację PHP w wersji 5.6, poza 7.0, który jest z systemem, bo trafi tak jak ja na starszy projekt i będzie się zastanawiać co się dzieje. Wystarczy, że teraz jej projekt nie ruszał, a to była tylko kwestia uprawnień do cache'a i logów. Polecana wersja i repozytorium znajduje się tutaj:

Ondřej Surý

Przy okazji podmieniłem domyślną wersję PHP w systemie:

update-alternatives --set php /usr/bin/php5.6

Pamiętać też należy, żeby przełączyć moduły w Apache'u. Teraz robi się to przez:

a2dismod php7.0 oraz
a2enmod php5.6

Można też ręcznie bawić się z symlinkami, ale w sumie powoli przekonuję się do używania tych komend.

Skończę ten wpis i zaraz to samo robię na domowym systemie, żebym nie miał niespodzianki jak przyjdzie pracować zdalnie.

2 komentarze:

  1. Bardzo fajnie opisujesz każdy dzień swojej pracy. Mam kilka pytań ale to na priv i to w czasie gdy nie będziesz zajęty :).
    Życze powodzenia i cierpliwości :)

    OdpowiedzUsuń
    Odpowiedzi
    1. Podejrzewam, że za jakiś czas to już nie będzie ciekawe, ale na razie odkrywam wielki świat programowania i sprawdzam sam siebie. :)

      Usuń