onsdag den 23. april 2014

HTTP ERROR - Få sigende fejlbesked fra internet explorer (også i IFrame)




Vi sidder med et projekt hvor vi har behov for at vise nogle eksisterende sider indeni et nyt design, indtil vi endeligt kan udvikle hele siden som ny i en hel ny side.

Problemet er så når fx vores indeholdende side giver fx en http 500 tilbage. Den er generel og man ved ikke helt hvad fejlen er.
Derfor kan man som udvikler få ordnet så internet explorer viser fejl detaljer og man kan se hvad de drejer sig om.

Klik på:
Tools > Internet Options > Advanced
Scroll ned til sektionen "Browsing"
Nederste punkt er "Show friendly HTTP error messages"
Denne krydser du af så den ikke er markeret, og nu kan du få detaljer på dine http error 500.

Det er noget som er meget brugbart som udvikler når man sidder og forsøger at få ens site til at virke ordentligt eller debugge fejl.

Response.Redirect - effekt af slutte dit request


Ofte har man behov for at komme til en anden side, og her bruges Response.Redirect (asp.net) i meget stor udstrækning!
Det man så skal være opmærksom på er at den vil redirecte dig til siden, men som om du er på den originale side.

Fx. Default.aspx skal sørge for du ender på loginsiden.
Hvis du laver Response.Redirect("~/Login/Login.aspx"), så vil din url stadig skrive Default.aspx.
Derimod hvis du laver Response.Redirect("~/Login/Login.aspx", true), så vil din url skrive Login.aspx, fordi "true" til sidst afslutter dit response så din Default.aspx response afsluttes og dermed kommer over til Login.aspx.

Der kan være andre fordele/ulemper ved at bruge en anden metode - nemlig Server.Transfer, men vil jeg beskrive i et andet blogindlæg.

fredag den 11. april 2014

SQL Server og tal-id'er kan godt blive uvenner

Min (4) must be less than or equal to max (-1) in a Range object.

Har i dag stødt på en meget underlig fejl!
Ovenstående fejl fik jeg pludseligt efter at have lavet en rettelse i en tabel, og nu ville den pludseligt ikke tillade mig at lave select på en tabel med select("ObjectID = 20").

Sad længe og undersøgte at der var en tabel, der var rækker, der var kolonner, ObjectID-kolonnen fandtes også. Alt var faktisk lige som det skulle være, men alligevel fik jeg denne fejl.
Det mest underlige var at søgning på
id = 1
id = 4
id = 11
virkede fint, men da den kom til 20 så fik jeg overstående fejl.

Løsningen blev at jeg måtte lave den om så SQL'en blev select(" ObjectID = '20' "), altså med plinger udenom min talværdi som skal søge ned i en række med tal. Dette løste problemet, men efterlod mig stadig forundret over at det var nødvendigt. Jeg forsøger at forsikre mig selv om at det er SQL serveren der har fået noget galt i halsen så det var nødvendigt.


Hvis man arbejder i VB.NET, og man er vant til at arbejde i C# .NET skal man lige være opmærksom på en ting. Hvis du i VB.NET vil kontatinere en sql select string selv, så skal du bruge & til at sammenstykke dem, og huske at lave .ToString() på dine tal værdier, fordi VB.NET kan ikke ligesom C#.NET kan, finde ud af at hvis du sammensætter en string med et tal, skal tallet laves til en string.
Så hvis du bruger '+' imellem din string og tal, så vil den forsøge at lave det til et regnestykke og kan give meget underlig opførsel.

"ObjectID = '" + e.Item("ID") + "'" er forkert!
Det skal være "ObjectID = '" & e.Item("ID").ToString() & "'" er korrekt!

Så brug &-tegn i stedet for +-tegn når du arbejder med strenge og tal, i VB.NET, plus husk at lave dine tal til bogstaver med .ToString() så du er sikker på at VB.NET ikke laver et regnestykke i stedet.

Hjemmet til en udvikler


