Fibonacci, czyli wprawki (część 2: porównanie efektywności algorytmów, JMH)

W poprzednim odcinku…
Zdefiniowano zadanie, interfejs, testy i przedstawiono trzy implementacje spełniające zadane kryteria.
Teraz czas na porównanie wydajności poszczególnych implementacji

JMH wprowadzenie

JMH (Java Microbenchmark Harness) jest elementem OpenJDK. Potrafi policzyć czas wykonania dla każdej oznakowanej metody. Każdą z testowanych metod możemy odpowiednio parametryzować, określając ilość wątków, ilość niezależnych instancji (fork) na których metoda będzie testowana, ilość cykli rozgrzewania się JVM, ilość cykli testowych itd.

Czytaj dalej Fibonacci, czyli wprawki (część 2: porównanie efektywności algorytmów, JMH)

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

Refleksje po wysłuchaniu 22 podcastu “Ostrej piły”

Podkastów słucham od ponad roku. Zaczęło się od DevTalk. Myślę, że kiedyś napiszę czego, gdzie i dlaczego słucham ale dzisiaj nie o tym.

Ostatniego dnia kwietnia leżałem chory w łóżku i słuchałem Ostrej piły. Najpierw naprawdę świetny odcinek o retro a potem ten o zmianie pracy. Odcinek 22 “Ten w którym rozmawiamy o obawach przed zmianą pracy” wywołał we mnie potrzebę natychmiastowego przekazania autorom kilku swoich myśli. Zwlokłem się i napisałem. Teskst wyszedł dość długi, a że się napracowałem i napisałem bardzo szczerze, to poza komentarzem do odcinka postanowiłem opublikować go tutaj.

 

 

Ostra Piła
Ostra Piła

Czytaj dalej Refleksje po wysłuchaniu 22 podcastu “Ostrej piły”

JDD dzień drugi

Na afterparty nie piłem dużo, trzy piwa, niemniej obudziłem się w koszmarnej formie, może dlatego pierwszy wykład przyjąłem źle, bardzo źle

7. Write NOW, Run Anytime – Neil C Smith.

Zdecydowanie nie zrozumiałem idei tego wystąpienia. Nie chcę się pogrążać w oczach społeczności, więc nie napiszę tego co myślałem do chwili aż nie wyszedłem co nastąpiło chyba w piętnastej minucie ale niewątpliwie prezentacja na żywo programu pokazującego na ekranie wirujące, kolorowe bryły i wydającego dźwięki to nie jest coś co chciałoby się oglądać na pierwszej prezentacji po afterparty, sorry dla mnie było to w tym momencie niewłaściwe miejsce.

8. JUGmajster 2017 Award Ceremony. Czytaj dalej JDD dzień drugi

JDD dzień pierwszy

JDDPaździernik miesiącem spotkań i konferencji – wszyscy po wakacjach nabierają nowej energii i “życie” rusza pełną parą. Ja też wpadłem w ten wir, więc nastąpi ciąg przynajmniej czterech postów podsumowujących mój udział w kolejnych eventach.

Mój pierwszy październikowy event to JDD (https://jdd.org.pl/). Czytaj dalej JDD dzień pierwszy

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)

Projekt właściwy – start!

Zacząłem używać WordPressa i traktuję to, jako element projektu, bo

Giewont
W poszukiwaniu inspiracji moje ukochane miejsce w Zako (http://chatak34.pl/) – widok z okna.

gdyby nie DSP to nigdy chyba nie założyłbym bloga i nie nabył stosownych umiejętności. Mam nadzieję, że Maciej, szef konkursu uzna tą argumentację, jak nie… to zostało jeszcze 10 pełnych tygodni, czas przejść do projektu właściwego. Czytaj dalej Projekt właściwy – start!

Meetup, czyli jeden z bonusów bycia developerem

MeetUpKiedyś programowałem, podobno nieźle…, potem pozostając w IT miałem długą, bardzo długą przerwę od kodowania. Po kolejnym zakręcie kariery programowanie zaczęło mi się jawić jak raj utracony, marzyłem, żeby wrócić, marzyłem, kombinowałem i się zdecydowałem… może będzie okazja, żeby opisać cały proces podejmowania decyzji, jego konsekwencje, słynne wychodzenie ze strefy komfortu, trudne procesy rekrutacyjne itd. Dzisiaj o tym, co wydaje mi się jednym z najważniejszych bonusów powrotu a mianowicie o meetupach. Czytaj dalej Meetup, czyli jeden z bonusów bycia developerem