Samouczek Terraform dla początkujących: Infrastruktura jako kod od pierwszego pliku do modułów

  1. Strona główna
  2. Blog
  3. DevOps

DevOps

Samouczek Terraform dla początkujących: Infrastruktura jako kod od pierwszego pliku do modułów

Ucz się Terraform bez konta w chmurze i rachunku-niespodzianki. Zacznij od plików lokalnych, aby zrozumieć plan, zastosowanie i stan, a następnie przejdź do rzeczywistych zasobów, modułów i przepływu pracy w chmurze, które są bezpieczne dla zespołów.

10 min czytania
Poradnik Terraform dla początkujących: infrastruktura jako kod od pierwszego pliku do modułów

Najważniejsze

  • Terraform tworzy i zmienia infrastrukturę z plików tekstowych, które możesz przechowywać w Git.
  • Podstawowy przepływ pracy to init, plan, apply i plan pokazuje zmiany, zanim one nastąpią.
  • plik stanu rejestruje, czym zarządza Terraform. Chroń go i nigdy nie przekazuj go Gitowi.
  • Użyj modułów, aby ponownie wykorzystać wzorce i stan zdalny z blokowaniem podczas pracy w zespole.

Klikanie wokół konsoli chmurowej jest w porządku w przypadku jednego serwera. Zawodzi, gdy potrzebujesz tej samej konfiguracji w fazie testowej i produkcyjnej lub gdy ktoś pyta, kto zmienił regułę zapory sieciowej w marcu zeszłego roku. Ten samouczek Terraform dla początkujących pokazuje lepszy sposób: opisz swoją infrastrukturę w kodzie i pozwól narzędziu urzeczywistnić ją.

Większość samouczków zaczyna się od konta w chmurze, co zwiększa ryzyko rozliczeniowe, zanim nauczysz się czegokolwiek. Zaczynamy od dostawcy Terraform local, który po prostu tworzy pliki na Twoim komputerze, więc błędy nic nie kosztują. Te przykłady i przykładowe wyniki to standardowe ilustracje, których nie wykonaliśmy na potrzeby tego artykułu, a dokładne sformułowanie różni się w zależności od wersji.

Co to jest Terraforma?

Terraform to narzędzie typu infrastruktura jako kod (IaC) firmy HashiCorp. Piszesz pliki konfiguracyjne w HCL, języku konfiguracyjnym HashiCorp, opisując pożądany efekt końcowy. Następnie Terraform ustala, co utworzyć, zmienić lub usunąć, aby to osiągnąć.

Komunikuje się z platformami za pośrednictwem wtyczek zwanych dostawcami. Istnieją dostawcy AWS, Azure, Google Cloud, Kubernetes, GitHub, Cloudflare i wielu innych, dzięki czemu możesz używać jednego przepływu pracy dla nich wszystkich.

Jedna rzecz, którą warto wiedzieć: w 2023 roku HashiCorp przeniosła Terraform na licencję Business Source. Następnie społeczność stworzyła OpenTofu, rozwidlenie typu open source, które używa bardzo podobnych poleceń i konfiguracji. To, czego się tutaj dowiesz, dotyczy w dużej mierze obu.

Dlaczego infrastruktura jako kod?

Pytanie Ręczna praca konsoli Terraforma
Kto co zmienił? Trudno się tego dowiedzieć Historia Gita
Czy możemy skopiować inscenizację do produkcji? Ostrożne kliknięcie Użyj kodu ponownie
Co przyniesie ta zmiana? Dowiesz się później terraform plan pokazuje ci pierwszy
Czy ktoś może to zrecenzować? Nie łatwo Zwykła prośba o ściągnięcie
Odzyskiwanie po awarii Zależy od pamięci ludzi Odtwórz z kodu i wykonaj kopie zapasowe danych

Terraforma jest również deklaratywna. Mówisz „powinny być trzy serwery”, a nie „utwórz serwer trzy razy”. Jeśli dwa już istnieją, dodaje jeden. Skrypt, który po prostu powtarza swoje kroki, może zakończyć się utworzeniem trzech kolejnych.

