WSA WroSoftAcademy
WSA WroSoftAcademy
  • 104
  • 8 969
Jak się uczyć? Jak wytrwać w postanowieniach? Film o tym, jak sprawić żeby chciało się chcieć
Jak się uczyć? Jak wytrwać w postanowieniach? Film o tym, jak sprawić żeby chciało się chcieć
มุมมอง: 119

วีดีโอ

Design_pattern_06 Abstract Factory
มุมมอง 12721 วันที่ผ่านมา
Design_pattern_06 Abstract Factory
Design_pattern_05 Strategy
มุมมอง 242หลายเดือนก่อน
Design_pattern_05 Strategy
Design_pattern_04 Factory Method
มุมมอง 146หลายเดือนก่อน
Design_pattern_04 Factory Method
Jak powstaje legacy code. Refactor.
มุมมอง 533หลายเดือนก่อน
Jest to film prezentujący domenę na której będziemy robić przykłady wzorców projektowych. Przy okazji demonstruje jak powstaje legacy code, jak zrobić refactor oraz kilka innych tricków 0:00 Wstęp 1:00 Prezentacja architektury projektu 2:30 Tworzenie pliku JSON 3:36 Tworzenie pliku CSV 4:54 Legacy code 5:30 Refactor 10:11 Powiązanie dwóch źródeł danych 13:30 Zakończenie
Design_pattern_02 Builder - z multi cursor na IntelliJ
มุมมอง 2262 หลายเดือนก่อน
Poznamy wzorzec projektowy Builder. Jaki problem rozwiązuje, jak go stworzyć i jak używać. Pokażemy również jak stworzyć Builder z użycie, multi kursora w IntelliJ 0:00 Wstęp 0:23 Przedstawienie problemu 1:33 Tworzenie Buildera 4:21 Użycie Buildera 5:08 Warianty Buildera, które można spotkać 7:47 Builder z użyciem mutli cursor
Design_pattern_01 Singleton - double check
มุมมอง 2742 หลายเดือนก่อน
Poznajemy najprostszy wzorzec projektowy - Singleton. Poznamy jego ewolucję od najprostszej możliwej wersji, po wersję na wielowątkowości, czyli double chek 0:00 Wstęp 0:20 Opis wzroca 0:39 Wykorzystanie wzorca 1:38 Implementacja
JAVA_SE_89 Typy w wielowątkowości
มุมมอง 982 หลายเดือนก่อน
Typy w wielowątkowości, czyli jakich typów danych bezpiecznie możemy używać gdy pracujemy na wielu wątkach. Opowiemy o typach atomowych, jak AtomicInteger, AtomicLong, AtomicBoolean, o tabliach - AtomicIntegerArray, czy kolekcjach: ConcurretMap i CopyOnWriteArrayList
JAVA_SE_88 Sterowanie wątkami za pomocą metod wait() i notify()
มุมมอง 1003 หลายเดือนก่อน
Jak usypiać i wybudzać wątki? Poznamy na podstawie komunikatora, który będzie wykorzystywać metody wait() i notify(). Omówimy do czego służą te metody, jak je wywoływać poprawnie i kiedy z nich korzystać.
JAVA_SE_87 synchronized & Thread.join()
มุมมอง 783 หลายเดือนก่อน
Czym jest metoda synchroniczna, blok synchronized i jak tego używać? Poznany również metodę join(), która pozwala synchronizować wątki między sobą.
JAVA_SE_86 Thread - metody statyczne
มุมมอง 963 หลายเดือนก่อน
W tym odcinku opowiemy o metodach statycznych na klasie Thread, jak zarządzać wątkami. Będzie też coś o wyjątkach ;) 0:00 Wstęp 0:20 Nazywanie wątków 1:06 Zarządzanie wątkami 3:24 setPriority() 4:05 currentThread() 5:30 Wątki a wyjątki... 6:29 sleep() 6:58 yield() 8:36 Podsumowanie
JAVA_SE_85 Wielowątkowość
มุมมอง 1413 หลายเดือนก่อน
Programowanie współbieżne i wielowątkowość... Jak uruchomić dwie metody równocześnie? Dowiemy się w tym odcinku
JAVA_SE_84 Piszemy własnego Spring'a
มุมมอง 2294 หลายเดือนก่อน
Oto przykład jak w praktyce wykorzystać adnotacje i programowanie refleksyjne z nutką metod generycznych. Zademonstrujemy jak zaimplementować swój własny mechanizm dependency injection, z którego znany jest Spring w java. 00:00 Wstęp 00:35 Architektura przykładowego projektu 03:07 Po co DI? Przedstawienie problemu 04:18 Implementujemy własne Dependency Injection 13:41 Użycie naszego DI i urucho...
JAVA_SE_83 Metody w refleksji
มุมมอง 574 หลายเดือนก่อน
Omówimy co jakie metody mamy na metodzie, jak wywoływać metody w refleksji i najważniejsze, czy da się wywołać na obiekcie metodę prywatną?
JAVA_SE_82 Konstruktor w refleksji
มุมมอง 525 หลายเดือนก่อน
W tym odcinku opowiemy jak za pomocą refleksji budować obiekty. Będziemy używać konstruktorów w refleksji
JAVA_SE_81 Pole w refleksji
มุมมอง 505 หลายเดือนก่อน
JAVA_SE_81 Pole w refleksji
JAVA_SE_80 Typ vs Klasa
มุมมอง 906 หลายเดือนก่อน
JAVA_SE_80 Typ vs Klasa
JAVA_SE_79 Programowanie refleksyjne - klasa
มุมมอง 726 หลายเดือนก่อน
JAVA_SE_79 Programowanie refleksyjne - klasa
JAVA_SE_78 Dziedziczenie na adnotacjach
มุมมอง 576 หลายเดือนก่อน
JAVA_SE_78 Dziedziczenie na adnotacjach
JAVA_SE_77 Adnotacje
มุมมอง 787 หลายเดือนก่อน
JAVA_SE_77 Adnotacje
JAVA_SE_76 Record - mini klasa na sterydach
มุมมอง 447 หลายเดือนก่อน
JAVA_SE_76 Record - mini klasa na sterydach
JAVA_SE_75 Połączenie typów generycznych i dziedziczenia. Co możemy osiągnąć?
มุมมอง 1787 หลายเดือนก่อน
JAVA_SE_75 Połączenie typów generycznych i dziedziczenia. Co możemy osiągnąć?
JAVA_SE_74 Zaawansowane typy generyczne
มุมมอง 1287 หลายเดือนก่อน
JAVA_SE_74 Zaawansowane typy generyczne
JAVA_SE_73 Metody generyczne
มุมมอง 838 หลายเดือนก่อน
JAVA_SE_73 Metody generyczne
JAVA_SE_72 Typy generyczne
มุมมอง 998 หลายเดือนก่อน
JAVA_SE_72 Typy generyczne
JAVA_SE_71 Wyrażenia lambda w JAVA
มุมมอง 729 หลายเดือนก่อน
JAVA_SE_71 Wyrażenia lambda w JAVA
JAVA_SE_70 Handler
มุมมอง 8110 หลายเดือนก่อน
JAVA_SE_70 Handler
JAVA_SE_69 klasy wewnętrzne
มุมมอง 7810 หลายเดือนก่อน
JAVA_SE_69 klasy wewnętrzne
JAVA_SE_68 Klasy anonimowe
มุมมอง 6811 หลายเดือนก่อน
JAVA_SE_68 Klasy anonimowe
JAVA_SE_67 metoda default w interface
มุมมอง 4411 หลายเดือนก่อน
JAVA_SE_67 metoda default w interface

