Terraform-tutorial voor beginners: Infrastructuur als code, van eerste bestand tot modules
Leer Terraform zonder cloudaccount of verrassingsrekening. Begin met lokale bestanden om inzicht te krijgen in plannen, toepassen en statussen, en ga vervolgens over op echte cloudbronnen, modules en een workflow die veilig is voor teams.
- Terraform maakt en wijzigt infrastructuur op basis van tekstbestanden die u in Git kunt bewaren.
- De kernworkflow is
init,plan,applyenplantoont veranderingen voordat ze plaatsvinden. - In het statusbestand wordt vastgelegd wat Terraform beheert. Bescherm het, en commit het nooit aan Git.
- Gebruik modules om patronen opnieuw te gebruiken en een externe status met vergrendeling wanneer u in teamverband werkt.
Rondklikken op een cloudconsole is prima voor één server. Het mislukt als je dezelfde configuratie nodig hebt voor staging en productie, of als iemand vraagt wie afgelopen maart een firewallregel heeft gewijzigd. Deze Terraform-tutorial voor beginners laat je een betere manier zien: beschrijf je infrastructuur in code en laat een tool deze werkelijkheid maken.
De meeste tutorials beginnen met een cloudaccount, wat het factureringsrisico met zich meebrengt voordat u iets heeft geleerd. We beginnen met de provider local van Terraform, die alleen maar bestanden op uw computer aanmaakt, zodat fouten niets kosten. Deze voorbeelden en de voorbeelduitvoer zijn standaardillustraties die we niet voor dit artikel hebben uitgevoerd, en de exacte bewoording verschilt per versie.
Wat is Terraform?
Terraform is een infrastructuur als code (IaC)-tool van HashiCorp. Je schrijft configuratiebestanden in HCL, de HashiCorp Configuration Language, waarin je het gewenste eindresultaat beschrijft. Terraform bedenkt vervolgens wat er moet worden gemaakt, gewijzigd of verwijderd om daar te komen.
Het communiceert met platforms via plug-ins die providers worden genoemd. Er zijn providers voor AWS, Azure, Google Cloud, Kubernetes, GitHub, Cloudflare en vele anderen, zodat u één workflow voor allemaal kunt gebruiken.
Eén ding om te weten: in 2023 heeft HashiCorp Terraform overgezet naar de Business Source-licentie. De community heeft vervolgens OpenTofu gemaakt, een open-source fork die zeer vergelijkbare opdrachten en configuraties gebruikt. Wat je hier leert, geldt grotendeels voor beide.
Waarom infrastructuur als code?
| Vraag | Handmatig consolewerk | Terraform |
|---|---|---|
| Wie heeft wat veranderd? | Moeilijk te achterhalen | Git-geschiedenis |
| Kunnen we de staging naar de productie kopiëren? | Voorzichtig klikken | Hergebruik de code |
| Wat zal deze verandering doen? | Daar kom je achteraf achter | terraform plan laat het je eerst zien |
| Kan iemand het reviewen? | Niet gemakkelijk | Een normaal pull-verzoek |
| Herstel na een ramp | Hangt af van het geheugen van mensen | Maak opnieuw op basis van code, plus gegevensback-ups |
Terraform is ook declaratief. U zegt “er moeten drie servers zijn”, niet “driemaal een server maken”. Als er al twee bestaan, wordt er één toegevoegd. Een script dat simpelweg zijn stappen herhaalt, zou er uiteindelijk nog drie kunnen creëren.
Installeer Terraform
Installeer het met behulp van de officiële HashiCorp-instructies voor uw besturingssysteem en bevestig vervolgens dat het werkt:
terraform -version
Maak een lege map voor het project. Terraform leest elk .tf bestand in de huidige map, dus één map is gelijk aan één configuratie.
Uw eerste configuratie
Maak een bestand met de naam 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"
}
Kijk naar blok resource, aangezien bijna alles wat je schrijft deze vorm volgt. local_file is het resourcetype en greeting is uw eigen naam ervoor binnen de configuratie. Samen vormen ze het adres: local_file.greeting. De argumenten binnenin beschrijven wat u wilt.
De workflow: initiëren, plannen, toepassen
terraform init
Hiermee wordt de map voorbereid en worden de providers gedownload waar u om hebt gevraagd. Voer het één keer uit aan het begin en opnieuw wanneer u een provider of module toevoegt. Er wordt ook een .terraform.lock.hcl-bestand gemaakt, waarin de exacte providerversies worden vastgelegd. Commit dat bestand naar Git.
terraform init
terraform plan
Dit vergelijkt uw code met wat er bestaat en toont de geplande wijzigingen, zonder iets aan te raken:
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.
Leer de symbolen, want je leest veel plannen:
| Symbool | Betekenis |
|---|---|
+ |
Creëer |
~ |
Update op zijn plaats |
- |
Vernietig |
-/+ |
Vernietigen en opnieuw creëren |
terraform van toepassing
Deze toont het plan opnieuw, vraagt om bevestiging en voert de wijzigingen door:
terraform apply
Type yes en hello.txt verschijnen. Voer nu terraform plan opnieuw uit. Het zou geen wijzigingen moeten rapporteren, omdat de werkelijkheid al overeenkomt met uw code. Deze eigenschap, waarbij het herhaaldelijk uitvoeren ervan geen verdere verandering teweegbrengt, wordt idempotence genoemd.
Veranderen en vernietigen
Bewerk de regel content en voer terraform plan uit. Terraform ziet het verschil en stelt een verandering voor. Voor deze bron vervangt het het bestand. Besteed aandacht aan vervangingen op de echte infrastructuur, aangezien het opnieuw aanmaken van een database kan betekenen dat gegevens verloren gaan.
Verwijder vervolgens hello.txt handmatig en plan opnieuw. Terraform merkt dat het ontbreekt en biedt aan om het opnieuw te maken. Een verschil tussen uw code en de werkelijkheid wordt drift genoemd, en het detecteren ervan is een van de belangrijkste voordelen van de tool.
Om alles wat deze configuratie beheert te verwijderen, voert u het volgende uit:
terraform destroy
Variabelen en uitgangen
Hardgecodeerde waarden zorgen ervoor dat u code niet opnieuw kunt gebruiken. Invoervariabelen maken een configuratie flexibel, en uitvoer rapporteert nuttige waarden terug:
# 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
}
Stel waarden in op de opdrachtregel, of bewaar ze in een bestand met de naam terraform.tfvars, dat automatisch wordt geladen:
terraform apply -var="environment=staging"
Het gebruik van local_file.config.filename in de uitvoer geeft ook aan hoe bronnen naar elkaar verwijzen. Terraform leest deze verwijzingen om de juiste volgorde te bepalen waarin dingen moeten worden gemaakt.
Terraforme staat
Na aanmelding vindt u een bestand met de naam terraform.tfstate. Dit is Terraform’s verslag van wat het beheert, waarbij uw code wordt toegewezen aan echte objecten. Zonder dit zou Terraform niet weten dat local_file.greeting dat specifieke bestand is.
Drie regels zijn hier van belang:
- Geef nooit een status door aan Git. Het kan wachtwoorden en andere geheimen in platte tekst bevatten.
- Bewerk het niet met de hand. Gebruik opdrachten zoals
terraform state listenterraform state mv. - Gebruik een externe backend voor teamprojecten. Een gedeelde backend slaat de status centraal op en vergrendelt deze, zodat twee mensen niet tegelijk een aanvraag kunnen indienen.
Hier is een typische backend die Amazon S3 gebruikt, met een bucket die je vooraf maakt:
terraform {
backend "s3" {
bucket = "my-company-terraform-state"
key = "shop/prod/terraform.tfstate"
region = "ap-south-1"
encrypt = true
use_lockfile = true
}
}
Tip: Begin elk project met een .gitignore, waarbij de bestanden .terraform/, *.tfstate, *.tfstate.* en alle *.tfvars bestanden die geheimen bevatten, worden uitgesloten.
Een echte cloudbron
De workflow verandert niet als u naar een cloud verhuist. Hier is een S3-bucket op AWS. Controleer eerst de prijzen en vernietig alles wat je maakt tijdens het oefenen:
provider "aws" {
region = "ap-south-1"
}
resource "aws_s3_bucket" "reports" {
bucket = "my-unique-reports-bucket-2026"
tags = {
Environment = var.environment
ManagedBy = "terraform"
}
}
Terraform haalt inloggegevens op van uw AWS CLI-installatie- of omgevingsvariabelen. Schrijf nooit toegangssleutels in een .tf-bestand.
Modules
Een module is eenvoudigweg een map met Terraform-bestanden die u met verschillende invoer kunt oproepen. Het werkt ongeveer als een functie, waarbij u een patroon één keer kunt definiëren en opnieuw kunt gebruiken:
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"
}
Het openbare Terraform Registry heeft ook kant-en-klare modules, maar lees deze voordat u erop vertrouwt en pin de versie. Bouw modules niet te vroeg. Wacht tot je een patroon minimaal twee keer hebt herhaald.
Een veilige teamworkflow
- Maak een vertakking en wijzig de
.tfbestanden. Bekijk onze Git-tutorial voor beginners als je een opfriscursus nodig hebt. - Voer
terraform fmtenterraform validateuit. - Open een pull-aanvraag, met de uitvoer van
terraform planter beoordeling bijgevoegd. - Pas na goedkeuring het opgeslagen plan toe vanaf één gecontroleerde plek, idealiter een pijpleiding.
Als u het plan opslaat, weet u zeker dat u precies toepast wat is beoordeeld:
terraform plan -out=tfplan
terraform apply tfplan
Dit past natuurlijk in CI/CD en GitHub-acties. Terraform levert meestal het cluster, en tools als Kubernetes voeren er vervolgens applicaties op uit.
Veel voorkomende fouten
- Aanvragen zonder het plan te lezen. Eén
-/+in een database kan een erg dure verrassing zijn. - Status bijhouden op één laptop. Als u die laptop kwijtraakt, verliest Terraform uw infrastructuur uit het oog.
- Handmatige wijzigingen aan de console aanbrengen. Ze veroorzaken drift en de volgende toepassing kan deze ongedaan maken.
- Niet-vastgezette versies gebruiken. Pin provider- en moduleversies vast, zodat upgrades expres plaatsvinden.
- Het gebruik van één grote configuratie. Door op te splitsen per omgeving of systeem wordt de schade van fouten beperkt.
Tot slot
Je hebt nu de ideeën achter bijna al het Terraform-werk gezien: grondstoffen declareren, het plan herzien, het toepassen en de staat beschermen. Oefen met de local provider totdat de workflow natuurlijk aanvoelt en beheer vervolgens een kleine echte bron in een gratis account. Schakel de externe status en modules in zodra er meer dan één persoon of meer dan één omgeving bij betrokken is.
Veelgestelde vragen
Waar wordt Terraform voor gebruikt?
Terraform wordt gebruikt voor het creëren en beheren van infrastructuur, zoals servers, netwerken, databases en DNS, door deze in code te beschrijven in plaats van deze met de hand te configureren.
Is Terraform gratis?
De Terraform CLI is gratis te gebruiken onder de Business Source-licentie, hoewel de voorwaarden bepaalde concurrerende commerciële toepassingen beperken. HCP Terraform heeft betaalde niveaus en OpenTofu is open source.
Wat is het verschil tussen Terraform en Ansible?
Terraform levert infrastructuur voornamelijk declaratief. Ansible configureert software voornamelijk op bestaande machines. Veel teams gebruiken beide, eerst Terraform en daarna Ansible.
Wat is een Terraform-statusbestand?
Het is een record dat uw configuratie in kaart brengt met echte bronnen. Terraform gebruikt het om wijzigingen uit te werken. Het kan geheimen bevatten, dus bewaar het veilig en houd het buiten Git.
Moet ik programmeren kennen om Terraform te leren?
Niet echt. HCL is eenvoudig en declaratief. Het begrijpen van het platform dat u beheert, zoals AWS-netwerken, is meestal moeilijker dan de taal zelf.
Blijf leren
Hulp nodig met testen, WordPress of SEO?
We helpen teams betere software te leveren en hun sites te laten groeien. Vertel ons waar u mee bezig bent en wij stellen een duidelijke volgende stap voor.
Meer handleidingen over testen, AI en moderne ontwikkeling
Genoten van dit artikel? Kies een onderwerp en ga direct naar onze nieuwste tutorials.
AI-hallucinaties uitgelegd: waarom taalmodellen dingen verzinnen en hoe ze te verminderen
AI-hallucinaties uitgelegd: wat ze zijn, waarom taalmodellen ze produceren, veelvoorkomende typen, hoe je ze kunt verminderen met aarding en aanwijz…
Lees artikel →DevOpsOmgevingsvariabelen uitgelegd: .env-bestanden, geheimen en configuratie goed gedaan
Omgevingsvariabelen uitgelegd met Python-voorbeelden die we hebben uitgevoerd: ze lezen en instellen, waarom elke waarde een string is, .env-bestand…
Lees artikel →SoftwareontwikkelingAPI-snelheidsbeperking uitgelegd: algoritmen, headers en afhandeling van 429-fouten
API-snelheidsbeperking uitgelegd met een simulatie die we hebben uitgevoerd: token-bucket, vast venster, schuifvenster, 429 reacties, headers van sn…
Lees artikel →TestautomatiseringSpotten in Python: unittest.mock, patch en de fouten die tests doen liegen
Spotten in Python met unittest.mock, getest: Mock en return_value, side_effect, patchen waar een naam wordt gebruikt, spec en autospec, spotdatums e…
Lees artikel →SoftwaretestenCodedekking uitgelegd: lijn versus filiaaldekking en wat 100% werkelijk betekent
Codedekking uitgelegd met een echte dekking.py-run: dekking van lijnen, vertakkingen en condities, een rapport lezen, waarom 100% dekking nog steeds…
Lees artikel →Databases & SQLDELETE versus TRUNCATE versus DROP in SQL: verschillen, terugdraaien en wanneer elk te gebruiken
DELETE versus TRUNCATE versus DROP uitgelegd met geteste SQL: wat elk verwijdert, terugdraaien, triggers, identiteitsreset, snelheid en hoe PostgreS…
Lees artikel →Databases & SQLSQL-weergaven uitgelegd: creëer, gebruik en vermijd de valkuilen, met voorbeelden
SQL-weergaven uitgelegd met query's die we hebben uitgevoerd: een weergave maken, live resultaten, kolommen verbergen, prestaties, bijwerkbare en ge…
Lees artikel →SoftwareontwikkelingTypeScript-interface versus type: echte verschillen, getest met de compiler
TypeScript-interface versus type, gecontroleerd met de echte compiler: wat beide kunnen doen, wat slechts één kan doen, samenvoegen van declaraties,…
Lees artikel →SoftwareontwikkelingPython *args en **kwargs uitgelegd: flexibele functies met duidelijke voorbeelden
Python *args en **kwargs uitgelegd met code die we hebben uitgevoerd: in- en uitpakken, parametervolgorde, argumenten die alleen trefwoorden en posi…
Lees artikel →SoftwareontwikkelingPython Lambda-functies: syntaxis, echt gebruik en wanneer u ze niet moet gebruiken
Python lambda-functies uitgelegd met code die we hebben uitgevoerd: syntaxis, sorteren met sleutel, kaart en filter, sluitingen, de laat-bindende va…
Lees artikel →Kunstmatige intelligentieWat zijn AI-agenten? Hoe ze werken, met een eenvoudige agentloop die u kunt uitvoeren
Wat zijn AI-agenten? Een duidelijke gids voor de agentenlus, tools, geheugen en vangrails, met een kleine Python-lus die we hebben uitgevoerd, echte…
Lees artikel →DevOpsMonitoring versus waarneembaarheid: het echte verschil, met logboeken, statistieken en sporen
Monitoring versus waarneembaarheid uitgelegd: bekende en onbekende fouten, logboeken, statistieken en sporen, een walkthrough voor afrekenincidenten…
Lees artikel →DevOpsDocker-volumes versus bindingsmounts: bewaar containergegevens op de juiste manier
Docker-volumes versus bind-mounts uitgelegd: waarom containergegevens verdwijnen, benoemde volumes, bind-mounts, tmpfs, Compose-voorbeelden, back-up…
Lees artikel →TestautomatiseringTDD versus BDD: belangrijkste verschillen, één functie die op beide manieren is gebouwd en wanneer deze moet worden gebruikt
TDD versus BDD uitgelegd met één kortingsfunctie die in beide richtingen is gebouwd: rood-groen-refactor met code die we hebben uitgevoerd, gegeven-…
Lees artikel →SoftwaretestenGebruikersacceptatietesten (UAT): proces, checklist en echte voorbeelden
Gebruikersacceptatietesten uitgelegd: wie voert het uit, hoe het verschilt van QA, een proces in zeven stappen, een UAT-testcase-sjabloon, een check…
Lees artikel →Databases & SQLSQL NULL-waarden uitgelegd: IS NULL, COALESCE, NULLIF en de te vermijden vallen
SQL NULL-waarden uitgelegd met query's die we hebben uitgevoerd: logica met drie waarden, IS NULL, COALESCE, NULLIF, hoe aggregaten, joins en sorter…
Lees artikel →Databases & SQLSQL CASE WHEN-instructie: syntaxis, echte voorbeelden en veelvoorkomende fouten
SQL CASE WHEN uitgelegd met vragen die we hebben uitgevoerd: eenvoudige en doorzochte formulieren, volgorde van de voorwaarden, draaipunten met SUM,…
Lees artikel →SoftwareontwikkelingWat is JWT? JSON-webtokens uitgelegd met een werkend voorbeeld
Wat is JWT? JSON Web Tokens uitgelegd: de drie delen, een token gebouwd en waarmee is geknoeid in de code die we hebben uitgevoerd, JWT versus sessi…
Lees artikel →SoftwareontwikkelingJavaScript-gebeurtenislus uitgelegd: call-stack, microtaken en timers met voorbeelden
De JavaScript-gebeurtenislus uitgelegd met code die we hebben uitgevoerd: call-stack, taak- en microtask-wachtrijen, waarom setTimeout 0 niet onmidd…
Lees artikel →SoftwareontwikkelingPython-generatoren en opbrengst uitgelegd: bespaar geheugen met echte voorbeelden
Python-generatoren en opbrengst uitgelegd met code die we hebben uitgevoerd: hoe ze pauzeren en hervatten, gemeten geheugenbesparingen, pijplijnen, …
Lees artikel →Kunstmatige intelligentieWat zijn inbeddingen? Vectoren en cosinusovereenkomst eenvoudig uitgelegd
Wat zijn insluitingen? Een gids in duidelijke taal over vectoren, cosinusovereenkomst en semantisch zoeken, met een klein voorbeeld dat we hebben ui…
Lees artikel →DevOpsImplementatie van blauwgroen versus kanarie: verschillen, afwegingen en hoe te kiezen
Blauw-groen versus kanarie-implementatie uitgelegd: hoe elk werkt, kosten, risico's en terugdraaien, stabiele gebruikersbucket die we hebben getest,…
Lees artikel →TestautomatiseringSchilferige tests: wat de oorzaak ervan is en hoe u ze voorgoed kunt oplossen
Zwakke tests uitgelegd met demo's die we hebben uitgevoerd: de belangrijkste oorzaken, hoe je er een kunt bevestigen en diagnosticeren, goede oploss…
Lees artikel →SoftwaretestenBelastingtesten versus stresstesten: verschillen, statistieken en k6-voorbeelden
Belastingtesten versus stresstesten uitgelegd: wat elk bewijst, piek- en soak-tests, de statistieken die er toe doen, waarom gemiddelden misleiden, …
Lees artikel →SoftwaretestenTestcase versus testscenario: belangrijkste verschillen, voorbeelden en wanneer deze te gebruiken
Testcase versus testscenario uitgelegd: duidelijke definities, een tabel naast elkaar, één functie voor het opnieuw instellen van wachtwoorden, over…
Lees artikel →Databases & SQLOptimalisatie van SQL-query's: lees uitvoeringsplannen en repareer langzame query's, met timing
Optimalisatie van SQL-query's getest op een miljoen rijen: lees uitvoeringsplannen, voeg de juiste indexen toe, repareer niet-sargeerbare filters, g…
Lees artikel →Databases & SQLSQL UNION versus UNION ALL: verschillen, voorbeelden en geteste prestaties
SQL UNION versus UNION ALL uitgelegd met de query's die we hebben uitgevoerd: duplicaten, de regels volgen beide, een echte databug, gemeten prestat…
Lees artikel →SoftwareontwikkelingJavaScript Fetch API-tutorial: GET, POST, foutafhandeling en time-outs
Een JavaScript Fetch API-tutorial getest tegen een lokale server: GET en POST, waarom 404 niet gooit, een herbruikbare helper, queryreeksen, time-ou…
Lees artikel →SoftwareontwikkelingPython-bestandsverwerking: lezen, schrijven, CSV, JSON en pathlib met voorbeelden
Het verwerken van Python-bestanden uitgelegd met code die we hebben uitgevoerd: open modi, met het lezen van grote bestanden, CSV, JSON, pathlib, bi…
Lees artikel →SoftwareontwikkelingPython-klassen en -objecten: OOP-zelfstudie met echte voorbeelden
Python-klassen en -objecten uitgelegd met code die we hebben uitgevoerd: __init__, methoden, klasse versus instantie-attributen, overerving, eigensc…
Lees artikel →Kunstmatige intelligentieWat is een groot taalmodel? Hoe LLM's werken, uitgelegd zonder de hype
Wat is een groot taalmodel? LLM's uitgelegd in duidelijke taal: tokens, inbedding, aandacht, training, temperatuur- en contextvensters, een kleine d…
Lees artikel →DevOpsLinux-opdrachten voor beginners: de essentiële terminalgids met voorbeelden
Linux-opdrachten voor beginners, gegroepeerd op taak: navigatie, bestanden, logboeken bekijken, grep, pipelines, machtigingen, processen en archieve…
Lees artikel →TestautomatiseringSelenium versus toneelschrijver: belangrijkste verschillen, code vergeleken en welke te kiezen
Selenium versus Playwright vergeleken: architectuur, wachten, browser- en taalondersteuning, debuggen, dezelfde test in beide tools, migratieadvies …
Lees artikel →SoftwaretestenEquivalentiepartitionering: testontwerptechniek uitgelegd met uitgewerkte voorbeelden
Equivalentiepartitionering uitgelegd: hoe je geldige en ongeldige partities kunt vinden, uitgewerkte voorbeelden voor leeftijden, wachtwoorden en ko…
Lees artikel →SoftwaretestenErnst versus prioriteit bij het testen van software: verschillen, matrix en echte voorbeelden
Ernst versus prioriteit bij het testen van software uitgelegd: duidelijke definities, een vierwegmatrix met voorbeelden, niveauschalen, wie deze bep…
Lees artikel →Databases & SQLTutorial voor SQL-subquery's: typen, gecorreleerde subquery's en BESTAAN met voorbeelden
Een SQL-subquery-tutorial met query's die we hebben uitgevoerd: scalaire, IN-, FROM- en SELECT-subquery's, gecorreleerde subquery's, EXISTS, de NOT …
Lees artikel →Databases & SQLSQL-transacties en ACID uitgelegd: COMMIT-, ROLLBACK- en isolatieniveaus
SQL-transacties en ACID uitgelegd met een bankoverschrijving die we hebben uitgevoerd: COMMIT, ROLLBACK, savepoints, locks, isolatieniveaus, dirty r…
Lees artikel →SoftwareontwikkelingGit Commands Cheat Sheet: de commando's die je daadwerkelijk gebruikt, met voorbeelden
Een spiekbriefje voor Git-opdrachten, gegroepeerd op taak: setup, staging, branches, remotes, stash, geschiedenis en fouten ongedaan maken, met uitv…
Lees artikel →SoftwareontwikkelingJavaScript-beloften uitgelegd: vervolgens catch, Promise.all en veelvoorkomende fouten
JavaScript-beloften uitgelegd met code die we hebben uitgevoerd: staten, dan en catch-ketens, foutafhandeling, Promise.all, allSettled, race en wat …
Lees artikel →SoftwareontwikkelingZelfstudie Python-woordenboek: methoden, voorbeelden en veelvoorkomende patronen
Een Python-woordenboektutorial met code die we hebben uitgevoerd: dictaten, sleutelmethoden, samenvoeg-, begrips-, tel- en groeperingspatronen en ve…
Lees artikel →Kunstmatige intelligentieWat is RAG? Retrieval-Augmented Generation uitgelegd met een werkend voorbeeld
Wat is RAG? Retrieval-augmented generatie stap voor stap uitgelegd: indexeren, chunken, insluiten, ophalen, een klein werkend Python-voorbeeld, eval…
Lees artikel →DevOpsTerraform-zelfstudie voor beginners: infrastructuur als code van het eerste bestand tot modules
Een Terraform-tutorial voor beginners: begin zonder cloudaccount, leer init, plan en pas toe, vervolgens variabelen, outputs, status, modules en een…
Lees artikel →DevOpsDocker versus Kubernetes: belangrijkste verschillen, hoe ze samenwerken en welke u nodig heeft
Docker vs Kubernetes legde uit: wat elk doet, dezelfde app draait met beide, Docker Compose en Swarm vergeleken, de dockershim veranderen en hoe je …
Lees artikel →TestautomatiseringPytest-tutorial voor beginners: armaturen, parametriseren en echte voorbeelden
Een pytest-tutorial voor beginners met tests die we hebben uitgevoerd op pytest 9.2: beweringen, armaturen, parametrize, conftest, markers, tmp_path…
Lees artikel →SoftwaretestenLevenscyclus van softwaretests (STLC): 6 fasen, in- en uitgangscriteria, voorbeeld
De levenscyclus van softwaretesten uitgelegd: zes STLC-fasen met in- en uitstapcriteria, deliverables, een voorbeeld van een uitgewerkte inlogfuncti…
Lees artikel →SoftwareontwikkelingGit merge vs rebase: verschillen, voorbeelden en wanneer je wat gebruikt
Git merge vs rebase uitgelegd met echte logoutput, een vergelijkingstabel, de gouden regel van rebase en een veilige teamwerkwijze.
Lees artikel →SoftwareontwikkelingPython list comprehension: syntaxis, voorbeelden en wanneer je het vermijdt
Python list comprehension uitgelegd: syntaxis, filteren, if-else, geneste lussen, gemeten tijden en wanneer een gewone for-lus beter is.
Lees artikel →Databases & SQLSQL JOIN uitgelegd met voorbeelden (Inner, Left, Right, Full)
Begrijp SQL joins stap voor stap met voorbeeldtabellen en queries: INNER, LEFT, RIGHT, FULL, CROSS en SELF, plus veelgemaakte fouten en prestatietips.
Lees artikel →