fredag den 29. august 2014

Godt værktøj til din pizza!


Jeg har været en del pizzaskærere igennem og der er mange dårlige imellem.
Nogle har nogle "håndtag" foran ens hånd man skal kunne afsætte på så man kan presse bedre, men som enten bukker eller nemt går fra hinanden. Andrehar et hjul der kører let i 1/3 af vejen, så kører hårdt og så let igen hvilket kan blive virkeligt irriterende når man skal skære pizza.
Denne her skulle efter sigende ligge godt i hånden og  Quirky laver nogle gode produkter, så vil også gætte på Quirky Slice pizza skærer også er god at arbejde med. Design wise er den ihvertfald pæn at se på.

onsdag den 27. august 2014

Kravspecifikation med din kunde


Kravspecifikation er noget af det værste at få på plads som systemudvikler, for kunden glemmer ofte mange detaljer og dem opdager man ikke før tilbudet er afgivet, og man opdager mulige brugsmønstre som man ikke havde tænkt over til at starte med.

Her er et par ideer til hvordan du kan få det konkretiseret lidt mere.

Sæt dig ned sammen med kunden og tag fat i design oplæg, eller skitser det der skal opbygges.
Hvis det er web så skitser alle sider, med alle kontroller og gå dem derefter igennem helt slavisk:

STØRRELSE
- Fast bredde/højde? Dynamisk på en af lederne?
- Skal størrelsen være i pixels eller en relationel størrelse (procent)?

INDHOLD & FARVER
- Hvordan skal design være? Farvede kanter? Runde hjørner?
- Skal den kunne have et billede som baggrund? Skal dette være fast eller skal i kunne ændre det?
- Skal indholdet få den til at vokse i størrelse eller skal den være i fast størrelse?
-- Hvis indholdet er større end den definerede størrelse, skal det så gå ud over eller skal det overskydende skjules?

BRUG
- Skal den kun bruges dette sted/på denne side?
- Hvis den skal bruges på flere sider, skal alle sider så dele de samme data (global), eller skal den kunne have indhold per side (lokalt)?

FUNKTIONALITET
- Skal den kunne skifte farve?
- Skal den påvirke en anden kontrol, eller kun sig selv?
- Skal der ske noget når man klikker på den, eller en del af den?
- Skal den oprette noget et andet sted, vise data et andet sted/kontrol, når man indsætter noget?

VALIDERING
- Skal der kunne indtastes andre tegn and [a-å] - såsom specieltegn? (ex [.] [,] [?] )
- Skal der være mulighed for at indtaste HTML?
-- Skal HTML valideres korrekt? Eventuelt have en editor til at lave det korrekt?
- Hvilke muligheder skal der være under indtastning? Punktopstilling? Fed? Kursiv?
Dette skal sikre du ikke får et pludseligt problem som du ikke havde fået defineret.

tirsdag den 26. august 2014

Cache filer i ASP.NET MVC (HttpModul)


Hvis du udvikler en hjemmeside, vil du også gerne have den rangerer højt. Her er performance og load tid meget vigtig, og her kan caching hjælpe dig.
Den systemudvikler der laver din side ved det sandsynligvis godt, men der er flere måder at gøre det på.

Den ene er at tilføje en ActionFilterAttribut som cacher dit indhold, men denne gælder kun på dine actions (som siger lidt sig selv), men ofte vil du også cache billeder, javascript og andet fordi du genbruger dem i top og bund af siden på flere sider hvor der er samme layout indhold som kan caches.

Det er her at man som systemudvikler vender sig imod HttpModule, som kan reagere på alle requests og tilføje caching her (og dermed fange dine statiske resourcer).

Se koden herunder:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace HttpModules
{
    public class CachingModuleFiles : IHttpModule
    {
        public void Dispose() { }

        public void Init(HttpApplication context)
        {
            context.PreSendRequestHeaders += this.SetDefaultCacheHeader;
        }

        private void SetDefaultCacheHeader(object sender, EventArgs eventArgs)
        {
            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Public);
            HttpContext.Current.Response.Cache.SetMaxAge(TimeSpan.FromSeconds(3600));
            HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddSeconds(3600));
        }
    }
}

OG HUSK AT AKTIVERE DEN I WEB.CONFIG DA DET ELLERS IKKE VIRKER!
Se her hvordan du gør:

<KODE>

Du kan her se hvordan du kan se at dine data er cachede:
<BILLEDE>

Udvikleren skal ha styr på detaljerne


Jeg er en af de udviklere der går meget op i detaljer, og at gøre det korrekt så vidt muligt.
Netop i øjeblikket kan jeg se hvor meget de små detaljer kan gøre i forskel på helhedsbilledet af en aflevering.
Det kan være små ting som at det testsite kunden skal logge ind på har sat noget op for at vise princippet som ligner korrekte data/billeder/tekster som kunne være reele i produktion, fremfor de testdata man har tildens til at altid lave og bruge.

Det kan være der ikke er fjernet en lille boks eller baggrund på et element der bruges mange steder.
Det kan være baggrundsfarven på en kasse er skrigblå, fordi man ikke har fundet den rigtige farvekode.
Det kan være der er for mange redigeringsmuligheder på billedet fordi man ikke har fået dem fjernet overalt.

Alle disse ting irriterer en som udvikler, men samtidigt er det også noget af det der gør stor forskel for kunden. Netop fordi det giver et førstegangsindtryk af noget der er meget lidt færdigt, og rodet.

