fredag den 24. oktober 2014

ConnectionString "SqlConnection" - Brug et sigende navn! Udvikleren kan se fordelen


Vi har et projekt som viser en masse takst data og efter en rettelse sidste år er der opbygget ufatteligt meget forretningslogik. Derfor er dette projekt ret essentielt og logikken begynder nu at smitte af på andre projekter.
Det i sig selv er godt, MEN i et andet projekt skal vi så præsentere noget af de samme data som er i det første. For ikke at skulle opbygge samme struktur som der er lavet ovre i det andet projekt, så nu vil vi bruge dll'erne fra det første projekt så vi kan genbruge strukturen og objekterne.
DESVÆRRE for os er det så at disse dll'er pudsigt nok bruger "SqlConnection" som default, som også er den som vores nye projekt bruger. Derfor skal du vi nu lave vores eksisterende løsning om til at bruge noget andet end sqlconnection, så vi kan bruge sqlconnection til vores andre dll'er.

Jeg har altid været stor fortaler for at dine connection strings altid hedder noget unikt og noget sigende, for så støder du aldrig (eller meget sjældnere) på sådanne fejl ved at du giver dine connections strings unikke navne.


fredag den 17. oktober 2014

CSS Selectors forskellige til Chrome og IE (Avancerede jQuery)


Man skal være opmærksom på at når man laver CSS selectors der er lidt avancerede så er der forskellig syntaks der virker til Chrome og Internet Explorer (IE).

Vi havde et problem med at en selector ikke blev udført i Chrome, og det viste sig at være noget så simpelt som et MELLEMRUM!

Oprindeligt så vores script ud som følger:
$('td[style*="top: 200px"]').css({ 'top': '0px', 'left': '410px' });

Det virkede bare ikke i Chrome, og da vi så tilføjede følgende linie virkede det som det skulle:
$('td[style*="top:200px"]').css({ 'top': '0px', 'left': '410px' });

Så koden endte med at være:
$('td[style*="top: 200px"]').css({ 'top': '0px', 'left': '410px' });  //Works for IE
$('td[style*="top:200px"]').css({ 'top': '0px', 'left': '410px' });   //Works for Chrome

Så i DOM'en i Chrome der er ikke mellemrum, men i IE er der. Hvis du laver den uden mellemrum så virker den ikke i IE, og med mellemrum virker den ikke i Chrome. Så derfor bliver man nødt til at have forskellig kode til Chrome og til IE, som er STORT set identisk!

Som udvikler, så løber det en koldt ned af ryggen at det er lavet sådan, og man behøver at lave noget så ÅNDSVAGT! Problemet er ikke JQuery som vi har brugt, for det mellemrum KUNNE jo være noget der faktisk skulle søges på, hvor den i dette tilfælde er lige meget. Derfor kan man ikke bare sige til jQuery at den skal ignorere det mellemrum i midten, fordi den ved ikke at det er nødvendigt.
Derimod er det åndsvagt at de to implementeringer af udviklere fra team Chrome, og udvikler fra team Internet Explorer (IE) ikke er blevet enige om samme udførsel. Det i sig selv kan man til dels også forstå, men at det ER NØDVENDIGT med sådan en gang lortekode med dublet i en sådan skala får det til at krible over hele kroppen på mig fordi jeg er udvikler, og derfor synes det er ineffektivt kode der er grim og forfærdelig.

onsdag den 15. oktober 2014

Fejl i dansk sortering (Danish Dropdown globalization culture)

Hvis man har listen:
  • 12 måneder
  • År
  • Støvle
  • Stativ
  • Tiger

Så vil en almindelig sortering gøre at listen kommer med 12 måneder, så År, og så almindelig sortering for resten. Det er fordi at oftest vil den ikke vide at "Å" skal til sidst, og derfor kommer det før de almindelige bogstaver fordi den tager det som specieltegn på samme måde som fx tal.

Så nu kan din dropdown håndtere ÆØÅ og stadig sortere korrekt. Det er altid et problem med sortering i dansk i ASP.NET eller dropdowns, eller i lister. Dette hjælper.

Det kan løses ved at fortælle hvilken culture din comparer skal sammenligne i:

Public Function Compare(ByVal o1 As Object, ByVal o2 As Object) As Integer Implements       
            System.Collections.IComparer.Compare
                    Dim cb1 As ListItem = CType(o1, ListItem)
                    Dim cb2 As ListItem = CType(o2, ListItem)
                    Dim sp As StringComparer = StringComparer.Create(New  
                            Globalization.CultureInfo("da-DK"), True)
                    Return sp.Compare(cb1.Text, cb2.Text) * _modifier
                    'Return cb1.Text.CompareTo(cb2.Text) * _modifier
End Function

torsdag den 2. oktober 2014

Design til grundejer foreningen


Hvis man som udvikler vil lave en seriøs side kommer man ikke udenom at det gerne må se lidt godt ud, og desværre er der bare ret mange grundejer foreningers hjemmesider der ikke ser helt så godt ud.

Denne statistik vil vores grundejerforening ikke være med på, og vil levere en gennemarbejdet pæn grundejer forenings side. Dette skyldes nok mest at jeg som bestyrelsesmedlem er ASP.NET Webudvikler (C#), og derfor kan levere noget lidt større resultat fra en udvikler.

Da vi nuværende ikke har nogen hjemmeside, skal den starte webside (ASP.NET) vi får, have grundlæggende funktioner, såsom referater og andet information som kan være nyttigt for interesserede. Det kan være nye beboere eller ejendomsmæglere der har behov for informationen, som de derefter selv kan hente derinde.

Den skal opbygges pæn med rene linier så den fremstår tiltalende og ikke så "trist" som ret mange af de eksisterende eksempler der allerede er derude.

Første udkast er afgivet til bestyrelsen og var meget imponeret over mine udvikler kompetencer.