dbwebb-se / mvc

Course repo for the mvc and object orientation in frameworks course - mvc.
Other
1 stars 4 forks source link

Veckologg 2022 #43

Open mosbth opened 2 years ago

mosbth commented 2 years ago

Detta är en veckologg över kursen.

Den fylls i allt eftersom kursen går och läraren noterar saker som hänt under respektiva vecka och saker som kan vara bra att ha koll på om man av någon anledning missat något.

mosbth commented 2 years ago

Vecka 01 (kmom01)

Då börjar vi med att bygga en webbplats i form av en me-sida med PHP-ramverket Symfony via controller, routes och templatemotorn Twig.

Börja med att se över din labbmiljö så att du har senaste versionerna av PHP och composer. Studentservern är uppgraderad till PHP 8.1.

Det finns en övning som visar dig stegen för att komma igång och installera Symfony och publicera till studentservern. Mikael håller på och spelar in en video som visar när han jobbar igenom övningen. Videon lär anlända under tisdagen.

Mikael håller på och spelar in en uppdaterad introduktionsvideo till kursen. Den bör anlända under tisdagen.

En plan kan alltså vara fixa labbmiljön fram till tisdag lunch och sen kolla introvideon och därefter köra igång med Symfonyövningen (inkl videon).

På onsdagseftermiddagen kan det vara en plan att kika på den inspelade föreläsningen "Klasser och objekt i PHP" som ger en grund i hur objektorientering och dess konstruktioner fungerar i PHP.

På torsdag förmiddag är det hjälpsession på campus/Discord. På eftermiddagen sitter Mikael i zoom och visar hur han jobbar med grunderna för att lösa uppgiften.

Kmom02 är ännu gult och det ryktas att uppgiften kommer handla om att bygga ett kortspel på webben. Vi kan gissa att klasser som kort, kortlek, korthand, spel kan vara aktuella under den veckan.

Kmom03 är också gult men det kommer handla om enhetstestning med PHP. Vi lär oss hur man jobbar med phpunit för att enhetstesta de klasser vi byggde i kmom02. Vi får också möjlighet att bygga vidare på vårt kortspel och utöka dess funktioner.

Planen för övriga kmom ser ut så här:

Kursen avslutas med ett projekt i kmom07/10 där vi bygger en ny webbplats från start till slut. I projektet får du möjlighet att köra vidare på Symfony eller byta ramverk för att lära dig ytterligare ett. Ett alternativ som är lämpligt är då Laravel som bygger på Symfony.

mosbth commented 2 years ago

Vecka 02 (kmom02)

Då sätter vi igång med kmom02 som handlar om objektorientering och hur vi kan skriva våra egna klasser in i ramverket Symfony.

Det finns en uppgift där vi skall skriva en handfull klasser som samverkar och vi skall visa upp resultatet dels i webbsidor och dels i JSON routes.

För att komma igång med uppgiften finns det en föreläsning om objektorienterade konstruktioner med PHP. Det finns också ett par övningar som visar hur vi kan jobba med klasser, objekt och konstruktioner som GET, POST; SESSION i Symfony.

På tisdag eftermiddag är det genomgång som fokuserar på att hjälpa oss igång med uppgiften genom att kika på de övningar som finns.

I övrigt är det eget arbete under veckan och stöd finns i chatt och issues. På torsdag är det programmeringsstuga men det känns nästan som hela veckan är programmeringsstuga.

Veckan innehåller också ett inslag av problemlösning där vi kikar på ett par metoder som kan hjälpa oss att jobba med problemlösning när vi designar vår kod.

Nästa vecka bygger vi vidare på de klasser vi gör denna veckan, tanken är att vi då försöker bygga en mer komplett applikation i Symfony.

Kursmomentet med enhetstestning kommer flyttas en vecka framåt så att vi får mer tid till att komma igång med kodandet av en applikation i Symfony.

mosbth commented 2 years ago

Vecka 03 (kmom03)

Denna veckan satsar vi på att bygga ett kortspel med objektorienterade konstruktioner i PHP och enligt MVC i Symfony. Tanken är att vi återanvänder alla klasser vi gjorde förra veckan och nu försöker vi sätta samman dem till ett kortspel. Vi får en liten repetition på hur våra klasser fungerar "på riktigt" och vi får en liten utmaning i hur man bygger ett spel med logik i en webbplats.

Standardspelet som rekommenderas är 21 där en spelare spelar mot banken. Det finns en handfull optionella krav som du kan implementera om du har tiden och energin. Du har också möjlighet att välja ett eget kortspel. Välj dock ett som är lagom svårt med tanke på hur många timmar du har tillgodo för uppgiften.

