Ukryty skarb GitHuba

Krzysztof Chruściel
02-10-2020
GIT

Jaki piękny, clickbaitowy tytuł udało mi się wymyślić tym razem. W niedalekiej przyszłości planujemy przenieść z się platformy Wordpress na jeden z generatorów statycznych stron jak Hexo czy Hugo. Podczas “zabawy” z generatorami (które przechowują najczęściej wygenerowane strony w repozytorium zdalnym) udało mi się natrafić na ukryty skarb Github’a.


Czytaj więcej

Java 15 - JEP 360 Sealed Classes

Krzysztof Chruściel
25-09-2020
Java

Piętnastego sierpnia została wydana nowa wersja Javy, okraszona numerem 15. Wraz z pojawieniem się kolejnej wersji dostaniemy pakiet kilku nowych usprawnień i funkcjonalności. Jedną z nich (w trybie preview) są “zapieczętowane” klasy czy JEP 360 Sealed Classes. Zapraszam do wpisu, aby dowiedzieć się jakie problemy próbuje rozwiązać JEP 360.


Czytaj więcej

Flame Graphs - czy aby na pewno nie pali się na produkcji?

Krzysztof Chruściel
28-04-2020
Java

Flame Graphs jest techniką, która pozwala zlokalizować nam tak zwane “bottlenecki“ w naszym kodzie. Dzięki swojej graficznej reprezentacji przypominającej płomienie jesteśmy w stanie w bardzo łatwy sposób zaobserwować procesy, które konsumują największą ilość czasu CPU. Zapraszamy do wpisu aby zobaczyć jak wygenerować własne “płomienie“.


Czytaj więcej

Co jeśli pula wątków jest zajęta? - RejectedExecutionHandler

Krzysztof Chruściel
20-03-2020
Java

Aby przyśpieszyć wydajność naszych aplikacji bardzo często decydujemy się na zrównoleglenie pracy. Przy zmianie modelu pracy dostarczamy pulę wątków, która będzie odpowiedzialna za równoległe wykonywanie zadań. Czasami jednak przy pracy w wielowątkowym środowisku może zdarzyć się sytuacja, w której wysycimy całą pulę wątków. Java dostarcza mechanizmy (polityki), które instruują pulę jak ma się zachować w przypadku wysycenia zasobów.


Czytaj więcej

Plik Jar z kilkoma wersjami plików - Multi-Release Jar

Krzysztof Chruściel
02-09-2019
Java

W dzisiejszym wpisie wykorzystamy funkcjonalność, która pojawiła się wraz z wydaniem Javy 9. Jest to funkcja o nazwie Multi-Release Jar. Pozwala ona na dostarczenie jednego artefaktu zawierającego pliki w różnych wersjach dla poszczególnych edycji Javy. Zapraszam po więcej szczegółów.


Czytaj więcej

#7 Spring Boot 2 – Lazy Loading - szybsze ładowanie aplikacji

Krzysztof Chruściel
07-06-2019
Java, Spring, Spring Boot

Kolejna nowa funkcjonalność/usprawnienie, która udostępniona została w wersji 2.2.0 frameworku Spring Boot 2, dotyczy szybszego startowania aplikacji. Autorzy Springa udostępnili nowy wpis, który można umieścić w pliku application.properties. Wpis ten sprawia, że nasza aplikacja uruchamia się szybciej. Zapraszam do lektury, aby dowiedzieć się, co to za nowa właściwość!


Czytaj więcej

#6 Spring Boot 2 – WebMvc.fn

Krzysztof Chruściel
31-05-2019
Spring Boot 2

Wraz ze Spring Boot 2 w wersji 2.2.0 pojawiła się nowa funkcjonalność: WebMvc.fn. Jest to implementacja funkcyjnego podejścia do definiowania endpointów, podobnie jak ma to miejsce przy wykorzystaniu Spring WebFlux. O tym, jak to rozwiązanie działa w WebFlux, można było przeczytać w jednym z naszych artykułów: #1 Spring Boot 2 – Router functions. Dziś sprawdzimy, jak to funkcyjne podejście sprawdza się w klasycznym stosie MVC.


Czytaj więcej

#5 Spring Boot 2 - Graceful Shutdown

Krzysztof Chruściel
27-05-2019
Spring Boot 2

Graceful Shutdown jest mechanizmem, który pozwala na zamknięcie aplikacji w “poprawny” sposób. Ale co tak naprawdę oznacza, że zamykamy aplikację w “poprawny” sposób? Odpowiedzi na to pytanie będziemy szukać w dzisiejszym artykule. Implementację mechanizmu Graceful Shutdown oprzemy na przykładzie aplikacji napisanej przy wykorzystaniu Spring Boot 2.


Czytaj więcej

#4 Spring Boot 2 - Actuator - własny endpoint

Krzysztof Chruściel
10-05-2019
Spring Boot 2

W poprzednim wpisie #3 Spring Boot 2 – Actuator poznaliśmy narzędzie Actuator. Jest to mechanizm, który dostarcza metryki oraz dodatkowe informacje na temat aplikacji. Out-of-the-box Actuator daje nam między innymi możliwość sprawdzenia metryk wirtualnej maszyny Javy czy statusu naszej aplikacji. Jednakże, czasem potrzebujemy dodać własny endpoint dostarczający dodatkowe informacje o naszej aplikacji. W tym wpisie opowiemy sobie, jak dodać taki własny endpoint.


Czytaj więcej

#3 Spring Boot 2 - Actuator

Krzysztof Chruściel
03-05-2019
Java, Spring Boot

Autorzy rozwiązania Spring Boot bardzo mocno stawiają na to, że aplikacja napisana z wykorzystaniem ich frameworku powinna być production-ready. Zgodnie z 12 factor manifesto, aplikacja sama w sobie powinna dostarczać informacji na temat swojej telemetrii. Projekt Actuator jest mechanizmem, który przybliża nas do tego celu, dostarczając podstawowe metryki oraz informacje o stanie aplikacji.


Czytaj więcej

Relacja - 4Developers 2019

Krzysztof Chruściel
26-04-2019
Konferencje

8 kwietnia 2019 odbyła się kolejna Warszawska edycja konferencji 4 Developers. Jest to spotkanie sympatyków świata IT z różnych działów. W tym roku dostępnych było aż czternaście ścieżek. Każdy z uczestników z pewnością znalazł temat dla siebie. Jak co roku odbyły się konkursy, w których można było wygrać książki, kubki oraz koszulki (nam się udało). Zapraszamy do relacji z wydarzenia!


Czytaj więcej

Helm - menedżer paczek dla Kubernetesa

Krzysztof Chruściel
12-04-2019
Cloud

Kolejnym narzędziem (po minikube) ułatwiającym pracę z klastrem Kubernetes jest Helm. Jest to menedżer paczek, który ułatwia wgrywanie aplikacji na nasz klaster. Dostarcza on także możliwość parametryzowania zasobów wgrywanych na klaster, co pozwala na przygotowywanie różnych wersji naszych paczek.


Czytaj więcej

Minikube - lokalny klaster Kubernetes

Krzysztof Chruściel
05-04-2019
Java

Dosłownie kilka dni temu wydana została wersja 1.0.0 narzędzia minikube! Jest to narzędzie, które pozwala uruchomić klaster Kubernetes na naszej lokalnej maszynie. Sprawia to, iż nie musimy płacić dostawcy za klaster w przypadku testów wszystkich możliwości Kubernetes’a. Aby poznać to potężne narzędzie zapraszam do wpisu.


Czytaj więcej

#1 Spring Basic - Przygotowanie konfiguracji

Krzysztof Chruściel
22-03-2019
Spring

W poprzednim wpisie opisałem czym jest Spring i jaki problem rozwiązuje. Tym razem chciałem wam przedstawić jak zacząć swoją przygodę ze Springiem. Jako pierwszy temat zaczniemy od sposobów tworzenia konfiguracji beanów. Konfiguracje można tworzyć na dwa sposoby, jawnie korzystając z adnotacji @Bean oraz automatycznie korzystając z adnotacji @Component.


Czytaj więcej

Spring MVC - własny walidator

Krzysztof Chruściel
01-03-2019
Java

W dzisiejszym wpisie pokażę Wam jak szybko można stworzyć własny walidator. Spring oferuje szereg podstawowych walidatorów, które zaspokajają większość naszych potrzeb. Czasem jednak pojawiają się niestandardowe wymagania, które chcemy obsłużyć. Wtedy warto napisać swoje własne rozwiązanie. Zapraszam do wpisu po więcej szczegółów.


Czytaj więcej

Java + GitHub + Travis CI czyli darmowe continuous integration

Krzysztof Chruściel
08-02-2019
Java

W aktualnych czasach ciężko wyobrazić sobie proces wytwarzania oprogramowania bez CI (ciągła integracja). W środowisku JVM najpopularniejszymi narzędziami do ciągłej intergacji są Jenkins i Bamboo. Niestety przy małych projektach lub projektach typu open source nie chcemy wykupywać maszyn, aby uruchomić proces CI. Rozwiązaniem tego problemu jest darmowe narzędzie Travis CI, które jest cloud’owym systemem ciągłej integracji.


Czytaj więcej

Jak działa Class Loader

Krzysztof Chruściel
01-02-2019
Java

Kolejny artykuł z serii o Class Loaderach. W dwóch poprzednich poznaliśmy podstawowe Class Loadery wbudowane w JVM oraz to, w jaki sposób możemy stworzyć własny Class Loader. Dziś na tapetę weźmiemy to, co dzieje się pod spodem Class Loadera. Zapraszamy!


Czytaj więcej

Własny Class Loader

Krzysztof Chruściel
25-01-2019
Java

