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/31/2020
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/30/2020
Budowanie mikro serwisów -porady
W tej notce opisze kilka ciekawych rozwiązań, które ułatwiają pisanie, testowanie i wsparcie obsługi mikro serwisów.
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/30/2020
Programowanie funkcyjne z użyciem Angulara i GraphQL
Programowanie funkcyjne na przykładzie aplikacji CRUD pobierającej listę krajów i szczegółowe informacje o krajach.
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
Jeżeli aplikacja poprawnie się uruchomi możemy przejść na adres: http://localhost:4200/
i zobaczymy informację, że aplikacja działa.
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_angulari 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:
Dobrze przemyślana historyjka powinna zawierać tytułowe 3C czyli:
- Card,
- Conversation,
- Confirmation
Jeżeli chcemy sprawdzić czy historyjka jest poprawnie napisana powinniśmy także rozpatrzyć jej zawartość pod katem INVEST czyli:
- Independent
- Negotiable
- Valuable
- Estimable
- Small
- Testable
4/02/2020
Jak zamknac proces na porcie
Poniżej przykładowa procedura jak usunac serwis, który nasłuchuje i blokuje port sieciowy.
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.
- 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:
Zasadnicze zmiany, które weszły wraz z Java 8:
- Wyrażenia lambda
- Interfejs funkcjonalny (functional interface)
- Domyślne i statyczne metody w interfejsach
- Interfejsy funkcjonalne dla:
- Predicate
- Function
- Consumer
- Supplier
- Referencje metod i konstruktorów (method reference, constructor reference) tworzone za przy użyciu operatora " :: "
- Stream API
- 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:
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
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 falseInstrukcja 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
Subskrybuj:
Posty (Atom)
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...
-
Zazwyczaj gdy stworzysz nowego użytkownika z prawem dostępu do panelu admina w phpMyAdmin i następnie chcesz się zalogować wyskakuje tak...
-
Tapeta z podstawowymi komendami dla Linuxa. Dla początkujących baaardzo użytczena ;) (po kliknięciu w miniaturkę tapety większa wersja do...