Events vs Commands

Zgłębiając tematykę Domain Driven Design zainteresowałem się różnicami pomiędzy zdarzeniami (events) a komendami (commands) oraz kiedy powinniśmy które stosować. I jeśli przyjrzymy się definicji to na pierwszy rzut oka wygląda jakby rozgraniczenie było oczywiste. Porównajmy zatem Events vs Commands.

Czytaj dalej „Events vs Commands”

Java znów darmowa! Dlaczego Oracle wycofuje się z płatnego JDK?

Od 14 września 2021 roku Java jest znów w pełni darmowa na nowej licencji Oracle No-Fee Terms and Conditions (NFTC). Przypomnijmy, że historia zatacza koło i wracamy do czasu z przed stycznia 2019 roku gdzie jeszcze wtedy JDK 8 było całkowicie darmowe i nie potrzeba było wykupywać wsparcia aby otrzymywać poprawki do najbardziej popularnej wersji Javy w tamtym okresie. Jeśli pragniesz przypomnieć sobie szczegóły tamtej zmiany zapraszam do artykułu, który to dokładnie opisuje: Czy Java jest nadal darmowa? Jeśli nie, to co teraz? Które JDK wybrać?

Czytaj dalej „Java znów darmowa! Dlaczego Oracle wycofuje się z płatnego JDK?”

How to copy a table between two databases in Oracle

Very often there is a need to test a scenario that executes on production. We can use for such task lower environment (if we have any) or we can try to mimic this on our own local machine. To do this we have to prepare everything as close to the original environment as possible. If you are using the Oracle database you would like to prepare test data on your local database. Here is one solution that can help you in preparing a local copy of production data fast.
In this tutorial, we will use Docker image as a local Oracle database and connect from inside Docker container to an external database using HAProxy tool.

Diagram that shows client connection to Oracle Container and connection between Docker container to External Oracle DB via local HAProxy - How to copy Oracle table
Connection from Oracle DB that is inside Docker container to an external database
Czytaj dalej „How to copy a table between two databases in Oracle”

Java Full-Stack Developer – Zadanie domowe

W poprzednim moim wpisie: Zadanie rekrutacyjne Java w 60 minut opisałem jak poradziłem sobie z rozwiązaniem zadania programistycznego podczas rozmowy rekrutacyjnej i jak bym to zrobił ponownie – już po rozmowie. Natomiast w tym artykule przedstawię zadanie domowe, które dostałem do rozwiązania jako wstęp przed interview. Na rozwiązanie zadania dostałem dwa tygodnie.

Oto zbiór wymagań jakie otrzymałem:

Czytaj dalej „Java Full-Stack Developer – Zadanie domowe”

Zadanie rekrutacyjne Java w 60 minut

Jeśli wybierasz się na rozmowę rekrutacyjna to na pewno zainteresuje Cię zadanie rekrutacyjne Java jakie dostałem do rozwiązania. Czas na zaimplementowanie zadania to 60 minut. Frameworki i biblioteki do wykorzystania dowolne. Opiszę tutaj jak to zrobiłem w trakcie interview oraz jakbym to zrobił w sytuacji mniej stresującej.

Treść zadania rekrutacyjnego Java:

Korzystając z publicznego REST API: https://jsonplaceholder.typicode.com napisz aplikację klienta, która będzie pobierać listę osób (users) wraz ich zadaniami do wykonania (todos). Aplikacja powinna pobierać i wypisywać pobrane dane cyklicznie co 5 sekund.

Czytaj dalej „Zadanie rekrutacyjne Java w 60 minut”

Java Shebang. Pisanie skryptów w Java?

Słowa „skrypt” i Java w jednym zdaniu? Czy to może się kojarzyć z czymś innym niż JavaScript? I co ciekawe nie jest to post na temat JavaScript. Chociaż o dziwo już dwa razy wymieniłem nazwę tego języka we wstępie. Dzięki wprowadzeniu JEP 330: Launch Single-File Source-Code Programs w JDK 11 mamy możliwość napisania kodu Java w kilka sekund i odpalenia go tak jakbyśmy uruchamiali zwykły skrypt bash-owy – tak po prostu!

Jak często zdarzyło Ci się podczas pisania skomplikowanego skryptu w bash-u lub innym języku skryptowym myśleć:

„hmm, gdyby tak można było to wszystko zrobić w Javie”

Czytaj dalej „Java Shebang. Pisanie skryptów w Java?”

Czy Java jest nadal darmowa? Jeśli nie, to co teraz? Które JDK wybrać?

Pewnie każdy z nas zastanawia się co teraz? Oracle ogłosił, że od stycznia 2019 nie będzie już publikował aktualizacji dla Java SE 8 do użytku komercyjnego. Jedyna możliwość aby dalej mieć wsparcie dla wersji 8 to zakupić subskrypcję od firmy Oracle.

Jednocześnie Oracle informuje, że najnowsza wersja JDK 11 zostaje wydana na całkowicie nowej licencji. Licencja ta nie zezwala na używanie Javy do jakiegokolwiek użytku komercyjnego takiego jak procesowanie danych, używanie w systemach produkcyjnych czy do innych aplikacji biznesowych używanych wewnątrz firmy. Oracle zezwala jedynie na development, testowanie, prototypowanie i używanie Javy 11 w celach demonstracyjnych. Do używania JDK 11 w celach komercyjnych potrzebujemy zatem subskrypcji.

Czytaj dalej „Czy Java jest nadal darmowa? Jeśli nie, to co teraz? Które JDK wybrać?”

Spring JMS Session Acknowledge Mode

Sprawdzimy dziś możliwości, jakie mamy używając Spring JMS jeśli chodzi o ponowne dostarczenie wiadomości w przypadku gdy coś poszło nie tak. Tak zwane redelivery jest supportowane przez ustawienie SessionAcknowledgeMode. 

Do wyboru mamy cztery tryby powiadomień:

Czytaj dalej „Spring JMS Session Acknowledge Mode”