W poprzednim wpisie pozyskaliśmy informację na temat wbudowanych w JVM ClassLoaderów. Dowiedzieliśmy się także, że część z nich napisana jest w Javie. Informacja ta sprawia, że sami możemy napisać własny ClassLoader. Tworzenie własnych ClassLoaderów jest tematem dzisiejszego wpisu. Zapraszamy!


Czytaj więcej

Domyślne Class Loadery w Javie

Krzysztof Chruściel
18-01-2019
Java

Class Loadery to mechanizm odpowiedzialny za ładowanie klas. Pełnią one bardzo istotną rolę w trakcie działania Wirtualnej Maszyny Javy (JVM). Class Loadery to klasy napisane w Javie… No dobrze, to kto załadował pierwszą klasę? Zapraszam do wpisu, aby się tego dowiedzieć!


Czytaj więcej

Stos operandów i tablica zmiennych lokalnych

Krzysztof Chruściel
11-01-2019
Java

Aby zrealizować obietnicę “Write Once Run Everywhere“, autorzy Javy musieli rozwiązać kilka problemów. Jednym z nich była zmienna liczba rejestrów procesora. Rozwiązaniem tego problemu było zastosowanie stosu jako struktury danych do wykonywania operacji na operandach. Aby przekonać się, jak to działa “pod spodem”, zapraszam do wpisu!


Czytaj więcej

Sprawdzamy rozmiar naszych obiektów z Java Object Layout

Krzysztof Chruściel
04-01-2019
Java

Jeśli ktoś, podobnie jak ja, zastanawia się: “ciekawe, ile ten obiekt zajmuje miejsca w pamięci?“, to mam dla was dobrą wiadomość! Java Object Layout (JOL) to miniprogram, który potrafi obliczyć, jaki będzie rozmiar obiektu przechowywanego w pamięci. Oczywiście dobrze wiemy, że w aktualnych czasach pamięć jest “tania”, jednakże jeśli chcielibyśmy się przekonać, który obiekt zajmuje mniej miejsca w pamięci, zapraszam do artykułu.


Czytaj więcej

Manipulacja kodem bajtowym z JiteScript

Krzysztof Chruściel
28-12-2018
Java

Praca z kodem bajtowym zawsze uczy mnie czegoś nowego. Postanowiłem dodać ten wpis, aby zachęcić was do eksperymentów. Aktualnie kompilator oraz JIT (Just-In-Time Compiler) wykonują za nas całą robotę. Prowadzi to do sytuacji, w których bardzo wiele aspektów języka przyjmujemy na zasadzie “no bo tak jest”. Odczarujmy trochę ten kod bajtowy!


Czytaj więcej

Daemon Thread - wątek demoniczny

Krzysztof Chruściel
21-12-2018
Java

Chociaż tytuł wpisu brzmi bardzo złowieszczo to nie zapowiada on niczego złego. Pojęcie wątków demonicznych pojawiło się już we wpisie związanym z ThreadFactory, natomiast dziś chciałbym przedstawić wam jak tworzyć takie wątki. Ponadto odpowiemy sobie na pytanie kiedy warto stosować ten typ zadań.


Czytaj więcej

Exchanger - czyli wymieniamy obiekty pomiędzy wątkami

Krzysztof Chruściel
14-12-2018
Java

Dalej pozostajemy w tematach związanych z pakietem java.util.concurrent. Dzisiejszy synchronizator pracy to Exchanger. Jak nazwa sugeruje służy on do wymiany danych pomiędzy dwoma wątkami. Podczas tworzenia tego synchronizatora określamy jakiego typu dane chcemy wymienić. Dane zostaną wymienione dopiero, gdy dwa wątki będą gotowe.


Czytaj więcej

Stany wątków w Javie

Krzysztof Chruściel
07-12-2018
Java

Stany wątków są częstym pytaniem na rozmowie kwalifikacyjnej z działu wielowątkowości. W Javie wątki mogą znajdować się w sześciu stanach. Każda zmiana stanu poprzedzona jest jakimś zdarzeniem. Co to za zdarzenia? Zapraszam do wpisu, aby się o tym dowiedzieć!


Czytaj więcej

Relacja – CoreDump Kraków 2018

Krzysztof Chruściel
30-11-2018
Konferencje

W listopadzie 2018 roku w Krakowie odbyła się pierwsza edycja konferencji CoreDump. Była to od dłuższego czasu wyczekiwana przez nas konferencja. Wyczekiwana, ponieważ znając organizatorów spodziewaliśmy się dużej ilości ciekawych informacji. Zapraszamy na krótką relację z tego wydarzenia.


Czytaj więcej

CyclicBarrier - cykliczny synchronizator

Krzysztof Chruściel
23-11-2018
Java

Ostatnio poznanym sychronizatorem pracy był CountDownLatch. Był to bezpieczny wątkowo mechanizm odliczania, który pozwala uruchomić zadanie, gdy licznik wynosi zero. Podobnym sposobem synchronizacji pracy jest CyclicBarier. Różni się on nieznacznie od CountDownLatch, ale po szczegóły zapraszam do wpisu.


Czytaj więcej

CountDownLatch - blokujące odliczanie

Krzysztof Chruściel
16-11-2018
Java

Pakiet java.util.concurrent wprowadził wiele ciekawych i ułatwiających codzienną pracę rozwiązań. Jednym z nich jest klasa CountDownLatch, która jest tematem tego wpisu. Jest to implementacja, która może być wykorzystana do bezpiecznego wątkowo odliczania. Możecie się zastanawiać do czego może przydać się tak prosty mechanizm jak odliczanie, zapraszam więc do wpisu po wyjaśnienia.


Czytaj więcej

java.time.Clock - testowanie czasu

Krzysztof Chruściel
02-11-2018
Java, Testing

Proces testowania przez wielu z nas traktowany jest podobnie jak sztuka. Dobre testy powinny spełniać wiele czynników by mogły być nazwane “dobrymi”. Jednym z nich jest brak zależność od czasu. Nasze testy powinny być tak szybkie jak to tylko możliwe oraz nie powinny zależeć od czynników zewnętrznych (mówimy o testach jednostkowych). Aby pozbyć się zależności czasowych Java 8 dostarczyła nam nową klasę java.time.Clock.


Czytaj więcej

#Kata - IntelliJ + macOS/Windows + Shortcuts

Krzysztof Chruściel
26-10-2018
Kata

Zmiana systemu operacyjnego może okazać się początkowo bolesnym doświadczeniem. Ostatnimy czasy zmieniłem system operacyjny z Windows na macOS, a to wiąże się to ze zmianą nawyków (w tym skrótów). Od zawsze uważam, iż znajomość skrótów narzędzi, z których korzystamy na co dzień jest pozycją obowiązkową. Aby móc nadal w efektywny sposób wykorzystywać IDE przygotowałem kata ze skrótami.


Czytaj więcej

Relacja – JDD Kraków 2018

Krzysztof Chruściel
15-10-2018
Konferencje

8 oraz 9 października bieżącego roku odbyła się jedna z największych konferencji IT w Polsce. JDD jest cykliczną imprezą, która zbiera największych entuzjastów języka Java w Polsce. Na konferencji występuje wiele gwiazd polskiej jak i zagranicznej sceny. Zapraszamy do relacji z tegorocznej edycji.


Czytaj więcej

#Book – Projekt Feniks

Krzysztof Chruściel
05-10-2018
Books

Kolejna IT powieść na moim koncie. Gdy po przeczytaniu Trzy kluczowe cechy idealnego członka zespołu zastanawiałem się jaką następną lekturę wybrać natrafiłem na “Projekt Feniks“. Ponieważ format opowiada bardzo mi się spodobał wybór ten stał się dla mnie oczywisty. Książka “Projekt Feniks“ autorstwa Gene Kim, Kevin’a Behr oraz George Spafford’a jest opisem “pożarów” i sposobów ich gaszenia w firmie Parts Unlimited.


Czytaj więcej

#Book - Trzy kluczowe cechy idealnego członka zespołu

Krzysztof Chruściel
28-09-2018
Books

W nowej pracy na start otrzymałem książkę pt. “Trzy kluczowe cechy idealnego członka zespołu“ napisaną przez Patricka Lencioni. Znajduje się w niej historia, która opisuje proces wybierania cech idealnego członka w danym zespole oraz jak takich ludzi szukać. Zapraszam do krótkej recenzji!


Czytaj więcej

WatchService - obserwujemy zmiany na dysku

Krzysztof Chruściel
24-08-2018
JVM, Java

WatchService jest mechanizmem wprowadzonym w Javie 7. Pozwala on na obserwowanie interesującego nas folderu. Jeśli przykładowo w obserwowanym folderze pojawi się nowy plik, otrzymamy zdarzenie informujące o tej zmianie. Jest to bardziej wydaje rozwiązanie niż każdorazowe odpytywanie systemu o to czy pojawiły się nowe pliki.


Czytaj więcej

Otwieramy kursor w MongoDB - Tailable Cursor

Krzysztof Chruściel
03-08-2018
DB, Spring, Spring Boot

Motywem przewodnim Spring Boot’a w wersji 2.0 jest reaktywność. Wraz z tymi zmianami pojawiła się także możliwość reaktywnej współpracy z bazami NoSQL. W dzisiejszym wpisie zaprezentuję wam jak stworzyć niezamykający się kursor na bazie MongoDB. Aby to osiągnąć wykorzystamy kursor tailable.


Czytaj więcej

#2 Spring Boot 2 – Migrujemy pliki properties

Krzysztof Chruściel
27-07-2018
Spring, Spring Boot

Podczas migracji moich aplikacji do Spring Boot’a w wersji 2.0 okazało się, że kilka wykorzystywanych przeze mnie wpisów w pliku properties jest nieaktualnych. Dzięki wykorzystaniu IDE, udało mi się w łatwy sposób wykryć, które wpisy są nieaktualne, a co jeśli moje IDE nie wspierałoby takiego sprawdzania? Zapraszam do wpisu!


