Switch expressions

Switch expressions w Java 13 – nowa składnia switchy

Switch expressions to kolejna z nowości w Javie 13. Dzięki tej zmianie, kod może wyglądać dużo prościej i czytelniej, a co za tym idzie będzie się pojawiać mniej błędów. Wciąż jest to wersja preview funkcjonalności, która pojawiła się w Javie 12. Jednak po feedbacku ze strony programistów doczekała się kilku zmian. W nowej odsłonie języka zdecydowano się pozostawić ją nadal jako preview tego co nas czeka w kolejnych wydaniach.

Całość zmian opisana jest w JEP 354 (JEP – Java Enhancement Proposal). Wspominałem też o tych zmianach w poprzednim wpisie o wszystkich nowościach w Javie 13. Jednak jest to dość obszerny i ciekawy temat, więc zdecydowałem się poświęcić mu osobny wpis. Pokażę w nim jak używać nowej składni oraz jakie zmiany zaszły w wykorzystaniu starej na różnych przykładach. Dodam też porównanie jak by to wyglądało przed wprowadzeniem zmian.

Czytaj więcej »Switch expressions w Java 13 – nowa składnia switchy

Text Blocks Java 13 – czyli bloki tekstu w kodzie

  • Michał 
  • Java

Text Blocks to jedna z nowych funkcjonalności która weszła jako preview w Javie 13. Oznacza to, że jest to nowy element języka, w pełni wyspecyfikowany, w pełni zaimplementowany, ale może zostać jeszcze zmieniony po informacji zwrotnej od developerów którzy zaczną z niej korzystać.

O blokach tekstu wspomniałem już w poprzednim artykule o wszystkich nowościach w Javie 13: https://blog.mloza.pl/java-13-nowe-funkcjonalnosci-szczesliwej-trzynastki/. W tym poście postaram się napisać szerzej i podać więcej przykładów wykorzystania. Cała specyfikacja jest dostępna tutaj: JEP 335.

Bloki tekstu ułatwiają pracę z wielolinijkowymi Stringami. Nie trzeba ich konkatenować żeby dobrze wyglądały i nie psuły czytelności kodu. Nie musimy dodawać specjalnych znaków do łamania linii. Nasz kod też będzie lepiej wyglądał ponieważ możemy dodać wcięcia w kodzie które zostaną usunięte w preprocesingu. Jeśli programowałeś w innych językach (np. w Pythonie) to powinieneś być zaznajomiony z tą koncepcją.

Czytaj więcej »Text Blocks Java 13 – czyli bloki tekstu w kodzie

Java 13 – nowe funkcjonalności sczęśliwej trzynastki

17 września pojawiła się nowa wersja Javy oznaczona numerkiem 13. Mam nadzieję, że nie będzie to pechowa wersja i będzie działać jak trzeba. Java 13 wprowadza kilka nowych funkcjonalności. Poniżej możesz znaleźć listę JEPów (Java Enhancement Proposal) wprowadzonych w nowym wydaniu wraz z odnośnikami do oryginalnych opisów.

Czytaj więcej »Java 13 – nowe funkcjonalności sczęśliwej trzynastki

Wyłączenie przechwytywania klawiszy multimedialnych przez Chrome

Po którejś aktualizacji przeglądarki Chrome zauważyłem, że klawisze do sterowania multimediami przestały być obłsugiwane przez Spotify. Nie mogłem już zatrzymywać odtwarzania ani przełączać piosenek, zamiast tego sterowało to YouTubem otwartym gdzieś w którejś zakładce o której najczęściej już dawno zapomniałem. Tak samo działo się ze sterowaniem klawiszami znajdującymi się przy słuchawkach. Było to denerwujące gdy zamiast zatrzymać odtwarzanie piosenki nagle włączał się totalnie losowy filmik umieszpny na którejś z otwartych kart przeglądarki. Oddziaływało to również na jakieś filmiki reklamowe zamieszczane na stronach, więc często w losowych momentach traciłem panowanie nad odtwarzaczem. Na szczęście można bardzo łatwo wyłączyć tą funkcjonalność i znów cieszyć się możliwością sterowania wcześniej używanym odtwarzaczem muzyki.

Czytaj więcej »Wyłączenie przechwytywania klawiszy multimedialnych przez Chrome

Kopiowanie obrazów Dockerowych z jednego repozytorium do innego

Czasami zachodzi potrzeba przeniesienia obrazu kontenera Dockerowego z jednego repozytorium do jakiegoś innego. Może to być spowodowane przez to, że nasze usługi są zintegrowane z konkretnym dostawcą i potrzebują mieć obraz w tym konkretnym repozytorium. Czasem chcemy pobrać obraz z publicznego repo, przetestować go, doinstalować jakieś pakiety, zmodyfikować konfigurację i wrzucić do prywatnego repozytorium gdzie trzymamy tylko whitelistowane obrazy. Możemy tego dokonać w kilku prostych krokach.

Czytaj więcej »Kopiowanie obrazów Dockerowych z jednego repozytorium do innego

Numerownie buildów w AWS CodeBuild

Ostatnio zdażyło mi się eksperymentować z AWS CodeBuild, CodeDeploy i CodePipeline jako alternatywy dla TeamCity/Jenkinsa. Konfiguracja i użycie tych narzędzi jest bardzo proste i wygodne, szczególnie jeśli cała infrastruktura jest umieszczona w AWS. Jednak brakowało mi prostej funkcjonalości jaką jest numerowanie kolejnych buildów, tak żębym mógł użyć tego numeru przy releasowaniu biblioteki czy kontenera dockerowego.

Po krótkim researchu okazało się, że można taką numerację dość łatwo dodać używając kolejnej usługi Amazona jaką jest AWS System Manager Parameter Store (SSM). Możemy tam przechowywać własne parametry które potem sa udostępniane jako zmienne środowiskowe dla naszego buildu. Po ukończeniu budowania projektu, możemy podbić numerek np. przy użyciu bashowego jednolinijkowca.

Czytaj więcej »Numerownie buildów w AWS CodeBuild

Spring Boot – Spring Data JPA część II: Powiązania między tabelami

W pierwszej części postu, Spring Boot – Interakcja z bazą danych czyli Spring Data JPA, opisywałem jak się połączyć z bazą i jak stworzyć pierwszą encję. W tej części postaram się pokazać jak możemy zdefiniować powiązania pomiędzy encjami oraz jak możemy wykonywać zapytania z ich użyciem.

Czytaj więcej »Spring Boot – Spring Data JPA część II: Powiązania między tabelami

pbcopy i pbpaste: manipulowanie schowkiem z poziomu linii poleceń

Kopiowanie i wklejanie jest jedną z najczęściej wykonywanych akcji przez użytkowników komputera. Narzędzia pbcopy i pbpaste znajdujące się w MacOS pozwalają te zadania wykonywać z poziomu linii komend. Możemy bezpośrednio wstawiać do schowka zawartość pliku czy rezultat wykonania komendy, jak również wyświetlać zawartość schowka lub zapisać go do pliku. Przejdźmy przez kilka przykładów aby zaprezentować możliwości tego prostego narzędzia. 

Czytaj więcej »pbcopy i pbpaste: manipulowanie schowkiem z poziomu linii poleceń