Alla inlägg av

Marcus

webbutveckling

Enkelt verktyg för effektivare stilmallar

CSS Tweak är en liten webbtjänst som optimerar stilmallar. Den tar bort överflödiga enheter och slår ihop deklarationer för font, list, border och margin. Om du inte har för vana att använda kortversionerna för deklarationer (eng: shorthand properties) i stilmallar så kan CSS Tweak ge en bra bild över hur stora optimeringsvinster som är möjliga.

För mig är inte den stora vinsten minskningen av filstorleken, den största anledningen till optimering är att kortare stilmallar leder till bättre överblick och mindre letande när man arbetar med dem. Det förutsätter givetvis en bra struktur på reglerna och kommentarer där de behövs – se därför till av avmarkera remove comments och välja Leave my layout alone om du använder CSS Tweak.

För en repetition av kortversionerna rekomenderar jag Roger Johanssons guide Efficient CSS with shorthand properties.

webbutveckling

You Ain’t Gonna Need It

När 37 signals startade Basecamp hade de vid lanseringen ingen möjlighet att ta betalt av sina kunder. De ansåg att eftersom deras kunder ändå hade en fri testperiod på 30 dagar, så hade företaget en månad på sig att bygga faktureringsrutiner och kunde lägga dagarna innan lanseringen på att lösa mer akuta problem.

Här på media:screen såväl som i resten av livet tillämpar jag samma princip – gör inte idag vad du kan göra imorgon. Principen kallas med ett finare (?) namn YAGNI, You Ain’t Gonna Need it (ej att förväxla med Ross självförsvarsteknik UNAGI, i tv-serien Vänner…), och är ett centralt begrepp inom systemutvecklingsmetodiken Extrem programmering. YAGNI går ut på att man inte ska lägga till ny funktionalitet till till ett program bara för att man tror att den ändå kommer att behövas senare.

Även om det kanske låter misstänkt likt lättja, så finns det faktiskt några goda argument för att skjuta upp arbete:

  • Att skapa funktionalitet för framtiden tar tid från att skapa funktionalitet som behövs nu.
  • Ny funktionalitet idag skapar begränsningar för vad som kan göras i morgon.
  • Innan en funktion behövs så är det svårt att veta vad den behöver åstadkomma, vilket leder till att den i vilket fall behöver göras om den skulle behövas i framtiden.
  • Ny funktionalitet föder idéer om andra funktioner som kanske också kommer att behövas så småningom, vilket leder till en spiraleffekt av ny funktionalitet som aldrig kommer att behövas.
  • Sist men inte minst: Sannolikheten är stor att funktionaliteten aldrig kommer till användning och allt arbete gjordes i onödan.

Rent praktiskt här på bloggen betyder YAGNI bland annat att det inte fanns någon siduppdelning av bloggpostlistningarna innan det fanns så många poster att det behövdes, att det inte fanns månadsarkiv innan det fanns fler än en månad att välja mellan och att det inte fanns kommentarsfunktioner innan det fanns besökare på bloggen. Något spamfilter trodde jag inte skulle behövas på att tag, men nu börjar jag bli trött på att manuellt radera alla som försöker kränga SpongeBob SquarePants-posters i kommentarerna på mina bloggposter. Nu var det alltså dags för ett enklare spamfilter.

webbutveckling

Stapeldiagram med CSS för utskrift

Att göra en version för utskrift av stapeldiagrammet jag experimenterade med visade sig vara lättare sagt än gjort. De flesta moderna webbläsare skriver inte ut vare sig bakgrundsbilder eller bakgrundsfärger om inte besökaren explicit slår på den möjligheten – och det tror jag inte någon vill förlita sig på. Dessutom tar sig webbläsarna i regel friheten att byta ut för ljusa textfärger till svart eller mörkgrått. Till detta kommer en hel mängd små underliga buggar som bara verkar komma fram vid utskrift.

Efter en del kompromissande nöjde jag mig med denna variant (bara print-stilmall, välj print preview för att se den). Förutom förenklingen (gråskala, ingen bakgrund, inga skuggor, ingen ram) så valde jag att ta bort siffrorna i staplarna. De verkade inte gå att göra tillräckligt ljusa för att synas mot de mörka staplarna, men om man nöjer sig med ramar istället för bakgrund för staplarna så är det inte några problem att visa dem. Kanske skulle det vara en bättre lösning (ingen informationsförlust), men jag ville se om det gick att få samma grafiska stil på diagrammet vid utskrift som på skärmen.