Czytaj więcej

#1 Spring Boot 2 - Router functions

Krzysztof Chruściel
20-07-2018
Spring, Spring Boot

Poprzedni wpis był jedynie wprowadzeniem do Spring Boot’a 2.0. Pojawiło się tam pojęcie WebFlux. Jest to element, który w sposób reaktywny pozwala współpracować z warstwą webową. Ponadto, funkcjonalość ta dostarcza nam nowy sposób tworzenia endpointów poprzez użycie Router Functions. Zapraszam do wpisu!


Czytaj więcej

#0 Spring Boot 2 - Introduction

Krzysztof Chruściel
13-07-2018
Spring, Spring Boot

Z początkiem roku już oficjalnie dołączył do nas Spring Boot w wersji 2.0. Wiele się zmieniło w porównaniu do wersji poprzedniej. Od teraz Spring Boot stoi pod hasłem programowanie reaktywne. Najnowszy Spring Boot oparty jest na projekcie Project Reactor, który jest Spring’ową implementacją specyfikacji Reactive Streams.


Czytaj więcej

Relacja – Confitura 2018

Krzysztof Chruściel
06-07-2018
Konferencje

Jak zwykle końcówkę czerwca spędziliśmy w stolicy biorąc udział w Confiturze. Jest to największa darmowa konferencja Javova w Polsce, na której występują najbardziej znane osoby ze środowiska JVM. W tym roku odbyła się ona w nowy miejscu jakim jest budynek Expo XXI. Zapraszamy na relację!


Czytaj więcej

Relacja – Quality Excites 2018

Krzysztof Chruściel
03-07-2018
Konferencje

To będzie już nasza trzecia edycja Quality Excites. Podobnie jak rok temu, firma Future Processing rozbiła konferencję na dzień poświęcony warsztatom oraz osobny tylko z prelekcjami. My wybraliśmy się tym razem tylko na wykłady. Serdecznie zapraszam do relacji z ostatniej soboty 23 czerwca w Gliwicach!


Czytaj więcej

#Book - Everest Lidera

Krzysztof Chruściel
22-06-2018
Books

Agnieszka zawsze dba o to, aby nigdy nie zabrakło nam kolejnych pozycji do czytania (nasz budżet na tym cierpi). Najnowszym zakupem jest książka “Everest Lidera - O wartościach, silnym zespole i skutecznym przywództwieAnny Sarnackiej-Smith. Mimo, że nie jestem liderem, książka ta pozwoliła mi poznać tajniki bycia dobrym przywódcą. Ale czy ta książka przeznaczona jest tylko dla liderów? Zapraszam do recenzji!


Czytaj więcej

Co kryje plik .class?

Krzysztof Chruściel
15-06-2018
Java

Dziś zejdziemy poziom niżej w stosunku do kodu, z którym mamy styczność na co dzień. Postaram się pokazać wam co znajduje się w skompilowany pliku .class oraz jaki ma to wpływ na JVM’a na przykładzie aplikacji enterprise, czyli HelloWorld. W samym skompilowanym pliku oprócz kodu bajtowego z instrukcjami dla JVM, znajdziemy także metadane. Jeśli chcesz się dowiedzieć co dokładnie siedzi w środku, zapraszam!


Czytaj więcej

Bezpieczne Mapy w Javie?

Krzysztof Chruściel
08-06-2018
Java

W Javie istnieje kilka sposobów tworzenia bezpiecznych wątkowo Map. Przez to, iż istnieje kilka sposobów, może to prowadzić do zakłopotania, który z nich wybrać. W dzisiejszym wpisie omówimy sobie trzy najpopularniejsze sposoby tworzenia synchronizowanych map, czyli Hashtable, SynchronizedMap oraz ConcurrentHashMap, zapraszam!


Czytaj więcej

C_tech

Krzysztof Chruściel
08-05-2018
Konferencje

Już 17 maja w Katowicach obędzie się pierwsze spotkanie z serii C_tech. Są to spotkania organizowane przez firmę Connectis_, które będą się odbywać w ich siedzibie. Miło mi poinformować, iż będę występował jako pierwszy prelegent z tematem “C_tech #1 TDD in practice“.


Czytaj więcej

ForkJoinPool czyli dziel i zwyciężaj

Krzysztof Chruściel
06-05-2018
Java

ForkJoinPool jest specyficzną pulą, która została dodana w Javie 7, jednakże na dobre zaczęto jej używać w Javie 8. Pula ta służy do realizacji zadań, które da się podzielić. Do podziału problemów stosuje ona algorytm dziel i zwyciężaj, a te podzielone zadania przydzielane są dzięki wykorzystaniu algorytmu Work-Stealing. Jest to bardzo ciekawa pula, ponieważ jest współdzielona przez cały proces uruchomiony na JVM.


Czytaj więcej

Executors - tworzymy własną pulę wątków

Krzysztof Chruściel
13-04-2018
Java

Podczas tworzenia zadań asynchronicznych możemy wskazać własną pulę wątków. Takie rozwiązanie jest lepsze niż operowanie na domyślnej puli wątków, ponieważ pozwala nam kontrolować jej parametry. Java dostarcza przyjazny mechanizm Executors, który umożliwia tworzenie puli wątków.


Czytaj więcej

CompletableFuture - dlaczego, po co, jak?

Krzysztof Chruściel
06-04-2018
Java

Klasa CompletableFuture jest z nami od dłuższego czasu, jednakże ostatnimi czasy stosowałem ją bardzo często. Podczas swojej pracy postanowiłem spisać między innymi na co warto zwrócić szczególną uwagę stosując CompletableFuture, jak działają poszczególne transformacje oraz jak obsłużyć sytuacje wyjątkow, zapraszam!


Czytaj więcej

ThreadFactory, czyli pool-n-thread-m

Krzysztof Chruściel
31-03-2018
Java

Jestem zdania, że nie ma co na siłę dorzucać wielowątkowości do każdej tworzonej aplikacji, jednakże czasem dostajemy zadanie, w którym musimy zrównoleglić wykonywanie zadań. “Dobra” wielowątkowość może poprawić wydajność i czas przetwarzania naszej aplikacji, jednakże taki przywilej niesie ze sobą także różne utrudnienia takie jak choćby debugowanie. Czy możemy to jakoś uprościć?


Czytaj więcej

#31 Spring Boot - Zuul - API Gateway

Krzysztof Chruściel
16-03-2018
Spring Boot

API Gateway to wzorzec integracyjny. W wzorcu tym, tylko jeden serwis (może być oczywiście replikowany) udostępniony jest publicznie. Klientami naszego API mogą być aplikacje mobilne, strony web lub inne urządzenia. Musimy zapewnić im możliwość korzystania z naszego API w sposób zunifikowany. Aby to osiągnąć udostępniamy jeden publiczny serwis zwany API Gateway, który odpytywany przez różnych klientów zajmuje się kierowaniem ruchu na podstawie filtrów i określonych routingów.


Czytaj więcej

Java 9 - JShell czyli read-eval-print loop

Krzysztof Chruściel
09-03-2018
Java

Java 9 jest już z nami oficjalnie od pewnego czasu, pewnie u niektórych osób działa już na produkcji. Najnowsza wersja nie przyniosła aż tak dużych zmian jak Java 8. Oprócz modularności czy zmian związanych ze składnią tak zwanych syntactic sugar, pojawił się mechanizm, który występuje w wielu innych językach, a mianowicie REPL (ang. Read-Eval-Print Loop). W Javie 9 nazywa się JShell i jest najczęściej wykorzystywany do prototypowania oraz nauki języka.


Czytaj więcej

#30 Spring Boot – Resource Server

Krzysztof Chruściel
02-03-2018
Spring, Spring Boot

W poprzednim wpisie przygotowaliśmy rozwiązanie korzystające z Single Sign-On. Teraz korzystając z tego mechanizmu chcielibyśmy zabezpieczyć inne moduły naszej aplikacji. Aby to osiągnąć, nasze moduły muszą stać się serwerami zasobów (ang. Resource Server). Jak to zrobić wykorzystując Spring Boot’a? Zapraszamy do wpisu!


Czytaj więcej

#Book - NEGOCJUJ! Czyli jak zwyciężać w codziennych sytuacjach

Krzysztof Chruściel
23-02-2018
Books

Wiem, że nie jest to blog typowo “lajfstajlowy” tylko techniczny, jednakże często czytam książki niekoniecznie związane z programowaniem i światem IT. Tym razem zostałem przekonany bardzo dobrym wystąpieniem Wojtka Wóźniczki w podcaście “Więcej niż oszczędzanie pięniedzy“ Michała Szafrańskiego i postanowiłem zakupić książkę dotyczącą negocjacji. Negocjowanie to umiejętność, która może znacząco (pieniądze) wpłynąć na nasze życie!


Czytaj więcej

#29 Spring Boot - Single Sign-On

Krzysztof Chruściel
16-02-2018
Spring, Spring Boot

Podczas tworzenia aplikacji prędzej czy później pojawi się temat bezpieczeństwa. Musimy zastanowić się w jaki sposób chcemy chronić nasze zasoby oraz jaki typ uwierzytelniania wybierzemy. W dobie mikroserwisów nie jest to już takie proste jak w monolicie. Dziś wpis dotyczący podejścia Single Sign-On, zapraszamy!


Czytaj więcej

#28 Spring Boot - Testowanie z GreenMail

Krzysztof Chruściel
09-02-2018
Spring Boot, Testing

Podczas przygotowania mojej prezentacji na SpreadIT, obracałem się wokół domeny związanej z mejlami. Ponieważ była to prezentacja o TDD, musiałem w jakiś sposób przetestować moją usługę do wysyłania mejli. Po wyszukaniu dostępnych rozwiązań postanowiłem wybrać bibliotekę GreenMail. Jest to prawdopodobnie jedyna biblioteka, która może być wykorzystywana jednocześnie do wysyłania jak i odbierania emaili.


