tirsdag den 24. april 2012

Systemudvikler på Danish Developer Conference (DDC)


Hejsa Udviklere

Jeg har været så heldig at være på Danish Developer Conference (DDC) og hvilken fed oplevelse fra ende til andet! Det eneste minus var at jeg faktisk gerne ville have set hver eneste indlæg på nær 2-3 og at det ikke var en mulighed, men det jeg har set var virkelig fedt og det hele værd.

En ting er helt sikkert I KAN GLÆDE JER!
Danish Developer Conference er en microsoft konference så derfor var der selvfølgelig fokus på Windows 8, .NET, Visual Studio & Windows Phone 7.
Det var SÅ fedt for man bliver virkelig tiltrukket for der er så meget lækkert!

Website Optimization
Noget af det som jeg selv synes var super fedt var den del der hed ASP.NET Website Optimization af Mads Kristensen fra Microsoft. Super dygtig mand, og god til at formidle sit stof!
Her var der fokus på hvor det er vigtigt at ens side er hurtig!
Google prøvede at levere deres side 500ms langsommere, hvilket i de flestes ører ikke er specielt meget. Det er ikke engang et sekundt langsommere, men dette resulterede i de fik 20% færre pageclicks - så det viser virkelig noget om hvor vigtigt det er med en hurtig og responsive side.

Her blev der brug Micrsoft Web Optimizer - Dette er en pakke som gør at man kan bundle sine CSS og Javascript-filer. Altså kan sørge for at dine CSS-filer bliver samlet i en enkelt fil, og dine javascript filer bliver samlet i en. Dette er kun runtime så når du skal udvikle kan du have 50 for den logiske seperation, men når det skal afvikles så samler Microsoft Web Optimizer alle dine CSS filer i en enkelt fil og sender afsted, og alle dine javascript filer bliver også samlet i en og sendes afsted.

Hvis i ikke er bekendt med det så kan en browser kun hente 6 simultane filer, så det vil sige hvis dit site indeholder flere end disse 6 filer i alt skal den vente fordi den først kan begynde på de efterfølgende som du har på din side. Dette er spildtid fordi hvis man kan optimere sin side anderledes så kan din side blive loadet hurtigere end ellers.
Derfor er det rigtigt vigtigt ikke at lave for mange HTTP requests.

I din markup hvor du referer til din CSS eller Javascript, skal du skrive destinationsmappen + "/" og typen af fil (extension) - fx JS eller CSS og Microsoft Web Optimizer vil derfor sørge for at kombinere alle filer af denne type til en samlet fil, fjerne whitespaces, og gzippe den.
Derved fjerner du behovet for at der skal ventes på filer skal vente på hinanden.
Der kan laves dine egne regler og bundles som du ønsker det eller samle alle i en. Du kan også sige at du vil ekskludere nogle filer som ikke skal bundles.

Hvis i er mere interesseret i optimering af dine ASP.NET sider så skal i helt klart se nærmere på Mads Kristensen som var den yderst veltalende herre der holdt indlæget som fangede mig fuldstændigt! Han har en side der hedder optimizeasp.net og en blog også kaldet .net Slave.

Udover dette fede indlæg for os rigtige nørder der kan blive helt bidt af performance som er intetsigende, men vi ikke kan slippe fordi det bare er fedt. Har været i nogle projekter hvor vi var nogle udviklere der snakkede om vi måske gerne ville se endnu mere på optimeringen for at se hvor meget bedre vi kunne gøre det, men vi måtte bruge kræfterne på noget mere vigtigt da performancen var god nok og tvivler på brugerne ville kunne mærke eller se forskellen.

Visual Studio 11 Beta til en webudvikler
Men denne kloge mand holdt selvfølgelig også et indlæg om den nye Visual Studio 11 Beta. Og her fokuserede han igen på webudviklere og folk der bruger ASP.NET, hvad der er kommet af nye tiltag for os der arbejder med webudvikling. Der er rigtigt mange fede ting som bare gør hverdagen nemmere selvom det for nogle måske er små ting så det stadig noget mange af os måske savner og kan blive lidt irriteret over.

