Inżynieria wymagań / diagramy:


W modelowaniu systemów i inżynierii wymagań korzysta się z różnych rodzajów diagramów, w zależności od potrzeb i etapu projektowania.

1. Diagramy UML:
  • Diagram przypadków użycia (Use Case Diagram) **Junior Python Dev
    • Cel: Modelowanie funkcjonalności systemu z perspektywy użytkownika (co system robi).
    • Zastosowanie: Definiowanie wymagań funkcjonalnych.
    • Elementy: Aktorzy, przypadki użycia (use cases), związki między nimi.
    • Przykład: "Użytkownik loguje się", "Klient składa zamówienie".

  • Diagram klas (Class Diagram) **Junior Python Dev
    • Cel: Reprezentowanie struktury systemu, klas, ich atrybutów i relacji.
    • Zastosowanie: Modelowanie struktury danych i obiektów.
    • Elementy: Klasy, pola, metody, związki (asocjacja, dziedziczenie, agregacja, kompozycja).
    • Przykład 1 (Library API)
    • Przykład 2 (Library API)

  • Diagram sekwencji (Sequence Diagram) **Junior Python Dev
    • Cel: Pokazanie, jak obiekty w systemie komunikują się ze sobą w określonej kolejności.
    • Zastosowanie: Analiza przepływu komunikatów w konkretnym przypadku użycia.
    • Elementy: Obiekty, linie życia, komunikaty, aktywności.

  • Diagram aktywności (Activity Diagram)
  • Diagram stanów (State Diagram)
2. Diagramy ERD (Entity-Relationship Diagram):
  • Cel: Modelowanie struktur danych i relacji między encjami w bazie danych.
  • Zastosowanie: Projektowanie baz danych.

3. Diagramy procesów biznesowych (BPMN - Business Process Model and Notation)

4. Diagramy przepływu danych (DFD - Data Flow Diagram) **Junior Python Dev
  • Cel: Modelowanie przepływu danych w systemie (co się dzieje z danymi).
  • Zastosowanie: Analiza systemów, które przetwarzają dane.
  • Elementy: Procesy, przepływy danych, magazyny danych, terminatory (źródła/zlecenia danych).
  • Przykład: System rezerwacji lotów.
5. Diagram architektury systemu (System Architecture Diagram)

6. Diagramy fizyczne i wdrożeniowe

7. Diagramy map myśli (Mind Maps)

Podsumowanie:
  • Na poziomie wymagań funkcjonalnych: Diagram przypadków użycia, diagramy procesów biznesowych, DFD.
  • Na poziomie architektury i projektowania: Diagram klas, diagramy architektury, diagramy wdrożenia.
  • Na poziomie analizy przepływów: Diagram sekwencji, diagram aktywności, diagram stanów.


Django modele:

Podstawy:
  • 001. Jakie jest znaczenie opcji: 'null' i 'blank' w polach modeli? Jaka jest różnica między nimi? Gdy pole ma przypisana wartość blank=True, to czy będzie polem opcjonalnym w Formularzu (wykorzystującym ten model)?
  • 002. Jak ustawić domyślną wartość dla pola w modelu Django?
  • 003. Jakie są 4 typowe rodzaje pól w modelach Django?
  • 004. Jak zmienić domyślną nazwę tabeli skorelowaną z modelem Django?
  • 005. Istnieje typ SlugField - wyjaśnij po co jest używany. 005a. Jak zaimplementować automatyczne 'slugifying' w Django? 005b. Podczas zapisu obiektu modelu domyślnie pole typu SlugField nie jest walidowane co do zgodności z formatem 'Slug' - dlaczego?
  • 006. Jakie są 3 inne rodzaje pól w modelach Django?
  • 007. Jak używać 'choices' w polach modeli Django?
  • 008. Jak stworzyć obiekt User bez wywoływania domyślnego mechanizmu hashowania hasła? Czy zadzieje się tak wywołując 'create_user'?
  • 009. Jak pozyskać z bazy danych wszystkie obiekty, które spełniają specyficzne warunki?
  • 010. Jak ograniczyć liczbę wyników z bazy danych dla zapytania ORM by pozyskać tylko 10 pierwszych?
  • 011. Jak zaimplementować walidacje danych dla modeli Django?
  • 012. Jak zarejestrować model w przestrzeni administratorskiej? Jak konfiguruje się wyświetlanie/zachowanie pól modelu (w Adminie)?
  • 013. Queryset jest obiektem w ORM Django reprezentującym cały zestaw danych. Jakie są jego właciwości?
  • 014. Jakie rodzaje dziedziczenia są wspierane w modelach Django?
Relacje między modelami:
  • 101. Jaki jest Use Case dla 'related_name' w polu (modelu) ForeignKey?
  • 102. Jak stworzyć model z relacją Many-To-Many?
  • 103. Co stanie się jeśli ustawimy 'on_delete=models.CASCADE' w polu 'ForeignKey' modelu i skorelowany obiekt-rodzic zostanie usunięty? Jakie wartości może przyjmować parametr 'on_delete'?
  • 104. Jak pozyskać skorelowane obiekty w relacji One-To-Many?
  • 105. Czy indeks jest automatycznie tworzony bazie danych w przypadku relacji One-To-Many?
  • 106. Jakie są 3 Use Case kiedy to indeksy są automatycznie tworzone przez Django? Jakie są inne takie przypadki w Django (w sumie 3)?
  • 107. W relacji Many-To-Many jaka jest domyślna nazwa Tabeli Pośredniej?
  • 108. Jak zoptymizować wczytywanie danych przez zapytania ORM (w zależności od relacji)? Jakie są różnice w: 'select_related' i 'prefetch_related'?
  • 109. Na czym polega problem N+1 zapytań? Jak w Django 'select_related' i 'prefetch_related' rozwiązują ten problem?