Czytaj więcej

#0 Spring Basic – o co chodzi z tym Springiem

Krzysztof Chruściel
02-02-2018
Spring

Rozpoczynamy kolejny cykl wpisów. Tym razem na tapecie framework Spring. Zamierzamy przedstawić wam podstawowe funkcjonalności Spring’a. Wiele osób zaczyna przygodę ze Spring’iem od Spring Boot’a, bez zrozumienia co dzieje się pod spodem. Poruszymy tematy takie jak tworzenie beanów, zasięg beanów czy rodzaje wstrzykiwania zależności. Jednakże, na początek zapraszamy na wpis wprowadzający do Spring’a,


Czytaj więcej

#5 Wzorce projektowe: Test Data Builder

Krzysztof Chruściel
26-01-2018
Clean Code, Java, Wzorce projektowe

Dzisiaj na tapete bierzemy wzorzec Test Data Builder. Nazywany jest również Fluent Builder’em lub Appender’em. Z jego pomocą jesteśmy w stanie budować obiekty w prosty i przejrzysty sposób. Zetknęliście się kiedyś z kodem, w którym tworzenie obiektu z dużą ilością pól odbywało się przez konstruktor, a wy kilka razy musieliście sprawdzać w jakiej kolejności podawać następne parametry? Jest na to proste rozwiązanie - Test Data Builder.


Czytaj więcej

#27 Spring Boot - Consumer Driven Contract

Krzysztof Chruściel
19-01-2018
Spring Boot

Z każdym kolejny mikroserwisem testowanie naszej aplikacji staje się coraz bardziej trudne (w przypadku gdy są one ze sobą powiązane). Oczywiście możemy zamokować zachowanie innych serwisów korzystając na przykład z biblioteki WireMock, jednakże po wdrożeniu naszej aplikacji na produkcję okazuje się, że aplikacja nie integruje się poprawnie. A no właśnie, okazało się, iż mój serwis odpytywał zły endpoint, ale jak to możliwe, skoro wszystkie testy były uzależniająco zielone?


Czytaj więcej

#4 Wzorce projektowe: Builder - zbudujmy to lepiej

Krzysztof Chruściel
12-01-2018
Clean Code, Java, Wzorce projektowe

designPatternArt

Builder, czyli nasz polski budowniczy należy do wzorców kreacyjnych. Dzięki niemu możemy tworzyć złożone obiekty dzieląc jeden duży proces na kilka mniejszych etapów. Każdy z tych etapów może być implementowany na wiele różnych sposobów. Daje nam to możliwość tworzenia różnych reprezentacji tego samego obiektu.


Czytaj więcej

#26 Spring Boot - Neo4j

Krzysztof Chruściel
05-01-2018
DB, Java, Spring, Spring Boot, neo4j

W poprzednim wpisie pokazałam jak zainstalować Neo4j. Teraz możemy spróbować napisać prostą aplikację z użyciem Spring Boot’a, która wykorzystuje bazę grafową Neo4j. Dzięki wykorzystaniu Spring Data otrzymujemy całą abstrakcję związaną z warstwą persystencji. Ponadto operacje CRUD’owe wywoływane są w taki sam sposób jak dla innych, znanych nam typów baz.


Czytaj więcej

#3 Wzorce projektowe: Wstrzykiwanie zależności

Krzysztof Chruściel
29-12-2017
Wzorce projektowe

Bardzo ciekawy wzorzec, który w środowisku Javowym wydaje się normalnością. Wstrzykiwanie zależności (ang. Dependency Injection) jest to wzorzec, którego stosowanie spowoduje, iż nasz kod stanie się mniej związany z innymi elementami, a tym samym będzie bardziej otwarty na rozszerzenia. Oczywiście w tematyce DI pojawić musi się również pojęcie odwróconej kontroli (ang. Inversion of Control). Zapraszamy!


Czytaj więcej

#25 Spring Boot - Turbine - wspólny dashboard

Krzysztof Chruściel
22-12-2017
Spring Boot

W poprzednim wpisie pokazywałem jak wykorzystać Hystrix’a jako jeden ze sposób realizacji wzorca Circuit Breaker. Pojawił się także wpis dotyczący dashboard’u, na którym wyświetlane były informacje dla danego Circuit Breaker’a. Niestety wadą tego rozwiązania było to, iż mieliśmy jeden dashboard per aplikacja, więc jeśli chcielibyśmy sprawdzać stan kilku Circuit Breaker’ów musielibyśmy przełączać się pomiędzy dashboardami. Rozwiązaniem tego problemu jest stworzenie jednego strumienia przy wykorzystaniu biblioteki Turbine.


Czytaj więcej

#2 Java Performance - Tablica vs. Lista

Krzysztof Chruściel
15-12-2017
Java

Kolejny wpis z serii Java Performance dotyczy stosowania struktur danych takich jak tablice oraz listy. Tablice oraz listy są jednymi z najbardziej popularnych struktur danych stosowanych przez programistów Javy. Jednakże nie zawsze dobieramy je jako optymalne rozwiązanie dla danego problemu. W tym wpisie postaram się pokazać wam, jak wybierać pomiędzy listą, a tablicą.


Czytaj więcej

#24 Spring Boot - Hystrix Dashboard

Krzysztof Chruściel
08-12-2017
Spring Boot

Kolejny wpis na temat Hystrix’a, czyli biblioteki realizującej wzorzec CircuitBreaker. W poprzednim wpisie opisałem jak zaimplementować funkcjonalność Hystrix’a w naszej aplikacji. Dziś przedstawię wam projekt Hystrix Dashboard, na którym prezentowane są wyniki z naszych metod opakowanych w commandy Hystrix’owe.


Czytaj więcej

Docker Hub - repozytorium dla obrazów

Krzysztof Chruściel
01-12-2017
Cloud, Docker

We wcześniejszy wpisach na temat Dockera poruszyliśmy zagadnienia takie jak pliki Dockerfile oraz narzędzie Docker Compose. Dziś pokażę wam jak w łatwy sposób umieszczać obrazy w DockerHub’ie. DockerHub podobnie jak GitHub jest repozytorium, w którym możemy przechowywać stworzone przez nas obrazy. W pakiecie dostajemy jedno darmowe prywatne repozytorium oraz nielimitowaną ilość publicznych repozytoriów.


Czytaj więcej

#23 Spring Boot - Hystrix

Krzysztof Chruściel
24-11-2017
Spring Boot

FailFast to podejście, w którym w jak najszybszym czasie dostajemy informację o tym, że coś działa niepoprawnie. Jednym z rozwiązań realizujących tą technikę jest biblioteka Hystrix ze stajni Netflix’a. Swoje rozwiązanie realizują oni jako CircuitBreaker, czyli bezpiecznik, który jeśli dzieje się coś niepożądanego zostaje włączony.


Czytaj więcej

Relacja - 4Developers 2017

Krzysztof Chruściel
17-11-2017
Konferencje

4Developers, edycja Łódzka już za nami. Pora na relację, w której znajdziecie opisy prelekcji oraz konferencji jako całości. Odbyła się ona 9 listopada w BioNanoparku. Organizatorzy przywitali nas bardzo dobrze przygotowanym procesem rejestracji, w którym otrzymaliśmy starter packi. Szybka kawka i ruszamy z pierwszą prelekcją!


Czytaj więcej

Docker Compose - odpalamy wiele kontenerów

Krzysztof Chruściel
10-11-2017
Docker

Docker Compose jest kolejnym krokiem w pracy z kontenerami. Służy do uruchamiania i definiowania aplikacji składającej się z wielu kontenerów. Definiując pojedynczy plik Dockerfile nie mamy problemu z uruchomieniem go, jeśli natomiast mamy wiele takich plików pojawia się bardzo duża złożoność. Rozwiązaniem problemu jest Docker Compose.


Czytaj więcej

#21 Spring Boot – integracja z RabbitMQ

Krzysztof Chruściel
03-11-2017
Docker, Message Broker, Spring Boot

W tym wpisie przedstawię wam jak zintegrować bezpośrednio naszą aplikację z RabbitMQ. Stosowanie kolejek w naszym ekosystemie ma wiele zalet. Dzięki zrównolegleniu pracy możemy w łatwy sposób skalować naszą aplikację. Jednocześnie wysyłając zadania na kolejkę powodujemy, iż nasz system staje się bardziej odporny, ponieważ zadania w pierwszej kolejności trafiają na kolejkę i zostaną z niej pobrane dopiero wtedy, gdy dostępni będą konsumenci tych wiadomości.


Czytaj więcej

Tablica vs Lista

Krzysztof Chruściel
01-11-2017
uncategorized

Czytaj więcej

Message Broker - RabbitMQ

Krzysztof Chruściel
27-10-2017
Message Broker

RabbitMQ jest otwartoźródłowym message brokerem. Może być on wykorzystany do tworzenia microserwisów, które realizowane są w architekturze message-driven. Serwer brokera napisany jest w Erlangu, natomiast API dla klientów dostępne jest w wielu językach programowania w tym Javie. W tym wpisie przedstawię wam podstawy RabbitMQ.


Czytaj więcej

SpreadIT 2017 - Enough with the theory, let’s TDD!

Krzysztof Chruściel
16-10-2017
Java, Konferencje, Spring Boot, Testing

Czytaj więcej

#20 Spring Boot - szybki start z Dockerem

Krzysztof Chruściel
13-10-2017
Docker, Spring Boot

Jest to wpis dla osób, które chciałyby w szybki sposób uruchomić swoją aplikację Spring Boot’ową na Dockerze. Uruchamianie aplikacji na kontenerach ma wiele zalet, jedną z nich jest wspólne środowisko dla wszystkich developerów. Dzięki temu unikniemy “u mnie działa”. Jak uruchamiać aplikację na kontenerze? Odpowiedź we wpisie.