Zainstaluj Terraforma

Zainstaluj go, korzystając z oficjalnych instrukcji HashiCorp dla swojego systemu operacyjnego, a następnie potwierdź, że działa:

terraform -version

Utwórz pusty folder dla projektu. Terraform odczytuje każdy .tf plik w bieżącym folderze, więc jeden folder równa się jednej konfiguracji.

Twoja pierwsza konfiguracja

Utwórz plik o nazwie main.tf:

terraform {
  required_providers {
    local = {
      source  = "hashicorp/local"
      version = "~> 2.5"
    }
  }
}

resource "local_file" "greeting" {
  filename = "${path.module}/hello.txt"
  content  = "Hello from Terraform\n"
}

Spójrz na blok resource, ponieważ prawie wszystko, co piszesz, ma ten kształt. local_file to typ zasobu, a greeting to jego własna nazwa w konfiguracji. Razem tworzą jego adres: local_file.greeting. Argumenty wewnątrz opisują, czego chcesz.

Przepływ pracy: inicjuj, planuj, zastosuj

inicjalizacja terraforma

Spowoduje to przygotowanie folderu i pobranie dostawców, o których prosiłeś. Uruchom go raz na początku i ponownie za każdym razem, gdy dodasz dostawcę lub moduł. Tworzy także plik .terraform.lock.hcl, który rejestruje dokładne wersje dostawców. Zatwierdź ten plik w Git.

terraform init

planu terraformy

To porównuje Twój kod z istniejącym i pokazuje planowane zmiany, nie dotykając niczego:

terraform plan

# local_file.greeting will be created
+ resource "local_file" "greeting" {
    + content  = "Hello from Terraform\n"
    + filename = "./hello.txt"
  }

Plan: 1 to add, 0 to change, 0 to destroy.

Naucz się symboli, bo przeczytasz mnóstwo planów:

Symbol Znaczenie
+ Utwórz
~ Aktualizacja na miejscu
- Zniszczyć
-/+ Zniszcz i odtwórz

stosuje się terraformę

To pokazuje plan ponownie, prosi o potwierdzenie i wprowadza zmiany:

terraform apply

Wpisz yes, a pojawi się hello.txt. Teraz ponownie uruchom terraform plan. Nie powinien zgłaszać żadnych zmian, ponieważ rzeczywistość już pasuje do Twojego kodu. Ta właściwość, w przypadku której wielokrotne uruchamianie nie powoduje dalszych zmian, nazywa się idempotencją.

Zmienianie i niszczenie

Edytuj linię content i uruchom terraform plan. Terraform dostrzega różnicę i proponuje zmianę. W przypadku tego zasobu zastępuje on plik. Zwróć uwagę na wymianę prawdziwej infrastruktury, ponieważ odtworzenie bazy danych może oznaczać utratę danych.

Następnie usuń ręcznie hello.txt i zaplanuj ponownie. Terraform zauważa jego brak i oferuje jego odtworzenie. Różnica między Twoim kodem a rzeczywistością nazywa się dryftem, a jej wykrycie jest jedną z głównych zalet tego narzędzia.

Aby usunąć wszystko, czym zarządza ta konfiguracja, uruchom:

terraform destroy

Zmienne i wyjścia

Wartości zakodowane na stałe uniemożliwiają ponowne użycie kodu. Zmienne wejściowe sprawiają, że konfiguracja jest elastyczna, a dane wyjściowe zwracają przydatne wartości:

# variables.tf
variable "environment" {
  type        = string
  description = "Deployment environment"
  default     = "dev"

  validation {
    condition     = contains(["dev", "staging", "prod"], var.environment)
    error_message = "Use dev, staging or prod."
  }
}

# main.tf
resource "local_file" "config" {
  filename = "${path.module}/${var.environment}.txt"
  content  = "environment=${var.environment}\n"
}

# outputs.tf
output "config_path" {
  value = local_file.config.filename
}