Förhoppningsvis underlättar den strukturerade problemlösningen med flödesdiagram och pseudokod när du tänker igenom hur du skall bygga ditt spel.

Vi försöker också tänka på hur man skriver "snygg kod" och vilken typ av kodkonstruktioner som kan vara bra kod. vi använder oss av statiska kodlinters som kollar om vår kod fyller vissa regler om det som kan leda fram till snygg kod.

Tisdagens genomgång handlar om hur man kan tänka kring vissa delar av "snygg kod". I övrigt är det kodande som gäller denna veckan.

mosbth commented 2 years ago

Vecka 04 (kmom04)

Nu skall vi testa vår kod med enhetstestning. Vi kan se det som en fortsatt fokusering på objektorientering och det är egentligen en väg framåt mot att få "snygg och bra kod". Det sägs att testbar kod bidrar till snygg kod.

Veckans fokus är att skapa en test suit för ditt kortspel där alla dina modell-klasser är testobjekt och du skall skapa enhetstester som exekverar och testar din kod. Vi jobbar med kodtäckning för att driva på lusten att täcka så mycket av koden som möjligt med testfallen.

Som en liten parantes löser vi också dokumentation av vår kod. Vi installerar phpdoc och automatgenererar dokumentation som HTML.

Tisdagens genomgång med Mikael visar hur man kommer igång med grunderna i phpunit, enhetstester och hur man kan jobba med det i Symfony.

Det finns inspelade föreläsningar om "Software testing" och "Software unit testing" som ger en bakgrund till hur dessa processer påverkar vårt arbete med vår kod.

På onsdag håller Marie en föreläsning i Zoom där hon pratar om erfarenheter kring test med bakgrund i sitt eget yresliv där hon delvis jobbat med tester under lång tid på Ericsson.

Ta gärna tillfället i akt och förbättra din kod om du ser möjligheter att göra den mer testbar. Det kommer troligen förbättra din kodstruktur och leda till "snyggare kod".

mosbth commented 2 years ago

Vecka 05 (kmom05)

Nu skall vi titta på databaser och hur det kan integreras med ramverket Symfony. Vi tänkte använda ett ORM - ett ramverk som mappar en relationsdatabas mot en samling objektorienterade klasser. Vårt ORM är Doctrine och det är väl integrerat med Symfony.

Du kan välja att jobba med databasen SQLite eller MariaDB. Det kan vara enklast att komma igång med SQLite och man kan byta till MariaDB i ett senare skede.

Tisdagens genomgång jobbar igenom övningen som hjälper dig komma igång med Symfony och Doctrine.

Uppgiften handlar om att bygga en CRUD applikation mot databasen.

Det blir spännande att se hur du kommer jämföra detta sättet att jobba mot databaser med de sätten du provat på tidigare i databas och webtec kursen.

mosbth commented 2 years ago

Vecka 06 (kmom06)

Då tar vi det sista "vanliga" kmomet och avslutar med fokus på visualisering av kodkvalitet med kodlinters, atuomatiserad testning och verktyg som phpmetrics och Scrutinizer CI.

Just termen CI är spännande i sammanhanget då den står för "Continous Integration" och är en viktig ingrediens i hur vi jobbar med vår kod. Numer sitter vi inte enbart isolerade på vår lokala maskin och utvecklar för oss själva, nej. Nu utvecklar vi lokalt, driftsätter på en produktionsserver och vi har koden på GitHub/GitLab som är testad, lintad, dokumenterad och kan checkas ut av externa byggsystem som automatiserar att vår testsuit och eventuellt linters körs varje gång vi pushar ny kod till vårt remote repository (GitHub/GitLab).

Den "stora frågan" vi försöker förstå och delvis besvara är om detta kan vara en god hantering av koden och gynnsamt arbetssätt för att nå god kod som har god kvalitet och är lätt att underhålla.

På tisdagens zoom försöker vi komma igång med att integrera verktygen i vårt projekt och köra dem första gången. Kanske kan vi även så smått analysera koden utifrån dessa verktyg. Därefter är det bara att jobba på.

När du väl har integrerat verktygen i ditt projekt så får du möjligheten att uppdatera din kod för att se om du kan förbättra några mätvärden kring dess upplevda kodkvalitet. Ta det som en utmaning.

Den slutliga behållningen i kmomet blir möjligen ett par badges. Förhoppningsvis är de gröna. De kan se ut så här till exempel (badges från tre olika projekt).

Build Status Code Coverage Scrutinizer Code Quality

Build Status Code Coverage Scrutinizer Code Quality

Build Status Code Coverage Scrutinizer Code Quality