Czytaj więcej

Java 9 - Stream API

Krzysztof Chruściel
06-10-2017
JVM, Streams

Ah! Co to był za wrzesień, niedawno premierę miała nowa wersja biblioteki JUnit 5, a teraz mamy oficjalne wydanie Javy 9. Dziewiątka nie jest tak przełomową wersją Javy jak ósemka, jednakże wprowadza kilka ciekawych featurów i usprawnień. W tym wpisie bierzemy na tapetę Stream API.


Czytaj więcej

#19 Spring Boot – Microservice Registration and Discovery - Eureka

Krzysztof Chruściel
29-09-2017
Cloud, Spring Boot

Service Discovery jest kolejnym mechanizmem wykorzystywanym w środowisku cloudowym. Najpopularniejsze implementacje tego mechanizmu to między innymi: Consul, Zookeeper czy Eureka ze stajni Netflix. Spring Cloud wykorzystał implementacje firmy Netflix i stworzył swój wrapper, który w bardzo szybki i łatwy sposób pozwala integrować się z całym stosem Spring Cloud.


Czytaj więcej

Piąta planeta w układzie czyli JUnit 5 Jupiter

Krzysztof Chruściel
22-09-2017
Java, Testing

10-tego września miało miejsce oficjalne wydanie JUnitów w wersji 5. Autorzy wprowadzili rozwiązania, które sprawdziły się w innych bibliotekach łącząc to w jedną całość. Zmieniło się także podejście do architektury biblioteki. Czy warto już zacząć migrować się do najnowszej wersji?


Czytaj więcej

AsciiDoc - Tworzymy dokumentacje

Krzysztof Chruściel
08-09-2017
Documentation

Artykuł ten powiązany jest z poprzednim wpisem na temat Spring Rest Docs, czyli automatycznego generowania dokumentacji na podstawie testów. Dzięki Spring Rest Docs generowane były snippety, czyli fragmenty dokumentacji, które następnie umieszczało się w pliku zbiorczym z rozszerzeniem adoc. Na końcu należało te fragmenty ładnie opakować korzystając ze składni AsciiDoc’a.


Czytaj więcej

#Kata – The bowling game

Krzysztof Chruściel
01-09-2017
Java, Kata

The bowling game jest kolejną propozycją ćwiczenia, która zostało mocno spopularyzowana przez Wujka Boba. Związana jest ona z grą w kręgle. W tym ćwiczeniu bardzo ciekawym elementem jest system naliczania punktów. W bardzo dobry sposób sprawdza tok algorytmicznego myślenia.


Czytaj więcej

#18 Spring Boot – TDDocumentation - Spring Rest Docs

Krzysztof Chruściel
25-08-2017
Spring Boot

Pamiętacie wpis o najlepszych praktykach REST’owych? Jedną z wyszczególnionych tam praktyk było dokumentowanie naszego API. Wymieniłem tam także kilka najpopularniejszych rozwiązań. Jedno z nich, czyli Swagger opisałem już na blogu w artykule #10 Spring Boot - Swagger2 - dokumentujemy API. Dziś czas na kolejne podejście do dokumentacji, tym razem od strony testów. Test Driven Documentation jest techniką, która polega na tworzeniu dokumentacji w oparciu o testy.


Czytaj więcej

#Kata - co to ta Kata? - FizzBuzz

Krzysztof Chruściel
18-08-2017
Java, Kata, Testing

Godzina 5.00, za oknami ciemno, pora na codzienne ćwiczenia. Zgodnie z definicją: “Kata - wysoce sformalizowany rodzaj ćwiczeń stosowanych w wielu tradycyjnych sztukach i sportach walki…”, “Są to sekwencje technik ataku i obrony, połączone z określonym poruszaniem, przyjęciem ściśle określonej pozycji i sposobu oddychania. Niektóre techniki w kata mają charakter wyłącznie symboliczny.”


Czytaj więcej

Używałeś już Spocka?

Krzysztof Chruściel
11-08-2017
Java, Testing

JUnity, JUnity, i jeszcze raz JUnity. Tak do jakiegoś czasu wyglądało moje testowanie. Na konferencjach coraz częściej pojawiał się skrót BDD, czyli Behavior Driven Development oraz kojarzące się ze Star Trekiem słowo Spock. Spock jest frameworkiem do testowania kodu w języku Java jak i Groovy, który został wydany w wersji 1.0 w roku 2015. Znacznie różni się on od testów jednostkowych, które korzystają z biblioteki JUnit. Framework ten jest zbiorem wszystkich dobrych bibliotek stosowanych dotychczas razem!


Czytaj więcej

Relacja - Confitura 2017

Krzysztof Chruściel
04-08-2017
Konferencje

Stolica przywitała nas bardzo dobrą pogodą. 1-ego lipca w Warszawie odbyła się 11-sta edycja Confitury. Jest to największa darmowa konferencja w Polsce o podłożu JVM. Występują na niej osoby obecne na polskiej scenie Javy. Jak w poprzednich latach nie mogło i nas zabraknąć, zapraszamy na relację!


Czytaj więcej

REST architecture - Conditional requests

Krzysztof Chruściel
28-07-2017
REST

Mechanizm Conditional requests czyli warunkowych zapytań służy do optymalizacji żądań HTTP. Bardzo często odpytujemy o dany zasób po mimo iż jego stan się nie zmienił. W odpowiedzi dostajemy cały zasób i musimy zaimplementować logikę porównywania czy pojawiła się jakaś zmiana w obiekcie. Jednakże standard HTTP dostarcza nam mechanizmy do realizacji tego zagadnienia, są to słabe oraz silne nagłówki cachowania.


Czytaj więcej

#17 Spring Boot – Distributed tracing - Zipkin i Sleuth

Krzysztof Chruściel
21-07-2017
Cloud, Spring Boot

Każdy z nas, korzystając z architektury microserwisów posiada kilka usług które “rozmawiają“ ze sobą. Jedna logiczna operacja, na przykład zakup czegoś w sklepie to tak na prawdę odwiedzenie kilku serwisów. Niestety podczas zakupu wystąpił błąd. Jak dowiedzieć się teraz w którym miejscu coś poszło nie tak? Można wchodzić po SSH na maszyny i robić grepa z tailem i szukać słówka Error ale jest to robota ręczna i męcząca. W odpowiedzi na zapotrzebowanie na rozproszone logowanie pokaże wam dziś Zipkina.


Czytaj więcej

SJUG

Krzysztof Chruściel
21-07-2017
JVM, Java, Konferencje

Czytaj więcej

REST architecture - Best practises

Krzysztof Chruściel
07-07-2017
REST

Wszyscy (albo prawie wszyscy) robimy usługi REST’owe dla naszych mikroserwisów. Jest wiele elementów które powinna spełnia architektura REST. W tym wpisie przedstawię wam ogólne zasady dotyczące prawidłowego projektowania API.


Czytaj więcej

Relacja – Quality Excites 2017

Krzysztof Chruściel
30-06-2017
Konferencje

Jak w roku 2016 tak i w tym wybraliśmy się na szóstą edycję konferencji Quality Excites. Tym razem konferencja rozbita została na dwa dni. W pierwszym dniu odbyły się liczne warsztaty, natomiast dzień drugi poświęcony był prelekcjom. My wybraliśmy się na oba dni.


Czytaj więcej

Relacja - GeeCON dzień 3

Krzysztof Chruściel
29-06-2017
Konferencje

Wpis trochę oddalony w czasie od poprzedniego dnia konferencji, ale udało się - ostatni dzień konferencji opisany. Serdecznie zapraszam do przeczytania relacji.


Czytaj więcej

#16 Spring Boot - Cloud Config

Krzysztof Chruściel
23-06-2017
Spring Boot

Spring Cloud we współpracy z Netflixem w bardzo pozytywny sposób ułatwiają pracę w architekturze mikroserwisów. Dostarczają oni wiele mechanizmów które pozwalają spełnić założenia jakie stawia poprawne tworzenie mikroserwisów. Pierwszym narzędziem Cloudowym który przedstawię jest Cloud Config.


Czytaj więcej

Canary Release - czyli kanarki w kopalnii

Krzysztof Chruściel
16-06-2017
Wzorce projektowe

canary-release-logo

Kanarki wykorzystywane były w kopalniach do wczesnego wykrywania zagrożeń. Przez swoją mniejszą masę bardziej niż ludzie odczuwały efekt ulatniającego się metanu w kopalniach. Po wykryciu trującego gazu kanarki były zamroczone lub umierały dzięki czemu można było na czas ewakuować górników. Wczesne wykrywanie błędów/zagrożeń przed innymi nawiązuje do kolejnego wzorca jakim jest Kanarkowe wydanie (ang. Canary release) którego nazwa nawiązuję do kanarków wykorzystywanych w kopalniach.


Czytaj więcej

Kody HTTP

Krzysztof Chruściel
15-06-2017
uncategorized

Czytaj więcej

Metody HTTP

Krzysztof Chruściel
15-06-2017
uncategorized

Czytaj więcej

#15 Spring Boot - POST, PUT czy PATCH?

Krzysztof Chruściel
09-06-2017
Spring Boot

Tak na prawdę ten artykuł niekoniecznie musi być związany ze Spring Bootem, jednakże posłuży mi on jako realizacja tego zagadnienia. Projektując API REST’owe powinniśmy zwracać uwagę na wiele elementów. Odpowiedni dobór nazw dla endpointów czy korzystanie z kodów odpowiedzi HTTP świadczy o dobrze zaprojektowanym API. Ważnym element jest także korzystanie z metod HTTP do obsługi zasobów.


Czytaj więcej

Relacja - GeeCON dzień 2

