8/24/2021

8/13/2021

IntelliJ IDEA skróty klawiszowe


Idea IntelliJ jest przydatnym narzędziem w rękach programisty. Aby móc pracować jeszcze szybciej musisz nauczyć się używać skrótów klawiszowych zamiast powolnego wyklikiwania rzeczy. Dopiero wtedy będziesz profesjonalistą i pisał kod jakbyś grał na instrumencie:)

7/10/2021

Docker

 Docker umożliwia uruchamianie aplikacji na odizolowanym środowisku. Pod kątem programowania aplikacji webowych jest to świetna okazja na szybkie uruchamianie aplikacji bez konieczności każdorazowego martwienia się czy dany komputer jest dobrze skonfigurowany. Wystarczy jedynie mieć zainstalowanego Dockera na swoim komputerze.

Ważną przewagą nad wirtualizacją jest to że na odizolowanej maszynie uruchamiamy tylko to co jest niezbędne dla aplikacji. Oszczędzamy więc zasoby komputera hostującego projekt i co za tym idzie obniżamy koszty.

7/02/2021

Java Streams API

 Programowanie funkcyjne jest dziś bardzo popularne. Aplikacje zaprogramowane w sposób imperatywny unikają wspólnego stanu, zazwyczaj są krótsze niż metody robiące to samo ale zaprogramowane w sposób deklaratywny (kod zorientowany obiektowo).

3/14/2021

Moduły w Java 9+

 



Kompilowanie modułów

Określa wszystkie źródła z różnych pakietów. Zawiera:
  • pakiety, które są eksportowane przez ten moduł do innych modułów
  • lokacje plików JAR  dla modułów automatycznych
  • plik module-info
    javac -d <compiled output folder> <list of source code file paths including module-info>
poniżej przykład:
javac -d mods --module-source-path src $(find src -name "*.java")

10/31/2020

Spring Security


We wpisie chciałbym poruszyć temat zabezpieczenie aplikacji internetowej przed niepożądanym dostępem. Jest to duży temat więc być może powstanie więcej części.

10/28/2020

Testowanie aplikacji

 Konwencje nazewnicze:

Nazwy pisanych przez Ciebie testów powinno się łatwo czytać. Ułatwi to zrozumienie innemu programiście lub Tobie za kilka tygodni kodu. 

9/22/2020

Java JDK 15 co nowego?

 Nowe wydanie Javy JDK 15 z 15 września 2020 zawiera wiele nowych ciekawych i poprawionych funkcji. 


JEP 339: Edwards-Curve Digital Signature Algorithm (EdDSA)
JEP 360: Sealed Classes (Preview) 
JEP 371: Hidden Classes 
JEP 372: Remove the Nashorn JavaScript Engine 
JEP 374: Disable and Deprecate Biased Locking 
JEP 375: Pattern Matching for instanceof (Second Preview) 
JEP 377: ZGC: A Scalable Low-Latency Garbage Collector 
JEP 378: Text Blocks 
JEP 379: Shenandoah: A Low-Pause-Time Garbage Collector J
EP 381: Remove the Solaris and SPARC Ports 
JEP 383: Foreign-Memory Access API (Second Incubator)
JEP 384: Records (Second Preview) 
JEP 385: Deprecate RMI Activation for Removal

8/19/2020

Git przydatne komendy do codziennej pracy


Git jest to narzędzie do zarządzania repozytorium kodu, nad którym pracujemy. Powszechnie używany system kontroli wersji. Wiele osób na co dzień wykorzystuje tylko podstawowe komendy jednak to narzędzie ma masę innych, które musimy znać i biegle używać aby wydajnie programować. 

7/30/2020

Tworzenie od zera nowego projektu Angular z użyciem CLI

Jednym ze sposobów utworzenia projektu Angular, który umożliwia utworzenie szkieletu projektów według zalecanego standardu.

Bardzo wygodne jest korzystaniez Angular CLI aby w szybki sposób mieć możliwość utworzenia struktury aplikacji:
npm install -g @angular/cli

Rozszerzona wersja.
Do utworzenia struktury nowej aplikacji Angular można wykorzystać polecenie z Nx toolkit. Na poczatek zainstalujmy pakiet Schematics:
npm install -g @nrwl/schematics

a następnie aby utworzyć projekt:
npm init nx-workspace


angular console

Uruchamianie projektu Angular

W celu uruchomienia projektu Angular musimy przejść do katalogu projektu:
cd nowy_projekt_angular
i uruchomić aplikację za pomocą polecenia
ng serve 

Jeżeli aplikacja poprawnie się uruchomi możemy przejść na adres: http://localhost:4200/
i zobaczymy informację, że aplikacja działa.



Wyjątki -informacje warte zapamiętania

W poście tym zebrałem informacje, które warto zapamiętać na temat wyjątków w Javie. Wyjątek wskazuje na to, że coś nieoczekiwanego zostało wykonane w programie. Metoda tego typu służy do zaprogramowania to w jaki sposób aplikacja ma na tego typu zachowanie reagować.

