Jeg læste forleden om dårlige vaner, man typisk har som (amatør)fotograf.  Jeg kan nikke til samtlige af dem, og jeg kan såmænd tilføje en, som virkelig plager mig, og som man ser hos rigtig mange amatørfotografer inklusive mig selv.  Vi taler om skæv horisont. 

Mange gange er jeg vendt hjem efter en tur med kameraet fuld af forventning til, at jeg denne har fået netop dét ene supershot i kassen, som skal gøre mig rig og berømt.  Men skuffelsen er stor, når jeg endnu engang kan se, at horisonten  gud-hjælpe-mig er skæv igen.

Aaaaaaaargh!

Hver gang jeg er ude med kameraet, tænker jeg: Husk nu at holde det lige, og kig efter guidelines i søgeren.  To minutter efter, har jeg glemt alt om det og kommer hjem med skæve billeder.  En skæv horisont på et landskabsbillede er ikke i orden.

Selvfølgelig kan det rettes op i billedbehandlingen, men så mister jeg pixels, og hvis der er et motiv, som fylder hele billedet, kan det måske ikke lade sig gøre.

Case in point:

DSC_0343

Kigger man i eksempler på nettet på brug af Task, ser man ofte Thread.Sleep anvendt inden i den pågældende Tasks action:

Task.Factory.StartNew(() =>
{
    // Lad være med det her
    Thread.Sleep(1000);
});

Det er sjældent, man bruger Thread.Sleep i andet end eksempelkode, men skulle det ske, må man ikke gøre det sammen med en Task som ovenfor.  Der er ikke garanteret nogen sammenhæng mellem én tråd og en Task.  Task kan skifte mellem tråde – ja, i nogle tilfælde vil en Task endda eksekvere på samme tråd som kalderen, alt efter hvordan man bruger Task.Factory.StartNew og Task.Run.

Hvis man rent faktisk ønsker at stoppe en Task i en tidsperiode, skal man i stedet for Thread.Sleep bruge Task.Delay.

Når man sidder med T-SQL, er det ofte nyttigt at se nogle enkelte rækker for de tabeller, man arbejder med.  Bare for at se hvad man har med at gøre.  I SQL Server Management Studio er det muligt at lave en genvejstast til at vælge de første X rækker fra en tabel.

  1. I Management Studio vælg menuen Tools –> Options. 
  2. Gå til Keyboard –> Query Shortcuts. 
  3. Vælg en tastaturgenvej (f.eks. Ctrl+3) og skriv “SELECT TOP 10 * FROM” (skriv ikke et tabelnavn).
  4. Tryk “Ok”.

image

Start nu en ny query og opret en forbindelse til en database.  Skriv et tabelnavn (og ikke andet), markér det og tryk Ctrl+3 (hvis altså det var Ctrl+3, du valgte ovenfor).  Voila!

image

 

Det spændende ved programmering er, at man hele tiden lærer noget nyt.  Jeg vil forsøge næsten dagligt at skrive på dotninjas.dk, hvad jeg har lært af små ting fornylig.

Hvis man i WPF benytter binding mellem en textbox og en property på en bagvedliggende viewmodel, vil der som standard først ske opdatering af viewmodellen, når textboxen mister fokus.  I WPF kan man ændre dette ved at sætte UpdateSourceTrigger til PropertyChanged i sin binding.  Med PropertyChanged sker bliver viewmodel opdateret, når teksten i textboxen ændrer sig.

PropertyChanged findes desværre ikke Windows Phone.  Ofte er det ikke et problem, da man som regel har en knap, man skal trykke på for at gemme det indtastede.  Men noget der ligner en bug i Windows Phone gør, at knapper i app bar ikke flytter fokus fra textboxe på skærmen.

Et workaround er følgende kode, der opdaterer binding på den textbox, der har fokus.  Jeg synes ikke, det er kønt, men jeg har ikke fundet nogen løsning, der er mindre hack-ish:

    public static void UpdateBinding()
    {
        object focusObj = FocusManager.GetFocusedElement();
        if (focusObj != null)
        {
            if (focusObj is TextBox)
            {
                var binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
                binding.UpdateSource();
            }
        }
    }

I annoncer for brugte kameraer ser man ofte folk angive, hvor mange exposures (dvs. antal billeder) et kamera har taget.  Det er relevant for et spejlreflekskamera (både analoge og digitale), hvor der er en lukker/spejl, der fysisk bevæger sig op og ned, hver gang man tager et billede.  Det giver slitage, og shutter count er en indikator for, hvor slit et kamera er.

Til min overraskelse kan man oftest ikke se i kameraet, hvor mange billeder, det har taget.  Til gengæld bliver det embedded i billedernes metadata. 

Mærkeligt nok bliver denne oplysning ikke vist af gængse billedbehandlingsprogrammer – heller ikke i Nikon’s eget Capture NX2.  Til gengæld findes der websites, hvor man kan uploade billeder og få vist shutter count.  Fremgangsmåden er, at man indstillinger kameraet til mindste jpeg størrelse (for at gøre upload så lille som muligt), tager et billede og uploader det til web sitet.

Mit kamera har f.eks. netop taget billede nr. 10.691 (hvilket er forbavsende få – jeg må ud og tage nogle flere).

image