Krzysztof Chruściel
02-06-2017
Konferencje

Pora na relację z kolejnego dnia konferencji. Zaczęliśmy z samego rana o 9:00.


Czytaj więcej

Relacja - GeeCON dzień 1

Krzysztof Chruściel
28-05-2017
Konferencje

W tym roku miałam przyjemność uczestniczyć w GeeCONie - konferencji skupiającej miłośników Javy i JVM. Odbyła się ona w Multikinie w Krakowie i trwała 3 dni (17-19.05). Zapraszam na relację z pierwszego dnia!


Czytaj więcej

Git Ku**a

Krzysztof Chruściel
19-05-2017
GIT

git-logoZaczyna się bardzo niekulturalnie, ale uwierzcie, z pożytkiem! Jak wspominałem w ostatnim wpisie, u mnie w pracy “na tapecie” jest teraz tematyka wdrożenia GitFlow jako modelu pracy z Gitem. Jest to dobra okazja, aby dodać kilka wpisów pokazujących jak poprawić swoją efektywność w pracy z Gitem.


Czytaj więcej

Piramida testów

Krzysztof Chruściel
12-05-2017
Testing

Rozmawiając z kilkoma osobami na temat podziału ilości testów względem ich przeznaczenia okazało się, że pojęcie piramidy testów nie jest aż tak popularne jak mi się wydawało. Ponad pół roku temu Agnieszka w bardzo fajny sposób opisała rodzaje testów, dlatego też ten wpis jest tylko uzupełnieniem jej postu. Także w pierwszej kolejności zapraszam do przeczytania jej artykułu i zapraszam z powrotem!


Czytaj więcej

Relacja – Code Europe 2017

Krzysztof Chruściel
05-05-2017
Konferencje

relacjaKonferencja26 kwietnia odbyła się w Krakowie (ICE) konferencja Code Europe nazwana największą konferencją programistyczną w Polsce. Oprócz Krakowa odbywać będzie się ona również we Wrocławiu 23 maja w Hali Stulecia oraz w Warszawie 25 maja na PGE Narodowym. Zapraszamy na relację z krakowskiej edycji, ze ścieżki wybranej przez CodeCouple.


Czytaj więcej

Niekompletny GitFlow?

Krzysztof Chruściel
28-04-2017
GIT

git-logoW jednym z pierwszych artykułów opisywałem GitFlow jako metodykę pracy z Gitem. Zaczynamy teraz wdrażać ten model w firmie i zaczynają pojawiać się problemy/pytania. No właśnie, GitFlow miał rozwiązywać wszystkie problemy i odpowiadać na wszystkie pytania, czy aby na pewno?


Czytaj więcej

#14 Spring Boot - logowanie przez media/portale społecznościowe

Krzysztof Chruściel
21-04-2017
Java, Spring Boot

springBootArt

Media społecznościowe zawładnęły XXI wiekiem. Ciężko wyobrazić nam sobie aplikację, w której nie możemy zalogować się za pomocą Facebook’a lub Twitter’a. Dlatego właśnie przygotowałam krótki wpis, dzięki któremu dowiecie się jak szybko i łatwo można zaimplementować takie logowanie w kodzie swojej aplikacji wykorzystując Spring Boot’owe biblioteki.


Czytaj więcej

Blue-Green-Deployment

Krzysztof Chruściel
14-04-2017
Wzorce projektowe

blueGreenDeploymentCiągłe dostarczanie oprogramowania sprawiło powstanie wielu ciekawych wzorców związanych z różnymi fazami developmentu. Jedną z tych faz jest deployment. No właśnie, ale jak wdrożyć nową wersję aplikacji na produkcję, z której korzystają klienci? Jednym z dostępnych rozwiązań jest wzorzec Blue-Green-Deployment.


Czytaj więcej

#13 Spring Boot – Własne properties

Krzysztof Chruściel
07-04-2017
Java, Spring Boot

springBootArtGdy potrzebujemy zrobić jakąś funkcjonalność opcjonalną lub nie chcemy hardkodować danych w aplikacji powinniśmy użyć własny plików properties. Spring Boot dostarcza bardzo sprytny mechanizm do obsługi nowy properties wraz z podpowiedziami.


Czytaj więcej

#2 Wzorce projektowe: Obserwator po raz kolejny

Krzysztof Chruściel
31-03-2017
Java, Wzorce projektowe

designPatternArt

Ile to już wody upłynęło od czasu wydania książki z wzorcami projektowymi “Gang of Four“ na temat wzorców projektowych. Planuję napisać kilka artykułów na temat programowania reaktywnego, a jakby nie patrzeć wzorzec obserwator ma z tym paradygmatem programowania wiele wspólnego.


Czytaj więcej

#12 Spring Boot - Sensitive Actuator

Krzysztof Chruściel
24-03-2017
Java, Spring Boot

springBootArt

W poprzednim wpisie opisałem endpointy, które były insensitive. Oznacza to, iż nie wymagały logowania. Dziś przedstawię wam pozostałą część. Pakiet Spring Boot Acutator oferuje całą gamę ciekawych rozwiązań. Zapraszam do czytania.


Czytaj więcej

#Book - Getting Things Programmed (Done?)

Krzysztof Chruściel
04-03-2017
Books

Przed świętami buszowałem po księgarniach w poszukiwaniu ciekawych książkowych prezentów. Za każdym razem zaglądałem na dział IT, jeśli takowy istniał. I pewnego razu w Matrasie dostrzegłem pozycję Getting Things Programmed. Pierwsza myśli: “O super! Ktoś przeniósł bestseller David’a Allen’a (Getting Things Done) na realia IT”, czy rzeczywiście wyszło super?


Czytaj więcej

#11 Spring Boot - Insensitive Actuator

Krzysztof Chruściel
24-02-2017
Java, Spring Boot

springBootArt

Jednym z głównych założeń Spring Boot jest to, aby framework był production ready. Autorzy frameworku rozumieją przez production ready między innymi to, że aplikacja będzie dostarczać metryki out-of-the-box. Aby dodać metryki do swojego projektu, wystarczy dopisać jedną pozycję do zależności Maven. Jest to biblioteka Actuator.


Czytaj więcej

Neo4j - instalacja

Krzysztof Chruściel
10-02-2017
DB, neo4j

neo4j_logo

Dzisiaj krótko o bazach grafowych, na przykładzie Neo4j. Bazy grafowe jak sama nazwa wskazuje wykorzystują strukturę grafów. Neo4j oparty jest na grafach skierowanych. Zacznijmy najpierw od tego czym są grafy. Jest to reprezentacja węzłów i krawędzi połączonych ze sobą. Przedstawiają one relacje między obiektami. Bazy grafowe wykorzystujemy jeśli bardziej niż na samych danych interesują nas powiązania/relacje między obiektami. Sieci społecznościowe są bardzo dobrym przykładem ich wykorzystania.


Czytaj więcej

#1 Java Performance - Stackless Exceptions

Krzysztof Chruściel
03-02-2017
JVM, Java

java-logo

Dziś krótszy wpis jednakże pierwszy z serii “Java Performance“, w której będę opisywał rozwiązania związane z wydajnością JVM’a oraz Javy. Pierwszy wpis dotyczy optymalizacji stosu wywołań (ang. stack trace), który jest wywoływany w momencie wystąpienia wyjątku.


Czytaj więcej

Apache Solr – Autocomplete - podpowiadanie wyszukiwania

Krzysztof Chruściel
27-01-2017
Apache Solr, Java, Spring Boot

SolrLogo

Zgodnie z wcześniejszymi zapowiedziami pokaże wam dziś jak stworzyć podpowiadanie wyszukiwanych fraz podobnie jak działa to w wyszukiwarce Google. Wykorzystam do tego mechanizmy Facety, które są elementem Apache Solr’a i z których można z powodzeniem korzystać w Spring Boot’cie.


Czytaj więcej

#1 Gradle - przygotowanie środowiska

Krzysztof Chruściel
13-01-2017
Gradle

gradlelogo

Maven z wielu względów cały czas jest dla mnie narzędziem do budowania numer jeden. Jednakże mam tylko porównanie do Ant’a z Ivy. Od kilku lat na rynku bardzo mocno przebija się Gradle. Wykorzystywany jest on jako podstawowe narzędzie do budowania na platformę Android.


Czytaj więcej

#10 Spring Boot - Swagger2 - dokumentujemy API

Krzysztof Chruściel
07-01-2017
Java, Spring Boot

swagger-logo-bw

Aktualnie modną architekturą wśród systemów informatycznych są mikroserwisy. Najczęściej komunikują się one poprzez API REST’owe, które wykorzystuje notacje JSON. Często systemy te składają się z wielu mikroserwisów, które rozwijane są poprzez różne teamy w firmie. Jednym ze sposobów komunikacji pomiędzy teamami jest dokumentowanie całego API REST’owego. Narzędziem, które bardzo ułatwia dokumentowanie naszego API jest Swagger.


Czytaj więcej

Apache Solr - DIH - DataBase Import Handler - MySQL

Krzysztof Chruściel
30-12-2016
Apache Solr, Java, Spring Boot

SolrLogo

W poprzednim wpisie opisywałem jak zainstalować silnik wyszukiwania pełnotekstowego Apache Solr. Dziś przedstawię wam jak zaimportować dane wykorzystując wbudowany w Solr’a mechanizm DIH (ang. Database Import Handler). Importowane dane będą pochodzić z bazy MySQL.


Czytaj więcej

#9 Spring Boot - Scheduling

Krzysztof Chruściel
22-12-2016
Java, Spring Boot

schedulerpost

W tym wpisie chciałam przedstawić proces tworzenia planowanych zadań. W Spring Boocie jest to wyjątkowo proste. Nie musimy tworzyć żadnych plików konfiguracyjnych. Wszystko opiera się na dwóch adnotacjach. Przekonajcie się sami.


