Alt om programmering som jeg selv finner interessant. No more, no less. Trolig vil det være mest om webprogrammering, .NET og andre ting jeg jobber med fast.

mandag, februar 26, 2007

onsdag, desember 20, 2006

SQL Server og oppdateringsproblemer med views

Et view er en kompilert visning av data fra en eller flere tabeller, gjerne med både horisontale og vertikale utvalg. Et view kan lages med SELECT * eller spesifisering av felter som skal inngå i visningen.

Normalt når en kjører SELECT * vil en hente ut alle felt fra tabellen(e) spørringen gjelder for. Med et view er det annerledes siden det skal være en fast, alternativ visning av et utvalg data. SQL Server vil derfor ved oppretting av et view med SELECT * hente ut alle feltnavn og benytter disse i visninger siden. Problemet oppstår dersom en legger til et eller flere felt i tabellen view'et er opprettet for -- data blir "plutselig" feilplassert.


Tabellen over inneholder felt med ulike datatyper for å lettere vise problemet. Et view opprettes for tabellen:

Merk at All Columns er valgt og ikke spesifikke felt. Nederst vises dataene i tabellen som forventet.

Så gjør vi en liten endring i tabelldefinisjonen:

Over er det lagt til et nytt felt Felt_Nytt. Det er også satt en standardverdi for feltet slik at problemet med view'et blir lettere å se.

Og her er view'et nå:
Feltnavnene er de samme som når view'et først ble laget, men dataene har blitt forskjøvet. Legg merke til at Felt1 inneholder teksten til det nye feltet foran (som ikke vises). Felt2 har verdien til Felt1 og Felt3 har verdien til Felt2.

Dette problemet oppstår imidlertid ikke når alle feltnavnene spesifiseres i view'et. Det er da mulig å gjøre endringer i tabelldefinisjonen uten at view'et påvirkes (så lenge du ikke sletter et felt, vel og merke).

tirsdag, november 21, 2006

Generatorer for webprogrammerere og -designere

Smashing Magazine har lagt ut en liste over nyttige generatorer for blant annet CSS, HTML, fargesammensetning med mer i følgende artikkel: http://www.smashingmagazine.com/2006/11/09/online-generators/

Anti-Cross Site Scripting Library: Ekstra sikkerhet for webapplikasjoner

Microsoft har laget et bibliotek som kan implementeres i webapplikasjoner for å oppnå høyere sikkerhet. Dette gjøres etter prinsippet "principle of inclusion", dvs. at godkjente tegn får passere slik de er mens andre tegn blir kodet.

Interessant.

http://msdn2.microsoft.com/en-us/security/aa973814.aspx

torsdag, november 02, 2006

Gratis partisjonering av systemdisk med GParted LiveCD

En av laptop'ene mine er en Dell Inspiron 6000. Den ble levert ferdig oppsatt fra produsenten, men dessverre med kun èn partisjon. Laptop'en er ment benyttet til bl.a. musikk, og jeg ville derfor ha en egen installasjon av Windows XP med minst mulig "dill" og optimalisert for lyd.

Jeg satt klar med kredittkortet for å bestille Norton PartitionMagic, men det er noe i det å svi av 450 kroner for et program som brukes svært sjeldent. I steden søkte jeg litt mer rundt på nettet og fant lykken helt gratis.

GParted er et Open Source Linux-basert diskvertøy med lettfattelig grafisk brukergrensesnitt og støtte for å krympe og dele opp partisjoner. Den lar en til og med opprette NTFS-partisjoner. Den gode nyheten (for en Windows-bruker) er at Linux ikke behøver å installeres på maskinen. GParted LiveCD kan lastes ned som et ISO-bilde og brennes rett på CD. Start opp maskinen med denne CD'en i, og en nedskalert Linux-utgave lastes inn og kjøres fra minnet. (Dersom maskinen ikke starter opp fra CD-rom-stasjonen må boot-rekkefølgen endres i BIOS på maskinen)

GParted LiveCD (og andre varianter) kan lastes ned fra http://gparted.sourceforge.net/

Et fint gratis-program for å brenne ISO-bildet til CD er BurnCDCC fra Terabyte Unlimited. Programmet kan lastes ned fra denne siden: http://www.terabyteunlimited.com/utilities.html

onsdag, oktober 18, 2006

Sikker kode - tips fra Microsoft

En artikkel i MSDN Magazine med 8 tips for sikrere kode. Artikkelen er skrevet av Michael Howard - en sikkerhets-spesialist hos Microsoft.

http://msdn.microsoft.com/msdnmag/issues/06/11/SecureHabits/default.aspx

torsdag, oktober 12, 2006

Artikkel om lydgenerering

Lyd og lydbølger er artige greier, og denne artikkelen er interessant lesning for programmere som vil vite litt mer:

Fundamentals of Sound: How to Make Music out of Nothing at All
http://www.codeproject.com/cs/media/CPIAudio.asp

mandag, september 04, 2006

SandCastle Help File Builder...endelig!