Ustaw wartości w wierszu poleceń lub przechowuj je w pliku o nazwie terraform.tfvars, który jest ładowany automatycznie:

terraform apply -var="environment=staging"

Użycie local_file.config.filename na wyjściu oznacza także sposób, w jaki zasoby odnoszą się do siebie. Terraform odczytuje te odniesienia, aby ustalić właściwą kolejność tworzenia rzeczy.

Stan terraformy

Po zastosowaniu znajdziesz plik o nazwie terraform.tfstate. To jest zapis tego, czym Terraform zarządza, mapując Twój kod na rzeczywiste obiekty. Bez tego Terraform nie wiedziałby, że local_file.greeting to ten konkretny plik.

Liczą się tu trzy zasady:

  1. Nigdy nie przekazuj stanu Git. Może zawierać hasła i inne sekrety w postaci zwykłego tekstu.
  2. Nie edytuj tego ręcznie. Użyj poleceń takich jak terraform state list i terraform state mv.
  3. Używaj zdalnego backendu do projektów zespołowych. Współdzielony backend przechowuje stan centralnie i blokuje go, dzięki czemu dwie osoby nie mogą składać wniosków jednocześnie.

Oto typowy backend wykorzystujący Amazon S3 z wiadrem, które utworzysz wcześniej:

terraform {
  backend "s3" {
    bucket       = "my-company-terraform-state"
    key          = "shop/prod/terraform.tfstate"
    region       = "ap-south-1"
    encrypt      = true
    use_lockfile = true
  }
}

Wskazówka: Rozpocznij każdy projekt od .gitignore, który wyklucza .terraform/, *.tfstate, *.tfstate.* i dowolne *.tfvars pliki zawierające tajemnice.

Prawdziwe źródło informacji w chmurze

Przepływ pracy nie zmienia się po przejściu do chmury. Oto wiadro S3 na AWS. Najpierw sprawdź cenę i zniszcz wszystko, co stworzysz podczas ćwiczeń:

provider "aws" {
  region = "ap-south-1"
}

resource "aws_s3_bucket" "reports" {
  bucket = "my-unique-reports-bucket-2026"

  tags = {
    Environment = var.environment
    ManagedBy   = "terraform"
  }
}

Terraform pobiera dane uwierzytelniające z konfiguracji interfejsu CLI AWS lub zmiennych środowiskowych. Nigdy nie zapisuj kluczy dostępu do pliku .tf.

Moduły

Moduł to po prostu folder plików Terraform, który można wywołać za pomocą różnych danych wejściowych. Działa podobnie jak funkcja, umożliwiając jednorazowe zdefiniowanie wzorca i ponowne jego użycie:

project/
  main.tf
  modules/
    reports_bucket/
      main.tf
      variables.tf
      outputs.tf
module "staging_reports" {
  source      = "./modules/reports_bucket"
  environment = "staging"
}

module "prod_reports" {
  source      = "./modules/reports_bucket"
  environment = "prod"
}

Publiczny Terraform Registry również posiada gotowe moduły, ale zanim na nich zaczniesz polegać, przeczytaj je i przypnij wersję. Nie buduj modułów zbyt wcześnie. Poczekaj, aż powtórzysz wzór co najmniej dwa razy.

Bezpieczna praca zespołu

  1. Utwórz gałąź i zmień pliki .tf. Jeśli potrzebujesz odświeżenia wiedzy, zobacz nasz samouczek Git dla początkujących.
  2. Uruchom terraform fmt i terraform validate.
  3. Otwórz żądanie ściągnięcia z załączonymi danymi wyjściowymi terraform plan do sprawdzenia.
  4. Po zatwierdzeniu zastosuj zapisany plan z jednego kontrolowanego miejsca, najlepiej z rurociągu.

Zapisanie planu gwarantuje zastosowanie dokładnie tego, co zostało sprawdzone:

terraform plan -out=tfplan
terraform apply tfplan

Pasuje to naturalnie do CI/CD i Akcji GitHub. Terraform zwykle udostępnia klaster, a narzędzia takie jak Kubernetes uruchamiają na nim aplikacje.