Ofte kan man ved at rette sådanne små detaljer få et færdigt produkt der ser langt mere færdigt og professionelt ud, og så er den lille investering rigtigt godt givet ud fordi det ser meget bedre ud fra kundens synspunkt.

fredag den 22. august 2014

CSS selectors (advanced)


CSS selectors er et uunværligt værktøj at have, men der er rigtigt mange forskellige situationer de virker på, og man skal stykke dem sammen.

Så sent som i dag lærte jeg at der var forskel på

  1. div > a
  2. div a

fordi den første (1) er direct child selector og den anden er descendant/child selector.
Forskellen er om a ikke må ligge inde i noget andet under div, eller om den må være placeret alle steder så længe den er under div.
Situation 1 der er det kun tilladt at have a i første niveau under div, hvor i situation 2 er det tilladt alle steder bare den ligger under div.
Så følgende situation:
<div>
<span>
<a></a>
</span>
</div>

Der vil situation 1 ikke blive ændret noget, fordi din selector siger a skal være inde i div og ikke i en span, men situation 2 vil virke fordi så længe du har et a inde i en div vil selectoren virke uanset hvor langt inde den er placeret.


For mere information omkring CSS selectors se her: http://learn.shayhowe.com/advanced-html-css/complex-selectors/

torsdag den 21. august 2014

CSS3 keyframes er dejligt nemt at arbejde med

Nu er det jo heldigvis blevet meget dejligt nemt som udvikler at arbejde med grafisk frontend arbejde via CSS3.
Noget af det som CSS3 gør nemmere er at arbejde med er animationer, hvor at man bruger keyframes.
Det smarte her er at man nu som udvikler nu skal definere nogle punkter i ens animation og så vil browseren selv rendere hvordan den kommer fra forrige punkt til det næste.
Så nu kan du nemt lave en overgang fra en farve til en anden ved at lave en farve i 0% eller from, og så den anden farve i 100% eller to, og det mellemliggende vil browseren selv lave, og finde ud af hvordan den får skabt en overgang dertil. Det gør det MEGET nemmere både som C# udvikler, men også som systemudvikler.

Det samme gør sig gældende når du skal udvikle en animation med bevægelse, hvor elementer flytter sig fra punkt A til B. Du kan selv definere flere punkter den skal gå imellem, eller et start og slutpunkt.
Man kan enten lave from og to, så finder den selv ud af mellemvejen. Eller man kan også lave det i flere steps via %, som man selv bestemmer hvor langt i animationen den skal gøre dette.
Der er rigtigt mange properties man kan benytte både, font-size, width, border, border-left etc. som man kan lave nogle fine effekter ud af.

Som udvikler gør det ens arbejde MEGET nemmere at lave noget lidt mere interessant!

Der kommer et eksempel senere

tirsdag den 19. august 2014

C# udvikler ønsker mere

Jeg har igennem noget tid gået med tanken om at videreuddanne mig.
Det er noget jeg har kunne mærke jeg har haft lyst til igennem længere tid.
Dengang jeg tog min uddannelse tog jeg ingen pause imellem folkeskole og gymnasiet, eller videre derfra.
Derfor var jeg meget energisk for at komme "ud" af min uddannelse og bruge min viden til noget og udrette noget. Det har jeg så opnået nu, og jeg er kommet indenfor en gren i mit felt jeg absolut ELSKER!

Derfor ønsker jeg at videreuddanne mig fordi nu efter et par år i felten ønsker jeg at blive endnu dygtigere til det jeg laver, og kunne lave mere avancerede ting.

Til glæde for mig ønsker mit firma det samme, men det skal alt sammen tilpasses til arbejdslivet og opgaverne, samtidigt med at det passer med privatlivet.
Så overvejer om jeg skal tage en professionsbachelor, eller om jeg skal tage en "IT-diplomuddannelse".


Den ene har en del jeg gerne vil lære omkring generelt, og den anden har et niche område jeg ønsker at lære mere omkring - nemlig Umbraco.
Det er ikke helt nemt for IT-Diplomuddannelsen tages på Center for Diplomingeniøruddannelse, en del af DTU, og er lige ved siden af mit arbejde stort set.
Kender en der går der, der siger det er rigtigt godt, og har været til informationsaften og det virkede også spændende.

Som udvikler så har man en naturlig trang til at udvikle sig, og lære mere.

Jeg overvejer kraftigt at tage den fra DTU fordi det er lidt et kvalitetsstempel, og så kan jeg tage et kursus senere.

Er rigtigt glad for mit firma vil tillade mig at tage uddannelsen, som gør meget for min glæde ved at arbejde her.

Bibliotek til at tælle tal op (grafisk effekt)


I forbindelse med min udvikler side, skulle jeg have funktionalitet til at tælle et tal op.
På min forside står der hvor mange kompetencer jeg har, og ville gerne have den talte op når man kom ind.

Fandt CountUp.js, på denne side: http://inorganik.github.io/countUp.js/, og prøvede det af på jsfiddle.com.
Desværre kunne jeg ikke få det til at fungere, så jeg henvendte mig til udvikleren.dk, som kan ses her:
http://www.udvikleren.dk/forum/46150/tael-tal-op/

Det kom til at virke på min forside, på c# udvikler, og er fantastisk!
Når jeg får tid, skal det finjusteres med easing og tid, samt at den gør det forfra når man peger på kassen, men det nåede udvikleren ikke helt i går.