7/30/2020

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

4/30/2014

Nie możesz odpalić projektu z Tomcat bo: 8084 is already in use. Lub port jest zajęty. (jak odblokować port na Linux'sie oczywiście)


1.Najpierw należy sprawdzić, który program używa potrzebnego nam portu za pomocą polecenia:

netstat -o | grep 8084
powyższy program wyświetla połączenia, tabele rutujące, statystyki, tłumaczenia adresów sieciowych. Po | wydajemy polecenie aby zostały wyświetlone tylko wpisy zawierające numer portu: 8084. Co przyśpieszy nam "ręczne" przeszukiwanie.



2.Następnie aby odblokować port musisz zabić program, który Ci go zajmuje. Aby to zrobić wydaj polecenie:
taskkill /pid 3581
gdzie PID jest numerem PID programu, który zajmuje nasz port.

Szybszym sposobem na odblokowanie portu jest użycie komendy:
sudo fuser -k 8080/tcp

Program Fuser jest bardzo dobry do zabijania procesów, warto się z nim zapoznać, wpisz:
fuser --help

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