Senaste inläggen

  • Projekt 02 – HTML

    Index html

    Här kommer jag att beskriva viktiga delar av HTML koden exempelvis hur jag har gjort sidan anpassad för responsiv design, tillgänglighet och prestanda.

    I head har jag följande rad:

     <meta name="viewport" content="width=device-width, initial-scale=1.0">

    Den här raden justerar viewport, den synliga ytan, till den bredd som enhetens skärm kan hantera. Den sätter också zoomnivån till 100%, vilket förhindrar att sidan laddas in inzoomad eller utzoomad.

    I head har jag även denna rad:

    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500&display=swap" rel="stylesheet">

    Här läser jag in en bra font till sidan, men endast dom storlekana jag tänker använda till sidan, detta är för att minska datan som behövs laddas in när man öppnar sidan vilket gör att den får en snabbare laddtid.

    Här har vi navbaren:

    <nav aria-label="Huvudnavigation">
        <a class="logo" href="index.html">Paolos webbtjänst</a>
        <ul>
          <li><a href="index.html">hem</a></li>
          <li><a href="tekniker.html">tekniker</a></li>
          <li><a href="projekt.html">projekt</a></li>
          <li><a href="om.html">om</a></li>
        </ul>
      </nav>

    Här skapas navigeringsbar, genom att skapa en lista som jag sedan applicerar en stil på i CSS. Jag använder mig av aria-label, för en bättre tillgänglighet, aria-label läser upp Huvudnavigation vilket gör det lättare för personer med nedsatt syn att navigera. Det är dock inget som visas på sidan. Det finns också en länk till första sidan uppe till vänster på sidan om man trycker på sidans namn.

    I nästa del är huvudinnehållet på sidan:

    <section class="banner hero" aria-label="Introduktion">
        <p class="eyebrow">Webbutveckling & design</p>
        <h1>Paolos webbtjänst</h1>
        <p class="sub">
          Välkommen till Paolos webbtjänst. Jag har på kort tid lärt mig en mängd webbtekniker och är nu redo att
          hjälpa dig att få ett bra hem på nätet. Tveka inte att höra av er till mig så kan vi diskutera hur jag
          kan bygga rätt lösning för just dig eller ditt företag.
        </p>
        <a href="om.html" class="btn">Kontakta mig</a>
        <img src="img/paolo.jpeg" alt="Paolo">
      </section>

    Jag använder section taggar för att gruppera innehållet. Klassen heter banner hero som är en term som används inom design, för huvudinnehållet. Det finns också en klass som heter eyebrow, som är texten ovanför hero klassen. Texten ligger under klassen sub. Rubriken är Paolos webbtjänst inom h1 tag, som man endast borde använda 1 gång per sida. Texten kontakta mig har en klass som heter btn, för att det ska ske ut som en knapp btn (button).’

    Det sista på sidan är att ladda in javascripten:

    <script src="app.js"></script>

    Tekniker html

    Följande kod är värt att gå igenom:

    <main class="content">
        <div class="card-grid">
    
          <article class="card">
            <img src="img/html.png" alt="HTML5 logotyp">
            <div class="card-body">
              <h2>HTML5</h2>
              <p>
                HTML5 är grunden i de webbsidor som jag skapar men jag behärskar också HTML4.01 om du tycker att
                utvecklingen går för fort. HTML är ett märkspråk som utgör själva ramen för webbsidorna som jag sedan
                med hjälp av andra tekniker formaterar så att de ser ut som vi vill.
              </p>
            </div>
          </article>
        </div>
    </main>

    Först har jag en klass som heter content, den används för att centrera innehållet och lägga till marginaler på sidan om texten. Denna klass används på flera sidor.

    Det finns också en div klass som heter card-grid. Denna används för att skapa struktur för att visa teknikerna som kort. Sedan kommer själva korten, som tillhör klassen card. Notera också att jag använder taggen article för att ha rätt semantisk html. Inom card har vi klassen card-body, som innehåller en h2 heading, samt huvudinnehållet i en paragraph.

    Om html

    På denna sidor har jag kontaktuppgifter i en tabell enligt nedan:

    <h2>Kontaktuppgifter</h2>
        <table>
          <tbody>
            <tr>
              <th>Mail</th>
              <td><a href="mailto:paolo@paolowebb.se">paolo@paolowebb.se</a></td>
            </tr>
            <tr>
              <th>Telefon</th>
              <td>070-1234567</td>
            </tr>
            <tr>
              <th>Twitter</th>
              <td><a href="https://twitter.com/paolowebbse" target="_blank" rel="noopener noreferrer">@paolowebbse</a></td>
            </tr>
            <tr>
              <th>Facebook</th>
              <td><a href="https://www.facebook.com/paolowebbse" target="_blank" rel="noopener noreferrer">facebook.com/paolowebbse</a></td>
            </tr>
          </tbody>
        </table>

    I koden så används table body (tbody), table row (tr), table header (th), och table data (td). Här används inga speciella klasser då det ändå är lätt att formatera den eftersom jag bara har en tabell. Länkarna öppnas i ett nytt fönster eftersom target=”_blank”. Den sätter också noreferrer för att inte ge sidan som öppnas information om vilken sida användaren kom ifrån.

    Sen kommer det ett formulär:

    <section aria-labelledby="form-heading">
          <h2 id="form-heading">Skicka ett meddelande</h2>
          <form action="#" method="post">
    
            <label for="name">Namn</label>
            <input id="name" type="text" name="name" placeholder="Ditt namn" autocomplete="name">
    
            <label for="email">E-post</label>
            <input id="email" type="email" name="email" placeholder="din@epost.se" autocomplete="email">
    
            <label for="subject">Ämne</label>
            <input id="subject" type="text" name="subject" placeholder="Vad handlar det om?">
    
            <label for="message">Meddelande</label>
            <textarea id="message" name="message" placeholder="Berätta mer..."></textarea>
    
            <button type="submit">Skicka meddelande</button>
    
          </form>
        </section>

    Just nu är form action # vilket innebär att informationen inte skickas någonstans. Varje fält har en label, detta gör att fältet som man är inne på highlightas. Jag använder också placeholder, för att visa vad det är man ska fylla i fältet. Sen har vi autocomplete=”name”, detta säger till webbläsaren att den förväntar sig ett fullt namn, detta gör att webbläsaren kan autofylla namnet efter tidigare formulär som man har skrivit in sitt namn. Det finns också en textarea där man ska skriva i sitt meddelande. Slutligen har vi knappen för att skicka in formuläret, som hetter button med type submit.

  • Projekt 02 – Struktur

    I projekt 02, ska vi använda en liknande struktur och färgschema som i projekt 01. Jag har valt att ändra färgerna lite för att skapa bättre kontrast för tillgänglighet, samtidigt som det gör den lite snyggare. Jag har också flyttat menyn till höger sida, och valt ett annat typsnitt. Bilden nedan visar hur jag tänker mig sidan ska se ut

    Jag kommer att använda samma filer som tidigare, men med nytt innehåll. Det har också tillkommit en fil för hantering av javascript.

  • M05.4 Tillgänglighet

    På den ursprungliga sidan får vi detta resultat gällande tillgänglighet. Det verkar vara främst problem med kontrasten som rapporteras.

    På min version av Skogssidan skapad med hjälp av materialize.css så fick jag inga error eller andra fel.

    Eftersom jag inte hade några fel på den här versionen av skogssidan, åtgärdade jag istället den tidigare versionen. Det som jag har ändrat är, bättre kontrast mellan text och bakgrund, ändrat en div till main, och även alt texterna för bilderna. Efter detta gjordes så fick jag följande resultat

  • M05.3.4.4 Förbättra bildprestanda

    Skogssidan är gjord för att visa hur mycket bilder kan påverka sidans prestanda och laddtid. Innan någon optimering har gjorts är bilderna totalt runt 10MB stora och sidan tar nästan 10 sekunder innan den har laddats in helt. Detta kan man också se på testet nedan

    Bilderna har ingen höjd och bredd satt så hela bilden på 6000×4000 måste laddas in och skalas ner. Jag behöver därför ändra storleken på bilderna så att de går snabbare att ladda.

    Resultat efter optimering

    Efter att ha endast komprimerat bilderna och inte ändrat höjd och bredd så har jag totalt sparat 25% plats.

    Laddtiden är fortfarande inte som önskad men har ändå gått från 9.2s till 6.9s vilket är en tydlig förbättring.

    Nu har jag ändrat höjd och bredd på bilderna från 6000×4000 till 600×400, detta gjorde störst skillnad

    Nu är laddtidden för bilderna endast en femtondel än när jag började. Minskade med 6.3 sekunder från dom komprimerade bilderna. Hela resultatet på sidan blev också bättre, från 57 i betyg på sidan med komprimerad html till hela 82 i betyg med den med optimerade bilder + komprimerad html.

    Det blev en stor skillnad eftersom bilden nu i princip är så stor som den ska vara när den visas. Filerna är nu ihop endast 384 KB istället för 10 MB. Dessa tester visar att det är viktigt att både komprimera men även ha bilderna i rätt storlek för visning. Det tar väldigt lång tid att ladda in stora bilder.

  • M05.3.3 Prestanda

    Prestanda enligt Google Pagespeed Insights innan Skogssidan har blivit optimerad

    Som man kan se så verkar det ta längst tid med att ladda in bilder.

    Prestanda enligt Pingdom innan Skogssidan har blivit optimerad

    Jag testade även via Webpagetest men den sidan funkade tyvärr inte så vi får nöja oss med dessa två.

    Resultat efter komprimering av HTML

    Resultatet ökade

    Jag använde sidan Dirtymarkup för att optimera. Den komprimerar koden som blev färre rader och filen blev även mindre. Detta gjorde att sidan kunde laddas lite snabbare även om det är bilderna som är boven i att inte kunna ladda sidan snabbare.

  • Projektplan P02

    Syftet med detta projekt är att vidareutveckla den existerande webbsidan med nya tekniker som jag har lärt mig. Detta kommer att visa potentiella kunder att Paolo kan erbjuda ytterligare tjänster.

    Målgruppen är småföretag och föreningar som behöver hjälp med enklare former av webbsidor.

    Den nya sidans struktur kommer se ut enligt wireframe nedan.

    Genom att klicka på länkarna i nav bar kan man navigera till olika delar av sidan. Sidan kommer ha samma sidor som tidigare:

    • hem – introsida och bild
    • tekniker – exempel på tekniker som Paolo arbetat med
    • projekt – projekt som Paolo arbetat med
    • om – kontaktuppgifter till Paolo

    För att hinna leverera på avsatt tid kommer tiden fördelas på följande:

    • v.18-21 – skriva HTML, CSS och javascript
    • v.22 – tester och optimering
    • v.23 – redovisning

  • M05.3 Validering

    I denna uppgiften får jag hjälpa Paolos kompis Gabriele Pietro Taddei att validera sin hemsida om dom svenska skogarna.

    Redan i början kan vi se att småsaker som color och background-color är felstavat.

    Här gör jag en snabb validering av sidan i nuverande skick för och se vad jag behöver göra.

    Totalt finns det 25 varningar och error meddelanden. Många lättfixade såsom att sätta språket till svenska.

    Nu har jag gjort så det valideras korrekt, felen i koden var att tillexempel id på bilderna användes flera gånger, det fanns element som inte hade stängts såsom p och div, men även lite felstavningar och css style som låg i body istället för inom head. Språket var heller inte satt till svenska så det fixade jag också, sen låg också <!DOCTYPE html> alldeles fel vilket jag har korrigerat.

    Jag tyckte att uppgiften var bra för att utvecklas inom att validera och bygga sidor som fungerar som tänkt och som håller en bra prestanda.

    Man kan besöka sidan här!

  • M05.3.2 Användande av användaragenter och utvecklingsverktyg

    På denna inlämningsuppgiften ska jag kolla hur min landing page ser ut på mobiltelefoner och tablet på 2 olika webbläsare för att se hur man använder sig av användaragenter och utvecklingsverktyg, och hur anpassad min landing page är.

    Sidan på Iphone 14/15/16 på Firefox

    Sidan på Ipad Air på Firefox

    Sidan på Iphone 14 Pro max på Google Chrome

    Sidan på Ipad Air på Google Chrome

    Validering och mobilvänlighetstest på min landing page

    Nu tänkte jag validera koden för sidan samt kolla hur mobilvänlig sidan verkligen är via Bings mobilvänlighets test.

    På bilden under har jag validerat HTML koden, allt funkar men jag fick en varning för att jag inte har ställt in språket på sidan.

    Här är den validerade CSS koden:

    Allt validerade korrekt vilket är bra men det betyder inte att sidan fungerar lika bra på alla enheter såsom mobiler. Nu ska jag testa Bings mobilvänlighetsverktyg.

    Som man kan se så funkar inte min landing page bra på mobiler trots att sidan validerar korrekt. Anledningen till detta är att när jag byggde sidan så använde jag absoluta enheter såsom pixlar för att skapa marginaler, padding, höjd och bredd bland annat. Detta innebär att storlekar på en 1080p skärm är samma storlek som på en mobil. Detta gör att sidan ser konstig ut, och svår att använda då storlekar på länkar och knappar blir för små.

    Någon gång framöver kanske det är värt att kika in på min CSS och byta ut absoluta enheter mot relativa så att den är vänligare på mindre enheter. Jag måste också lägga in detta i min HTML kod: <meta name=”viewport” content=”width=device-width, initial-scale=1″>, denna koden ger webbläsare instruktionen att ställa in sidans bredd till den exakta bredden av skärmen, och “initial-scale=1” säger att sidan ska laddas in med 100% zoom. Detta förhindrar att webbläsaren laddar in sidan på större storlekar för att sedan krympa ner den, vilket ofta är orsaken att text och länkar blir små på webbsidor som inte har anpassats.

  • Projekt01 – Paolos webbtjänst

    Jag fick en beställning av Paolo, han ville ha en webbsida där kunskaper och tekniker visas så att han kan få kunder.

    Paolo ville inte ha några röda färger alls och fonten i headern ska vara Permanent Marker. Webbplatsen skulle ha totalt fyra olika sidor, en startsida, en för hans tekniker där han visar upp sina kunskaper, en sida med hans projekt han har jobbat på, och slutligen en om sida där hans kontakt information finns.

    Jag la även till klassen “active” på navbaren och la till detta i CSS

    nav ul li a.active {

        background-color: gray;

    }

    Detta gjorde så att den aktiva sidan på navbaren fick en grå bakgrund istället för en blå, så att det visas vilken sida man är på. Jag fixade även en hover när man hade muspekaren öven en av sidorna på navbaren så att texten blev ljusare.

    Vad har jag lärt mig?

    Jag har lärt mig att bygga en webbsida som består av flera olika sidor. Jag fick även utveckla min HTML och CSS ytterligare och det var bra träning upplever jag. Jag blev även motiverad att fixa en navbar som visade vilken sida som var aktiv, samt ändrade färg när muspekaren var över en av sidorna på navbaren, detta pågrund av BurgerBase uppgiften som såg riktig bra ut.

    En svårighet var att få till placeringen av bilden, detta tog lite tid men blev trots allt bra i slutändan. Sedan så fixade jag även en tabell för kontakt uppgifterna, det gick bra men det tog lite tid att få till rätt storlekar och marginaler.

    Jag fick också lära mig att man behöver en header för section element om det ska valideras rätt. Jag fick då byta ut mitt section element mot en div för att det ska bli rätt då jag inte skulle göra en header på den delen av sidan.

    Validering av sidan

    Jag har även validerat HTML och CSS. Jag fick byta ut section element mot div för att det skulle valideras rätt för det fanns ingen header till section. Jag hade även av misstag satt <html lang=”en”> när det igentligen ska vara <html lang=”sv”>, så där fick jag även en varning men det är fixat nu.

    Bild på HTML validering (det är 4 html filer som är validerade men jag visar bara en av dom)

    Här är CSS validering för sidan

    Här finns en ytterligare länk för Paolos webbtjänst

  • M07 Säkra lösenord

    Att hålla lösenord säkra, och användning av en lösenordshanterare.

    Att använda säkra lösenord är bland det viktigaste du kan göra online, men väldigt många har inte stor koll på detta eller orkar bara inte att bry sig. Det är vanligt att man återanvänder lösenord för flera sidor, detta kan låta smart då det är lättare att minnas ett lösenord än flera separata, och man kanske inte ser ett problem med det om lösenordet är starkt.

    Allt som krävs är att en tjänst hamnar i en dataläcka där din mail address i kombination med ditt lösenord ligger, så finns det plötsligt uppgifter för flera av dina konton vilket gör dom alla känsliga för att bli hackade eftersom dom som hackar konton känner till att det är vanligt att återanvända lösenord. Då så testas dom på andra vanliga tjänster och webbsidor. Alltså kan en dataläcka leda till att flera av dina konton blir utsatta trots bara en tjänst blev utsatt.

    Många tycker att det kan vara svårt att hålla koll på många lösenord, speciellt när man gör sådana som är långa, och med specialtecken och nummer. Många väljer att spara lösenord i den inbyggda lösenordshanteraren som finns som standard i många webläsare. Problemet med dessa inbyggda hanterare i olika webbläsare är säkerhetsbristerna. Autofyllning av lösenord genom till exempel Googles hanterare som inte kräver ett master password, vilket innebär att vem som helst med tillgång till din dator, antligen fysiskt eller genom nätet kan använda dina lösenord utan något hinder som står i vägen. Ett annat problem är att dom ofta saknar end-to-end kryptering som standard vilket innebär att dina lösenord inte är skyddade från skadlig programvara. Pågrund av att det ofta är väldigt lätt att få tillgång till dessa lösenord så finns det skadlig programvara designad just att få tillgång till dessa. Detta innebär en extra utsatthet med hanterarna.

    Men det finns lösningar för både att hålla kolla på flera lösenord och förvara dom säkert, samt verktyg för att skapa starka sådana.

    Lösenordshanterare

    Det finns många olika säkra hanterare. Dom fungerar enligt en “Zero Knowledge” modell. Detta innebär att leverantören aldrig kan få tillgång till dina lösenord. När du lägger in ett lösenord i en hanterare så krypteras det på din enhet innan det skickas och förvaras på en server, den enda nyckeln till lösenordet är ditt Master Password som stannar lokalt och aldrig skickas till servern. Detta innebär att en attack mot en av dessa leverantörerna skulle vara helt meningslöst då dom ansvariga bara skulle få tillgång till massa krypterade filer.

    Leverantörerer såsom Bit Warden använder sig av öppen källkod som alla kan få tillgång till, detta är bra då det gör att säkerhetsexperter och programmerare kan granska koden och säkerställa att det inte finns några bakvägar.

    Hanterare har även ofta avancerade säkerhetsfunktioner som kan till exempel varna dig ifall något av dina inlogg har befunnit sig i en dataläcka så att du snabbt kan byta ut det och hålla ditt konto säkert.

    Har jag testat en lösenordshanterare?

    Bitwarden är den jag har tänkt börja testa lite nu, den har öppen källkod, kräver ett Master Password, och är end-to-end krypterad innan lösenorden lämnar din enhet. Än så länge verkar den funka bra, inga direkta klagomål annat än jag tycker att vissa saker inom verktyget kan vara krångligt. En annat bonus är den inbyggda lösenordsskaparen, som ger dig möjlighet att välja mellan lösenord, lösenfras, samt längden på dessa vilket gör det enkelt då du endast behöver förlita dig på en tjänst.

    Bitwardens lösenordsskapare

    Lösenords valvet

    Slutsats kring Bitwarden

    Jag kan inte ge en perfekt slutsats då jag precis skapade ett konto, men på papper ser det bra ut och funktionaliteten är hög. Den har alla viktiga säkerhetsfunktioner såsom Master Password, end-to-end kryptering lokalt, öppen källkod som gör att säkerhetsexperter kan granska koden.

    Den har även en inbyggd lösenordsskapare, vilket är ett stort bonus. Det finns helt enkelt inte mycket att klaga på.

    Lösenords skapare

    Det finns också verktyg som hjälper en att skapa säkra lösenord, ett bra exempel är Password Meter. Det är en hemsida som du kan testa ditt lösenord och få ett betyg på hur säkert ditt lösenord är.

    Bild på Password Meter

    Nu ska jag testa ett populärt lösenord som inte är säkert och se hur lätt det är att göra ett säkert

    Som man kan se är lösenordet inte alls säkert

    Men nu är lösenordet starkare jag bytte bara utt ett O mot en nolla, ett understreck i mitten, specialtecken i slutet, och gjorde vissa bokstäver större, då två bokstäver eller fler i samma storlek gör det lättare att knäcka, så löste jag det genom att göra vissa större. Dock hade jag aldrig uttgått från ett vanligt lösenord, då säkert många andra har gjort liknande, kan ha varit med i en dataläcka och så. Password Meter mäter bara hur svårt det är att knäcka matematiskt, men räknar inte in andra faktorer.

    Det krävs inte mycket alls för att ha skapa ett starkare lösenord.