Database migration – fast and easy with Flyway and Spring Boot

Migracja jest wręcz niezbędna. To dzięki niej mamy pewność że schemat naszej bazy danych na produkcji jest aktualny. Ułatwia współpracę zespołów developerskich, pozwala łatwo wersjonować strukturę.

Obecnie do dyspozycji mamy wiele rozwiązań, bardzo dużo z nich jest cross platformowych, nie jest dedykowana pod konkretną technologię oraz wspiera wiele współczesnych silników bazodanowych. Pliki migracyjne mogą być w wielu różnych formatach. W rozwiązaniach obsługujących równocześnie kilka różnych baz danych wciąż popularna jest konfiguracja za pomocą XML’a (m.in. LiquiBase). Mimo większej czasochłonności podczas ich przygotowywania niż w przypadku skryptów migracyjnych  napisanych w sql, często bywa to przewagą nad innymi rozwiązaniami. Dlaczego ? W takim podejściu narzędzie migracyjne generuje skrypty sql specyficzne dla wybranej, używanej bazy danych. Podczas gdy pisząc je samodzielnie musielibyśmy przygotować N wersji tego samego skryptu dla różnych silników. Continue reading “Database migration – fast and easy with Flyway and Spring Boot”

Spring Data JPA with Spring Boot – really fast start

Jakiś czas temu zrobiłem wstęp do Spring Boot. Nadeszła pora aby pójść krok dalej i rozpocząć persystencje danych w relacyjnej bazie danych z jego pomocą. Persystencje? Dla niektórych brzmi to groźnie, niezrozumiale. Oznacza to zapis danych w ściśle określony sposób, w zdefiniowanych strukturach. Jest to niezwykle łatwe i szybkie dzięki starterom dostarczanym przez Spring Boota. Continue reading “Spring Data JPA with Spring Boot – really fast start”

First month gone… – confession of developer, or… from resource life ;)

Nie zdążyłem się zorientować kiedy to się stało, właśnie minął miesiąc od “powstania” tego bloga. Pora na małą retrospekcję.

Udało się ! Wytrwałem, w miarę regularnie dostarczałem kolejne fragmenty kodu do projektu na “Daj Się Poznać” oraz posty o tym co robiłem oraz na temat wykorzystywanych narzędzi i frameworków. Blog powoli staje się nawykiem a nie warunkiem koniecznym konkursu. Pomysłów na kolejne posty jest wiele, rozpoczętych draftów również, ale z czasem bywa różnie. Continue reading “First month gone… – confession of developer, or… from resource life ;)”

“we don’t have time to write tests” == “we don’t have the skills to write tests quickly” – Spock for the rescue

Jakiś czas temu zobaczyłem gdzieś tytułowy cytat i pomyślałem: kurcze gościu ma sporo racji. Często piszemy mało testów bo nie mamy odpowiednich umiejętności żeby robić to szybko a biznes chce tylko nowe funkcjonalności które przynoszą mu kasę. Gościem od cytatu był @AndrzejKrzywda. 😉

W swojej pierwszej pracy przez rok napisałem aż 0 (zero) testów jednostkowych. Nikt nie widział potrzeby ich istnienia. Czym to skutkowało ? Chyba każdy potrafi sobie wyobrazić. Zmiana jednego if’a żeby poprawić buga skutkowała powstaniem 10 następnych. Ale “spoko mamy testerów oni to wykryją…” W sumie to wykrywali, ale więcej czasu poświęcałem na rozmowy z działem QA niż na kodowaniu. Całe szczęście te czasy minęły – zmieniłem pracę i od razu trafiłem do małego projektu gdzie było duże pokrycie testami. Irytacja gdy mała zmiana powodowała “wywalenie się” kilku testów była ogromna. Jako “świeżak” nie widziałem sensu w testowaniu – przecież to tyle czasu na pisanie kodu który nie daje nowej funkcjonalności. Jakby tego było mało w projekcie wszystkie testy były pisane w Groovy z użyciem Spock’a. Jako zagorzały fan Eclipse’a doinstalowałem potrzebne pluginy i zacząłem dodawać kolejne testy.  Wprawiony w Groovy’m trafiłem do kolejnego projektu. A tam czekały na mnie testy z użyciem JUnita…