Exemplet är än så länga bara testat i Firefox 2 och Internet Explorer 7.

För den som gör speciella printstilmallar så är webbläsarnas egna regler för vad som ska visas lite irriterande. Som flera tidigare har påpekat borde den bästa lösningen vara att webbläsarna litar på att de som har specificerat media="print" vet var de gör. En stilmall specificerad för ett speciellt medium borde alltid ha företräde framför webbläsarnas egna räddningsförsök (men givetvis stå tillbaka för en lika specifik användarstilmall).

blandat

Enkelt sätt att kolla hur snårigt du skriver

Sigge på Bloggvärldsbloggen tipsar om LIX-räknaren, en liten webbapplikation som bland annat räknar ut läsbarhetsindex för valfri text. Förutom att visa själva indexresultatet visas en hela beräkningen bakom siffran på ett tydligt och pedagogiskt sätt – dessutom finns det en enkel skala för att ge siffran ett sammanhang. Utvecklaren bakom LIX-räknaren är Gustav Öquist, doktorand inom datorlingvistik på Uppsala Universiet.

I en av kommentarerna tipsas om att LIX-indexet finns inbyggt i MS Word och eftersom jag inte kunde minnas att jag sett funktionen där var jag tvungen att öppna Word för att se hur den fungerar. Den är lite trasslig att hitta till men finns mycket riktigt (åtminstone i Word 2003):

  1. Gå till verktyg > Stavning och grammatik.
  2. Välj Alternativ och bocka för visa läsbarhetsstatistik.
  3. För att läsbarhetsindex ska visas måste du göra en fullständig stavnings- och grammatikkontroll så kommer siffran samt lite annan info upp i en ruta när kontrollen är klar.

Underligt nog visar LIX-räknaren och MS Word lite olika siffror – något som verkar bero på att Word känner igen webbadresser och inte räknar punkterna i dem som slutet på en mening.

Efter att ha testat ganska många inlägg här från bloggen har jag kommit fram till att jag inte skriver lika trassligt som jag trodde jag gjorde. Snittet hamnar mellan 45 och 50, vilket enligt LIX-räknaren är i övre intervallet för medelsvår svenska eller normal tidningstext.

webbutveckling

Stapeldiagram med CSS

Tidigare har jag använt PHP-biblioteket JpGraph i några olika projekt för att skapa grafer av olika slag. Det är dock inte alltid praktiskt att generera bilder för att visa statistik, så jag har lekt lite med css för att se om det inte går att hitta alternativa metoder.

Med utgångspunkt i Eric Meyers vertical bargraphs har jag försökt ta fram en lite snyggare och enklare variant. Målsättningan var att skapa stapeldiagram från semantiskt korrekt html med ett minimum av extra element, utan för komplicerad css som enkelt skulle kunna genereras dynamiskt och fungera i alla moderna webbläsare utan några css-hacks.

Eftar att ha provat med både tabeller och listor så fastnade jag till slut för definition lists som den enklaste metoden för att märka upp datan. Det finns många åsikter om hur definition lists ska användas, själv hör jag till den grupp som menar att man med fördel kan användas dem att koppla ihop nyckel-/värde-par. Tabeller skulle varit mer korrekt, men de kräver för mycket extra stilregler för olika webbläsare för att vara praktiskt i längden.

Det finns några saker med exemplet som inte fungerar så bra. Den extra koden som krävs för att sätta ut axelmarkeringarna är antagligen ganska förvirrande för besökare utan stöd för stilmallar. Möjliga lösningar är att använda sig av en bakgrundsbild (svårare att generera dynamiskt) eller att lägga in en beskrivande rubrik som förklarar vad siffrorna betyder (innebär ännu mer kod). Dd-elementet innehåller ett span-element som kan tas bort om man inte behöver bakgrundsskuggan överst och till höger.

Har testat exemplet i IE7, IE6 och Firefox 2 på Windows XP samt i Safari 2 och Firefox 2 på Mac OSX.

Hör av dig om du har förslag på förbättringar eller har egna exempel på lösningar.

Här är mitt exempel.