Som udvikler så har man en tendens til at blive gadget freak, og elske intelligente løsninger i hjemmet.
Det gør jeg også, så nu da vi har fået et hus, skal der også være et sted der har samlet plads til hele familien, uanset om det er billeder, film, musik, eller hvad vi nu end har.
Det har vi fået med vores nye NAS, så alle i familien vil kunne tilgå vores fælles filer.

Det skal opbygges så vi kan dele filer fælles alle steder, så hvis vores barn ligger billeder op fra deres tur til en skatepark så kan vi alle se det alle steder, og de kan vise billeder og video på tv'et når deres venner kommer forbi.

Vi har fået vores musik og film lagt derover, men skal have lidt struktur, for vi skal også have den til at den automatisk henter fx troldspejlets podcasts. Der vil jo være andre podcasts etc. som børnene de vil ligge ned i det fælles område også (når der kommer børn til).

Indtil videre kan PS3'eren så præsentere det, men på sigt skal det udvides til noget mere intelligent.
Fx i køkkenet har vi en netradio som kan afspille webradio (fx en græsk kanal) fordi den er på trådløst, og faktisk også vores musik, men er ikke så nemt eller intuitivt. Den skal på sigt udskiftes med en Sonos Play:3, og så skal vi have en Sonos Play:1 ude på badeværelset til når vi går i bad. Så skal der en Sonos Play:3 til stuen også til når vi vil høre musik, og måske en 1'er eller 3'er til udestuen.

Udover dette skal vi have en XBMC medie afspiller, som også kan afvikle gamle spil. Planen indtil videre er at få en Intel NUC som kan afspille XMBC fra standard, og man så kan skifte over så vi kan spille gamle spil på den når man får gæster.



Vil også gerne på et tidspunkt have sat op på vores router at vi har et gæstenetværk som er åbent for vores gæster med en simpel kode så alle gæster kan tilgå det, hvor der er en begrænsning på til forbrug af hele båndbredden. Så når vi holder fødselsdag, indflytningsfest og alt muligt andet står den simple kode under glassene og så skal vi ikke dele vores eget rigtige netværk og kode med alle vores gæster.

onsdag den 9. april 2014

Fordelen ved at arbejde med damer og piger (som udvikler)


Der er mange arbejdspladser hvor man slet ikke kommer til at arbejde med andet end mænd, og endnu mere min branche blandt udviklere.
De har en helt anden tilgang som udvikler, deres tanker og ideer er på en anden måde, og måden de løser opgaver og problemstillinger er også helt anderledes. Vi mænd er ofte meget hurtige til at finde en løsning og så skal vi bare af sted, hvor kvinder lige skal filosofere over om løsningen er god nok, og nogle gange så er det en fordel fordi man har glemt en lille detalje.
Oftest er det dog mere stemningen de skaber som er dejlig.  I det daglige er der sjov på en anden måde, til afdelingsmøder letter de stemningen lidt, og i det hele taget er der lidt mere smil fordi de hjælper til.
De er bedre til lige at drage omsorg og spørge til ting de ved er omkring dig i øjeblikket. Hvis du får børn, hus, hund, eller du har nogle problemer med noget familie og sygdom så selvom de ikke kender dig og personen er de bedre til lige at huske på at spørge til det.
Selv sådan noget som hvis du er blevet klippet noterer de på en anden måde, og det giver altså stemning og liv på en anden måde fordi de lige kommenterer dit nye hår, hvor mændene mere undlader at kommenterer de selvom de nok ligger mærke til det.

Kvinder er nogle gange også bedre til detektivarbejdet. Det irriterer dem ikke at bruge enormt lang tid på at finde ud af hvorfor noget skete og finde ud af fordi at det var månedsafslutning så blev en backup forsinket af nogle andre, som påvirkede vores kørsel, som så fik slukket ned for hurtigt, derfor lavede fejl i et andet batch program som så fik skrevet nogle forkerte data og derfor blev en kunde rørt med en meget mystisk fejl. Sådanne opgaver hader jeg, og det gør damerne absolut også, MEN de er bare meget bedre til at bibeholde modet og fortsætte detektivarbejdet hvor jeg bliver mere utålmodig med sådanne ting.
Sådan er begge køn meget forskellige som udvikler, men gør os begge stærkere til forskellige ting hver især.


