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:

  1. Lag en Python-fil i DEV-SERVER-01:

    • Implementer en enkel stack (stabel) og queue (kø).
    • Test programmet ved å legge til og fjerne elementer.
  2. 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:

  1. Utvikle et Java-program på DEV-SERVER-01:

    • Opprett klasser for Book, Library, og User.
    • Implementer funksjonalitet for å låne ut bøker, returnere bøker, og vise tilgjengelige bøker.
  2. 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:

  1. 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.
  2. 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:

  1. 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.
  2. Utfør enhetstesting:

    • Bruk unittest i Python for å teste individuelle funksjoner.
    • Bruk JUnit for å teste Java-metoder.

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:

  1. 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.
  2. 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:

  1. 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.
  2. 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.