Typowe błędy

  • Aplikowanie bez czytania planu. Jedna -/+ w bazie danych może być bardzo kosztowną niespodzianką.
  • Zapisywanie stanu na jednym laptopie. Jeśli stracisz tego laptopa, Terraform straci kontrolę nad Twoją infrastrukturą.
  • Ręczne wprowadzanie zmian w konsoli. Powodują one dryf, a kolejne zastosowanie może je cofnąć.
  • Korzystanie z wersji nieprzypiętych. Przypinanie wersji dostawców i modułów, aby aktualizacje odbywały się celowo.
  • Korzystanie z jednej ogromnej konfiguracji. Podział według środowiska lub systemu ogranicza szkody wynikające z jakiegokolwiek błędu.

Podsumowanie

Poznałeś już idee stojące za niemal wszystkimi działaniami Terraformu: zadeklaruj zasoby, przejrzyj plan, zastosuj go i chroń stan. Ćwicz z dostawcą local, aż przepływ pracy stanie się naturalny, a następnie zarządzaj jednym małym, rzeczywistym zasobem na koncie bezpłatnego poziomu. Wprowadź zdalny stan i moduły, gdy zaangażowana jest więcej niż jedna osoba lub więcej niż jedno środowisko.

Najczęstsze pytania

Do czego służy Terraform?

Terraform służy do tworzenia i zarządzania infrastrukturą, taką jak serwery, sieci, bazy danych i DNS, opisując ją w kodzie zamiast konfigurować ręcznie.

Czy Terraform jest darmowy?

Z interfejsu Terraform CLI można korzystać bezpłatnie w ramach licencji Business Source, chociaż warunki ograniczają niektóre konkurencyjne zastosowania komercyjne. HCP Terraform ma płatne poziomy, a OpenTofu jest oprogramowaniem typu open source.

Jaka jest różnica między Terraformem a Ansible?

Terraform głównie zapewnia infrastrukturę deklaratywnie. Ansible konfiguruje głównie oprogramowanie na istniejących maszynach. Wiele zespołów korzysta z obu rozwiązań, najpierw Terraform, a potem Ansible.

Co to jest plik stanu Terraform?

Jest to zapis mapujący Twoją konfigurację na rzeczywiste zasoby. Terraform używa go do opracowania zmian. Może zawierać tajemnice, więc przechowuj go bezpiecznie i trzymaj z dala od Gita.

Czy muszę znać się na programowaniu, żeby nauczyć się Terraforma?

Nie bardzo. HCL jest prosty i deklaratywny. Zrozumienie platformy, którą zarządzasz, takiej jak sieć AWS, jest zwykle trudniejsze niż sam język.

Ucz się dalej

Pracuj z Stack Quora

Potrzebujesz pomocy przy testowaniu, WordPressie lub SEO?

Pomagamy zespołom dostarczać lepsze oprogramowanie i rozwijać ich witryny. Powiedz nam, nad czym pracujesz, a my zaproponujemy jasny następny krok.

Czytaj dalej

Więcej poradników na testowanie, sztuczna inteligencja i nowoczesny rozwój

Podobał Ci się ten artykuł? Wybierz temat i przejdź bezpośrednio do naszych najnowszych tutoriali.

Sztuczna inteligencja

Wyjaśnienie halucynacji AI: dlaczego modele językowe tworzą rzeczy i jak je zmniejszyć

Wyjaśniono halucynacje AI: czym są, dlaczego powstają w modelach językowych, typowe typy, jak je zredukować za pomocą uziemień i podpowiedzi oraz pr…

Przeczytaj artykuł →
DevOps

Wyjaśnienie zmiennych środowiskowych: pliki .env, sekrety i konfiguracja wykonana prawidłowo

Zmienne środowiskowe wyjaśnione na przykładach Pythona, które przeprowadziliśmy: ich odczytywanie i ustawianie, dlaczego każda wartość jest ciągiem …

Przeczytaj artykuł →
Tworzenie oprogramowania

