Reinstallasjon av Windows
2 nov. 2019Oppgradering 1903 til Windows 10 ville ikke installeres, så det endte med at jeg måtte installere Windows helt på nytt. Prosessen er ganske enkel da man kan laste ned MediaCreationTool fra Microsoft, og med dette lage en oppstartsbar minnepinne. Backup-behovet mitt er ganske lavt da filene mine i all hovedsak er i ulike skytjenester på tvers av Dropbox, Drive og iCloud, men det er selvsagt alle lokale programmer og diverse innstillinger som må settes opp på nytt. Savegames for spill i Steam tar Steam kopi av i sin egen sky, så selv disse var det ikke behov for å tenke på.
Sist jeg reinstallerte Windows måtte jeg inn med driver til det eksterne lydkortet mitt samt HP-printeren jeg av og til bruker. Begge fungerte ut av boksen denne gangen. Lastet først ned og installerte Chrome og Firefox, logget inn i chrome og fikk satt opp lastpass-plugin slik at jeg har tilgang på alle passordene mine. Videre hentet jeg ned Spotify, Steam, Dropbox, FileZilla, Putty, AnyConnect (fra jobb), Citrix, VLC, Sublime, 7-zip og Office (office365).
Jeg har to skjermer, en 4k og en 3k, og bruker LittleBigMouse for å justere DPI og mus slik at jeg samløst kan flytte musen frem og tilbake mellom skjermene uten at den "hopper" i vertkalt nivå. Erstatter også den ekstremt plagsomme startmenyen med programmet OpenShell.
Så gjenstod å få opp utviklingsmiljøene. Det er alltid litt herk, men jeg startet med å installerte python3.8. Pip kommer med som standard, så jeg fikk raskt installert virtualenv, og satt tre miljøer: Et for denne hjemmesiden, et for et prosjekt knyttet til systemeoversikt og et for et script for å søke opp musikk via Spotifys API. Tenkte det var på tide å ta i bruk git, så jeg lagde tre nye prosjekter på github og lastet ned GitHub Desktop, som er en veldig enkel måte å komme i gang på.
Spotify-APIet ("freakocralw") skrev jeg om fra python2 til python3 (brukte et støtteverktøy "2to3" som tar seg av det meste, og refaktorerte koden litt.
Hjemmesiden var også skrevet i Python2 og mot Django 1x, så det var en god del jobb å få den til å virke igjen. Særlig knyttet til CSRF-tokens som før var statiske for økten. Nå endres de (i verdi) for hver side som genereres. Brukte disse i forbindelse med CSP-nonce, men gikk nå like greit over til å bruke modulen django-csp. PIL (bildebibliotek) hadde også blitt deprekert, men Pillow er bakoverkompatibelt. Måtte likevel endre på thumbnail-genereringen da "auto" ikke lenger aksepteres som en dimensjon. Valgte også å gå vekk fra MySQL og tilbake til SQLlite. Mindre styr ved lokal test. Migrering av data gikk helt fint ved bruk av dumpdata og loaddata så lenge permission og contenttypes ekskluderes (og etter litt opprydding i ugyldige verdier som ble lagt inn i MySQL-databasen før Django tok over kontroll over dataene i den)
python manage.py dumpdata > initial_data.json
python manage.py loaddata --exclude auth.permission --exclude contenttypes initial_data.json
Systemoversikt-prosjektet var allerede klart, og jeg hadde en fil med requirements, så det kom raskt opp igjen lokalt.