Czytaj więcej

Relacja - Code Europe 2016

Krzysztof Chruściel
16-12-2016
Konferencje

codeeurope2016relacja5 i 7 grudnia odbyła się “największa programistyczna konferencja w Polsce” - Code Europe. W tym roku miała ona miejsce w Centrum Kongresowym ICE w Krakowie (5.12) oraz na Stadionie Narodowym w Warszawie (7.12). My z racji odległości wybraliśmy Kraków. Zapraszam do przeczytania krótkiej relacji.


Czytaj więcej

Apache Solr - wyszukiwanie pełnotekstowe

Krzysztof Chruściel
09-12-2016
Apache Solr

SolrLogo

Apache Solr to serwer wyszukiwania pełnotekstowego (ang. full-text search) napisany w Javie. Oparty jest on na Apache Lucene i może bardzo szybko usprawnić wyszukiwarkę w naszej aplikacji. Możemy uzyskiwać wyniki w formatach takich jak JSON, Python, XML czy PHP. Bardzo popularne rozwiązanie, posiada funkcje facetów, jest skalowalne i potrafi wiele więcej.


Czytaj więcej

Relacja - SpreadIT 2016

Krzysztof Chruściel
26-11-2016
Konferencje

Tygodnie lecą a my w weekendy biegamy po konferencjach zamiast zająć się naszym projektem ;) W ostatnią sobotę tj. 19 listopada 2016 byliśmy na konferencji SpreadIT w Gliwicach. Zapraszam do krótkiej relacji! spreadit2016


Czytaj więcej

Interfejsy funkcyjne

Krzysztof Chruściel
08-10-2016
Java

Mała odskocznia od artykułów na temat Spring Boot’a, które ostatnio zdominowały nasz blog. Interfejsy funkcyjne są jednym z wielu nowych elementów w Javie 8. Wszystkie interfejsy funkcyjne znajdują się w pakiecie java.util.function.


Czytaj więcej

#8 Spring Boot – email - szablon i wysyłanie

Krzysztof Chruściel
30-09-2016
Java, Spring Boot

Podczas tworzenia modułu rejestracji w mojej aplikacji postanowiłam stworzyć proces potwierdzania tej czynności mailem. Przykład przedstawię w oparciu o spring-boot-starter-mail oraz spring-boot-starter-thymeleaf do tworzenia template’ow.


Czytaj więcej

#7 Spring Boot - logowanie aplikacji - LogBack

Krzysztof Chruściel
13-09-2016
Spring Boot

Skąd brać informacje jak nie z logów aplikacji. W Spring Boot’cie dzięki temu, że wszystko jest automatyczne i łatwo konfigurowalne możemy dostosować logowanie do naszych potrzeb. Wykorzystamy do tego bardzo dobrze znany plik application.properties. Wpis ten dotyczy konfiguracji rozwiązania jakim jest LogBack.


Czytaj więcej

#6 Spring Boot - internacjonalizacja czyli locale w akcji

Krzysztof Chruściel
06-09-2016
Java, Spring Boot

Dzięki wykorzystaniu internacjonalizacji tworzenie aplikacji w różnych językach (nie programowania ;) ) stało się bardzo proste. Możemy przygotować jeden plik wzorcowy, a następnie przekazać go do odpowiednich tłumaczy, którzy przygotują nam przetłumaczone teksty w narzuconym przez nas formacie. Skrótem używanym naprzemiennie z internacjonalizacją jest i18n. Jest to ilość znaków pomiędzy “i” oraz “n” w słowie “internationalization“.


Czytaj więcej

#5 Spring Boot - LiveReload

Krzysztof Chruściel
30-08-2016
Java, Spring Boot

Wracamy po wakacyjnej przerwie! Dziś bardzo praktyczny wpis. Każdy kto zajmuje się frontend’em w Spring Boot’cie wykorzystując na przykład Thymeleaf musi za każdym razem budować projekt. Jednakże można przyśpieszyć tą operację.


Czytaj więcej

Relacja - Confitura 2016

Krzysztof Chruściel
09-07-2016
Konferencje

W dniu 2 lipca odbyła się okrągła, 10-ta edycja konferencji Confitura 2016. Zapraszamy na relację z tego wydarzenia. Confitura


Czytaj więcej

Relacja - Quality Excites 2016

Krzysztof Chruściel
27-06-2016
Inne, Konferencje

Jak pisaliśmy w poprzednich wpisach, nie jesteśmy w żaden sposób związani z firmą Future Processing, jednakże nie można powiedzieć złego słowa na temat organizacji konferencji. Jak dla nas przebiegła ona perfekcyjnie!


Czytaj więcej

#1 Wzorce projektowe: Flyweight (Pyłek)

Agnieszka Chruściel
26-06-2016
Clean Code, Java, Wzorce projektowe

designPatternArt

Postanowiłam zacząć serię wpisów o wzorcach projektowych. Dążymy przecież do tworzenia kodu idealnego, tworząc go zastanawiamy się czy można go jakoś uprościć, zmodyfikować tak, żeby działał bardziej wydajnie oraz dało się go rozbudować w łatwy sposób. Dlaczego nie skorzystać z rozwiązań, które już istnieją? Pierwszy na tapecie flyweight, czyli mówiąc po polsku pyłek. Jest to wzorzec strukturalny, który przydaje się w aplikacjach, które korzystają z większej liczby identycznych obiektów.


Czytaj więcej

#4 Spring Boot - application.properties - właściwości

Krzysztof Chruściel
21-06-2016
Java, Spring Boot

Kolejny wpis o pliku właściwości. Chcę zamknąć temat, bo już trochę tych wpisów się zrobiło (tylko na temat application.properties). Jednakże z drugiej strony nie chciałem zrobić jednego dużego wpisu, bo moim zdaniem lepiej czyta się krótkie. No dobrze, więc o czym dziś? Tematem będą wbudowane właściwości.


Czytaj więcej

#3 Spring Boot - application.properties - profile

Krzysztof Chruściel
18-06-2016
Java, Spring Boot

Artykuł ten nawiązuje do poprzedniego wpisu, który dotyczy pliku właściwości application.properties. Dziś wpis dotyczący profili, czyli mechanizmu, który pomoże nam pracować z różnymi danymi. Możemy zdefiniować różne właściwości w zależności np. od tego na jakim środowisku chcemy pracować.


Czytaj więcej

#2 Spring Boot - application.properties

Krzysztof Chruściel
14-06-2016
Java, Spring Boot

Dzisiejszy wpis Spring Boot’owy dotyczy konfiguracji właściwości aplikacji (ang. application properties). Spring Boot idealnie nadaje się do PoC (ang. Proof Of Concept) dzięki temu, że wykorzystuje podejście deklaratywne, czyli określamy co chcemy osiągnąć, a nie jak.


Czytaj więcej

String poprzez new? - String Literal Pool

Krzysztof Chruściel
11-06-2016
Clean Code, JVM, Java

String, chyba najpopularniejszy obiektowy typ danych wykorzystywany w Javie. Kluczowe słowo to obiektowy. Jak dobrze wiemy, obiekty tworzymy poprzez słówko new, natomiast jak typowo tworzymy obiekt typu String, to nie używamy tego słowa kluczowego.


Czytaj więcej

Confitura - 2016

Krzysztof Chruściel
09-06-2016
Java

Kolejny wpis o konferencji, no cóż taki okres. Choć bilety na pociąg kupiliśmy już jakiś czas temu, to nadal nie mieliśmy wykupionych cegiełek, które uprawniają nas do udziału w Confiturze 2016. Udało nam się je kupić po mimo, iż znikały one w przeciągu 30 sekund, także 2 lipca widzimy się na Confiturze!


Czytaj więcej

Quality Excites - 2016

Krzysztof Chruściel
06-06-2016
Clean Code, Konferencje

25 czerwca odbędzie się konferencja związana z jakością oprogramowania. Organizowana jest ona przez firmę Future Processing, nie jestem w żaden sposób związany z tą firmą. Wpis traktuje jako wpis informacyjny i wszystkich chętnych zapraszam na tą konferencję.


Czytaj więcej

SableCC + IntelliJ - krótka instrukcja obsługi

Krzysztof Chruściel
02-06-2016
Java

SableCC jest generatorem parserów dla Javy. Więcej informacji możecie znaleźć TUTAJ. W swoim artykule chciałam skupić się na konfiguracji IntelliJ, skompilowaniu prostej gramatyki napisanej właśnie w SableCC i przetestowaniu jej z wykorzystaniem własnego interpretera napisanego w Javie.


Czytaj więcej

#1 Spring Boot - banner/logo

Krzysztof Chruściel
28-05-2016
Java, Spring Boot

Gdy prace nad naszą aplikacją w Spring Boot’cie rozpoczynają się lub dobiegają końca fajnie byłoby zmienić logo, które pojawia się po uruchomieniu aplikacji. W samym logo można wyświetlić więcej informacji na temat aplikacji. Znajdować mogą się tam miedzy innymi informacje o aktualnej wersji aplikacji oraz Spring Boot’a, zapraszamy!


Czytaj więcej

Agile - buduj zwinne oprogramowanie

Krzysztof Chruściel
02-05-2016
Agile

O tym jak zwinnie budować niezawodne systemy przeczytać możecie w Manifeście Agile. 15 lat temu grupa 17-stu osób spotkała się w górach w okolicy Salt Lake City i spisała dokument, który zapoczątkował zmianę myślenia osób tworzących oprogramowanie. Składa się on z 4 głównych wartości oraz 12 zwinnych zasad. Zacznijmy od tych pierwszych.


Czytaj więcej

ACID - czyli nie zrób sobie kwasu

Krzysztof Chruściel
27-03-2016
DB