Wyjaśnienie ograniczenia szybkości interfejsu API: algorytmy, nagłówki i obsługa błędów 429

Ograniczanie szybkości API wyjaśnione za pomocą przeprowadzonej przez nas symulacji: zasobnik tokenów, stałe okno, przesuwane okno, 429 odpowiedzi, …

Przeczytaj artykuł →
Automatyzacja testów

Wyśmiewanie w Pythonie: unittest.mock, patch i błędy, które sprawiają, że testy kłamią

Wyśmiewanie w Pythonie za pomocą unittest.mock, przetestowane: Mock i zwracana wartość, efekt uboczny, łatanie tam, gdzie używana jest nazwa, specyf…

Przeczytaj artykuł →
Testowanie oprogramowania

Wyjaśnienie zasięgu kodu: pokrycie linii i oddziału oraz co naprawdę oznacza 100%

Wyjaśnienie pokrycia kodu za pomocą prawdziwego pliku cover.py: pokrycie linii, gałęzi i warunków, przeczytanie raportu, dlaczego 100% pokrycia może…

Przeczytaj artykuł →
Bazy danych i SQL

DELETE vs TRUNCATE vs DROP w SQL: różnice, wycofywanie i kiedy używać każdego z nich

DELETE vs TRUNCATE vs DROP wyjaśnione za pomocą przetestowanego SQL: co każdy usuwa, wycofywanie, wyzwalacze, resetowanie tożsamości, prędkość i czy…

Przeczytaj artykuł →
Bazy danych i SQL

Wyjaśnienie widoków SQL: tworzenie, używanie i unikanie pułapek wraz z przykładami

Widoki SQL wyjaśnione za pomocą zapytań, które uruchomiliśmy: tworzenie widoku, wyniki na żywo, ukrywanie kolumn, wydajność, widoki z możliwością ak…

Przeczytaj artykuł →
Tworzenie oprogramowania

Interfejs TypeScript a typ: rzeczywiste różnice, testowane za pomocą kompilatora

Interfejs TypeScript a typ, sprawdzony z prawdziwym kompilatorem: co oba mogą zrobić, co tylko jeden, łączenie deklaracji, rozszerzenia a przecięcia…

Przeczytaj artykuł →
Tworzenie oprogramowania

Python *args i **kwargs wyjaśnione: elastyczne funkcje z przejrzystymi przykładami

Python *args i **kwargs wyjaśnione za pomocą uruchomionego przez nas kodu: pakowanie i rozpakowywanie, kolejność parametrów, argumenty zawierające t…

Przeczytaj artykuł →
Tworzenie oprogramowania

Funkcje Lambda w Pythonie: składnia, rzeczywiste zastosowania i kiedy ich nie używać

Funkcje lambda w Pythonie wyjaśnione za pomocą uruchomionego przez nas kodu: składnia, sortowanie za pomocą klucza, mapa i filtr, domknięcia, pułapk…

Przeczytaj artykuł →
Sztuczna inteligencja

Kim są agenci AI? Jak one działają, dzięki prostej pętli agenta, którą możesz uruchomić

Kim są agenci AI? Prosty przewodnik po pętli agenta, narzędziach, pamięci i poręczach, z małą pętlą w Pythonie, którą uruchomiliśmy, prawdziwymi zag…

Przeczytaj artykuł →
DevOps

Monitorowanie a obserwowalność: prawdziwa różnica z logami, wskaźnikami i śladami

Wyjaśnienie monitorowania a obserwowalności: znane i nieznane awarie, dzienniki, metryki i ślady, opis incydentu przy kasie, złote sygnały, OpenTele…

Przeczytaj artykuł →
DevOps

Woluminy platformy Docker a mocowania powiązań: utrwalanie danych kontenera we właściwy sposób

Wyjaśniono woluminy Dockera a montowanie powiązań: dlaczego dane kontenera znikają, nazwane woluminy, montowanie powiązań, tmpfs, przykłady tworzeni…

Przeczytaj artykuł →
Automatyzacja testów

