Categories
Ebooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Computer in the office
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Multimedia trainings
- Real estate
- Persuasion and NLP
- Taxes
- Social policy
- Guides
- Presentations
- Leadership
- Public Relation
- Reports, analyses
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
E-press
- Architektura i wnętrza
- Biznes i Ekonomia
- Home and garden
- E-business
- Finances
- Personal finance
- Business
- Photography
- Computer science
- HR & Payroll
- Computers, Excel
- Accounts
- Culture and literature
- Scientific and academic
- Environmental protection
- Opinion-forming
- Education
- Taxes
- Travelling
- Psychology
- Religion
- Agriculture
- Book and press market
- Transport and Spedition
- Healthand beauty
-
History
-
Computer science
- Office applications
- Data bases
- Bioinformatics
- IT business
- CAD/CAM
- Digital Lifestyle
- DTP
- Electronics
- Digital photography
- Computer graphics
- Games
- Hacking
- Hardware
- IT w ekonomii
- Scientific software package
- School textbooks
- Computer basics
- Programming
- Mobile programming
- Internet servers
- Computer networks
- Start-up
- Operational systems
- Artificial intelligence
- Technology for children
- Webmastering
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Narrative poetry
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
School textbooks
-
Popular science and academic
- Archeology
- Bibliotekoznawstwo
- Cinema studies
- Philology
- Polish philology
- Philosophy
- Finanse i bankowość
- Geography
- Economy
- Trade. World economy
- History and archeology
- History of art and architecture
- Cultural studies
- Linguistics
- Literary studies
- Logistics
- Maths
- Medicine
- Humanities
- Pedagogy
- Educational aids
- Popular science
- Other
- Psychology
- Sociology
- Theatre studies
- Theology
- Economic theories and teachings
- Transport i spedycja
- Physical education
- Zarządzanie i marketing
-
Guides
-
Game guides
-
Professional and specialist guides
-
Law
- Health and Safety
- History
- Road Code. Driving license
- Law studies
- Healthcare
- General. Compendium of knowledge
- Academic textbooks
- Other
- Construction and local law
- Civil law
- Financial law
- Economic law
- Economic and trade law
- Criminal law
- Criminal law. Criminal offenses. Criminology
- International law
- International law
- Health care law
- Educational law
- Tax law
- Labor and social security law
- Public, constitutional and administrative law
- Family and Guardianship Code
- agricultural law
- Social law, labour law
- European Union law
- Industry
- Agricultural and environmental
- Dictionaries and encyclopedia
- Public procurement
- Management
-
Tourist guides and travel
- Africa
- Albums
- Southern America
- North and Central America
- Australia, New Zealand, Oceania
- Austria
- Asia
- Balkans
- Middle East
- Bulgary
- China
- Croatia
- The Czech Republic
- Denmark
- Egipt
- Estonia
- Europe
- France
- Mountains
- Greece
- Spain
- Holand
- Iceland
- Lithuania
- Latvia
- Mapy, Plany miast, Atlasy
- Mini travel guides
- Germany
- Norway
- Active travelling
- Poland
- Portugal
- Other
- Russia
- Romania
- Slovakia
- Slovenia
- Switzerland
- Sweden
- World
- Turkey
- Ukraine
- Hungary
- Great Britain
- Italy
-
Psychology
- Philosophy of life
- Kompetencje psychospołeczne
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Audiobooks
-
Business and economy
- Bitcoin
- Businesswoman
- Coaching
- Controlling
- E-business
- Economy
- Finances
- Stocks and investments
- Personal competence
- Communication and negotiation
- Small company
- Marketing
- Motivation
- Real estate
- Persuasion and NLP
- Taxes
- Guides
- Presentations
- Leadership
- Public Relation
- Secret
- Social Media
- Sales
- Start-up
- Your career
- Management
- Project management
- Human Resources
-
For children
-
For youth
-
Education
-
Encyclopedias, dictionaries
-
History
-
Computer science
-
Other
-
Foreign languages
-
Culture and art
-
School reading books
-
Literature
- Antology
- Ballade
- Biographies and autobiographies
- For adults
- Dramas
- Diaries, memoirs, letters
- Epic, epopee
- Essay
- Fantasy and science fiction
- Feuilletons
- Work of fiction
- Humour and satire
- Other
- Classical
- Crime fiction
- Non-fiction
- Fiction
- Mity i legendy
- Nobelists
- Novellas
- Moral
- Okultyzm i magia
- Short stories
- Memoirs
- Travelling
- Poetry
- Politics
- Popular science
- Novel
- Historical novel
- Prose
- Adventure
- Journalism, publicism
- Reportage novels
- Romans i literatura obyczajowa
- Sensational
- Thriller, Horror
- Interviews and memoirs
-
Natural sciences
-
Social sciences
-
Popular science and academic
-
Guides
-
Professional and specialist guides
-
Law
-
Tourist guides and travel
-
Psychology
- Philosophy of life
- Interpersonal communication
- Mindfulness
- General
- Persuasion and NLP
- Academic psychology
- Psychology of soul and mind
- Work psychology
- Relacje i związki
- Parenting and children psychology
- Problem solving
- Intellectual growth
- Secret
- Sexapeal
- Seduction
- Appearance and image
- Philosophy of life
-
Religion
-
Sport, fitness, diets
-
Technology and mechanics
Videocourses
-
Data bases
-
Big Data
-
Biznes, ekonomia i marketing
-
Cybersecurity
-
Data Science
-
DevOps
-
For children
-
Electronics
-
Graphics/Video/CAX
-
Games
-
Microsoft Office
-
Development tools
-
Programming
-
Personal growth
-
Computer networks
-
Operational systems
-
Software testing
-
Mobile devices
-
UX/UI
-
Web development
-
Management
Podcasts
- Ebooks
- Programming
- Inne - Programming
- Automatyzacja metodyki DevOps za pomocą potoków CI/CD GitLaba. Buduj efektywne potoki CI/CD do weryfikacji, zabezpieczenia i wdrażania kodu, korzystając z rzeczywistych przykładów
E-book details
Automatyzacja metodyki DevOps za pomocą potoków CI/CD GitLaba. Buduj efektywne potoki CI/CD do weryfikacji, zabezpieczenia i wdrażania kodu, korzystając z rzeczywistych przykładów
Christopher Cowell, Nicholas Lotz, Chris Timberlake
Obecnie zasady i wzorce DevOps pozwalają na ograniczenie ryzyka związanego z budowaniem, zabezpieczaniem i wdrażaniem kodu. Programiści i wdrożeniowcy wiedzą, że zapewnienie funkcjonalnej poprawności, efektywności i bezpieczeństwa kodu jest czasochłonne i skomplikowane. Dużym ułatwieniem w tym zakresie mogą być potoki CI/CD GitLaba.
Dzięki tej książce poznasz od podstaw Gita i GitLaba. Dowiesz się, jak skonfigurować runnery GitLaba, a także jak tworzyć i konfigurować potoki dla różnych etapów cyklu rozwoju oprogramowania. Poznasz zasady interpretacji wyników potoków w GitLabie. Nauczysz się też wdrażania kodu w różnych środowiskach i korzystania z wielu zaawansowanych funkcji, takich jak łączenie GitLaba z Terraformem, klastrami Kubernetes czy uruchamianie i poprawa wydajności potoków. Skorzystasz ponadto z licznych przykładów i studiów przypadków, dzięki którym za pomocą potoków CI/CD zautomatyzujesz wszystkie etapy DevOps do budowy i wdrażania kodu o wysokiej jakości.
Najciekawsze zagadnienia:
- podstawy Gita, GitLaba i DevOps
- tworzenie, przeglądanie i uruchamianie potoków CI/CD GitLaba
- weryfikacja, zabezpieczanie i wdrażanie kodu za pomocą potoków CI/CD GitLaba
- runnery, DAG-i i logika warunkowa GitLaba
- najlepsze praktyki i metody rozwiązywania problemów w potokach CI/CD GitLaba
- przykłady cykli życia procesów rozwoju oprogramowania
DevOps. Wdrażaj zmiany szybko i bezpiecznie!
O autorach
O recenzentach
Przedmowa
CZĘŚĆ 1. Rozpoczęcie pracy z DevOps, Gitem i GitLabem
- Rozdział 1. Zrozumienie okresu przed DevOps
- Wprowadzenie do aplikacji internetowej Hats for Cats
- Ręczne tworzenie i weryfikacja kodu
- Ręczne budowanie kodu
- Ręczna weryfikacja kodu
- Dodatkowe wyzwania związane z weryfikacją kodu
- Ręczne przeprowadzanie testów bezpieczeństwa kodu
- Statyczna analiza kodu
- Wykrywanie tajemnic
- Analiza dynamiczna
- Skanowanie zależności
- Skanowanie kontenerów
- Podsumowanie ręcznych testów bezpieczeństwa
- Ręczne pakowanie i wdrażanie kodu
- Skanowanie zgodności licencji
- Wdrażanie oprogramowania
- Problemy z ręcznymi praktykami w cyklu życia oprogramowania
- Rozwiązywanie problemów za pomocą DevOps
- Jak GitLab implementuje DevOps
- Podsumowanie
- Rozdział 2. Ćwiczenie podstawowych poleceń Gita
- Wymagania techniczne
- Dlaczego korzystać z Gita?
- Czym jest system kontroli wersji?
- Jakie problemy rozwiązuje system kontroli wersji?
- Dlaczego Git jest popularny
- Wady Gita
- Zatwierdzanie kodu, aby zachować go w bezpiecznym miejscu
- Wyłączenie plików z repozytorium
- Oznaczanie zatwierdzeń w celu identyfikowania wersji kodu
- Tworzenie gałęzi, aby rozwijać kod w oddzielnym miejscu
- Komendy Gita do zarządzania gałęziami
- Obsługa konfliktów scalania
- Synchronizacja lokalnych i zdalnych kopii repozytoriów
- "Złote" repozytorium
- Konfigurowanie zdalnych repozytoriów
- Wypychanie zatwierdzeń
- Pobieranie fetch
- Pobieranie pull
- Dodatkowe źródła do nauki Gita
- Podsumowanie
- Rozdział 3. Zrozumienie komponentów GitLaba
- Wymagania techniczne
- Kładziemy nacisk na "dlaczego" bardziej niż na "jak"
- Wprowadzenie do platformy GitLaba
- Czym jest GitLab?
- Jaki problem rozwiązuje GitLab?
- Etapy weryfikacji, zabezpieczania i wydawania
- Organizowanie pracy w projekty i grupy
- Przykład - organizacja pracy nad projektem Hats for Cats
- Śledzenie pracy za pomocą zgłoszeń
- Struktura zgłoszenia w GitLabie
- Rodzaje zadań, które mogą być reprezentowane przez zgłoszenia
- Etykiety
- Schematy pracy ze zgłoszeniami
- Bezpieczne edytowanie plików za pomocą zatwierdzeń, gałęzi i próśb o scalenie
- Historia zatwierdzeń
- Łączenie jednej gałęzi Gita z drugą
- Trzej amigos - zgłoszenia, gałęzie i prośby o scalenie
- Kiedy dwóch amigos wystarcza
- Czym różnią się zgłoszenia i prośby o scalenie?
- Korzystanie z praktyk DevOps za pomocą GitLab Flow
- Podsumowanie
- Rozdział 4. Opis struktury potoku CI/CD GitLaba
- Wymagania techniczne
- Definicje pojęć: "potok", "CI" i "CD"
- Czym jest potok
- Definiowanie jednego potoku na projekt
- Wyjaśnienie różnych znaczeń terminu "potok"
- Przeglądanie listy potoków
- CI - dowiedz się, czy Twój kod jest dobry
- CD - dowiedz się, gdzie powinien trafić Twój kod (i umieść go tam)
- GitLab Runnery
- Elementy potoku - etapy, zadania i polecenia
- Etapy
- Zadania
- Polecenia
- Łączenie elementów potoku
- Uruchamianie potoków CI/CD GitLaba
- Potoki dla gałęzi (ang. branch pipelines)
- Potoki dla tagów Gita
- Inne rodzaje potoków
- Pomijanie potoków
- Odczytywanie statusów potoków CI/CD GitLaba
- Konfigurowanie potoków CI/CD GitLaba
- Podsumowanie
CZĘŚĆ 2. Automatyzacja etapów DevOps przy użyciu potoków CI/CD GitLaba
- Rozdział 5. Instalacja i konfiguracja GitLab Runnerów
- Wymagania techniczne
- Definicja GitLab Runnerów i ich związek z CI/CD
- GitLab Runner to aplikacja open source napisana w języku Go
- GitLab Runner uruchamia zadania CI/CD określone w pliku .gitlab-ci.yml
- Architektura runnera i obsługiwane platformy
- GitLab Runner jest obsługiwany przez większość platform i architektur
- Runnery mogą być specyficzne dla projektu, grupy lub współdzielone
- Każdy runner ma zdefiniowanego executora
- Tagi runnera określają, które runnery mogą wykonywać konkretne zadania
- Instalacja agenta runnera
- Instalacja GitLab Runnera
- Rejestracja runnera w GitLabie
- Rozważania dotyczące różnych typów runnerów i executorów
- Rozważania dotyczące wydajności
- Rozważania dotyczące bezpieczeństwa
- Rozważania dotyczące monitorowania
- Podsumowanie
- Rozdział 6. Weryfikacja kodu
- Wymagania techniczne
- Budowanie kodu w potoku CI/CD
- Kompilacja kodu Java za pomocą javac
- Kompilacja Javy przy użyciu narzędzia Maven
- Kompilacja języka C przy użyciu narzędzia GNU Compiler Collection (GCC)
- Przechowywanie skompilowanego kodu jako artefaktów
- Sprawdzanie jakości kodu w potoku CI/CD
- Włączanie funkcji jakości kodu
- Przeglądanie wyników funkcji jakości kodu
- Uruchamianie automatycznych testów funkcjonalnych na etapie dostarczania (CI/CD)
- Włączanie automatycznych testów funkcjonalnych
- Przeglądanie wyników automatycznych testów funkcjonalnych
- Testy fuzzingowe w potoku CI/CD
- Architektura i przepływ pracy testowania fuzzingowego
- Przepływ pracy testowania fuzzingowego
- Przeglądanie wyników testów fuzzingu
- Dodatkowe uwagi dotyczące testowania fuzzingu
- Testowanie fuzzingu z korpusem
- Sprawdzanie dostępności w procesie CI/CD
- Dodawanie testów dostępności
- Przeglądanie wyników testów dostępności
- Dodatkowe sposoby weryfikacji kodu
- Pokrycie kodu (ang. code coverage)
- Testowanie wydajności przeglądarki (ang. browser performance testing)
- Testowanie wydajności obciążeniowej (ang. load performance testing)
- Podsumowanie
- Rozdział 7. Zabezpieczanie kodu
- Wymagania techniczne
- Zrozumienie strategii skanowania bezpieczeństwa GitLaba
- GitLab korzysta ze skanerów open source
- Skanery są dostarczane jako obrazy Dockera
- Niektóre skanery używają różnych analizatorów dla różnych języków programowania
- Podatności nie zatrzymują potoku
- Wyniki pojawiają się w trzech różnych raportach
- Potoki mogą korzystać ze skanerów innych niż GitLab
- Korzystanie z SAST-a do skanowania kodu źródłowego pod kątem podatności
- Włączanie SAST-a
- Konfigurowanie SAST-a
- Przeglądanie wyników SAST-a
- Użycie wykrywania sekretów do znalezienia poufnych informacji w Twoim repozytorium
- Zrozumienie działania wykrywania sekretów
- Włączanie i konfigurowanie wykrywania sekretów
- Przeglądanie wyników wykrywania sekretów
- Korzystanie z DAST-a do wykrywania podatności w aplikacjach internetowych
- Zrozumienie działania DAST-a
- Włączanie i konfigurowanie DAST-a
- Przegląd wyników DAST-a
- Korzystanie ze skanowania zależności do wyszukiwania luk w zależnościach
- Zrozumienie skanowania zależności
- Włączanie i konfigurowanie skanowania zależności
- Przeglądanie wyników skanowania zależności
- Korzystanie ze skanowania kontenerów do wyszukiwania podatności w obrazach Dockera
- Zrozumienie skanowania zależności
- Włączanie i konfigurowanie skanowania kontenerów
- Przeglądanie wyników skanowania kontenerów
- Korzystanie z badania zgodności licencji do zarządzania licencjami zależności
- Zrozumienie badania zgodności licencji
- Włączanie i konfigurowanie badania zgodności z licencją
- Przeglądanie wyników badania zgodności z licencją
- Korzystanie ze skanowania IaC do wykrywania problemów w plikach konfiguracyjnych infrastruktury
- Zrozumienie skanowania IaC
- Włączanie i konfigurowanie skanowania IaC
- Przeglądanie wyników skanowania IaC
- Zrozumienie różnych rodzajów raportów bezpieczeństwa
- Zarządzanie podatnościami związanymi z bezpieczeństwem
- Integracja z zewnętrznymi skanerami bezpieczeństwa
- Podsumowanie
- Rozdział 8. Pakowanie i wdrażanie kodu
- Wymagania techniczne
- Przechowywanie kodu w rejestrze pakietów GitLaba w celu późniejszego wykorzystania
- Lokalizacja rejestrów kontenerów i pakietów GitLaba
- Rozpoczęcie pracy z rejestrem pakietów
- Obsługiwane formaty pakietów
- Uwierzytelnianie w rejestrze
- Budowanie i publikowanie pakietów w rejestrze pakietów
- Budowanie i przesyłanie pakietów do rejestru kontenerów
- Przechowywanie kodu w rejestrach kontenerów i pakietów GitLaba w celu późniejszego wdrożenia
- Korzystanie z obrazów z rejestru kontenerów
- Wykorzystanie pakietów z rejestru pakietów
- Wdrażanie w różnych środowiskach przy użyciu GitLab Flow
- Wdrażanie w narzędziu review app w celu testowania
- Wdrażanie w rzeczywistych środowiskach produkcyjnych
- Wdrażanie w klastrze Kubernetes
- Proces CI/CD
- Podejście GitOps
- Podsumowanie
CZĘŚĆ 3. Następne kroki w doskonaleniu aplikacji za pomocą GitLaba
- Rozdział 9. Poprawa szybkości i łatwości utrzymania potoku CI/CD
- Przyspieszanie procesów za pomocą skierowanych grafów acyklicznych i architektury rodzic - dziecko
- Jak utworzyć DAG w potoku CI?
- Budowanie kodu dla wielu architektur
- Kiedy i jak wykorzystywać pamięć podręczną lub artefakty?
- Charakterystyka pamięci podręcznej
- Charakterystyka artefaktów
- Korzystanie z pamięci podręcznej
- Korzystanie z artefaktów
- Wykorzystywanie artefaktów jako zależności zadania
- Redukowanie powtarzającego się kodu konfiguracyjnego za pomocą zakotwiczeń i słowa kluczowego extends
- Zakotwiczenia
- Słowo kluczowe extends:
- Tagi referencji
- Poprawa zarządzalności poprzez łączenie wielu potoków oraz wykorzystywanie potoków macierzystych i potomnych
- Łączenie plików dla ułatwienia zarządzania
- Użycie opcji include: w celu uzyskania możliwości ponownego wykorzystania
- Dołączanie zdalnych zasobów
- Wykorzystywanie potoków macierzystych
- Zabezpieczanie i przyspieszanie zadań za pomocą kontenerów utworzonych w celu realizacji określonych zadań
- Przykład kontenera utworzonego w celu realizacji określonego zadania
- Podsumowanie
- Przyspieszanie procesów za pomocą skierowanych grafów acyklicznych i architektury rodzic - dziecko
- Rozdział 10. Poszerzanie zakresu potoków CI/CD
- Wykorzystywanie potoków CI/CD do wykrywania problemów wydajnościowych
- Jak zintegrować przeglądarkowe testy wydajnościowe?
- Jak zintegrować testy obciążeniowe z użyciem narzędzia k6?
- Korzystanie z flag funkcji umożliwiających wydawanie różnych aplikacji w zależności od decyzji biznesowych
- Jak skonfigurować aplikację pod kątem flag funkcji?
- Integracja narzędzi innych firm z potokami CI/CD
- Tworzenie pliku Dockerfile dla kontenera narzędziowego
- Automatyzacja procesu budowy kontenera
- Skanowanie kontenerów
- Wywoływanie narzędzia zewnętrznego
- Wykorzystywanie potoków CI/CD do tworzenia aplikacji mobilnych
- Wymagania
- Fastlane
- Fastlane - wdrożenie
- Fastlane - automatyzacja testowania
- Podsumowanie
- Wykorzystywanie potoków CI/CD do wykrywania problemów wydajnościowych
- Rozdział 11. Kompletny przykład
- Wymagania techniczne
- Konfiguracja środowiska
- Tworzenie projektu w GitLabie
- Planowanie pracy za pomocą zgłoszeń GitLaba
- Konfiguracja lokalnego repozytorium Gita
- Tworzenie kodu
- Tworzenie gałęzi Gita
- Tworzenie żądania MR
- Zatwierdzanie i przesyłanie kodu
- Tworzenie infrastruktury potoku
- Tworzenie potoku
- Tworzenie runnera
- Weryfikacja kodu
- Dodawanie testów funkcjonalnych do potoku
- Dodawanie skanowania jakości kodu do potoku
- Dodawanie testu typu fuzzing do potoku
- Zabezpieczanie kodu
- Dodawanie SAST-a do potoku
- Dodawanie wykrywania sekretów do potoku
- Dodawanie skanowania zależności do potoku
- Dodawanie badania zgodności licencji do potoku
- Integracja zewnętrznego skanera bezpieczeństwa z potokiem
- Doskonalenie potoku
- Korzystanie z DAG-a w celu przyspieszenia potoku
- Podział potoku na kilka plików
- Dostarczanie kodu do odpowiedniego środowiska
- Wdrażanie kodu
- Podsumowanie
- Rozdział 12. Rozwiązywanie problemów i przyszłość GitLaba
- Wymagania techniczne
- Rozwiązywanie problemów i najlepsze praktyki dotyczące powszechnych problemów spotykanych w potokach CI/CD
- Rozwiązywanie problemów związanych ze składnią i logiką CI/CD
- Rozwiązywanie problemów z działaniem potoku i przypisaniem runnera
- Zarządzanie infrastrukturą operacyjną przy użyciu GitOpsa
- Użycie Terraforma do wdrażania i aktualizowania stanu infrastruktury
- Użycie Ansible'a do zarządzania konfiguracjami zasobów
- Przyszłe trendy
- Automatyzacja stworzy więcej oprogramowania na większą skalę
- Abstrakcja prowadzi do modeli biznesowych opartych na pojęciu "wszystko jako kod"
- Skrócony czas cyklu rozwoju produktu pomoże zespołom wydawać lepsze oprogramowanie szybciej
- Podsumowanie i kolejne kroki
- Title: Automatyzacja metodyki DevOps za pomocą potoków CI/CD GitLaba. Buduj efektywne potoki CI/CD do weryfikacji, zabezpieczenia i wdrażania kodu, korzystając z rzeczywistych przykładów
- Author: Christopher Cowell, Nicholas Lotz, Chris Timberlake
- Original title: Automating DevOps with GitLab CI/CD Pipelines: Build efficient CI/CD pipelines to verify, secure, and deploy your code using real-life examples
- Translation: Łukasz Wójcicki
- ISBN: 978-83-289-0776-8, 9788328907768
- Date of issue: 2024-06-11
- Format: Ebook
- Item ID: autmet
- Publisher: Helion
- Age category: 14+