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.

2/06/2020

Angular 9 wydany

Dziś została wydana kolejna wersja Angulara. Jakie zmiany niesie ze sobą nowa wersja:

1. Ivy

Najważniejsza zmiana: Angular jest teraz domyślnie kompilowany z użyciem Ivy. Ivy czyli nowy silnik renderujący strony internetowe. Dzięki niemu paczki nowo stworzonych aplikacji mogą zajmować mniej miejsca na dysku. Dzięki czemu aplikacja będzie szybciej otwierała się w przeglądarce użytkownika.

2. Ahead-of-time

Przy uruchomieniu aplikacji za pomocą polecenia ng serve zostanie wykonana kompilacja ahead of time zamiast just in time. Może to za sobą nieść inne odświeżanie aplikacji w trakcie jej tworzenia.

3. Basic mode, full mode, strict mode

Możemy skonfigurować aplikację pod kątem sprawdzania nazw templatek. W jaki sposób ma się to odbywać. Funkcja ta była do tej pory dostępna jednak teraz jest jeszcze bardziej rozbudowana. Mamy do dyspozycji: basic mode, full mode, strict mode za ich pomocą można definiować w jaki sposób Angular ma parsować templatki komponentów.

4. @ViewChild(...{ static:false})  domyślnie

Użycie @ViewChild w celu wybrania elementu z templatki  powinno zawierać opcję static:true lub static:false   np w większości przypadków będzie to. @ViewChild(...{ static:false})  i taka wartość będzie przekazywana domyślnie jeżeli jej nie ustawimy i to jest zasadnicza różnica w Angularze 9. Nie trzeba  wartości static ustawiać w przypadku static:false. Jednak gdy chcemy użyć tego typu elementu np. w ngOnInit(). Czyli przed wykryciem zmian w kodzie. Powinna wartość @ViewChild być ustawiona na false

Instrukcja jak zaktualizować aplikację do najnowszej wersji Angulara: https://next.angular.io/guide/updating-to-version-9 . Są tam również przedstawione większe i mniejsze zmiany, które należy wziąć pod uwagę przy aktualizacji np. aktualnie wspierana wersja TypeScript to 3.6.

Aktualizacja za pomocą CLI:
npm install --no-save @angular/cli@^8.3.15
ng update @angular/cli @angular/core

src: https://blog.angular.io/version-9-of-angular-now-available-project-ivy-has-arrived-23c97b63cfa3

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...