Joachim har skrivit en bok, Designing Scalable .NET Applications, jag ville gärna prata med honom hur det är att skriva böcker.
Lyssna här.
« maj 2005 | Main | juli 2005 »
Joachim har skrivit en bok, Designing Scalable .NET Applications, jag ville gärna prata med honom hur det är att skriva böcker.
Lyssna här.
Posted at 07.22 in Podcast | Permalink | Comments (0) | TrackBack (0)
Jag sitter just nu i ett projekt där vi skriver en webbapplikation som hanterar flera språk och regioner. Det innebär att vi bland annat måsta ta hänsyn till olika datumformat. Det finns en valideringskontroll som man kan använda för att validera om ett datum är rätt. Det fungerar till och med på klientsidan. Men det finns ett problem och det är att valideringen endast triggas igång när man gör någon form av submit på sidan. I projektet vill vi kunna kontrollera datumet även när vi flyttar oss till en annan kontroll på sidan.
För att lösa detta kan man naturligtvis bygga egna javascript som hanterar olika datumformat för att göra en rätt validering. Men vår fundering var om man inte kunde använda sig av valideringskontrollens valideringsfunktioner, för dessa fungerar redan när man gör submit. Och det gjorde vi.
I det här exemplet vill jag visa på hur man kan sparka igång en validering utan att behöva göra en submit av sidan. (Observera att jag använder mig av ASP.NET:s egna valideringsskript. Detta kanske inte kommer att vara kompatibla i framtiden. Men det har jag inte kollat upp. Exemplet fungerar i Visual Studio 2003 och troligtvis också i Visual Studio 2002.)
Vi börjar med att skapa ett nytt webbprojekt och lägger till tre kontroller i WebForm1.Aspx:
<asp:TextBox id="TextBox1" runat="server"></asp:TextBox> <asp:button id="Button1" runat="server" text="Button"></asp:button> <asp:comparevalidator id="CompareValidator1" runat="server" errormessage="CompareValidator" controltovalidate="TextBox1" operator="DataTypeCheck" type="Date"> </asp:comparevalidator>
En TextBox, som skall innehålla datumet och en Button, som endast använts för att kunna ge en annan kontroll fokus, och en CompareValidator, vilket har möjligheten att validera att någon information är av av en speciell typ. (Den har även annan funktionalitet, som hörs av namnet.) Den här validatorn kontrollerar innehållet i Textboxen och kontrollerar om den är av typen Date.
I code-behind-filen:s Page_Load lägger vi in följande två rader:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load TextBox1.Text = DateTime.Now.ToShortDateString TextBox1.Attributes.Add("onChange", _ "validDate('" + CompareValidator1.ClientID + "')") End Sub
Den första raden skriver ut dagens datum i Textboxen. Den andra raden lägger till ett attribut i Textboxen. Attributet är en händelse, onChange, som när den utlöses, kör igång funktionen validateDate(), vilket är ett javascript som jag strax kommer att beskriva. Som argument till denna funktion har vi validatorns id. (CompareValidator genereras som en span-tag.)
Det sista som vi behöver göra, för att sparka igång validatorns valideringsfunktion när vi ändrar något i Textboxen, är ett javascript som implementerar validDate().
<script language="javascript"> <!-- function validDate(cvName) { var cv = document.getElementById(cvName); CompareValidatorEvaluateIsValid(cv); } //--> </script>
Skriptet gör två saker. För det första letar den fram vår valideringskontroll genom att leta upp kontrollen med dess namn. Namnet som vi skickade in med parametern cvName. Sedan kör vi igång validatorns valideringsfunktion CompareValidatorEvaluateIsValid() och skickar med valideringskontrollen som en parameter till denna.
Vart ligger CompareValidatorEvaluateIsValid() någonstans? Jo, denna funktion ligger i ett skript som installeras när .NET Framework installeras. Den installeras så att den kan användas av alla webbapplikationer som körs i IIS:en på datorn. Vanligtvis ligger den i katalogen C:\Inetpub\wwwroot\aspnet_client\system_web\1_1_4322 och heter WebUIValidation.js. Titta gärna igenom den filen. Det finns godbitar där som man kan ha nytta av.
Nu är det dags att kör igång och testa. Ange ett ej giltigt datum och tryck på TAB-tangenten för att förlyttas till nästa kontroll på sidan. Nu skall en röd text komma upp på skärmen. Den indikerar att datumet är ogiltigt.
Nu skall vi ändra våra inställningar för webbapplikationen så att vi istället kör med finskt datumformat. Det går att göra på flera sätt. Det enklaste är att öppna web.config och lägga till ett attribut i elementet globalization.
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="fi-FI"/>
Nu kan du provköra det och se att valideringen av datumet även fungerar med ett annat datumformat.
Posted at 16.01 in .NET, Coding, Example | Permalink | Comments (0) | TrackBack (0)
Microsoft meddelar att de utvecklat Xbox 360 på så sätt att både Nintendo DS och PlayStation Portable kan kopplas ihop med konsolen.
Microsoft håller sig utanför den bärbara marknaden än så länge men överraskar med att kommande Xbox 360 är kompitabel med de värsta konkurrenternas handhållna konsoler. Att kunna använda sig båda dessa bärbara giganter till maskinen skulle ge Microsoft en utomordentlig fördel i nästa generations krig och öppna fler dörrar för spelutvecklarna.
Att Nintendo och Sony skulle gå med på att låta Microsoft leka digital parasit är däremot föga troligt.
Ps.
Kan detta innebära att Microsoft inte kommer att själv utveckla någon bärbar version av XBox? Jag tror inte att vi skall göra några sådana förhastade slutsatser. Jag tror till och med tvärtom...
Posted at 10.07 in Games | Permalink | Comments (0) | TrackBack (0)
Det skall bli kul att åka dit, speciellt som jag inte var med förra gången.
Posted at 06.28 | Permalink | Comments (0) | TrackBack (0)
I den här podcasten gör jag en skypeintervju med Johan Lindfors, utvecklarevangelist på Microsoft. Vi diskuterar lite allt möjligt, ifrån Bill Gates emailadress till spelutveckling.
Musiken står Maria Steen för. Låtarna är ifrån hennes CD En Stund som den här. Marias hemsida
Posted at 23.15 in .NET, Coding, Podcast | Permalink | Comments (3) | TrackBack (0)
Posted at 06.25 in Länkar | Permalink | Comments (1) | TrackBack (0)
Här är en ny podcast där jag bland annat diskuterar Lars Noréns sommarprogram (utan att ha lyssnat på det), lite css-grejor, Office 12’s nya filformat och nya hjälpmedel att utveckla applikationer i Outlook.
Lyssna här.
Posted at 17.32 in Podcast | Permalink | Comments (2) | TrackBack (0)
Att Office för första gången på 11 år ändrar filformatet på några av sina mest använda program, Word, Excel och PowerPoint, är en mycket stor händelse. Dessa program är för många företag, de mest använda programmen, i allt ifrån att skriva offerter till att skapa budgetar och presentationer. Enkelheten, anpassningsbarheten och flexibiliteten har varit kännetecknande för dessa. Men tyvärr har många företag ändå inte kunnat göra riktigt allt som de vill med programmen. Det har funnit vissa begränsningar, som ibland har varit väldigt svårt att göra någonting åt. Det har bland annat gjort att ett flertal kreativa lösningar, av varierande kvalitet, har skapats för att lösa dessa problem och begränsningar. Många av dess lösningar har tyvärr varit krångliga och gjort att företagen har fått anpassa sig efter dem istället för tvärtom.
I det här inlägget vill jag beskriva vissa saker som blir lättare och bättre med det nya filformatet. Jag har inte som mål att försöka täcka in allt utan beskriver endast utifrån de verksamhetsområden som jag är verksam, främst inom bank, finans och försäkring.
Men först en kort sammanfattning om vad det nya filformatet är för något.
Det nya filformatet, en kort introduktion
Det gamla filformatet var mycket svårt att arbeta i om man inte hade den fullständiga specifikationen av det. Det var binärt och försökte efterlikna den interna minnesstrukturen. Detta för att det skulle vara snabbt att arbeta med på långsamma datorer. Det enda programmen som man litade på för att hantera dessa filer var just Officeprogrammen själva. Andra program kunde visserligen ibland fungera, men det fanns ingen garanti för detta.
Det nya filformatet är uppbyggt på ett helt annorlunda sätt. Allt som lagras i filen är av olika standardformat. Filen är uppdelad i olika delar, där varje del lagrar sin typ av information på bästa sätt. Det innebär att text och utseende lagras som xml, bilder lagras som gif, jpg eller något annat välkänt format osv. Alla dessa delar sammanfogas till en fil som komprimeras med hjälp av zip. (VBA-kod kommer att lagras som en egen del också. Det gör det enklare att kontrollera att ingen kod slinker med som kan innehålla några virus eller dylikt. Förut var sådan kod inbakad i själva filen och det gjorde det svårare att kontrollera säkerheten av filen utifrån.)
Det finns ett sätt att beskriva sambanden mellan dessa olika delar. Detta görs i en speciell xml-sträng inuti samma fil. Den kan förutom att beskriva de interna sambanden mellan de olika delarna, även beskriva externa samband till delar utanför filen, typ filer eller dylikt.
Detta gör att man kan använda vilket program som helst för att läsa filen. Det finns inga begränsningar. Det gör också att en sådan fil kan innehålla i princip vad som helst och att de olika delarna kan användas på olika sätt. Man kan exempelvis väldigt enkelt uppdatera information om ett företag, som finns lagrat i filen som xml, utan att behöva öppna vare sig Word eller Excel.
Visionen
Dagens företag arbetar med mycket information. Att kunna få fram rätt information och bearbeta den på ett bra sätt är en stor konkurrensfördel för många företag. Under de senaste 30 åren har datorsystem mer och mer gjort informationen datoriserad. Det finns idag väldigt mycket sådan information som är strukturerad och organiserad. Men det finns fortfarande mycket information som är ostrukturerad. Ostrukturerad information är svår att återanvända, lagra effektivt (idag ofta lagrad på flera ställen), blir lätt gammal och kan vara både svårkategoriserad och svårsökt. Mycket av denna ostrukturerade information finns i Office-dokument, speciellt Word eller PowerPoint, men även Excel.
Den minsta enheten för ett Office-dokument har varit själva filen, dokumentet. Det har varit svårare att på ett strukturerat sätt dela upp denna enhet till mindre enheter som är strukturerade i sig själva.
Ett exempel. Vissa företag använder fortfarande Word för att skriva offerter. På dokumentnivå kan man relativt enkelt se att man har skrivit en offert och kanske till vem och när. Den informationen kan man enkelt spara genom att använda själva filnamnet eller dokumentegenskaper. Men om man vill se vad offerten innehöll och speciella krav och priser är det mycket svårt att få fram det. Texten inuti dokumentet är svår att kunna struktureras på ett effektivt sätt.
Med det nya filformatet kan man tänka annorlunda. Om vi fortsätter med exemplet ovan så skulle en användare istället för att skapa ett Worddokument som är en offert, skapa en offert som kan redigeras och visas som ett Worddokument. Detta är en stor skillnad i hur användaren förhåller sig till det som han skall göra. Det gör också en tydligare skillnad mellan informationen och utseendet, formatet, på den. Det blir mycket enklare att automatiskt sammanställa all information som offerten måste innehålla än det var möjligt tidigare. Offerten kan redigeras i det författarverktyg, vilket bland annat Word är, som passar bäst för att utföra ett moment i uppgiften. Det kan vara så att man använder olika författarverktyg för olika steg i en process.
En annan möjlighet, som jag tror kan bli möjligt, är att man använder något av Officeprogrammen för att redigera information utan att någon fil överhuvudtaget behöver skapas. Om Word, Excel och PowerPoint blir så "smarta" så att det kan ta hand om de olika delarna och dess relationer på ett bra sätt, så behöver dessa delar inte sparas i en fil, utan exempelvis direkt i en databas. Om man kopplar ihop detta med Sql Server 2005 borde det vara en relativ smärtfri sak att fixa till en sådan lösning. (Obs detta har jag ännu inte kunnat verifiera.)
Att kunna skapa fullständiga officedokument utan att behöva själva författarprogrammen, Word eller Excel, har varit en dröm som många har sett fram emot. Detta blir mycket enkelt med det nya filformatet. Man kan skapa dokument ifrån början eller använda delar av dokument för att skapa nya dokument. Återanvändningen av den här typen av information blir mycket enklare.
Nya Office 12 tillsamman med Visual Studio Tools For Office kommer verkligen att bli en mycket bättre utvecklingsmiljö för att skapa nya typer av lösningar. Jag vet att det låter som marknadsföringssnack, men jag har många kunder som verkligen skulle behöva en sådan här miljö för att kunna bygga bättre system med effektivare processer. Bara den senaste månaden har jag varit på två företag och diskuterat lösningar som skulle underlättas avsevärt om jag hade dessa verktyg.
Här finns mer information om Office 12.
Posted at 21.50 in Web/Tech | Permalink | Comments (1) | TrackBack (0)
Imorgon börjar sommaren, för då börjar programmet Sommar i Sveriges Radio.
Tyvärr blir det ofta så att man gärna vill lyssna, men inte har tid eller så glömmer man bort det. Men i år kommer det kanske ändå att bli lite bättre. De kommer nämligen att podcasta alla program. Det innebär att jag automatiskt får dem nedladdade till ngåon av mina datorer, eller ändå bättre, att de kommer ned till min telefon, så att jag kan lyssna på dem vart som helst.
Jag undrar om musiken också kommer med? Detta är nämligen just nu en tvistefråga utifrån upphovsrätten. Vi får se. Det vore roligt om Sveriges Radio även kunde få med den.
Om du vill prenumerera på Sommar går du hit.
Posted at 15.43 in Fun, Podcast | Permalink | Comments (0) | TrackBack (0)
Äntligen har Patrik Löwendahl fått upp sitt fotoalbum med bilderna ifrån dessa två händelser, och också NorDev. Kul.
Kolla gärna in mina handrörelser som jag gör på MSDN Live. Jag kom ihåg att jag gjorde extra många just då. Jag tror att det var av det enkla skälet att jag var rätt nervös. Jag såg till och med några ibland publiken som härmade mig.
Kolla in fler bilder här.
Posted at 09.06 in Fun, Presentations | Permalink | Comments (0) | TrackBack (0)
Recent Comments