Jeg gjorde et søk i dag for å se om det var noen oppdateringer til SandCastle -- Microsofts verktøy for å generere dokumentasjon for kode. Fant en artikkel på www.codeproject.com av en mann ved navn Eric Woodruff. Han har laget et verktøy som ligner på NDoc, men det er i realiteten et brukervennlig overbygg til SandCastle.

SandCastle - August Community Technology Preview (CTP) må lastes ned og installeres først fra http://www.microsoft.com/downloads/details.aspx?FamilyID=E82EA71D-DA89-42EE-A715-696E3A4873B2&displaylang=en.

Installasjonsprogram for Sandcastle Help File Builder kan lastes ned fra http://www.codeproject.com/useritems/SandcastleBuilder.asp.

NB: Jeg fikk ikke programmet til å fungere umiddlerbart. Under Dependencies var jeg nødt til å legge inn stien til .NET Framework. Deretter spyttet den imidlertid ut dokumentasjon som hakka møkk :-)

torsdag, august 24, 2006

Gode ideer som ikke er så gode likevel

I det siste har jeg forsøkt å ha fokus på sikkerhet når jeg programmerer. Jeg mener at vi som er programmerere må sikre koden i alle bauger og kanter for å motvirke angrep. Uheldigvis gikk jeg litt for langt i min iver etter å leve opp til det.

Det syntes som en svært god ide klekket ut av en brilliant mesterhjerne da jeg kodet en webside til å ikke å akseptere direkte kall -- kun ved klikk på lenker under samme domene skulle funksjonaliteten igangsettes. Det uheldige var selvsagt at jeg ikke sjekket grundig nok om ideen lot seg omsette i praksis. Så hva var det jeg hadde gjort og hva ble galt?

I webprogrammering har en tilgang til en rekke variable som sendes med forespørsler fra nettlesere. Den jeg benyttet meg av var URLREFERRER. For å sikre mot lenker fra andre domener kontrollerte jeg at denne inneholdt samme domene som applikasjonen kjørte på. Applikasjonen er forøvrig en butikkløsning og det kom snart undrende spørsmål fra kunder som ikke kunne handle i butikken. Unødvendig å nevne at dette fikk fart på både meg og andre.

Det som skjedde var at kundene hadde brannmurer som filtrerte bort URLREFERRER fra forespørsler, og koden "trodde" dermed at noen hadde forsøkt å få tilgang til siden ved å skrive inn adressen direkte i adresselinjen i en nettleser. Huff!

Moralen i historien må vel bli at fokus på sikkerhet er viktig, men det er like viktig å undersøke at sikkerheten som etableres faktisk ikke ødelegger for vanlige brukere. Jeg bommet stygt på det siste.

(I lukkede løsninger tror jeg imidlertid at denne teknikken kan benyttes som et av flere tiltak. Så det så.)

lørdag, august 05, 2006

Artikkel om sikkerhet i webapplikasjoner

Sikkerhet i webapplikasjoner er et viktig men dessverre lett neglisjerbart tema. Det er ingen heksekunst å lage programmer som er vidåpne for ulike angrep. Dersom en ønsker å utvikle sikre applikasjoner MÅ en lære seg hvilke farer som truer og hva en kan gjøre for å unngå dem.

Følgende lenke er til en artikkel skrevet av Sverre H. Huseby som tar for seg ulike former for angrep med interessante og faktiske eksempler. Artikkelen er et godt utgangspunkt for å utvikle en forståelse for hvilke farer som lurer ”der ute”. Han foreslår at utviklere tar til seg følgende mantra når de utvikler programvare: "All clients are evil". Ingen inndata må tas for gitt. Har du sendt en verdi til klienten, for eksempel en informasjonskapsel eller et skjult felt, så må ikke applikasjonen blindt akseptere verdien når den postes tilbake. Den kan ha blitt endret.

Common Security Problems in the Code of Dynamic Web Applications http://www.webappsec.org/projects/articles/062105.shtml

mandag, juli 24, 2006

Google Copernicus Center

Hvorfor skal vi alltid begrense oss til å arbeide her nede på jorden? Jeg ble veldig interessert da jeg leste Googles planer om et forskningssenter på månen, og sendte derfor følgende søknad til lunarjobs@google.com:

"I read your great plans for a truly inspiring workplace on the moon. Since I am constantly searching new job opportunities, I would like to apply for the position as the sushi chef’s fish-chopper assistant (I work as a programmer here on earth, but I’m a fast learner).

As a descendant of the true discoverers (Norwegians) of America, and as such a proven earthling, I hope you’ll find my application of interest.

Regarding my physical shape…I hope your review stays in the digital domain.


Cheers,
Kenneth Lykkås
Happy programmer"


Jeg fikk et automatisert svar fra Google om at alle stillinger allerede var besatt, men nye søknader ville bli tatt opp til vurdering 1. april 2104.

Informasjon om Google Copernicus Center er å finne på følgende adresse: http://www.google.com/jobs/lunar_job.html

