Категорії
Електронні книги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комп'ютер в офісі
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Мультимедійне навчання
- Нерухомість
- Переконання та НЛП
- Податки
- Соціальна політика
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Звіти, аналізи
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Електронна преса
- Architektura i wnętrza
- Biznes i Ekonomia
- Будинок та сад
- Електронний бізнес
- Фінанси
- Особисті фінанси
- Бізнес
- Фотографія
- Інформатика
- Відділ кадрів та оплата праці
- Комп'ютери, Excel
- Бухгалтерія
- Культура та література
- Наукові та академічні
- Охорона навколишнього середовища
- Впливові
- Освіта
- Податки
- Подорожі
- Психологія
- Релігія
- Сільське господарство
- Ринок книг і преси
- Транспорт та спедиція
- Здоров'я та краса
-
Історія
-
Інформатика
- Офісні застосунки
- Бази даних
- Біоінформатика
- Бізнес ІТ
- CAD/CAM
- Digital Lifestyle
- DTP
- Електроніка
- Цифрова фотографія
- Комп'ютерна графіка
- Ігри
- Хакування
- Hardware
- IT w ekonomii
- Наукові пакети
- Шкільні підручники
- Основи комп'ютера
- Програмування
- Мобільне програмування
- Інтернет-сервери
- Комп'ютерні мережі
- Стартап
- Операційні системи
- Штучний інтелект
- Технологія для дітей
- Вебмайстерність
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Оповідна поезія
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Шкільні підручники
-
Науково-популярна та академічна
- Археологія
- Bibliotekoznawstwo
- Кінознавство / Теорія кіно
- Філологія
- Польська філологія
- Філософія
- Finanse i bankowość
- Географія
- Економіка
- Торгівля. Світова економіка
- Історія та археологія
- Історія мистецтва і архітектури
- Культурологія
- Мовознавство
- літературні студії
- Логістика
- Математика
- Ліки
- Гуманітарні науки
- Педагогіка
- Навчальні засоби
- Науково-популярна
- Інше
- Психологія
- Соціологія
- Театральні студії
- Богослов’я
- Економічні теорії та науки
- Transport i spedycja
- Фізичне виховання
- Zarządzanie i marketing
-
Порадники
-
Ігрові посібники
-
Професійні та спеціальні порадники
-
Юридична
- Безпека життєдіяльності
- Історія
- Дорожній кодекс. Водійські права
- Юридичні науки
- Охорона здоров'я
- Загальне, компендіум
- Академічні підручники
- Інше
- Закон про будівництво і житло
- Цивільне право
- Фінансове право
- Господарське право
- Господарське та комерційне право
- Кримінальний закон
- Кримінальне право. Кримінальні злочини. Кримінологія
- Міжнародне право
- Міжнародне та іноземне право
- Закон про охорону здоров'я
- Закон про освіту
- Податкове право
- Трудове право та законодавство про соціальне забезпечення
- Громадське, конституційне та адміністративне право
- Кодекс про шлюб і сім'ю
- Аграрне право
- Соціальне право, трудове право
- Законодавство Євросоюзу
- Промисловість
- Сільське господарство та захист навколишнього середовища
- Словники та енциклопедії
- Державні закупівлі
- Управління
-
Путівники та подорожі
- Африка
- Альбоми
- Південна Америка
- Центральна та Північна Америка
- Австралія, Нова Зеландія, Океанія
- Австрія
- Азії
- Балкани
- Близький Схід
- Болгарія
- Китай
- Хорватія
- Чеська Республіка
- Данія
- Єгипет
- Естонія
- Європа
- Франція
- Гори
- Греція
- Іспанія
- Нідерланди
- Ісландія
- Литва
- Латвія
- Mapy, Plany miast, Atlasy
- Мініпутівники
- Німеччина
- Норвегія
- Активні подорожі
- Польща
- Португалія
- Інше
- Росія
- Румунія
- Словаччина
- Словенія
- Швейцарія
- Швеція
- Світ
- Туреччина
- Україна
- Угорщина
- Велика Британія
- Італія
-
Психологія
- Філософія життя
- Kompetencje psychospołeczne
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Аудіокниги
-
Бізнес та економіка
- Біткойн
- Ділова жінка
- Коучинг
- Контроль
- Електронний бізнес
- Економіка
- Фінанси
- Фондова біржа та інвестиції
- Особисті компетенції
- Комунікація та переговори
- Малий бізнес
- Маркетинг
- Мотивація
- Нерухомість
- Переконання та НЛП
- Податки
- Порадники
- Презентації
- Лідерство
- Зв'язки з громадськістю
- Секрет
- Соціальні засоби комунікації
- Продаж
- Стартап
- Ваша кар'єра
- Управління
- Управління проектами
- Людські ресурси (HR)
-
Для дітей
-
Для молоді
-
Освіта
-
Енциклопедії, словники
-
Історія
-
Інформатика
-
Інше
-
Іноземні мови
-
Культура та мистецтво
-
Шкільні читанки
-
Література
- Антології
- Балада
- Біографії та автобіографії
- Для дорослих
- Драми
- Журнали, щоденники, листи
- Епос, епопея
- Нарис
- Наукова фантастика та фантастика
- Фельєтони
- Художня література
- Гумор, сатира
- Інше
- Класичний
- Кримінальний роман
- Нехудожня література
- Художня література
- Mity i legendy
- Лауреати Нобелівської премії
- Новели
- Побутовий роман
- Okultyzm i magia
- Оповідання
- Спогади
- Подорожі
- Поезія
- Політика
- Науково-популярна
- Роман
- Історичний роман
- Проза
- Пригодницька
- Журналістика
- Роман-репортаж
- Romans i literatura obyczajowa
- Сенсація
- Трилер, жах
- Інтерв'ю та спогади
-
Природничі науки
-
Соціальні науки
-
Науково-популярна та академічна
-
Порадники
-
Професійні та спеціальні порадники
-
Юридична
-
Путівники та подорожі
-
Психологія
- Філософія життя
- Міжособистісне спілкування
- Mindfulness
- Загальне
- Переконання та НЛП
- Академічна психологія
- Психологія душі та розуму
- Психологія праці
- Relacje i związki
- Батьківство та дитяча психологія
- Вирішення проблем
- Інтелектуальний розвиток
- Секрет
- Сексуальність
- Спокушання
- Зовнішній вигляд та імідж
- Філософія життя
-
Релігія
-
Спорт, фітнес, дієти
-
Техніка і механіка
Відеокурси
-
Бази даних
-
Big Data
-
Biznes, ekonomia i marketing
-
Кібербезпека
-
Data Science
-
DevOps
-
Для дітей
-
Електроніка
-
Графіка / Відео / CAX
-
Ігри
-
Microsoft Office
-
Інструменти розробки
-
Програмування
-
Особистісний розвиток
-
Комп'ютерні мережі
-
Операційні системи
-
Тестування програмного забезпечення
-
Мобільні пристрої
-
UX/UI
-
Веброзробка, Web development
-
Управління
Подкасти
- Електронні книги
- Програмування
- Python
- Implementowanie Czystej Architektury w Pythonie
Деталі електронної книги
Zaawansowane programowanie zaczyna się tam, gdzie kończy się framework
Praca programisty wydaje się dziś znacznie prostsza niż kilkanaście lat temu. Wydaje się taka, ponieważ ma on dostęp do niezliczonych bibliotek przypisanych do języków programowania. Gdy pojawia się problem, sięga do biblioteki ― i po sprawie. Problem rozwiązany, zgadza się? I tak, i nie. Owszem, w wypadku prostych projektów wystarczy bazowa znajomość zasad programowania, podstawowa znajomość danego języka i wiedza na temat tego, co zawiera konkretna biblioteka. Tak jednak działa to jedynie przy nieskomplikowanych aplikacjach. Bez wątpienia dziś łatwiej zacząć programować i szybciej można uzyskać mierzalne efekty, ale...
...prawdziwe programowanie zaczyna się poziom wyżej. Na etapie większych projektów. Bo duże systemy, niezależnie od języka, w jakim zostały napisane, zawsze są trudne ― zarówno w rozwijaniu, jak i w utrzymaniu. Książka, którą trzymasz w ręku, została napisana ze świadomością tej programistycznej prawdy. Adresowana do średnio zaawansowanych programistów zajmujących się rozwojem aplikacji internetowych, stanowi kompletny przewodnik po implementacji czystej architektury. Znajdziesz tu także opisy wielu technik, które pomogą Ci zapanować nad projektami rozwijanymi od dłuższego czasu, takich jak strategia testowania czy modularyzacja. Dzięki ich opanowaniu będzie Ci o wiele łatwiej dbać o poprawność funkcjonowania systemów, nad którymi sprawujesz programistyczną pieczę.
1. WPROWADZENIE
- 1.1. Era narzędzi
- 1.2. Dla kogo jest ta książka?
- 1.3. Co znajdziesz w książce?
2. PODSTAWY CZYSTEJ ARCHITEKTURY
- 2.1. Po co to wszystko?
- 2.2. System płytki kontra system głęboki
- 2.2.1. CRUD, czyli system płytki
- 2.2.2. System głęboki
- 2.3. Założenia czystej architektury
- 2.3.1. Niezależność od frameworków
- 2.3.2. Wysoka testowalność
- 2.3.3. Niezależność od API i interfejsu użytkownika
- 2.3.4. Niezależność od bazy danych
- 2.3.5. Niezależność od firm trzecich
- 2.3.6. Elastyczność
- 2.3.7. Rozszerzalność
- 2.4. Warstwy, czyli horyzontalna organizacja kodu
- 2.4.1. Świat zewnętrzny
- 2.4.2. Infrastruktura
- 2.4.3. Aplikacja
- 2.4.4. Domena
- 2.4.5. Zasada zależności
- 2.4.6. Granice
- 2.5. Podsumowanie
3. WZORCOWA IMPLEMENTACJA
- 3.1. Oznajmienie
- 3.2. Przepływ sterowania w czystej architekturze
- 3.3. Wymagania biznesowe
- 3.4. Implementacja
- 3.4.1. Diagram sekwencji
- 3.4.2. Granica wejściowa (input boundary)
- 3.4.3. Granica wyjściowa (output boundary)
- 3.4.4. Prezenter (presenter)
- 3.4.5. Model widoku (view model)
- 3.4.6. Przypadek użycia (use case)
- 3.4.7. Interfejs dostępu do danych (data access interface)
- 3.4.8. Dostęp do danych (data access)
- 3.4.9. Encja oferty (bid)
- 3.4.10. Encja aukcji (auction)
- 3.5. Podsumowanie
4. MODYFIKACJE CZYSTEJ ARCHITEKTURY
- 4.1. Dylemat prezentera
- 4.2. Pozbywamy się granicy wejściowej
- 4.3. Alternatywne podejścia do projektowania przypadków użycia
- 4.3.1. Fasada
- 4.3.2. Mediator pomiędzy wejściowym DTO a przypadkiem użycia
- 4.4. Użycie modeli bazodanowych jako encji
- 4.5. Podsumowanie
5. WSTRZYKIWANIE ZALEŻNOŚCI
- 5.1. Czym są zależności?
- 5.2. Wszędobylskie abstrakcje i klasy
- 5.3. Abstrakcje w czystej architekturze
- 5.4. Odwrócenie sterowania a zależności
- 5.5. Kontener IoC kontra service locator
- 5.6. Wstrzykiwanie zależności kontra konfiguracja
- 5.7. Podsumowanie
6. CQRS
- 6.1. Wstęp
- 6.2. Co to ma wspólnego z czystą architekturą?
- 6.3. Osobny stos odczytu - dlaczego?
- 6.4. Osobny stos odczytu - jak?
- 6.4.1. Zapytanie jako DTO
- 6.4.2. Zapytania jako osobne klasy
- 6.4.3. Fasada modelu do odczytu
- 6.5. CQRS kontra REST API
- 6.6. CQRS kontra GraphQL
- 6.7. Podsumowanie
7. OSTRE GRANICE
- 7.1. Słowo o złożoności
- 7.2. Dwa światy
- 7.3. Granica pomiędzy warstwą aplikacji a światem zewnętrznym
- 7.4. Pisanie wejściowego DTO
- 7.5. Value objects
- 7.6. Podsumowanie
8. STUDIUM PRZYPADKU - PLATFORMA AUKCYJNA
- 8.1. Jak pracujemy?
- 8.2. Jak zacząć, czyli chodzący szkielet
- 8.3. Nasz chodzący szkielet
- 8.4. Przypadek użycia dla składania oferty na aukcji
- 8.4.1. Nazewnictwo
- 8.4.2. Argumenty
- 8.4.3. Wyjście
- 8.4.4. Testy
- 8.5. Encje aukcji i oferty
- 8.5.1. Nazewnictwo
- 8.5.2. Value objects jako identyfikatory
- 8.5.3. Implementacja
- 8.5.4. Testy jednostkowe
- 8.5.5. Implementacja - ciąg dalszy
- 8.6. Abstrakcyjne repozytorium
- 8.6.1. Nazewnictwo
- 8.6.2. Implementacja
- 8.7. Repozytorium
- 8.7.1. Nazewnictwo
- 8.7.2. Implementacja działająca w pamięci
- 8.7.3. Rozwijanie implementacji pod osłoną TDD
- 8.8. Kończymy przypadek użycia - składanie oferty
- 8.8.1. Wstrzykiwanie zależności
- 8.8.2. Sprawiamy, że pierwszy sensowny test przechodzi
- 8.8.3. Refaktoryzacja
- 8.9. Organizacja kodu
- 8.9.1. Jak można ułożyć kod w Pythonie?
- 8.9.2. Organizujemy kod projektu
- 8.9.3. Organizujemy kod warstwy infrastruktury
- 8.9.4. Łączymy wszystko razem w komponencie main
- 8.9.5. Wystawiamy API
- 8.10. Finalizujemy aukcję w kolejnym przypadku użycia
- 8.10.1. Zarys przypadku użycia i wejściowe DTO
- 8.10.2. Rozszerzamy encję, by spełnić nowe wymagania
- 8.10.3. Skoro encje nie powinny mieć żadnych zależności, to czy mogą pytać o czas?
- 8.10.4. Wprowadzamy port dla płatności
- 8.10.5. Implementujemy adapter
- 8.10.6. Obsługa błędów kontra zasada zależności
- 8.10.7. A co, gdybyśmy chcieli dodać zapamiętywanie karty płatniczej?
- 8.10.8. Jak żyć, gdy adapter rośnie?
- 8.10.9. Bramka płatności ma już SDK. Nie możemy go po prostu użyć?
- 8.11. Przypadek użycia - rozpoczynanie nowej aukcji
- 8.11.1. Skąd się biorą nowe aukcje?
- 8.11.2. Encja aukcji i jej opis w jednym obiekcie - za i przeciw
- 8.11.3. Wprowadzamy deskryptor
- 8.11.4. Repozytorium z interfejsem kolekcji
- 8.11.5. Które repozytorium wybrać?
- 8.12. Operacje odczytu danych
- 8.12.1. Podejście z przypadkami użycia
- 8.12.2. CQRS na ratunek
- 8.12.3. Zapytania jako klasa
- 8.12.4. Model do odczytu
- 8.12.5. Podsumowanie operacji odczytujących dane
- 8.13. Odwracamy kontrolę za pomocą zdarzeń
- 8.13.1. Przykład - wysyłka e-maili
- 8.13.2. Techniki odwracania kontroli
- 8.13.3. Implementacja zdarzeń
- 8.13.4. Skąd wziąć szynę zdarzeń?
- 8.13.5. Jak wydostać zdarzenia z encji?
- 8.13.6. Encja gromadzi zdarzenia, które potem publikuje repozytorium
- 8.13.7. Encja zwraca zdarzenia z metod, które zmieniają jej stan
- 8.13.8 Testowanie encji, które zwracają zdarzenia
- 8.13.9. Subskrybowanie się na zdarzenia
- 8.13.10. Zdarzenia kontra transakcje kontra efekty uboczne
- 8.13.11. Niezawodne publikowanie zdarzeń - outbox pattern
- 8.13.12. Wprowadzamy jednostkę pracy
- 8.13.13. Czas życia jednostki pracy
- 8.13.14. Relacja pomiędzy jednostką pracy a szyną zdarzeń
- 8.14. Radzimy sobie z innymi przekrojowymi zagadnieniami
- 8.14.1. Konfiguracja
- 8.14.2. Walidacja
- 8.14.3. Synchronizacja
- 8.15. Podsumowanie
9. MODULARNOŚĆ
- 9.1. Ciężar sukcesu - rozrost i ciągłe zmiany
- 9.2. Komponenty i kohezja
- 9.3. Organizacja kodu według komponentu
- 9.4. Komponenty i swoboda architektoniczna
- 9.5. Komponenty kontra mikroserwisy
- 9.6. Komponenty a użytkownik
- 9.7. Komponenty a bounded context
- 9.8. Komponenty - implementacja
- 9.9. Zależności między komponentami
- 9.9.1. Oddzielne drogi
- 9.9.2. Bezpośrednia zależność - oba komponenty implementują czystą architekturę
- 9.9.3. Niebezpośrednia zależność - oba komponenty implementują czystą architekturę
- 9.9.4. Zależność, gdy jeden z komponentów nie implementuje czystej architektury
- 9.9.5. Odmiany integracji za pomocą zdarzeń
- 9.9.6. Zależności między komponentami - podsumowanie
- 9.10. Studium przypadku - platforma aukcyjna
- 9.10.1. Odkrywamy komponenty
- 9.10.2. Komponenty platformy aukcyjnej
- 9.10.3. Co komponent wystawia na zewnątrz?
- 9.10.4. Tam, gdzie wszystko składa się w całość - komponent main
- 9.10.5. Korzystamy z komponentu main do uruchomienia aplikacji
- 9.10.6. Jedna architektura dla wszystkich komponentów - czy to możliwe?
- 9.10.7. Zależności pomiędzy komponentami
- 9.10.8. Integrowanie komponentów za pomocą zdarzeń
- 9.10.9. Wewnętrzna obsługa zdarzeń w tym samym komponencie
- 9.10.10. Integracja różnych komponentów za pomocą zdarzeń - prosty przypadek
- 9.10.11. Integracja różnych komponentów za pomocą zdarzeń - złożony przypadek
- 9.10.12. Inne ciekawe zastosowania menadżera procesu
- 9.10.13. Menadżer procesu kontra wyścigi
- 9.11. Podsumowanie
10. TESTOWANIE
- 10.1. Strategia testowania i odmiany funkcji
- 10.1.1. Piramida testów - mit czy jedyna słuszna droga?
- 10.1.2. Rodzaje testów
- 10.1.3. Jak przetestować przeglądarkę do bazy danych?
- 10.1.4. Jak przetestować proxy?
- 10.1.5. Jak przetestować system głęboki?
- 10.2. Odkrywamy testowanie jednostkowe na nowo
- 10.2.1. Ile musi wiedzieć test?
- 10.3. Testowanie stanu kontra testowanie interakcji
- 10.3.1. Rodzaje weryfikacji
- 10.3.2. Niebezpieczeństwa związane z inspekcją stanu
- 10.3.3. Niebezpieczeństwa związane ze sprawdzaniem interakcji
- 10.3.4. Stuby kontra mocki
- 10.3.5. Rodzaje obiektów dublerów
- 10.4. Testujemy cały komponent jednostkowo
- 10.4.1. Ustawiamy komponent w pożądanym stanie
- 10.4.2. Wywołujemy akcję na komponencie
- 10.4.3. Weryfikujemy rezultat akcji na poziomie komponentu
- 10.4.4. Radzimy sobie z zależnościami w postaci portów i repozytoriów
- 10.5. Podsumowanie
11. ZAKOŃCZENIE
- 11.1. Co dalej?
12. SUPLEMENT A: MIGRACJA Z PROJEKTU ODZIEDZICZONEGO
- 12.1. Czy powinno się to robić?
- 12.2. Jak to zrobić?
- 12.3. "Nie mogę przestać dostarczać nowych funkcji!"
13. SUPLEMENT B: WPROWADZENIE DO EVENT SOURCING
- 13.1. Co to jest event sourcing?
- 13.2. Agregat z event sourcing kontra agregat z domain-driven design
- 13.3. Prosty przykład agregatu
- 13.3.1. Zamówienie jako encja
- 13.3.2. Istotne zmiany zamówienia w formie zdarzeń
- 13.3.3. Uwaga na te zdarzenia!
- 13.3.4. Zamówienie jako agregat
- 13.3.5. Testowanie agregatów
- 13.4. Persystencja
- 13.4.1. Nowe zdarzenia są dołączane na koniec strumienia zdarzeń
- 13.4.2. Pobieranie strumienia zdarzeń
- 13.4.3. Dopisywanie nowych zdarzeń do strumienia
- 13.4.4. Wybór bazy danych - podsumowanie wymagań
- 13.4.5. Przykładowa implementacja z użyciem PostgreSQL
- 13.4.6. Użycie event store
- 13.4.7. Co robić, gdy wykryjemy wyścig?
- 13.4.8. Użycie repozytorium do ukrycia event store
- 13.4.9. Migawki stanu agregatu
- 13.5. Projekcje
- 13.6. Event sourcing w aplikacji składającej się z komponentów
- 13.6.1. Event sourcing to szczegół implementacyjny komponentu
- 13.6.2. Stosuj zdarzenia domenowe na potrzeby integracji
- 13.7. Podsumowanie
BIBLIOGRAFIA
- Назва: Implementowanie Czystej Architektury w Pythonie
- Автор: Sebastian Buczyński
- ISBN: 978-83-283-9752-1, 9788328397521
- Дата видання: 2022-06-14
- Формат: Eлектронна книга
- Ідентифікатор видання: imczar
- Видавець: Helion