Nu får man nemlig FULD support og intellisense for HTML5 og CSS3. Selvfølgelig med en liste der bliver mindre jo mere du skriver.
Således at hvis du i din CSS skriver border-radius og derefter trykker tab, så indsætter den alle prefix og vendor-specifics udgave af border-radius. Så du skal ikke selv huske hvad mozilla's moz-prefix er og hvad IE's er etc. Nej nu hjælper Visual Studio dig til at skrive kode der virker til enhver browser meget nemmere, så livet som webudvikler er pludselig blevet meget nemmere. Endda når du så ændrer værdien for border-radius så ændres den for alle vendor-specifikke versioner af dem du lige har oprettet.


Derudover så grouper den også din klasser inde i din CSS som den gør i dine C# klasser. Altså det er nemmere at skabe et overblik for din kode, ved at der er et lille pus ved siden af dine metoder så du kan folde dem sammen som man kan i normal C#. Det skal helst være lige så nemt at være webudvikler som generel C#-udvikler.

Så får du selvfølgelig også rigtig grouping så du kan lave #REGION til flere klasser der drejer sig om et specifikt område.


Med hensyn til farver i din CSS så er der også kommet mange forbedringer.
Hvor mange af jer har ikke prøvet at sidde i Visual Studio og finde en inspirations side med en fed farve som i gerne selv vil bruge? Det har jeg gjort rimeligt tit!
Så det PrintScreen, ind i Paint, Paste den, Colorpicker, og kopiere R/G/B -værdierne ind i en side som kan lave det om til HEX for dig. Og 45 sekunder efter har du din farvekode.
Hvorfor gå igennem det spild? Nu så har du en colorpicker i Visual Studio så du kan bare trykke på farven og så du færdig!

Da der er blevet introduceret opacity med CSS3 (RGBA) så skal man pludselig til at skelne imellem HEX farvekoder og om det er RGBA. Dette hjælper Visual Studio dig også med nu.
Så hvis du trykker på en HEX farvekode kan du få en lille bjælke frem der viser dig et overblik over alle de farver du har brugt i din CSS tidligere så du nemt kan vælge dem igen.
MEN hvis det ikke er nok så kan du også få en colorpicker frem som man plejer med en palette så du kan vælge imellem en masse farver eller vælge en farve fra et sted på skærmen. Hvis du ikke er helt tilfreds kan du trække i en lille slider i bunden så ændrer din HEX kode sig pludselig til RGBA med opacity og når du trækker tilbage hvor den ikke skal være gennemsigtig mere så ændres den automatisk tilbage til HEX.

Gracefull defredation

Fordi man altid laver gracefull degredation så bliver man nødt til at lave noget til de fejl der findes i browsere (fx en bug i IE6). Førhen gav dette en fejl og warning i Visual Studio fordi det ikke overholdt standarten. Men Microsoft ved jo godt det har været nødvendigt at lave disse hacks for at udvikle til deres browser som havde en fejl.
Så i stedet for at give en fin lille rød streg under for at fortælle du overholder ikke standarten, men laver en hack til vores (eller andres) fejlfyldte browser, hjælper de dig nu med at lave det fordi det er nødvendigt.

Web Essentials
 Der vil komme rigtigt mange af de forbedringer og features der er i extensionen Web Essentials med i den nye Visual Studio 11 (også Beta), hvilket glæder mig utroligt meget.
Der kommer preview af farven når du hover på farvekoden, og hvis du vil se et billede så kommer der også et lille preview billeder der viser det så du kan se hvad det er.