torsdag, juli 20, 2006

Generere dokumentasjon fra assembly og kodekommentarer

NDoc (http://ndoc.sourceforge.net) er et glimrende verktøy for å generere dokumentasjon i ulike formater fra kodekommentarer i C# og VB.NET (sistnevnte med add-in). Men dette gjelder dessverre bare for .NET 1.0 og 1.1. I VS 2005 genereres dokumentasjon til XML for begge programmeringsspråkene, men NDoc -- som er basert på åpen kildekode og høyst frivillig arbeid -- har enda ikke fått støtte for siste utgaven av rammeverket.

Utviklere har derfor "skreket" etter en oppgradering, og svaret har kommet fra uventet hold: Microsoft slipper sitt eget verktøy for generering av dokumentasjon!

Sandcastle er navnet på Microsofts interne verktøy, og det er benyttet til å generere dokumentasjonen for .NET Framework. Sandcastle slippes før utgangen av juli i følge Anand Raman hos Microsoft. Sjekk linken nedenfor for mer informasjon. Klarer nesten ikke å vente, jeg!

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=517576&SiteID=1

Oppdatering 5. august 2006
Ja, nå er SandCastle klar for nedlasting. Jeg må innrømme at jeg forventet et like enkelt brukergrensesnitt som NDoc, men der tok jeg veldig feil. Det er imidlertid en del utviklere som har kastet seg rundt for å lage både GUI'er og skript.

SandCastle July CTP kan lastes ned fra http://www.microsoft.com/downloads/details.aspx?FamilyID=E82EA71D-DA89-42EE-A715-696E3A4873B2&displaylang=en.

Ellers virker dette Add-in-prosjektet for Visual Studio 2005 svært interessant: http://dotnetpret.blogspot.com/2006/08/sandcastle-continued-documentation.html.

tirsdag, juli 18, 2006

Regne ut ny høyde og bredde for miniatyrbilder

Et miniatyrbilde kan genereres fra eksisterende størrelse til en fraksjon, f.eks. en halv ved å dele høyde og bredde på 2. Enkelt. Men hva hvis du har et maksimalt høyde-/breddeforhold å ta hensyn til?

Disse formlene løser problemet greit:

Ny bredde beregnes slik:
ny bredde = bredde * ny høyde / eksisterende høyde

Ny høyde beregnes slik:
ny høyde = høyde * ny bredde / eksisterende bredde

Formlene kan også kombineres for å sørge for at et miniatyrbildet har både en maksbredde og en makshøyde.

I kodeeksemplet nedenfor er maks bredde og høyde 200 piksler. Ny størrelse vil beregnes (til 200 X 150) fra original størrelse (400 X 300).

Dim hoydeEksisterendeBilde As Integer = 400
Dim breddeEksisterendeBilde As Integer = 300
Dim maksBredde As Integer = 200
Dim maksHoyde As Integer = 200

Dim nyBredde As Integer = maksBredde
Dim nyHoyde As Integer = hoydeEksisterendeBilde * nyBredde / breddeEksisterendeBilde
If nyHoyde > maksHoyde Then
nyHoyde = maksHoyde
' beregn bredde siden bildet var for høyt
nyBredde = breddeEksisterendeBilde * nyHoyde / hoydeEksisterendeBilde
End If


Oppdatering
Jeg har siden funnet et eksempel på det samme i "Personal Web Site Starter Kit" som følger med VS 2005. Prosjektet kan også lastes ned fra http://www.asp.net/downloads/starterkits/default.aspx?tabid=62.

fredag, juli 14, 2006

Visual Basic Compiler - irriterende problem

Jeg har en løsning i Visual Studio 2005 som består av et ASP.NET-prosjekt, et klassebibliotek og til slutt (og her tror jeg det skurrer mest) et konsoll-prosjekt for å teste klassebiblioteket.

Dette føltes som en god idè når jeg satte det opp, men det begynte snart å dukke opp en svært irriterende feil som ser slik ut:




Når denne starter slutter den virkelig ikke. Melding popper opp gang på gang og legger seg over alle andre vinduer i Windows. Eneste løsning er å stoppe Visual Studio.

Nei. Konsollprosjektet er trolig årsaken til alle interne uroligheter og stemmes derfor UT. Testkoden skal jeg flytte over i en Code-behind fil i ASP.

torsdag, juli 13, 2006

Krigsgrisene

Jeg lyttet til plata Epic med Faith No More i kveld og fikk et gledelig gjenhør med deres coverversjon av Black Sabbaths War Pigs. Av en eller annen grunn førte dette fingrene mine ned til tastaturet som dunket inn et søk etter "war pigs" på Google. Der fant jeg en side som brukte originalutgaven på en rystende men, etter mitt syn, en helt riktig måte:

http://www.bushflash.com/warpig.html.

NB: Det legges ingen fingre mellom i denne presentasjonen av Irak-krigen!

Om meg

Bildet mitt
I love music. And computers. And Dostoevsky, too.