Zrozumiałem zachwyt kolegów nad Spockiem 🙂

Continue reading ““we don’t have time to write tests” == “we don’t have the skills to write tests quickly” – Spock for the rescue”

Spring Boot – czyli jak w 5 minut powstało RESTful API

Czasy gdy wystartowanie projektu opartego na Springu trwało godzinami przemijają. A to wszystko za sprawą Spring Boot. Dzięki niemu *.jar wrócił do łask. Zapytacie “ale jak to? Przecież nie zrobię deploy’a na tomcata(…)”.

A po co tomcat, jetty czy jakikolwiek inny serwer aplikacji ? Przecież można prościej. Spring Boot domyślnie udostępnia nam embedowaną wersję Tomcata, który jest spakowany w naszym jarku, wystarczy go tylko uruchomić.

Continue reading “Spring Boot – czyli jak w 5 minut powstało RESTful API”

Logging in software development – it’s really unnecessary ?

O słuszności logowania zdarzeń  i wyjątków nie trzeba nikomu mówić, ale jak robić to dobrze ? Najprostsze logowanie błędów w javie można obsłużyć za pomocą strumieni out i err, ale czy to wszystko ? Czy wypisanie na standardowe wyjście stack trace jest dobrym i wystarczającym rozwiązaniem ? Otóż… czasami tak. Ale można to zrobić lepiej

I tu z pomocą przychodzą nam biblioteki takie jak java.util.logging(Java API),  log4j, logback, log4j2 czy fasada SLF4J. Wszystkie biblioteki ułatwiają znacznie pracę z logami, poprzez dostarczenie implementacji. Dla przeciętnego programisty oznacza to jedynie dodanie zależności do projektu oraz odpowiedniej konfiguracji. Większość loggerów umożliwia konfigurację przy pomocy xml, pliku properties lub programową w javie lub groovy. Continue reading “Logging in software development – it’s really unnecessary ?”

Java Code -> Apache Kafka -> Apache Storm – Event pipeline [DSP2017]

W ostatnim poście poruszyłem co to jest Kafka, jak działa oraz jak zacząć jej używać. Dziś zmierzymy się z wysyłaniem komunikatów w Javie do wybranego topic’a. W projekcie jest to moduł odpowiedzialny za odczyt stanów urządzeń podłączonych do RPi i wysyłania komunikatu o zmianie.  Następnie zobaczymy małą burzę, póki co z jednym piorunem, ale hałas robi i tak dobry 😉 Jeśli nie pamiętasz albo nie czytałeś poprzednich postów to odsyłam >tutaj< w celu zapoznania się z całością. Continue reading “Java Code -> Apache Kafka -> Apache Storm – Event pipeline [DSP2017]”

Apache Kafka – system kolejkowy dla każdego

Apache Kafka jest jednym z wielu popularnych message brokerów. Spośród dostępnych rozwiązań wyróżnia go wysoka wydajność. Jest łatwo skalowalny i odporny na awarie. Jest również przyjazny dla developera, nie ma potrzeby odpalania całego klastra, wystarczy jedna instancja, która może być na lokalnym środowisku. Kafka przechowuje strumienie komunikatów w kolekcjach zwanych topic’ami.

Continue reading “Apache Kafka – system kolejkowy dla każdego”

Vagrant, Kafka – git malina

 

Siema! Ostatnio było co nie co o sprzęcie, więc nadeszła pora aby zabrać się za oprogramowanie. Zaczynając projekt zakładałem jak najszybsze powstanie MVP. Ale… jak to z marudą bywa, pomyślałem sobie – sorry, nie jestem w pracy, deadline dla kolejnej funkcjonalności nie istnieje, to jest mój projekt i zrobię co będę chciał i na kiedy będę chciał. I tak narodziła się wspaniała idea – nauczę się czegoś fajnego, wykorzystam to co znam i to co chwiałbym znać w niekonwencjonalny sposób… Pomysł na szybkie skończenie trafił do piachu. Continue reading “Vagrant, Kafka – git malina”