Fibonacci, czyli wprawki (część 1: implementacje)

Niniejszy tekst opiera się na pomyśle wygenerowanym w moim sympatycznym korpo. Główne cele powstania tekstu to:

  • Wprowadzenie do podstaw testowania
  • Pokazanie, że dane zagadnienie można rozwiązać na różne sposoby
  • Pokazanie roli benchmarków w procesie powstawania kodu i oceny rozwiązań. Jak wybierając różne implementacje możemy wpływać na wydajność rozwiązania
  • I z zupełnie innej bajki. Pokazanie przy okazji implementacji serwera NIO, czyli czegoś co jest dzisiaj gorącym hitem.

Dziękuję Dorocie (sąsiadka w open space), która bezpośrednio mnie zainspirowała do powstania tego tekstu. Bez Ciebie Dorota, by nie powstał.

Pierwsza część wpisu to (jak mawiał klasyk) oczywista oczywistość. Implementacje algorytmu generowania liczb Fibonacciego są ogólnie znane, niemniej przytoczę je tutaj, by w dalszych częściach odnieść się do konkretnych implementacji.

Czytaj dalej Fibonacci, czyli wprawki (część 1: implementacje)

AlcoTest czyli Spock, alternatywa dla JUnit i (być może) dla Gherkina

W ramach zajęć rozwijających w moim (skądinąd bardzo fajnym) korpo, dostałem zadanie rozpoznania BDD (Behavior-driven development) na przykładzie Gherkina i Cucumbera.

Pierwszy kontakt z tymi narzędziami nie jest przyjemny i oczywisty, zacząłem więc pytać mentorów w korpo, JUGowe community i siebie o sens stosowania tego narzędzia.

Odpowiedź i zrozumienie przyszły szybciej niż się spodziewałem (głównie, na świetnych warsztatach zorganizowanych przez Wrocław JUG i Colibrę z Michałem Michalukiem jako mistrzem ceremonii. W konsekwencji warsztatów pojawił się pomysł, żebym opisał jak DDD i Event Storming rozumie, w miarę zaawansowany junior, który jeszcze ani razu nie przeczytał Erica Evansa a wiedzę czerpie z licznych konferencji. I ja ten temat kupuję, wpisuję do kolejki i mam nadzieję, że przy tej okazji pojawi się również temat BDD).

Wracając do meritum. W czasie rozmów o BDD kilka osób stwierdziło, że produkcyjnie używają Spocka i są bardzo zadowoleni. Musiałem sam spróbować, zwłaszcza, że nigdy nie używałem ani Grooviego ani Spocka. Poniżej opis tego doświadczenia.

Wyobraźmy sobie prosty alkomat odpowiadający na pytanie, czy w danej chwili możemy prowadzić auto.

Czytaj dalej AlcoTest czyli Spock, alternatywa dla JUnit i (być może) dla Gherkina

MeetUp – Programowanie w Javie 8

Wpis dotyczy wydarzenia z 28 września 2017. Odświeżając wiedzę o nowych ficzerach w Jawie 8, 9, 10,…. trafiłem na prawie skończony wpis i postanowiłem go skończyć

Z definicji staram się uczestniczyć we wszystkich wydarzeniach mających słowo “Java” w tytule. Tym razem trafiłem na meetup z cyklu “TechTalk with Capgemini” pod obiecującym tytułem “Programowanie funkcyjne w JAVIE“. Spotkanie zdecydowanie spełniło swój cel. Prelegent Andrzej Listowiecki czarował nas kodowaniem na żywo i robił to interesująco i sprawnie, jakby wywołał magicznego bota, który generował kod adekwatnie do wypowiadanych słów.

Zaczynając pisać wyobrażałem sobie, że zaprezentuję programowanie funkcyjne, materiał okazał się jednak zbyt bogaty. Dzisiaj jedynie o nowych ficzerach, a programowanie funkcyjne mam nadzieję zaprezentować w którymś z kolejnych wpisów.

Kompletny prezentowany niżej kod znajduje się na githubie: https://github.com/RobertPod/FunctionalProgrammingExercises/tree/BlogB czyli w branchu BlogB.

Kod powstawał zgodnie z metodologią TDD – najpierw definiujemy potrzebę biznesową, potem piszemy test a na końcu dopisujemy kod, który spełnia napisany test.

Przechodząc do rzeczy: Czytaj dalej MeetUp – Programowanie w Javie 8

JUnit 5 w IntelliJ IDEA i Maven (jak uruchomić, czyli powrót do blogowania)

Cześć! po dłuuuugiej przerwie.

Na początek w dwóch zdaniach się wytłumaczę. Od trzeciego kwietnia

IntellijIDEA
IntellijIDEA

zacząłem pracę przy nowym projekcie. Projekcie na tyle ciekawym (może kiedyś o tym będzie), że pochłonął mnie i mój czas zupełnie bez reszty. O blogowaniu i pisaniu konkursowego projektu nie było mowy. Oczywiście nie ma róży bez ognia, w projekcie tym jest bardzo mało algorytmiki dlatego dla podtrzymania umiejętności implementacji algorytmów podejmuję różne działania głównie związane z HackerRank i nie tylko. Czytaj dalej JUnit 5 w IntelliJ IDEA i Maven (jak uruchomić, czyli powrót do blogowania)