Michał

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ć obsługiwane 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 umieszczony 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 dalej »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 dalej »Kopiowanie obrazów Dockerowych z jednego repozytorium do innego

Numerownie buildów w AWS CodeBuild

Ostatnio zdarzył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 funkcjonalności, jaką jest numerowanie kolejnych buildów, tak żebym 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 są udostępniane jako zmienne środowiskowe dla naszego buildu. Po ukończeniu budowania projektu możemy podbić numerek np. przy użyciu bashowego jednolinijkowca.

Czytaj dalej »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 dalej »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 dalej »pbcopy i pbpaste: manipulowanie schowkiem z poziomu linii poleceń

Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate

Od wersji 9.4 PostgreSQL oferuje nowy typ danych, którym jest JSONB. Wcześniej w wersji 9.2 został wprowadzony typ JSON, który przechowuje dane w tym formacie w wersji tekstowej. Wymagało to parsowania danych przed wykonaniem jakiejkolwiek operacji na nich. JSONB przechowuje zdekomponowane dane binarne, dzięki czemu mamy do nich szybszy dostęp. Dodatkowo możemy ich użyć do tworzenia indeksów, joinów itp.

Wygląda to bardzo pięknie i równie dobrze sprawdza się w praktyce, jednak Hibernate nie wspiera natywnie tego rodzaju pól. Można to jednak obejść, tworząc własny typ danych oraz mówiąc mu jak może ten typ zserializować do formatu JSON. W tym poście przejdziemy przez proces tworzenia własnego typu.

Czytaj dalej »Wsparcie dla pola typu JSONB w PostgreSQL dla Spring Data JPA + Hibernate
Amazon Web Services

AWS – Amazon Web Services – co to jest i w jaki sposób mogę to wykorzystać?

Czym jest AWS i jakie usługi oferuje? Często jest określany jako chmura, cloud lub dostawca usług (service). Ale co to tak właściwie dla nas znaczy i jakie usługi nam dostarcza?

Lista usług, które nam dostarcza AWS, jest bardzo długa. Postaram się opisać te najpopularniejsze, z którymi można się zetknąć na samym początku i od których warto zacząć.

Czytaj dalej »AWS – Amazon Web Services – co to jest i w jaki sposób mogę to wykorzystać?

Ciekawe przykłady zastosowania streamów w Javie

Streamy to potężne narzędzie, które pojawiło się wraz z nadejściem Javy 8. Można za ich pomocą rozwiązać bardzo wiele problemów, które na pierwszy rzut oka wydają się niemożliwe do rozwiązania z pomocą streamów. Jest to pierwszy z serii wpisów, gdzie postaram się zaprezentować ciekawe pomysły na ich zastosowanie.

Czytaj dalej »Ciekawe przykłady zastosowania streamów w Javie
Spring Boot Test

Spring Boot Test – testowanie aplikacji w Spring Boocie

Spring Boot Test to zestaw narzędzi ułatwiający nam testowanie aplikacji napisanych z użyciem Springa. Testy w aplikacji są bardzo ważnym elementem, który zaniedbany szybko odbije się na jakości kodu i ilości błędów, które się pojawią. Ilość pracy, którą trzeba później włożyć w naprawienie zaniedbanych testów, jest nieporównywalnie duża do czasu, który można zainwestować, tworząc je od razu. Testowanie jest ważne z kilku powodów:

  • Łatwo możemy znaleźć błędy w naszym kodzie,
  • Pomagają w utrzymaniu kodu – dają pewność, że nie zepsuliśmy czegoś przy wprowadzaniu zmian,
  • Dokumentuje użycie – można zaglądnąć do kodu testów, aby dowiedzieć się, jak używać jakiejś biblioteki, oraz pozwalają na szybkie i łatwe sprawdzenie zachowania biblioteki/języka,
  • Dokumentują założenia projektowe – w testach możemy wyrazić oczekiwane zachowanie aplikacji, bywa, że ktoś przeoczy jakieś założenia w projekcie, lub nie dopilnuje, aby wszystko działało, tak jak trzeba przy zmianach. Jeśli mamy dobre testy – one powinny to wyłapać.

Często inne osoby, które będą pracować z naszym kodem, mogą łatwo coś zepsuć. Testy po pierwsze dopilnują, aby tak się nie stało. A po drugie dają pewność osobie, która pracuje z kodem, że nic nie zepsuła. Dzięki temu może szybciej skończyć zmiany i wdrożyć nową funkcjonalność, zamiast marnować czas na sprawdzanie, czy wszystko działa, tak jak należy.

Czytaj dalej »Spring Boot Test – testowanie aplikacji w Spring Boocie