Oct 07

HTML-templates

Vi har jobbat en del med de HTML mallar som sedan används av jinja2 och Flask för att få sidan att verkligen se bra ut. Den mall som vi fokuserat på hittills är main.html vilket är den sida som kommer vara huvudmall, alltså där meny och footer finns. I denna mall kommer andra HTML-mallar hämtas och visas i div-boxen content.  Trots våra något begränsade CSS3 skills går det ganska bra.

Vi har också lyckats få sidan att köra genom Flask.
Men vi måste komma ihåg att allt måste göras one drop at a time!

Ska ladda upp en screenshot här när Simon pushat de senaste ändringarna till Github

Oct 03

Datalagret klart!!

I onsdags blev vi äntligen klara med datalagret! Efter ett par timmars jobb med sista funktionen retrieve_technique_stats() gav data_test.py äntligen Tests Complete.

Tests Complete!

Sep 27

Bara en kvar nu!

Ännu igen har jag hunnit skriva alldeles för lite och jobbat alldeles för mycket, så detta inlägg blir förmodligen en aning långt.

Trots att vi inte färdigställt alla funktionerna har vi börjat testa de vi gjort med testfilen data_test.py. När vi började med detta insåg vi att det var en hel del saker som vi missat, till och med i init funktionen  insåg vi att allt inte stod rätt till. Det vi hade glömt var att en del fält fick fel datatyp när informationen om projekten konverterades till unicodesträngar. Vi löste detta genom att i två for-satser, en för integers och en för listor, konvertera elementen till den datatyp de skulle ha. I for-satsen för att göra om ‘techniques_used’ till en lista var vi också tvungna att sortera i alfabetisk ordning. Eftersom elementen i listan var unicodesträngar behövde vi med hjälp av modulen locale specificera att vi ville sortera efter ett svenskt alfabet.

Vidare har vi jobbat med en funtion, retrieve_projects(), som tillåter en mängd argument och gör sedan en sökning i databasen efter dessa. För att göra det lättare för oss delade vi upp denna funktion i delar. Den första delen är en if-sats som körs om det kan hittas ett värde på argumentet techniques, argumentet ges som en lista som sedan matchas mot projekt i databasen och lägger till de projekt som har den eller de givna teknikerna i en lista kallad tech_list. Ges inget argument i techniques skickas alla projekt in i tech_list.

Listan tech_list används sedan i nästa del av funktionen, men denna del inleds med en if-sats som kollar om användaren matat in värden på search och search_fields. Därefter görs en sökning efter search i  search_fields i tech_list. Lite längre ner i funktionen finns även satser som kontrollerar hur de projekt sökningen ger returneras, alltså i vilken ordning och så vidare.

Det finns också ett par rader som gör att sökningen inte är case sensitive.

Den sista funktionen jag har att skriva om är retrieve_techniques(). Denna funktion var enkel, det den gör är att den iterer genom techniques_used och lägger till alla tekniker i en lista. Uppstår ett tillfälle då den försöka lägga till en teknik i listan som redan finns där hoppas detta över och fortsätter sedan med nästa.  När alla projekt gåtts igenom sorteras listan i alfabetisk ordning och returneras sedan tillsammans med en felkod i en tupel.

Allt vi gjort hittills klarar nu av data_test.py

Sep 23

Mycket jobb

Det har hänt en hel del sedan senaste inlägget, istället för en färdig funktion har vi nu tre.
Den första funktionen vi gjorde färdig efter data.init() var data.project_count(). Denna funktion är en enkel liten klump på fyra rader som returnerar en tupel innehållande en felkod samt antalet projekt i databasen. Felkoden är en variabel som i början av filen tilldelas värdet 1 vilket står för “error accessing data file”, denna kod ändras sedan i data.init() då data laddats in i listan som ska innehålla informationen om projekten. Skulle data.project_count() köras innan data.init() skulle den alltså returnera felkoden 1.