Dziś bardziej bazodanowo, czyli słów kilka o ACID. ACID jest anagramem, czyli słowem zbudowanym z pierwszych liter innych słów. Jest to zbiór właściwości, które pozwalają osiągnąć spójność danych. Prawie wszystkie aktualne aplikacje korzystają z bazy danych warto więc widzieć coś na temat: A - atomowość, C - spójność, I - izolacja, D - trwałość.


Czytaj więcej

Java - ByteCode

Krzysztof Chruściel
20-03-2016
JVM, Java

Schodzimy nisko, ale czy to coś złego? Według IBM developerWorks: „Znajomość kodu bajtowego Javy pomaga programiście tak, jak znajomość asemblera pomaga programistom języków C i C++“ i ja z tym stwierdzeniem się zgadzam. W tym wpisie postaram się przybliżyć wam kod bajtowych.


Czytaj więcej

Docker - pierwsze kroki

Krzysztof Chruściel
14-03-2016
Docker, Java

Docker - kolejna sexy technologia pożądana przez wiele osób. Wykorzystywany jest do deploymentu oraz developingu aplikacji. Docker jest kontenerem bazującym na jądrze Linuxa (kontenery linuksowe - lxc). Jest on bardzo lekki i przyspiesza proces wytwarzania oprogramowania.


Czytaj więcej

Pozbądź się null pointerów - java.util.Optional

Krzysztof Chruściel
09-03-2016
Clean Code, JVM, Java

Null pointer exception jest chyba najbardziej rozpoznawalnym i najczęściej występującym wyjątkiem w Javie. Wyjątek ten może doprowadzać do wielu niepożądanych zachowań (w tym przerwanie działania aplikacji). Java 8 dostarcza nam nową klasę Optional z pakietu java.util.*, która pozwala nam w lepszy sposób zabezpieczyć się przed tego typu wyjątkiem.


Czytaj więcej

Apache Storm - wprowadzenie, teoria

Krzysztof Chruściel
06-03-2016
Streams

Apache Storm jest projektem open source i służy do przetwarzania strumieniowego w czasie rzeczywistym. Ułatwia wykonywanie działań na nieograniczonych strumieniach danych. Może być używany z dowolnym językiem programowania. Przed samym rozpoczęciem zabawy z Apache Storm przygotowałam trochę teorii, która ułatwi nam późniejszą pracę z tym projektem.


Czytaj więcej

Python - gettery i settery - @property

Krzysztof Chruściel
04-03-2016
Python

Gettry i settery nazywane też akcesorami/mutatorami, wykorzystywane są odpowiednio do pobierania i ustawiania wartości atrybutu obiektu. Zapewniają one enkapsulacje danych. W Pythonie istnieje kilka przykładów, które na pierwszy rzut oka nie są trywialne. Przyjrzyjmy się im dokładniej.


Czytaj więcej

PyCharm

Krzysztof Chruściel
28-02-2016
Clean Code, Python

Mam dla was kolejną dawkę JetBrains’owych IDE. Ten wpis będzie dotyczył PyCharm’a, który jest dedykowany dla Pythona. O IntelliJ IDEA możecie przeczytać w artykule Krzyśka. Przygotowałam dla Was krótki opis samego IDE oraz zestawienie ciekawych skrótów, które warto zapamiętać, żeby ułatwić sobie życie i przyspieszyć pisanie kodu.


Czytaj więcej

Python - specjalna zmienna __name__

Krzysztof Chruściel
27-02-2016
Python, Testing

Czy podczas importowania modułów Python’owych zastanawiałeś się w jakim celu wykorzystywane jest sprawdzenie:

if __name__ == ‘__main__‘:

Jeśli tak to zapraszam do krótkiego artykułu, w którym omówię tą specjalną zmienną.


Czytaj więcej

IntelliJ IDEA - poprawa wydajności pracy

Krzysztof Chruściel
23-02-2016
Clean Code

IDE (ang. Integrated Development Environment) - czyli zintegrowane środowisko programistyczne. Jest to aplikacja, która służy do tworzenia, modyfikowania i testowania kodu. Chodź IntelliJ IDEA nie znalazł się na liście najbardziej popularnych IDE na stackoverflow, jest on coraz częściej wykorzystywanym środowiskiem developerskim. Jeśli zdecydowaliśmy się na korzystanie z tego IDE, warto poświęcić niewiele czasu, aby usprawnić swoją prace w IntelliJ IDEA.


Czytaj więcej

Garbage collection - zliczanie referencji

Krzysztof Chruściel
18-02-2016
Algorytmy, JVM

Garbage collector - potocznie nazywany “odśmiecaczem”. Jest tak naprawdę automatycznym procesem odpowiedzialnym za identyfikowanie nieużywanych obiektów, a następnie za ich usunięcie. Nieużywane obiekty to takie, do których nie ma żadnych referencji, czyli nie mamy możliwości dostania się do tego obiektu. Brak możliwości dostania się do obiektu jest jednoznaczny z usunięciem obiektu, a to oznacza zwolnienie obszaru pamięci.


Czytaj więcej

Testy - poziomy i typy

Krzysztof Chruściel
17-02-2016
Testing

Zaczynając zabawę z testowaniem oprogramowania, należałoby wiedzieć jakie w ogóle mamy podziały testów i w jakich sytuacjach stosować każde z nich. Zaznaczmy, że poziomy i typy testów to dwa zupełnie różne, niezależne od siebie podziały. Każdy typ testu może być wykonany na każdym poziomie testowania. Przykładem są testy modułowe oraz systemowe, które dotyczyć mogą zarówno funkcjonalnych, jak i niefunkcjonalnych cech systemu. Niektóre połączenia poziomów i typów występują rzadziej, a inne częściej.


Czytaj więcej

PEP8

Krzysztof Chruściel
16-02-2016
Clean Code, Python

Dokument, który chciałam przedstawić zawiera konwencję zapisu kodu Pythonowego. Stosowanie się do niego nie przyspiesza wykonywania programów, ale sprawia, że kod staje się bardziej czytelny. Jeden z autorów PEP8 (Guido van Rossum) zaznacza, że kod jest znacznie częściej czytany niż pisany i właśnie dlatego tak ważne jest dbanie o jego czytelność i jednolitość. Poniżej przedstawiłam kilka ważniejszych zasad PEP8.


Czytaj więcej

Strumienie danych w Javie - java.util.stream

Krzysztof Chruściel
15-02-2016
Java, Streams

Bardzo fajnym dodatkiem w Javie 8 są strumienie danych. Znajdują się one w pakiecie java.util.stream. Są one odpowiedzialne za przetwarzanie danych w postaci strumieni oraz za operacje na wielu elementach. Do reprezentowania kolekcji w trakcie przetwarzania służy nowy interfejs Stream. Na strumieniach możemy wykonać szereg operacji, aby na końcu pobrać wynik (metoda agregująca) tych operacji bez zmiany stanu samego strumienia.


Czytaj więcej

Gitflow Workflow - model pracy z Git'em

Krzysztof Chruściel
11-02-2016
GIT

GIT - czyli najpopularniejszy system kontroli wersji. Zyskał on swoją popularność między innymi dzięki bardzo prostej pracy z branchami (Więcej informacji na temat systemów kontroli wersji). Po pewnym czasie developerzy zauważyli, iż dałoby się uogólnić model pracy z GIT’em, czyli Workflow, lub jak też bywa nazwany w kontekście GIT - Gitflow.


Czytaj więcej

Strumieniowe bazy danych - definicje

Krzysztof Chruściel
07-02-2016
Streams

Ostatnimi czasy sporo czasu poświęciłam zagadnieniom strumieniowych języków i baz danych. Związane było to z tworzeniem własnego języka strumieniowego. W dzisiejszych czasach istnieje wiele systemów, w których wymagane jest przetwarzanie bardzo dużych ilości danych, napływających z wielu źródeł w trybie on-line. Z punktu widzenia zarówno użytkownika bardzo ważne jest, aby analiza i prezentacja wyników była ciągła i dynamiczna. Przykładami takich systemów mogą być systemy monitorujące ruch drogowy lub systemy giełdowe. W obu przypadkach niezbędna jest minimalizacja opóźnień przetwarzania danych. Konsekwencją może być zwrócenie nieaktualnych danych. Klasyczne systemy bazodanowe mogą okazać się nieefektywne, ponieważ przed przetworzeniem danych następuje ich zapis (znacząco spowalnia to pracę przy dużych zbiorach). Innym przykładem może być system monitorujący bezpieczeństwo. Kładzie się tu nacisk na inne funkcjonalności niż we wcześniejszych przypadkach. Opóźnienia nie są tak ważne, jak pewność zwrócenia wszystkich danych, bez pominięcia żadnych wartości. Różnorodność ta sprawia, że budowa systemu ogólnego zastosowania wiąże się ze stworzeniem nowych rozwiązań. Jednym z nich może być właśnie system przetwarzania strumieniowego.


Czytaj więcej

JSF 2.2 - nowości

Krzysztof Chruściel
07-02-2016
JSF

Choć od premiery frameworku Java Server Faces minęło już sporo czasu (premiera: 2013-05-21), dopiero niedawno musiałem wykorzystać nowe funkcje zawarte w JSF w wersji 2.2. Wprowadzono kilka nowych komponentów oraz pojawiło się wsparcie dla HTML5.


Czytaj więcej

System kontroli wersji - opis oraz definicje

Krzysztof Chruściel
05-02-2016
GIT

System kontroli wersji służy między innymi do śledzenia informacji o zmianach na plikach. Dostarcza takie możliwości jak przywrócenie zmian, dodanie nowych modyfikacji, czy sprawdzenie jakie zmiany zostały ostatnio wykonane. VCS – version control system Systemy kontroli wersji dzielimy na trzy rodzaje: - lokalne - VCS - scentralizowane – CVCS - Centralized - rozproszone – DVCS – Distributed


Czytaj więcej