Monolit kontra mikroserwisy – obrazkowo

Monolit Mikroserwisy Kod jest dostępny na licencji MIT. Jednak niektóre rozwiązania mogą być objęte inną licencją. W takim przypadku jest, to zaznaczone. Artykuły są dostępne na licencji CC-BY. Jeżeli spodobał ci się ten wpis, to podziel się nim z innymi lub wesprzyj autora. Już za kilka dni będę mówił o JUnit 5 na kolejnej edycji […]

Iterator filtrujący, czyli kontrakt iteratora w dwóch odsłonach

Dziś o tym, że kontrakt zawarty w dokumentacji można interpretować na wiele sposobów oraz dlaczego SRP jest istotne. Na 4p padło pytanie, jak ogarnąć problem iteratora, który będzie przy okazji filtrował kolekcję. Sama implementacja jest stosunkowo prosta: Listing 1. Iterator filrtujący public class FilteringIterator<T> implements Iterator<Optional<T>> { private final Iterator<T> iter; private final Predicate<T> predicate; […]

Zachłannie, leniwie, współbieżnie – czego nauczyłem się od Jose Valima

Warto jeździć na konferencje i słuchać mądrzejszych do siebie. Warto, ponieważ często nie dowiemy się nic nowego, ale sposób przekazania wiedzy pozwoli na uporządkowanie kilku rzeczy. Jose na tegorocznych LambdaDays opowiadał o GenStage i Flow. Jednak nie to jest najważniejsze. Jakby przy okazji omówił trzy różne podejścia do pracy z danymi. Podejście zachłanne Jest najprostsze. […]

Trochę o mierzeniu kodu z jmh

jmh jest leciwym narzędziem. Jakoś w marcu stuknie mu już 4 lata. Ostatnio zwróciłem na nie uwagę przy okazji rozwiązywania problemu „czyj kod powinniśmy użyć, nasz czy hindusów”. Wiadomo, że do rozwiązywania tego typu problemów najlepiej sprawdzają się jakieś w miarę niezależne od nas narzędzia. Jako że pisanie mikro benchmarków jest sztuką, narzędzie powinno ładnie […]

W labiryncie

Tytuł: Mazes for Programmers Code Your Own Twisty Little Passages Autor: Jamis Buck Rok: 2015 ISBN: 978-1-68050-055-4 Dawno, dawno temu był taki serial W LabiryncieW, który uchodzi za pierwszą polską operę mydlaną. W tym samym czasie ja wraz z bratem zagrywaliśmy się w MaziacsW. Grę, która dla nas, gówniaków LVL 5 i LVL4, był na […]

Jak nauczyć się (kolejnego) języka?

Odpowiedź na to pytanie jest prosta – napisać coś w nim. Tyle tylko, że co mam napisać? Oczywiście najprościej jest naskrobać kolejnego klona Pet Clinic, własny system blogaskowy, albo bibliotekę (taką z książkami). Nie przeczę, są to zacne metody, ale mają pewną wadę. Wymagają od nas znajomości języka i narzędzi na pewnym minimalnym poziomie. Bez […]

Jedno z dwojga – Either w akcji

Na początek kilka spraw organizacyjnych. Jak widać pisanie po wiosennym ruchu idzie mi średnio 🙂 Ale się staram. Powodów jest kilka, jeden ma 5 lat, drugi 2 miesiące 🙂 Do tego dość dużo pracy i zdecydowanie za krótka doba. 26 listopada będę mówił o Elixirze na Infomeet. Jak chcecie posłuchać dlaczego moim zdaniem warto, to […]

Słowo o funkcjach anonimowych w Elixirze

Na wczorajszym spotkaniu wroc-fp mieliśmy newsa w postaci „będzie grupa elixirowa” i tak przy okazji padło pytanie, jak działa operator & w elixirze. Podstawy Jak wiadomo, chociażby z tego artykułu, jedną z cech praktycznego programowania funkcyjnego jest możliwość przekazywania funkcji jako parametrów i zwracania ich jako wyników. Czasami potrzebujemy wykonać pewną operację przyjmującą jako argument […]

Koniec Eldorado II

Jakieś dwa lata temu brałem udział w dyskusji na liście warszawskiego JUGa. Po niej zacząłem popełniać tekst „Koniec Eldorado”, dlatego ten ma II w tytule. Tekstu nigdy nie dokończyłem, ale nie szkoda mi tego. Wtedy brakowało mi dobrych przykładów, które potwierdziły by moje przypuszczenia. Niestety przykłady znalazły się szybciej niż sądziłem. Zastanawiam się czy to […]

Jak zacząć zabawę z TDD od strony praktycznej

TDD, czyli programowanie sterowane testami jest jedną z tzw. zwinnych praktyk programowania. Zazwyczaj, niesłusznie, ogranicza się testy do testów jednostkowych. Samo TDD nie definiuje z jakimi dokładnie testami pracujemy. Jednakże testy jednostkowe jako najprostsze do ogarnięcia są też uznawane za kwintesencję TDD. Dziś chciałbym przedstawić wam pewien sposób pracy, który pozwala na lepsze przyswojenie sobie […]