mandag den 7. april 2014

IE Blank spaces after IMG tag - How to fix it


The problem with IE (Internet Explorer) is that if you out an image inside some other element it gives you a blank space after an image.

For instance:
<div style="border: 1px solid black;>
    <Img src="developer.jpg" alt="Developer" />
<div>

This will give you a space on the right side of the picture to the border. Very annoying!
If you place another item next to it, it will still add the blank space, and disturb two images that are meant to be together.

IE (Internet Explorer) creates a linebox for whitespace that follows the IMG tag, and this leaves space for the descenders of p's and y's. "p" and "y" is not placed the same vertical place as "a" and "c" which is the problem that causes this. The base of the image is aligned by default with the base of normal letters, a's and c's.


FIX 1:
Add "vertical-align: bottom" to the IMG style or css class.
This will sit it flush with the bottom of the descenders, and there will be no gap underneath.

FIX 2 (DIRTY):
If you remove any trailing whitespace in your code it removes the error as well.

For instance:
<div style="border: 1px solid black;>
    <Img src="developer.jpg" alt="Developer" />
<div>
ends up being
<div style="border: 1px solid black;><Img src="developer.jpg" alt="Developer" /><div>
 so there is no whitespaces in your code following the image and the next element.


tirsdag den 1. april 2014

Keep it simple, når du udvikler


Både i design og funktionalitet er det vigtigt at have en simpel struktur.
Samme princip jeg har baseret www.csharpudvikler.dk på, som skal være en simpel side der viser lidt mere omkring mine udvikler kompetencer, og mig som udvikler (ASP.NET udvikler).
Designet er opbygget simpelt og let forståeligt. Funktionaliteten er det samme, så vedligeholdelse er minimal og simpel. Ting bliver pakket pænt ind, så jeg ikke skal så meget udover at lade den gøre arbejdet.

Nuværende arbejder jeg sammen med en som har samme mantra, men svært ved at overholde det for sin egen kode. Kommentarer er der intet af, strukturen er en der er selvopfunden og smart (som kun han kan finde ud af, da der er ingen kommentarer, eller logik bag - udover hans egen), hans metoder er hurtige, men ikke gennemtænkte. Hvis ikke alt er lavet som det var i hans hoved fungerer det ikke, og der er ikke opsat noget der kan håndtere andet.
Fx at kalde et objekt, og en property på dette objekt, og trimme værdien - alt i et kald.
Så hvis objektet ikke er initialiseret som var logisk i hans hoved (ikke for andre), så virker det ikke og brager ned i stedet for at håndtere det ordentligt.
En lille smule fejlhåndtering bygget ind i sin kode gør ikke noget. Man forventer aldrig ens kode fejler, men hvis den gør så lav graceful degredation. Oplever selv jeg kalder funktioner og metoder fra andre udvikler som opfører sig anderledes end jeg forventede, og derfor forsøger jeg selv at oparbejde min kode omkring at andre udviklere der skal have min kode nok ikke vil synes det er intuitivt selvom jeg synes og derfor håndterer mange fejlscenarier fra start af.

Det synes jeg selv er en af mine forcer som udvikler. At jeg forbereder min kode for fejl, og er noget jeg har lært lige fra start af i min karriere. Der er ikke noget værre end når man skal lige fixe noget, og så er der et eller andet der brager ned i noget kode der er enormt rodet, laver mange redundante ting der ikke er logiske, i metoder der ikke har sigende variabler i, metode navn der minder om russisk og ingen kommentarer om hvad de forskellige dele gør og er der for. Så tænker man bare det kan en kodeabe også lave, men ikke en rigtig udvikler der tænker længere end sin egen næsetip.