Inne zaawansowane operacje na modelach:
  • 201. Jak zdefiniować Custom Object Manager dla modelu? W czym może być pomocny? Jak to jest z 'Custom QuerySets'?
  • 202. Jak zarejestrować Custom QuerySet w Django?
  • 203. Zaawansowane zapytania w Django ORM: annotate(), aggregate(), Q, F, Subqueries
    • Kiedy i jak używać annotate do wzbogacania danych obiektów? Czy polecenie jest zoptymalizowane pod kątem problemu N+1 zapytań?
    • Do czego służy metoda aggregate w Django? Czy zwraca słownik z wynikami aggregacji, minimum 1 para klucz-wartość?
    • Kiedy trzeba używać obiektów Q w zapytniach Django ORM? Czy takim wymogiem jest logika OR?
    • Obiekt F jest tłumaczony przez Django na nazwę kolumny w SQL. Jak go używać?
    • Jak i kiedy używać struktury Subquery w Django? (Subzapytania)
  • 204. Jak używać metody 'save' (django.db.models.Model)? Czy można ją nadpisać?
    • Odpowiedź: Patrz SlugField
  • 205. Jak stworzyć dodatkowe indeksy kiedy chcesz szybciej filtrować dane używając specyficznych pól?
  • 206. Jaka jest różnica pomiędzy walidacją na poziomie pola modelu (przez np. validators) i metody modelu 'clean'?
  • 207. Kiedy Custom Manager i Custom QuerySet mają sens? A kiedy mogą być przesadą?
  • 208. Domyślnie Object Manager dostarcza metody: values, values_list, raw - do czego służą?
  • 209. Inne metody dostępne w Django ORM: distinct, order_by, exists, update.

Html templates w Django:

  • 301. Na czym polegają możliwości konfiguracji Django template w settings.py poprzez zmienną TEMPLATES?

Formularze w Django:

  • 401. Jaki jest drugi (poza formularzami HTML) sposób użycia Formularzy Django (django.forms)?
  • 402. Using external packages for managing / formating forms: django-widget-tweaks, django-crispy-forms (with crispy-bootstrap5).
  • 403. Szybkie stworzenie formularza za pomocą podstawowego wbudowanego formularza 'forms.ModelForm' i Modelu. Automatycznie generowanie formularza w CBV (CreateView).

Serializers w DRF (Django Rest Framework):

  • 501. Co to są Serializery w DRF?
  • 502. Dlaczego serializery są kluczowe w DRF?
  • 503. Jeszcze raz, możemy napisać Rest API w czystym Django. Po co tyle szumu z Serializers w DRF?
  • 504. Segregacja odpowiedzialności między walidacjami w Django i DRF - jak to jest?

Wbudowane widoki w Django:

  • 601. Gotowe builtin widoki w Django. Czy tylko CBV?
  • 602. Jak w Django w Class based view nadpisać metodę 'get_context_data' by dodać inne dane do kontekstu?
  • 603. Jak można zaimplementować widok obsługujący formularz wykorzystując wbudowane CBV w Django (użycie form_valid)?

DRF (Django Rest Framework):

  • 701. Gotowe builtin widoki w DRF. Które widoki dostarczają pełen CRUD? Kiedy warto skonfigurować Router komponent?
  • 702. Jak szybko skonfigurować filtrowanie-paginację-sortowanie w widokach DRF?
  • 703. Mając niestandardową logikę - jak skonfigurować ogólny widok ViewSet (nie jest powiązany bezpośrednio z modelem)?
  • 704. Custom Exception handler i Custom JSONRenderer w DRF - konfiguracja przez settings.py (REST_FRAMEWORK).
  • 705. Konfiguracja throttlingu w DRF / settings.py / REST_FRAMEWORK (DEFAULT_THROTTLE_CLASSES, DEFAULT_THROTTLE_RATES).

Django / DRF / inne tematy

  • 801. Cookies w Django. Jak wygląda obsługa ciastek w Django?
  • 802. Co to jest middleware w Django? Jak napisać własny middleware dodający nagłówek w odpowiedzi?
  • 803. Jak działa mechanizm sesji w Django? Sesje a autentykacja w Django/DRF.
  • 804. Co to jest Web Storage API?
  • 805. Jak działa LocalStorage w Django? A jak SessionStorage?
  • 806. Jakie są możliwości Autentykacji i Autoryzacji W Django/DRF?
  • 807. Jak w Django można stworzyć / wywołać Stored Procedure? (raw, connection.cursor)?
  • 808. Jak w Django tworzy się triggers? (raw, connection.cursor, niestandardowe migracje)?
  • 809. Podstawy wnikliwiej. Czym jest aplikacja w Django? Czym jest backend w Django? Dlaczego middleware nie jest backendem?

Django / DRF / Bezpieczeństwo

  • 901. Cross-Site Request Forgery (CSRF) w Django. Czym jest podatność CSRF?
  • 902. CORS (Cross-Origin Resource Sharing) i Django. Czym są podatności CORS?
  •  - mechanizm bezpieczeństwa w przeglądarkach, który ogranicza możliwość wykonywania żądań HTTP do zasobów z innych domen (originów),
       o ile nie zostały one wyraźnie dozwolone przez serwer docelowy. Jak działa CORS? Same-Origin Policy (SOP) i Nagłówki HTTP CORS.
     - podatności CORS wynikają z błędnej konfiguracji serwera, a nie samego mechanizmu. Aby uniknąć problemów: Regularnie testuj konfigurację CORS.
    
  • 903. XSS
  • 904. SQL Injection
  • 905. XPATH Injection
  • 906. RCE poprzez deserializację obiektów w Pythonie