5/31/2020

Interfejsy funkcyjne Java

W poście tym przybliżam interfejsy funkcyjne wprowadzone w bibliotece  Java 8. Istnieje sześć głównych typów interfejsów funkcyjnych. Wszystkich interfejsów funkcyjnych jest 43.

5/05/2020

Reactive streams i projekt Reactor ogólne informacje

W tym spisie zebrałem krótkie informacje na temat Reactive streams i project Reactor. Są również bardzo ciekawe linki, które w szybki sposób pomogą Ci wskoczyć na poziom umożliwiający programowanie z użyciem wspomnianych bibliotek.

4/06/2020

Tworzenie historyjek (stories), co oznacza INVEST oraz 3C

Historyjki użytkownika (User stories) maj swój pocztek w eXtreme Programming. Zespoły SCRUM'owe implementuja w zależności od swojego doświadczenia i potrzeb różne techniki takie jak eXtreme programming, Test Driven Development oraz aktywne programowanie w parach lub całym zespołem przy jednym komputerze.
Dobrze przemyślana historyjka powinna zawierać tytułowe 3C czyli:

  1. Card, 
  2. Conversation, 
  3. Confirmation
Jeżeli chcemy sprawdzić czy historyjka jest poprawnie napisana powinniśmy także rozpatrzyć jej zawartość pod katem INVEST czyli: 
  1. Independent
  2. Negotiable
  3. Valuable
  4. Estimable
  5. Small
  6. Testable

3/28/2020

Interfejsy funkcjonalne wprowadzone w Java 8

Interfejs funkcjonalny jest interfejsem posiadającym przynajmniej jedną metodę abstrakcyjną (single abstract method). W omawianym interfejsie możesz zdefiniować wiele metod abstrakcyjnych i statycznych. Przykład Interfejsu funkcjonalnego:

java.util.function jest pakietem, który zawiera predefiniowane interfejsy.

4.1 Predicate 

Funkcja matematyczna, która zwraca wartość prawda fałsz. w zależności czy warunek zostanie spełniony lub nie. Czyli jest to metoda zwracająca wartość boolean.
- Predicate jest interfejsem funkcjonalnym wprowadzonym od Java 1.8
- interfejs zawiera tylko jedną metodę test(), która przyjmuje jedną wartość, wykonuje sprawdzenie na podstawie przesłanego warunku i  zwraca wartość boolean.

3/25/2020

Różnice między interfejsem z metodą domyślną a klasą abstrakcyjną


Poniżej przedstawiam listę różnic pomiędzy interfejsem z metodą domyślną a klasą abstrakcyjną w Java 1.8

Interfejs z metodą domyślną:
1. Wewnątrz interfejsu każda zmienna jest zawsze public static final nie można zadeklarować instancji zmiennej.
2. Interfejs nie przechowuje stanu obiektu
3. Wewnątrz interfejsu nie można deklarować konstruktora
4. Wewnątrz interfejsu nie można deklarować instancji oraz bloków statycznych (static blocks)
5. Interfejs funkcjonalny z metodą domyślną może zawierać wyrażenia lambda
6. Wewnątrz interfejsu nie można nadpisywać metod klasy obiektowej (object class methods)

Klasa abstrakcyjna:
1. Wewnątrz klasy abstrakcyjnej można deklarować instancje zmiennych, które są wymagane w klasach dziedziczących.
2. Klasa abstrakcyjna może przechowywać stan obiektu
3. W klasie abstrakcyjnej można deklarować konstruktory
4. W klasie abstrakcyjnej można deklarować instancje obiektu oraz bloki statyczne
5. Klasa abstrakcyjna nie może zawierać wyrażeń lambda
6. Wewnątrz klasy abstrakcyjnej możesz nadpisywać metody klasy obiektowej



src: https://learn.oracle.com/ols/course/prepare-for-java-se-certification/82508/79482/124477

2/29/2020

Nowe funkcje dodane w Java 8

Wersja 8 została wydana 18 marca 2014 roku. Wersja do pobrania JDK8.
Zasadnicze zmiany, które weszły wraz z Java 8:

  1. Wyrażenia lambda
  2. Interfejs funkcjonalny (functional interface)
  3. Domyślne i statyczne metody w interfejsach
  4. Interfejsy funkcjonalne dla:
    1. Predicate
    2. Function
    3. Consumer
    4. Supplier
  5. Referencje metod i konstruktorów (method reference, constructor reference) tworzone za przy użyciu operatora " :: "
  6. Stream API
  7. Date and time API
W artykule szczegółowo opisuje każdy z nich.

Polecane notatki

Git przydatne komendy do codziennej pracy

Git jest to narzędzie do zarządzania repozytorium kodu, nad którym pracujemy. Powszechnie używany system kontroli wersji. Wiele osób na co d...