ความคิดเห็น

  • @800santana
    @800santana 27 วันที่ผ่านมา

    Do czego filmiki na twoim kanale się mogą przydać?

    • @wrosoftacademy
      @wrosoftacademy 27 วันที่ผ่านมา

      Wzorce projektowe pozwalają ogarnąć kod na poziomie klas, metod lub pakietów, żeby był czytelniejszy, podzielony odpowiedzialnością, bardziej spójny. Wzorce sprawiają, że kod jest elastyczny i łatwo można aplikacje rozszerzać, dodaj kolejne funkcjonalności. Z kolei czytelność kodu wpływa na szybsza analize kodu. Tych rzeczy ja używam w każdym projekcie w którym biorę udział. Wiadomo, nie zawsze, nie wszystkich ale jeżeli wiem jakie są Wzorce i jak działają to szybko dostrzegam schematy problemów do rozwiązania.

  • @pawelusz2180
    @pawelusz2180 หลายเดือนก่อน

    Nieźle

  • @wrosoftacademy
    @wrosoftacademy หลายเดือนก่อน

    Projekt na podstawie którego jest ten film omówiony jest tu: th-cam.com/video/Yz8W5bdyO4k/w-d-xo.html

  • @michalp.1484
    @michalp.1484 หลายเดือนก่อน

    średniki w csv to herezja! CSV == Comma-Separated Values !!

    • @wrosoftacademy
      @wrosoftacademy หลายเดือนก่อน

      Tak, z nazwy wynika, że stosujemy przecinek jako separator. Narzędzia do otwierania plików, jak Excel, OpenOffice, czy LibreOffice pozwalają na wybór separatora zastosowanego w pliku. Przecinki są o tyle problematyczne, dla nas, że są separatorem części dziesietnych na liczbach. Z tego powodu ja najczęściej stosuje średniki. A Wy jakie stosujecie separatory w plikach csv? Być może jest inny sposób, żeby obejść kwestie liczb

    • @safetycar-onboard
      @safetycar-onboard หลายเดือนก่อน

      @@wrosoftacademy Rozwiązanie problemu: "

    • @michalp.1484
      @michalp.1484 หลายเดือนก่อน

      @@wrosoftacademy omg, naprawdę Office ma takie fancy ficzesy? 😂 I nawet LibreOffice? 🤣 a poważniej to ja jeśli muszę to używam pipe'ów a czasem tabów

  • @hasmich
    @hasmich 2 หลายเดือนก่อน

    1:26 rolę tę przejmują kontenery IoC, a wymienione frameworki jedynie je wykorzystują.

  • @hasmich
    @hasmich 2 หลายเดือนก่อน

    00:17 "poznamy Singleton takim jaki być powinien, czyli double checked". To jest szkodliwe uproszczenie. Przy wykorzystywaniu wielowątkowym synchronizacja przy dostępie do instancji ma sens, ale gdy korzystamy z jednego wątku nie ma potrzeby takiej synchronizacji, więc nie powinno się jej robić. Nie każdy singleton powinien być double checked, tylko te które muszą być thread-safe.

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Dzięki za komentarz 🙂 Tak się zastanawiam, że w sumie to trochę masz rację. Celem było zaprezentowanie pełnego singletona thread-safe, gdyż zawsze są pokazywane te proste i nie raz na rozmowach na początku kariery dostawałem pytanie o double-check. Szczerze mówiąc nie używam w biznesowym kodzie singletona, gdyż jak wspomniałeś w drugim komentarzu robię to z użyciem IoC. Użycie double-check na jednowątkowej aplikacji nie będzie grzechem, gdyż nic nie tracimy na wydajności, poza kilkoma extra linijkami. Gorzej, jak w którymś momencie będziemy chcieli przejść na wielowątkowość, to wówczas musimy znaleźć wszystkie singletony biorące w tym udział. Dlatego użycie prostego singletona traktowałbym jako świadomy dług technologiczny.

    • @hasmich
      @hasmich 2 หลายเดือนก่อน

      @@wrosoftacademy Czy nie tracimy czy tracimy zależy od tego jak często jest wywoływany kod zapewniający jedną instancję. Zgoda - w większości przypadków nie tracimy, bo to nie ma większego znaczenia, ale dla mnie to używanie wkrętarki do wkręcenia jednej śrubki - prościej, szybciej i taniej zrobić to śrubokrętem. Przy 100 śrubkach zabawa z wkrętarką ma sens. Zmiana aplikacji z jedno na wielowątkową to dużo więcej niż podmiana implementację singletona i to w praktyce w 99% przypadków kończy się zaprojektowaniem nowego systemu zorientowanego wokół danych oraz struktur read-only, żeby można było efektywnie rozdzielać pracę, a logika biznesowa jest "doklejana" wokół tego. Zawsze też można stworzyć dwa osobne typy i używać ich w zależności od tego czego potrzebujemy.

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      tak, z tym mogę się zgodzić, masz jak najbardziej rację. Należy tylko pamiętać, żeby decyzję podjąć świadomie. W tym kontekście rzeczywiście było to uproszczenie. Wynikająca raczej z doboru słów niż celowego zabiegu. Ale dziękuję za zwrócenie uwagi :)

    • @hasmich
      @hasmich 2 หลายเดือนก่อน

      @@wrosoftacademy Jestem na to szczególnie wyczulony, bo ostatnio często poprawiam wewnętrzne narzędzia gdzie jest sporo kodu, który robi coś czego w zasadzie nie musi robić, ale to przecież nic wielkiego. Po tego typu drobnych poprawkach nagle aplikacja generuje raport w 2 minuty zamiast 1,5 h, dając identyczny output, bo drobne zmiany w gorącej ścieżce bardzo szybko się kumulują. W community języków z GC zbyt często pomija się w zasadzie aspekt pamięci, kosztu GC, robienia tego co potrzeba, tego jak ważny jest rozkład pamięci itd. Może komuś to otworzy oczy albo zainspiruje Cię do stworzenia jakiegoś contentu. Trzymaj się!

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Świetny komentarz 😃 Lubię takie historie. Sam nie raz robiłem refactor w calach optymalizacyjnych. Kod który poprawiałeś to był dead-code, wykonywał zbędne rzeczy, czy raczej kwestia optymalizacji?

  • @Zentex2307
    @Zentex2307 2 หลายเดือนก่อน

    Jakoś nigdy nie trafiłem takiej implementacji z double check. Dzięki !

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Problem najczęściej jest z tym, że wielowątkowość jest robiona na końcu. Jak się uczymy to jesteśmy już przeładowani wiedzą, a później nie mamy czasu przerobić jej na spokojnie. i zrobić powtórkę. Często przy singletonie skupiamy się na idei, żeby zademonstrować blokowanie tworzenia wielu obiektów klasy, a kwestie wielowątkowości są pomijanie. Jednak nie raz zdarzyło mi się usłyszeć na rozmowie rekrutacyjnej pytanie o double check po tym, jak przedstawiłem implementację singleton

  • @januszkuznik137
    @januszkuznik137 2 หลายเดือนก่อน

    Cześć, co myślisz o wykorzystaniu enum do implementacji singleton? Wiem tylko ze tak można ale nie zdazylo mi się jeszcze tej wiedzy wykorzystać. Próbowałeś już może takiego sposobu?

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Jak najbardziej da się qykorzystac enum. Nie robiłem tego na produkcyjnym kodzie ale jest to proste do zaimplementowania. Enum jest zwykłą klasą, wiec metody i pola tworzymy tak samo. Wyglądaliby to tak: public enum PersonService { INSTANCE; public void doSomething(){ } //reszta klasy }

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Więcej o enum znajdziesz tu: th-cam.com/video/LFJedA3PEsQ/w-d-xo.html

    • @januszkuznik137
      @januszkuznik137 2 หลายเดือนก่อน

      @@wrosoftacademy widziałem ten filmik i nawet zadałem Ci tam już kiedyś podobne pytanie 😀

    • @hasmich
      @hasmich 2 หลายเดือนก่อน

      @@januszkuznik137 singleton z enuma to tragiczny wybór polecany przez speców od programowania z LinkedIn, którzy uważają ten typ singletona za świętego graala, bo jest serializowalny. Kto i po co miałby serializować singletony tego nie wiem, bo to dosłownie zaprzecza jego idei - zapewnieniu jednej instancji na runtime, więc serializacja nie ma sensu. Trzymać się z daleka od takich wynalazków i używać typowych singletonów z lub bez synchronizacji dostępu w zależności od potrzeb. Problem jest dawno rozpykany, a takie głupio mądre wynalazki tylko zaciemniają kod. Chyba, że masz jakiś bardzo konkretny powód, żeby go użyć, ale wtedy byś pewnie nie zadał tego pytania, tylko po prostu to zrobił ;)

  • @Zentex2307
    @Zentex2307 3 หลายเดือนก่อน

    Dziwne, że ten kanał ma tak mało subskrypcji, fajnie przedstawiasz tematy, mam nadzieję, że będziesz nagrywał dalej. Planujesz może poruszać w przyszłości bardziej zaawansowane tematy/zagadnienia/problemy? Wydaje się, że kanałów dla początkujących jest chyba już za dużo, natomiast cieżko trafić takie, gdzie porusza się bardziej zaawansowane problemy.

    • @januszkuznik137
      @januszkuznik137 3 หลายเดือนก่อน

      Też mnie to właśnie dziwi, ja co piątek, piąteczek, piątunio wypatruje nowego filmu

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      Cieszę się, że moje filmy niosą wartość dla Was 😍 Plan jest żeby poruszać coraz bardziej zaawansowane rzeczy. Jeżeli macie jakieś pomysły, o czym chcielibyście posłuchać lub nowego poznać, śmiało dawajcie znać w komentarzach. Jestem otwarty na propozycje 😜

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      Z tymi piątkami ostatnio bywało ciężko ale obiecuję poprawę, żeby filmy faktycznie w piąteczkowy wieczór się pojawiały 😆

    • @januszkuznik137
      @januszkuznik137 3 หลายเดือนก่อน

      Wiem, że materiałów o tej tematyce jest multum ale ja bym bardzo chętnie zobaczył serie o design patterns w Twoim wykonaniu. Czy to Twój drugi kanał www.youtube.com/@wrosoftware5103 ?

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      tak, tamten jest jako prywatny do sluchania muzy itd. :)

  • @marcinkunert
    @marcinkunert 3 หลายเดือนก่อน

    Super wytłumaczone. Pozdrawiam!

  • @DrTatra
    @DrTatra 3 หลายเดือนก่อน

    nigdy z se nie miałem do czynienia, ale mega szacun za content

  • @jakub.686
    @jakub.686 3 หลายเดือนก่อน

    warto nie spolszczac angielskich slow w programowaniu, bo czasem jak sie rozmawia nie z polakiem to druga osoba moze nie zrozumiec o czym mowimy. ranabol nie ranejbel translate.google.as/?sl=en&tl=pl&text=runnable&op=translate

    • @wrosoftware5103
      @wrosoftware5103 3 หลายเดือนก่อน

      Słuszna uwaga. Zbyt często słyszałem tę wersję i nie zwróciłem nawet uwagi że jest błędna 🤭

    • @jakub.686
      @jakub.686 3 หลายเดือนก่อน

      @@wrosoftware5103 mam nadzieje, ze nie odebrales tego źle, bo to nie chodzi o moje czepianie tylko doskonalenie swoich programistycznych skilli :D. Ja sie łapałem na tym ze mowilem "enum" zamiast "Inam" itd

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      @@jakub.686 spokojnie, nie odebrałem tego jako przytyk, a zwrócenie uwagi na niepoprawną wymowę 😊

  • @avix2449
    @avix2449 3 หลายเดือนก่อน

    czlowieku jestes swietny

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      Dziękuję 😁 Cieszę się, że moje filmy są wartościowe

  • @januszkuznik137
    @januszkuznik137 3 หลายเดือนก่อน

    Cześć, dzisiaj usłyszałem że enum można wykorzystać do realizacji wzorca singleton. W pewnym sensie to rozumiem ale mam też wątpliwości co do implementacji. Każda zdefiniowana wartość enum jest instancją tego enum, tak? Jeżeli w aplikacji potrzebna była by jedna instancja klasy AppConfig to w enum AppConfig zadeklaruję tylko jedną wartość CURRENT_CONFIG. Tylko że w tym wypadku jeżeli ta instancja miała by posiadać również pola to musze przypisać do nich wartości na etapie kompilacji. Próbując utworzyć taki enum z wartością w której pola są przypisywane podczas runtime IntelliJ nie widzi problemu ale dostaję StackOverFlow. Klasyczne podejscie do realizacji singleton daje taką możliwość chociażby w taki sposób że w .getInstance(String string, Object object) można przekazać argumenty z których później korzysta prywatny konstruktor 'private Singleton(String string, Object object)' a z samej logiki .getInstance() oraz warunku if (this.instance == null) wynika, że taki singleton można tworzyć w czasie runtime. Czy można tworzyć wartości enum z polami których wartości są ustawiane podczas działania aplikacji? Czy realizacja singleton z wykorzystaniem enum rozwiązuje problemy wynikające z wielowątkowości?

    • @wrosoftacademy
      @wrosoftacademy 2 หลายเดือนก่อน

      Nie wiem czemu nie wyświetlił mi się ten komentarz. Trochę musiałem nakombinować się żeby go zobaczyć. Dlatego nie odpisałem do tej pory. Nie mniej wracając do pytania. Tak jak napisałem na filmnie odn. Wzorca projektowego Singleton, żeby osoby oglądające ten film też miały mozliwość zapoznać się z tą wiedzą ;) Tworzymy zwykły enum ale mamy tylko jeden element w środku np. INSTANCE. Dalej implementujemy jak normalną klasę z polami i metodami. public enum PersonService{ INSTANCE; //pamietajcie o tym średniku private Long someData; public void someMethond(){ } } Wywołanie wyglądałoby tak: PersonService.INSTANCE.someMethod();

  • @januszkuznik137
    @januszkuznik137 4 หลายเดือนก่อน

    Możesz podpowiedzieć mi więcej różnic i podobienst klasy abstrakcyjnej oraz interfejsu? Teoretycznie klasa abstrakcyjna która posiada tylko metody abstrakcyjne działa jak interfejs, interfejs od kiedy można definiować metody default ma podobne zachowanie jak klasa abstrakcyjna.. Różnice są w możliwości posiadania pol w klasie abstrakcyjnej co sprzyja zasadzie dry ale klasę abstrakcyjna się dziedziczy a interfejsy implementuje, a wiec może ich być kilka.. co jeszcze można by o tych strukturach powiedzieć?

    • @wrosoftacademy
      @wrosoftacademy 3 หลายเดือนก่อน

      Bardzo dobrze to podsumowałeś, od strony technicznej to rzeczywiście interface za pomocą metod default może 'udawać' klasę abstrakcyjną, natomiast klasa abstrakcyjna może robić za interface. Należy pamiętać, że pola w inteface są jako stałe (public static final), a metod prywatnych nie możemy tworzyć. Można rozważyć różnice w ich przeznaczeniu, wówczas łatwiej będzie wybrać czego powinniśmy użyć. Klasa abstrakcyjna - użyjemy jej, kiedy będziemy chcieli użyć dziedziczenia, czyli mamy kilka klas, które dotyczą tego samego w różnych wariantach, np. TaskProcessor (różne typy zadań procesowane w różny sposób). Wówczas cały proces implementuje w klasie abstrakcyjnej, natomiast fragmenty procesu, które są różne w zależności od typu zadania, będą implementowane przez metody abstrakcyjne w klasach potomnych. Inteface - używam go jako API lub kontraktu np. pomiędzy domenami, czy innymi częściami naszej aplikacji. W ten sposób mam zapewniony kontrakt i wiem jak mogę z danego fragmentu skorzystać właśnie poprzez interface. Jeżeli mam jakąś metodę, która wszędzie lub prawie wszędzie będzie wyglądała tak samo, wówczas użyję default, jako domyślnej implementacji. Mam nadzieję, że rozjaśniłem nieco różnice. Z jednej strony mogą wyglądać bardzo podobnie, jak wspomniałeś, jednak z drugiej, są w nieco innych sytuacjach używane.

    • @januszkuznik137
      @januszkuznik137 3 หลายเดือนก่อน

      @@wrosoftacademy Tak, dzięki! Zwłaszcza podoba mi się stwierdzenie "używania interfejsu jako kontraktu"

  • @januszkuznik137
    @januszkuznik137 4 หลายเดือนก่อน

    "Łoo Panie"

  • @Zentex2307
    @Zentex2307 4 หลายเดือนก่อน

    jakie są przypadki, kiedy używanie refleksji ma sens ? Mówię o normalnej aplikacji, nie tworzymy biblioteki, ani nic co potrzebuje dostęp w locie do klas. Tworzymy aplikacje od podstaw, ma ona swoją architekturę, wszystko możemy zaplanować itd. W jakich przypadkach refleksje są przydatne ? Tylko gdy chcemy "obejść" coś np. skorzystać z metody prywatnej, manipulować wartościami pól itd.?? Szukam praktycznych zastosowań :)

    • @wrosoftacademy
      @wrosoftacademy 4 หลายเดือนก่อน

      Jest to rzecz, z której często się nie korzysta ale czasem pozwala rozwiązać zgrabnie problem. Przykład z życia. Miałem aplikację, która łączyła się z ok 20 serwisami (innymi aplikacjami) w każdym zapytaniu trzeba było dodawać dane techniczne, typu nazwa mojej aplikacji, jako klient, login zalogowanego użytkownika, data utworzenia request itp, w sumie ok 10 pól. Problem w tym, że to był XML, więc klasy były generowane i nie miały między sobą dziedziczenia. W planach rozwojowych, miały dochodzić kolejne serwisy do obsługi. Znając nazwy pól i typy danych, mogłem za pomocą refleksji w jednym miejscu zaimplementować uzupełnianie części technicznej i mieć pewność, że w każdym serwisie będzie w ten sam sposób wypełnione.

  • @januszkuznik137
    @januszkuznik137 4 หลายเดือนก่อน

    Extra, nie przewiduje jeszcze korzystac z refleksji przez jakiś czas ale teraz już wiem co to w ogóle jest. Obejrzałem wszystkie Twoje filmiki i czekam na kolejne, będziesz jeszcze coś wrzucać?

    • @wrosoftacademy
      @wrosoftacademy 4 หลายเดือนก่อน

      Dziękuję za komentarz. Cieszę, że filmy niosą wartość i pomagają 😊 Oczywiście w drodze sa kolejne materiały. Musiałem zrobić przerwę wakacyjna. Jednak od września ruszamy z kolejna porcją wiedzy 🚀

  • @januszkuznik137
    @januszkuznik137 6 หลายเดือนก่อน

    Dzięki za ciekawy materiał. Po dwóch ostatnich filmikach wiem jak tworzyć własne adnotacje ale nie mam wyobrażenia jak one działają.. jak dziala walidacja NotNull albo jak to się dzieje że Builder z lomboka generuje tyle kodu? Dograsz coś jeszcze na ten temat?

    • @wrosoftacademy
      @wrosoftacademy 6 หลายเดือนก่อน

      Jasne, Świetny pomysł 😊 W następnej części bedziemy przechodzić przez refleksje i spróbujemy aop, to w tych mechanizmach najczęściej wykorzystujemy adnotacje z retention runtime. Jeśli chodzi o lombok, to kod generowany jest na etapie kompilacji kodu.

    • @januszkuznik137
      @januszkuznik137 6 หลายเดือนก่อน

      @@wrosoftacademy Sam fakt, że kod generowany jest na etapie kompilacji jest dla mnie w miarę zrozumiały, nawet można sobie w targetach sprawdzić dokładnie jaki kod został wygenerowany. Tylko nie wiem na jakiej zasadzie adnotacje mają taką moc, że tak bardzo mogą wpływać na wygląd lub zachowanie danej klasy, pola czy metody

    • @wrosoftacademy
      @wrosoftacademy 6 หลายเดือนก่อน

      @@januszkuznik137 Do tego służy kilka mechanizmów. Możemy wykorzystać refleksję i bibliotekę Reflection, w springu można wykorzystać mechanizm AOP. Oba sposoby są dla Retention - runtime. Lombok z kolei korzysta z wlasnego plugina do maven lub gradle i jest uruchamiany w odpowiednim momencie. Generalnie w narzędziach tych wykorzystuje się możliwość wyszukania metod, klas i innych artefaktów posiadających konkretną adnotację. Gdy mamy juz znalezione interesujące nas miejsca możemy wykonać jakis dodatkowy kod

    • @januszkuznik137
      @januszkuznik137 6 หลายเดือนก่อน

      @@wrosoftacademy dzięki:)

    • @wrosoftacademy
      @wrosoftacademy 4 หลายเดือนก่อน

      Film przedstawiajacy wykorzystanie adnotacji z refleksją: th-cam.com/video/EdT8Ig_WhDg/w-d-xo.html Nie jest to co prawda NonNull, ale myślę że też ciekawy i pokazuje, jak można używać adnotacji

  • @januszkuznik137
    @januszkuznik137 7 หลายเดือนก่อน

    W trakcie tego wykładu notorycznie mylone są nazwy "klasa abstrakcyjna" z "klasa anonimowa". Wprowadza to troche zamieszania i trudno się skupić na treści

    • @wrosoftacademy
      @wrosoftacademy 7 หลายเดือนก่อน

      Ach, faktycznie. Wybacz. Teraz, jak jeszcze raz odsłuchałem, rzeczywiście to zauważyłem. Poprawię ten film. Dzieki za zwrócenie uwagi 😊

  • @jakub.686
    @jakub.686 8 หลายเดือนก่อน

    jaka jest zaleta ze tworzysz instancje klasy App, zamiast odrazu pisac swoj kod w mainie?

    • @wrosoftacademy
      @wrosoftacademy 8 หลายเดือนก่อน

      W tym przypadku w łatwy sposób można szybko przełączać się pomiędzy przykładami lub wersjami aplikacji, gdy mam metody run1(), run2() itd. Generalnie idea jest taka, żeby w main było jak najmniej kodu, bo ta metoda sluzy tylko uruchomieniu aplikacji. Później na przykład w spring boot również jest tak, że w main() podnosisz tylko context spring i nic więcej, jest to jedna linijka.

  • @jakub.686
    @jakub.686 9 หลายเดือนก่อน

    Najprościej zrozumieć wyrażenie lambda poprzez to, że jest to funkcja anonimowa. Jest to funkcja, ponieważ nie trzeba jej przypisywać do konkretnej klasy, a anonimowa, ponieważ nie ma nazwy. Wyrażenie lambda implementuje interfejs funkcyjny, a interfejs funkcyjny ma tylko jedną abstrakcyjną metodę. Metoda abstrakcyjna to taka metoda, której ciało jest nadawane podczas implementacji. Wiec tworząc wyrażenie lambda, nadajemy ciało tej abstrakcyjnej metodzie. :D

  • @wrosoftacademy
    @wrosoftacademy ปีที่แล้ว

    0:00 O czym będziemy mówić 0:53 .get() 3:17 .orElse() 7:23 .orElseGet() 9:11 .orElseThrow() 13:40 podsumowanine

  • @wrosoftacademy
    @wrosoftacademy ปีที่แล้ว

    Kto znajdzie literówkę w kodzie dajcie znać 🖐 Mi oczy krwawią, jak to widzę ale znalazłem ją dopiero po opublikowaniu i na tym etapie produkcji to trochę za późno 😝 Ciekawe czy Wam też uda się ją znaleźć 😁

  • @wrosoftacademy
    @wrosoftacademy ปีที่แล้ว

    Film staje się nieaktualny powoli. Niestety taki los naszych aplikacji 🙄 Będe przygotowywać nową wersie integracji. Na pewno będzie Spring Boot 3, Spring 6.0.x i Swagger 3. Jeżeli chcielibvście zobaczyć inne integracje ze Srpingiem lub upgrade do Spring 6 to dajcie znać w komentarzach ;)

  • @prymek74
    @prymek74 ปีที่แล้ว

    a co z Gitem, sqlem, mavenem, wzorcami i webem o ktorych mowa w platnej sciezce? pojawia sie tu, czy jako odzielne kursy i kiedy? pzdr

    • @wrosoftacademy
      @wrosoftacademy ปีที่แล้ว

      Tak, to również będę omawiać. Jednak nagrania przygotowuję sam, więc potrzebuje czasu 😉 Kolejne filmy sukcesywnie wychodzą co tydzień.

  • @prymek74
    @prymek74 ปีที่แล้ว

    czym sie rozni ten darmowy kurs od tego platnego na udemy/eduj - tylko brakiem zadan?

    • @wrosoftacademy
      @wrosoftacademy ปีที่แล้ว

      Największą różnicą są zadania. Nie chodzi jednak o samą listę zadań, a o jej rozwiązania, ponieważ tam pokazuję jak je rozwiązuje. W ten sposób od samego początku przyzwyczajam uczestników do pisania kodu obiektowo. W każdym filmie z rozwiązaniem zadań są dodatkowe informacje. Podpowiedzi jak najlepiej rozwiązywać tego typu zadanie, jak inaczej można dany element wykorzystać, jak nie robić, żeby niepotrzebnie kodu nie komplikować, czy też niektóre tematy są pogłębiane. Rozwiązanie takie przyjąłem, ponieważ żeby nauczyć się programować nie wystarczy obejrzeć filmik, trzeba samemu pisać i to jest bonus dla osób próbujących rozwiązać zadania.

  • @prymek74
    @prymek74 ปีที่แล้ว

    witam, kiedy na eduju zostana uzupelnione brakujace 4 moduly w stosunku do tych na udemy, jak np. te 2 ostatnie z tej playlisty ?

    • @wrosoftacademy
      @wrosoftacademy ปีที่แล้ว

      Każda z tych platform ma inny tryb aktualizacji kursów. Po części jest to troche niezależne ode mnie. Staram się aktualizować regularnie. Z Eduj jest dodatkowy problem, ponieważ po wysłaniu do akceptacji, mam zablokowaną możliwość edycji przez kilka dni

  • @Krzysiek_Krzysztof
    @Krzysiek_Krzysztof ปีที่แล้ว

    A może Curie-Skłodowska też była kobietą?!

  • @Krzysiek_Krzysztof
    @Krzysiek_Krzysztof ปีที่แล้ว

    Dobre :)

  • @wrosoftacademy
    @wrosoftacademy ปีที่แล้ว

    A Ty jakiego switch'a najczęściej używasz, a może wolisz if-else? Daj znać w komentarzach 😜

  • @wrosoftacademy
    @wrosoftacademy ปีที่แล้ว

    0:00 Wstęp 0:26 Przygotowanie projektu 2:53 for 4:12 for-each 5:56 forEach() - lambda 9:24 forEach() - referencje metody 10:47 Praktyczny przykład

  • @bartoszzaleski3640
    @bartoszzaleski3640 2 ปีที่แล้ว

    Piątunio jest Spoko.

  • @ukaszkarulek6308
    @ukaszkarulek6308 2 ปีที่แล้ว

    Gratulacje!