Därefter började vi jobba med den tredje funktionen, data.project_lookup(id). Denna funktion ska returnera en tupel innehållande en felkod som kan anta tre olika värden samt en dictionary med all information om det projekt vars id som matas in. Det första sättet vi löste denna funktion var inte optimalt då det inte fungerade om ett projekt tagits bort ur listan vilket då skulle resultera i en sekvens av id nummer liknande: [1, 2, 4, 5]. I denna sekvens saknas 3 vilket skulle ställa till med problem med vår lösning. Vår andra lösning är däremot både mer elegant men också generell, den fungerar i alla lägen.

För övrigt har vi idag haft en del problem med github. I okunskap råkade vi bland annat skapa en branch där vi mergeade två inaktuella versioner samt rörde till det ganska ordentligt Som tur va gick det att lösa med lite jobb.

Det tredje jag har att skriva om är data.retrieve_project(). Här har vi egentligen inte hunnit längre än att importera de globala variablerna och diskutera hur vi ska gå till väga att lösa den, men jag kände ändå att den var värd att nämna.

Sep 21

Enkel fix

Två inlägg på en dag, det är inte dåligt det.
Jag fixade problemet med att vissa element som behöver vara integers blivit konverterade till unicodesträngar. Koden är förmodligen ful och behöver göras om, men den fungerar i alla fall.

Sep 21

Börjat med datalagret

Idag har vi lyckats få vår projektplan och Lo-Fi sketch godkända. Projektplanen blev inte särskiljt vacker men visar ganska bra hur vi ska fördela tiden.

Vi har också börjat med att konstruera datalagret. Vi har alltså börjat att koda på riktigt.Det vi började med innan vi började skriva var att vi löste versionshanteringen genom at bli medlemmar på github.com. Simon skapade ett repository som kan hittas här, mitt konto finns här. Vi valde att använda Git för det verkade bättre och lättare att jobba med än Subversion. En bidragande orsak var även Octocat och deras coola 404-sida :)

I datalagret var den första funktionen som vi gav oss på data.init(). Denna funktion ska läsa in information från en databas i CSV-format och konvertera informationen från Utf-8 till Unicode. Vi valde att spara informationen för varje rad i en ny dictionary. Det som finns kvar att fixa med detta är att under konverteringen konverteras även element i databasen som ska vara integers till unicodesträngar.

En sak vi insåg när vi börjat med första funktionen var att det är otroligt svårt att planera och uppskatta tidsåtgång innan man vet hur man ska genomföra en uppgift, till exempel gav vi tio timmar till funktionen data.init(). Förmodligen tar den inte alls så lång tid.

Sep 20

Lo-Fi sketch

Eftersom vår Lo-Fi sketch var ganska rörig och kluddrig ritade vi om den idag. Den nya beskriver i princip samma ska som den gamla men är lite lättare att förstå och följa.

Vi har också diskuterat lite mer ingående hur lång tid de olika momenten kommer att ta, detta har vi skrivit ned i projektplanen.

Sep 15

Första inlägget dårå!

Så detta är alltså min programmeringslogg för projektkusen TDP003. Projektet innebär att jag med hjälp av programspråket Python ska bygga en webbaserad portfolio där senare projekt och program kan laddas upp och visas. Till min hjälp kommer jag att använda ett ramverk och en template engine. Projektet kommer göras i grupp om två.

Det vi gjort hittills är att vi anpassat vår utvecklingsmiljö och installerat de ramverk och verktyg vi vet att vi kommer behöva. Jag har bland annat installerat Python, Flask, Jinja2 och Firebug. Vi har också gjort en LoFi-sketch där vi visualiserat sidans uppbyggnad och utseende. När vi gjorde skissen kom vi fram till att vi utöver Python kommer använda oss utav HTML, CSS och javascript för att bygga sidan.

Vi har börjat med projektplanen men det är inte lätt att uppskatta den tid som kommer att krävas för de specifika delmomenten.

» Newer posts