TDD vs BDD: kluczowe różnice, jedna funkcja zbudowana w obie strony i kiedy używać każdej z nich

TDD vs BDD wyjaśnione za pomocą jednej funkcji rabatowej zbudowanej w obie strony: refaktoryzacja czerwono-zielona z uruchomionym przez nas kodem, s…

Przeczytaj artykuł →
Testowanie oprogramowania

Testowanie akceptacyjne użytkownika (UAT): proces, lista kontrolna i rzeczywiste przykłady

Wyjaśniono testy akceptacyjne użytkownika: kto je przeprowadza, czym różni się od kontroli jakości, siedmioetapowy proces, szablon przypadku testowe…

Przeczytaj artykuł →
Bazy danych i SQL

Wyjaśnienie wartości SQL NULL: IS NULL, COALESCE, NULLIF i pułapki, których należy unikać

Wartości SQL NULL wyjaśnione za pomocą zapytań, które wykonaliśmy: logika trójwartościowa, IS NULL, COALESCE, NULLIF, w jaki sposób agregacje, łącze…

Przeczytaj artykuł →
Bazy danych i SQL

Instrukcja SQL CASE WHEN: składnia, rzeczywiste przykłady i typowe błędy

SQL CASE WHEN wyjaśnione za pomocą zapytań, które uruchomiliśmy: proste i przeszukiwane formularze, kolejność warunków, elementy przestawne z SUM, s…

Przeczytaj artykuł →
Tworzenie oprogramowania

Co to jest JWT? Tokeny internetowe JSON wyjaśnione na przykładzie działania

Co to jest JWT? Wyjaśniono tokeny sieciowe JSON: trzy części, token zbudowany i zmodyfikowany w uruchomionym przez nas kodzie, JWT a sesje, pamięć m…

Przeczytaj artykuł →
Tworzenie oprogramowania

Wyjaśnienie pętli zdarzeń JavaScript: stos wywołań, mikrozadania i liczniki czasu z przykładami

Pętla zdarzeń JavaScript wyjaśniona za pomocą uruchomionego przez nas kodu: stos wywołań, kolejki zadań i mikrozadań, dlaczego setTimeout 0 nie jest…

Przeczytaj artykuł →
Tworzenie oprogramowania

Wyjaśnienie generatorów Pythona i wydajności: oszczędzaj pamięć dzięki prawdziwym przykładom

Generatory Pythona i wydajność wyjaśnione za pomocą uruchomionego przez nas kodu: sposób wstrzymywania i wznawiania, mierzone oszczędności pamięci, …

Przeczytaj artykuł →
Sztuczna inteligencja

Czym są osady? Wyjaśnienie wektorów i podobieństwa cosinusa

Czym są osadzania? Prosty przewodnik po wektorach, podobieństwie cosinusów i wyszukiwaniu semantycznym, z małym przykładem, który przeprowadziliśmy,…

Przeczytaj artykuł →
DevOps

Wdrożenie niebiesko-zielone a kanaryjskie: różnice, kompromisy i sposób wyboru

Wyjaśniono wdrożenie Blue-Green vs Canary: sposób działania każdego z nich, koszty, ryzyko i wycofywanie zmian, przetestowane przez nas stabilne łąc…

Przeczytaj artykuł →
Automatyzacja testów

Niestabilne testy: co je powoduje i jak je naprawić na dobre

Niestabilne testy wyjaśnione w przeprowadzonych przez nas demonstracjach: główne przyczyny, sposób potwierdzenia i zdiagnozowania jednej z nich, odp…

Przeczytaj artykuł →
Testowanie oprogramowania

Load Testing vs Stress Testing: Differences, Metrics and k6 Examples

Wyjaśniono testy obciążenia i testy warunków skrajnych: co dowodzi każdy z nich, testy szczytowe i nasiąkania, istotne metryki, dlaczego średnie wpr…

Przeczytaj artykuł →
Testowanie oprogramowania

Przypadek testowy a scenariusz testowy: kluczowe różnice, przykłady i kiedy stosować każdy z nich