Javascript
Da rigtigt meget af en responsive side og web 2.0 (det alle refererer til) oplevelse ligger i funktioner i Javascript. Derfor har javascript enginen også fået en stor overhaling! Et problem som man støder på med ikke typestærke sprog som javascript er at man kan ikke få intellisense for man ved ikke hvad det er før under afviklingstidspunktet.
En var kan være et tal, en streng, eller noget helt andet, og derfor kan du ikke sige minværdi (dot) og så kommer der en liste med properties og metoder svarende til typen af objektet for variablen tal kan godt sættes til en streng-værdi.
For eksempelvis kan du have en variabel kaldet i, som kan starte med at være 1 og blive talt op inde i et loop, og her er det en int, men senere kan man ændre i = i + " times" som ender med at være "43 times" og dermed blevet til en streng.
Hvis man ikke er javascript haj er det et stort problem fordi man skal kende metoderne og hvad man kan på de forskellige typer uden at få nogen hjælp til om det er stavet korrekt eller om metoden overhovedet findes.
Nu vil Microsoft gøre det nemmere for systemudviklere ved at give dig intellisense, men ikke blot intellisense ud fra hvad de tror, men ved faktisk at afvikle din kode og dermed give dig intellisense. På denne måde så vil du vide at på dette punkt i din kode er det en string, og dermed give dig alle string properties, og når den ændrer sig til noget andet så kan den give dig metoder og properties til denne type.

Typestærkt javascript
Noget andet som også har været lidt en udfordring er at javascript ikke er typestærkt og derfor "lidt sværere" hvis man er vant til denne verden. Nu vil Microsoft så hjælpe dig yderligere ved at lave typestærkt input, ved at du kan skrive en definition i starten af din funktion som siger hvilket type input der forventes (string, string) og dermed vil kunne give dig en kompileringsfejl i stedet for det først er på afviklingstidspunktet.
Jeg vil tro at grunden til disse definitioner står indeni metoden i stedet for udenfor (som man er vant til i C# i beskivelser (///) er fordi du kan have nestede metoder (.click(function(blah))).

Overloads
En anden fed ting som så også er kommet med i denne nye javascript engine er at noget der kendes fra C# som er overloads af metoder, som gør at du kan lave ne navngivet metode med to forskellige typer af input (fx FindPerson(int personID) og FindPerson(int personID, string navn) ), er nu kommet med i javascript også. Således at når du bruger en metode kan du igen se at der findes to udgaver af metoden, som man er vant til fra normal C# udvikling.

Jeg tror faktisk de har sat en del fokus på dette område fordi at med Windows 8 vil der komme metro applikationer som skulle kunne bygges meget mere med Javascript som eksempel og derfor tror jeg det er en strategisk satsning fra Microsoft om at få udviklerne til at kunne benytte deres IDE til at udvikle og hjælpe med at bygge denne nye måde at have et OS på.

NuGet packages
Vi er alle vant til at vi får ting med Visual Studio som fx jQuery i en start web applikation, men når Visual Studio er frigivet opdateres dette ikke. Så selvom der kommer en ny version af jQuery så ligges den ældre altid ind fordi Visual Studio ikke selv kan finde ud af der er kommet en ny version.
Nu er der kommet NuGet packages som gør at Visual Studio selv vil checke for om der er kommet nyere udgaver af dine ressourcer, som fx jQuery. Hvis der er kommet en MVC 4 eller frem i dit MVC 2 projekt så kan den også opdage det for dig og gøre tingene smartere.
Dette gør at den automatisk kan opdatere dine afhængigheder til nyeste version for at få bedre performance, muligheder og bugfixes selvfølgelig.

Der er SÅ meget SÅ fedt så jeg kunne blive ved med at snakke, men GLÆD jer! Jeg personligt er i hvertfald helt vild med det!
Det glæder mig udvikler hjerte så meget for det er lige sådan nogle ting man brænder for og gør tingene smartere, hurtigere og mere effektive og det er jo noget vi kan li.

Ingen kommentarer:

Send en kommentar

Kan du lide mit indlæg, har en kommentar, forslag eller andet på hjerte så skriv venligst