Nutanix_Home_Lab_HLD_15_HLD_v5 - itnett/FTD02H-N GitHub Wiki
For å oppnå læringsutbyttet innen programmering i din Nutanix-lab, kan vi sette opp et programmeringsmiljø som dekker alle de nødvendige emnene og ferdighetene. Dette miljøet vil omfatte en kombinasjon av virtuelle maskiner (VM-er), containere, og verktøy som lar deg utforske alt fra grunnleggende programmering til avanserte emner som API-utvikling, GUI-design, og datasikkerhet.
1. Oppsett av Programmeringsmiljøet i Nutanix Lab
A. Infrastruktur
1. VM-er og Containere:
- VLAN 160 (Software Development):
- DEV-SERVER-01 (Linux VM): Brukes til generell programmering, utvikling av CLI-applikasjoner, og grunnleggende datastrukturer. Utstyrt med utviklingsverktøy som Python, Java, og C++.
 - GUI-SERVER-01 (Linux VM): Brukes til utvikling av GUI-applikasjoner med verktøy som Tkinter, PyQt, eller JavaFX.
 - API-SERVER-01 (Linux VM): Dedikert til API-utvikling og testing, kjører Node.js, Flask (Python), eller Spring Boot (Java).
 - SECURE-SERVER-01 (Linux VM): Fokus på sikker programmering og testing av sikkerhetspraksiser.
 
 
2. Containere:
- Container 1: Docker container for MySQL/PostgreSQL for database-relaterte prosjekter.
 - Container 2: Docker container for webapplikasjonsservere som Nginx/Apache for å serve webapplikasjoner.
 - Container 3: Docker container for spesifikke API-testing miljøer (f.eks. Postman/Newman).
 
B. Nettverkskonfigurasjon
- IP-adresseplan: 10.0.160.0/24
 - Gateway IP: 10.0.160.1
 - DNS IP: 10.0.160.2
 - DHCP Range: 10.0.160.100 - 10.0.160.200
 - Statisk IP Range: 10.0.160.10 - 10.0.160.50 (For servere og viktige tjenester)
 - Containere: 10.0.160.50 - 10.0.160.70 (For Docker-kontainere)
 
2. Scenarioer og Øvelser
A. Programstrukturer og Datastrukturer
Scenario: Utforsk grunnleggende programmeringskonsepter ved å implementere ulike datastrukturer (lister, stakker, køer, trær) i Python eller Java.
Instruksjoner:
- 
Lag en Python-fil i DEV-SERVER-01:
- Implementer en enkel stack (stabel) og queue (kø).
 - Test programmet ved å legge til og fjerne elementer.
 
 - 
Implementer et binært søketre i Java:
- Opprett en klasse for treet og lag metoder for innsetting, søking, og sletting.
 - Kjør og test applikasjonen i en IDE som IntelliJ eller VSCode installert på DEV-SERVER-01.
 
 
Læringsmål:
- Forstå og implementere grunnleggende datastrukturer.
 - Lære å skrive og kjøre kode i ulike programmeringsspråk.
 
B. Funksjoner, Metoder, og Objektorientert Programmering
Scenario: Utforsk objektorientert programmering (OOP) ved å lage en enkel applikasjon som simulerer et bibliotekssystem.
Instruksjoner:
- 
Utvikle et Java-program på DEV-SERVER-01:
- Opprett klasser for 
Book,Library, ogUser. - Implementer funksjonalitet for å låne ut bøker, returnere bøker, og vise tilgjengelige bøker.
 
 - Opprett klasser for 
 - 
Bruk Python for å lage en lignende applikasjon:
- Implementer de samme klassene og metodene som i Java-versjonen.
 - Test applikasjonen med ulike brukerscenarier.
 
 
Læringsmål:
- Forstå konsepter innen objektorientert programmering, som arv, polymorfisme, og innkapsling.
 - Implementere funksjoner og metoder i både Java og Python.
 
C. API-utvikling og GUI
Scenario: Lag en RESTful API og en enkel GUI-applikasjon som interagerer med API-en.
Instruksjoner:
- 
Utvikle en RESTful API på API-SERVER-01:
- Bruk Flask (Python) eller Node.js til å lage en enkel API som håndterer CRUD-operasjoner for et produktkatalog.
 - Test API-en med Postman/Newman eller direkte via curl-kommandoer.
 
 - 