Wyjaśnienie przypadków testowych i scenariuszy testowych: jasne definicje, tabela obok siebie, jedna funkcja resetowania hasła zaczerpnięta ze scena…

Przeczytaj artykuł →
Bazy danych i SQL

Optymalizacja zapytań SQL: czytaj plany wykonania i napraw powolne zapytania z synchronizacją

Optymalizacja zapytań SQL przetestowana na milionie wierszy: przeczytaj plany wykonania, dodaj odpowiednie indeksy, napraw filtry niesargowalne, uży…

Przeczytaj artykuł →
Bazy danych i SQL

SQL UNION vs UNION ALL: różnice, przykłady i testowana wydajność

SQL UNION vs UNION ALL wyjaśnione na podstawie zapytań, które uruchomiliśmy: duplikaty, obie reguły są zgodne, prawdziwy błąd danych, zmierzona wyda…

Przeczytaj artykuł →
Tworzenie oprogramowania

Samouczek API pobierania JavaScript: GET, POST, obsługa błędów i limity czasu

Samouczek JavaScript Fetch API testowany na serwerze lokalnym: GET i POST, dlaczego 404 nie rzuca, pomocnik wielokrotnego użytku, ciągi zapytań, prz…

Przeczytaj artykuł →
Tworzenie oprogramowania

Obsługa plików w Pythonie: odczyt, zapis, CSV, JSON i pathlib z przykładami

Obsługa plików w Pythonie wyjaśniona za pomocą uruchomionego przez nas kodu: tryby otwarte, czytanie dużych plików, CSV, JSON, pathlib, pliki binarn…

Przeczytaj artykuł →
Tworzenie oprogramowania

Klasy i obiekty Pythona: samouczek OOP z prawdziwymi przykładami

Klasy i obiekty Pythona objaśnione za pomocą uruchomionego przez nas kodu: __init__, metody, atrybuty klas i instancji, dziedziczenie, właściwości, …

Przeczytaj artykuł →
Sztuczna inteligencja

Co to jest model dużego języka? Jak działają LLM, wyjaśnione bez szumu

Co to jest model dużego języka? LLM wyjaśnione prostym językiem: tokeny, osadzanie, uwaga, szkolenie, temperatura i okna kontekstowe, mała demonstra…

Przeczytaj artykuł →
DevOps

Polecenia systemu Linux dla początkujących: niezbędny przewodnik po terminalu z przykładami

Polecenia systemu Linux dla początkujących, pogrupowane według zadań: nawigacja, pliki, przeglądanie logów, grep, potoki, uprawnienia, procesy i arc…

Przeczytaj artykuł →
Automatyzacja testów

Selenium kontra dramaturg: kluczowe różnice, porównanie kodu i wybór

Porównanie Selenium i Playwright: architektura, oczekiwanie, obsługa przeglądarki i języka, debugowanie, ten sam test w obu narzędziach, porady doty…

Przeczytaj artykuł →
Testowanie oprogramowania

Partycjonowanie równoważne: technika projektowania testów wyjaśniona na praktycznych przykładach

Wyjaśniono podział równoważny: jak znaleźć prawidłowe i nieprawidłowe partycje, sprawdzone przykłady dla grup wiekowych, hasła i kupony, przeprowadz…

Przeczytaj artykuł →
Testowanie oprogramowania

Ważność a priorytet w testowaniu oprogramowania: różnice, macierz i rzeczywiste przykłady

Wyjaśniono ważność a priorytet w testowaniu oprogramowania: jasne definicje, czterokierunkowa macierz z przykładami, skale poziomów, kto ustawia każ…

Przeczytaj artykuł →
Bazy danych i SQL

Samouczek dotyczący podzapytań SQL: typy, skorelowane podzapytania i ISTNIEJĄ z przykładami

Samouczek dotyczący podzapytań SQL z zapytaniami, które wykonaliśmy: podzapytania skalarne, IN, FROM i SELECT, podzapytania skorelowane, EXISTS, puł…

Przeczytaj artykuł →
Bazy danych i SQL