Utvikle et GUI-program på GUI-SERVER-01:
- Bruk Python og Tkinter til å lage en GUI som sender forespørsler til API-en.
 - GUI-en skal ha funksjoner for å legge til, oppdatere, og fjerne produkter fra katalogen.
 
 
Læringsmål:
- Forstå hvordan man lager og tester API-er.
 - Lære grunnleggende GUI-programmering og hvordan man integrerer GUI med backend-API.
 
D. Debugging, Testing, og Unntaksbehandling
Scenario: Utforsk hvordan du kan debugge og teste koden din ved hjelp av innebygde verktøy i Python og Java.
Instruksjoner:
- 
Bruk innebygde debugging-verktøy i Python og Java:
- Sett opp breakpoints i koden og bruk IDE-en for å gå gjennom koden steg for steg.
 - Implementer unntakshåndtering i Python (try/except) og Java (try/catch) for å fange og håndtere feil.
 
 - 
Utfør enhetstesting:
- Bruk 
unittesti Python for å teste individuelle funksjoner. - Bruk 
JUnitfor å teste Java-metoder. 
 - Bruk 
 
Læringsmål:
- Lære å bruke debugging-verktøy for å identifisere og fikse feil i koden.
 - Implementere og forstå viktigheten av enhetstesting og unntakshåndtering.
 
E. Datasikkerhet i Programmering
Scenario: Implementer grunnleggende sikkerhetspraksiser i programmeringen din for å beskytte data mot vanlige trusler som SQL-injeksjoner og XSS.
Instruksjoner:
- 
Sikker API-utvikling:
- Implementer input-validering i din API-kode for å beskytte mot SQL-injeksjon.
 - Bruk parametriserte spørringer i Python eller Java for databaseinteraksjoner.
 
 - 
Sikre GUI-applikasjonen:
- Implementer sikkerhetstiltak for å beskytte mot XSS-angrep.
 - Bruk sanitiseringsmetoder for å rense brukerinput før den behandles.
 
 
Læringsmål:
- Forstå og implementere sikkerhetsmekanismer i applikasjoner.
 - Lære hvordan man beskytter mot vanlige sikkerhetstrusler som kan påvirke applikasjoner.
 
3. Dokumentasjon og Refleksjon
Scenario: Dokumenter prosjektene dine og reflekter over læringsutbyttet.
- Verktøy: Bruk Markdown, Jupyter Notebooks, eller tradisjonelle tekstbehandlingsverktøy.
 - Innhold: Beskriv strukturen på programmene dine, datastrukturene du brukte, og sikkerhetstiltakene du implementerte.
 
Læringsmål:
- Lære å dokumentere programmeringsprosjekter på en profesjonell måte.
 - Reflektere over egen læring og identifisere områder for videre utvikling.
 
4. Samarbeid og Prosjektarbeid
Scenario: Arbeid i grupper for å utvikle en komplett applikasjon fra start til slutt, inkludert backend, frontend, og sikkerhetsaspekter.
Instruksjoner:
- 
Del prosjektet opp i oppgaver:
- Noen kan jobbe på API-utviklingen, andre på GUI, og noen på sikkerhetsimplementering.
 - Bruk Git/GitHub for versjonskontroll og samarbeid.
 
 - 
Integrer alle komponentene:
- Sett sammen backend, frontend, og sikkerhet i en fungerende applikasjon.
 - Test applikasjonen som en helhet, og utfør nødvendige justeringer.
 
 
Læringsmål:
- Lære å jobbe effektivt i grupper på programmeringsprosjekter.
 - Forstå hvordan man integrerer ulike komponenter i en applikasjon.
 
Oppsummering:
Denne planen gir deg en omfattende tilnærming til å lære programmering i din Nutanix-lab, med praktiske oppgaver og scenarioer som dekker alt fra grunnleggende programstruktur til avanserte emner som GUI, API-utvikling, og datasikkerhet. Ved å følge denne planen, vil du utvikle en sterk forståelse for programmering og hvordan du kan anvende denne kunnskapen i praksis.