Wyjaśnienie transakcji SQL i ACID: COMMIT, ROLLBACK i poziomy izolacji

Transakcje SQL i ACID wyjaśnione za pomocą wykonanego przez nas przelewu bankowego: COMMIT, ROLLBACK, punkty zapisu, blokady, poziomy izolacji, brud…

Przeczytaj artykuł →
Tworzenie oprogramowania

Ściągawka dotycząca poleceń Git: polecenia, których faktycznie używasz, z przykładami

Ściągawka poleceń Git pogrupowana według zadań: konfiguracja, przemieszczanie, gałęzie, piloty, skrytka, historia i cofanie błędów, z danymi wyjścio…

Przeczytaj artykuł →
Tworzenie oprogramowania

Wyjaśnienie obietnic JavaScript: następnie catch, Promise.all i typowe błędy

Obietnice JavaScript wyjaśnione za pomocą uruchomionego przez nas kodu: stany, łańcuchy then i catch, obsługa błędów, Promise.all, allSettled, race …

Przeczytaj artykuł →
Tworzenie oprogramowania

Samouczek słownika języka Python: metody, przykłady i typowe wzorce

Samouczek słownika języka Python z uruchomionym przez nas kodem: tworzenie, odczytywanie i aktualizowanie słowników, metody kluczowych, łączenie, ro…

Przeczytaj artykuł →
Sztuczna inteligencja

Co to jest RAG? Generacja rozszerzona o wyszukiwanie wyjaśniona na przykładzie roboczym

Co to jest RAG? Generowanie wspomagane pobieraniem wyjaśnione krok po kroku: indeksowanie, fragmentowanie, osadzanie, pobieranie, mały działający pr…

Przeczytaj artykuł →
DevOps

Samouczek Terraform dla początkujących: Infrastruktura jako kod od pierwszego pliku do modułów

Samouczek Terraform dla początkujących: zacznij bez konta w chmurze, naucz się inicjowania, planowania i stosowania, a następnie zmiennych, wyników,…

Przeczytaj artykuł →
DevOps

Docker kontra Kubernetes: kluczowe różnice, jak ze sobą współpracują i czego potrzebujesz

Wyjaśniono Docker vs Kubernetes: co robi każdy z nich, ta sama aplikacja działa z obydwoma, porównanie Docker Compose i Swarm, zmiana podkładki dock…

Przeczytaj artykuł →
Automatyzacja testów

Samouczek Pytest dla początkujących: urządzenia, parametryzacja i prawdziwe przykłady

Samouczek pytest dla początkujących z testami, które przeprowadziliśmy na pytest 9.2: asercje, urządzenia, parametryzacja, conftest, znaczniki, tmp_…

Przeczytaj artykuł →
Testowanie oprogramowania

Cykl życia testowania oprogramowania (STLC): 6 faz, kryteria wejścia i wyjścia, przykład

Wyjaśniono cykl życia testowania oprogramowania: sześć faz STLC z kryteriami wejścia i wyjścia, elementy dostarczane, działający przykład funkcji lo…

Przeczytaj artykuł →
Tworzenie oprogramowania

Git merge vs rebase: różnice, przykłady i kiedy czego używać

Git merge vs rebase wyjaśnione na prawdziwym wyniku logu, z tabelą porównawczą, złotą zasadą rebase i bezpiecznym procesem pracy zespołu.

Przeczytaj artykuł →
Tworzenie oprogramowania

Python list comprehension: składnia, przykłady i kiedy jej unikać

Python list comprehension wyjaśnione: składnia, filtrowanie, if-else, zagnieżdżone pętle, zmierzone czasy i sytuacje, w których zwykła pętla for jes…

Przeczytaj artykuł →
Bazy danych i SQL

SQL JOIN – wyjaśnienie z przykładami (Inner, Left, Right, Full)

Zrozum złączenia SQL krok po kroku na przykładowych tabelach i zapytaniach: INNER, LEFT, RIGHT, FULL, CROSS i SELF, plus typowe błędy i wskazówki wy…

Przeczytaj artykuł →