Julekalenderens nytårstrækning

January 2, 2012 10:41 by henrik

For at fejre at julekalenderen endelig er ovre, har jeg trukket lod om overskydende præmier blandt deltagerne (uanset om man har svaret rigtigt eller ej - og uanset om man tidligere er blevet præmieret). Hver gang, man har deltaget, har givet et lod i den store tilfældighedsgenerator (dog har jeg begrænset det således, at man maksimalt kan få en af hver af de to præmier fra http://www.microsoft.com/web/webmatrix/).

Følgende er på denne vis blevet præmieret med ASP.NET bogen:

Asger Holten, Viby
Kim Thomsen, Aarhus C
Lars Strange, København N
Rasmus Christensen, Fredericia
Stephen Haun, Egå
Anders Dyhrberg, Tilst
Kristian Koch, Herning
Johnny Hansen, Helsinge
Peter Sandberg, Hadsten
Jacob P. Germundsen, Lystrup
Jacob Madsen, Aarhus C
Janus Søndergaard, Aarhus C
Claus Christiansen, Aarhus C

Og følgende er på lignende vis blevet præmieret med et Pluralsight abonnement:

Jakob Gade, Skive
Brian Kristensen, Tørring
Jacob P. Germundsen, Lystrup
Jan Skovgaard, Viby j
Martin Petersen, Aarhus C
Anders Dyhrberg, Tilst
Mikael Syska, Aarhus C
Johnny Hansen, Helsinge
Claus Christiansen, Aarhus C
Peter Hansen, Holstebro
Anders Brunholm Sylvest, Odense SV
Brian Holmgård Kristensen, Viby J
Allan Dam Hansen, Odense N
Flemming Christensen, 8210 Aarhus V

Jeg sender hermed listen over alle præmierede deltagere i julekalenderen til Microsoft, som derefter vil sørge for at udsende præmierne direkte til deltagerne.

Tak til deltagerne for de mange gode, inspirerende og underholdende svar... og tak til Microsoft for sponsoratet af præmierne...


Godt nytår

.Henrik


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 23. decembers svar

December 30, 2011 13:56 by henrik

Så er tiden vist kommet til, at vi skal have afgjort julekalenderens sidste spørgsmål som var: "Hvor mange gætter rigtigt på dagens spørgsmål?"

Spørgsmålet var lidt specielt i og med, at jeg ikke på forhånd vidste, hvilke(t) svar der var de(t) rigtige.

Der kom en del forskellige forslag. En del svar var i tråd med Allan Agerholm Dahls: "Jeg tror svaret er 1, og det er mig :-)".

Claus Christiansen nøjedes ikke med bare at "tro", idet han ræsonnerede som så: "Hvis N er antallet af besvarelser, så er 1 det eneste rigtige svar for N = 1 og 1 er et plausibelt svar for N > 1. For x > 1 vil det være et direkte umuligt svar for N < x. Så 1 er umiddelbart det ’bedste’ gæt.". Et jo i og for sig ganske glimrende ræsonnement, hvis det da ikke lige var fordi, at da der var mere end én deltager, der gættede på, at der var én deltager, der ville gætte rigtigt. Så dette svar var dog desværre i sagens natur forkert.

Andre gættede på at der ville komme 0 rigtige svar, men som Christian Holm Nielsen ræsonnerede "selvom 0 samtidig aldrig kan være rigtigt, da jeg hvis jeg har ret selv udgør ét rigtigt svar". Så 0 er altså heller ikke et rigtigt svar.

Andre forslag var 3, 4, 8, 13 og 24.

Det eneste gæt, hvor antallet af gæt passede med gættet, var imidlertidig 13, som følgende havde gættet på: Gregor Gynthersdottir, Aladdin, Ali Baba, Dr. Dre, Jes Dorph (TV2, Danmark), Deep Thought (Milky way 1, The universe), Lorem Ipsum (Latinerkvarteret), Povl Dissing (Dissingvej 1), Den glade sømand fra Vejen, Spåkonen fra Vrå, Juleanden i ovnen (rap rap), Julemanden (Nordpolen) og Brian Andersen. De 12 første var dog alle afsendt fra samme e-mail, så de bliver alle diskvalificeret. At Brian Andersen ved et tilfælde var kommet til at formulere sit svar på eksakt samme måde som de 12 første skal til gengæld ikke komme ham til skade, så Brian bliver hermed tildelt en præmie sponsoreret af http://www.microsoft.com/web/webmatrix/:

ASP.NET bogen går til: Brian Andersen, Odense


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 23. decembers spørgsmål

December 23, 2011 09:19 by henrik

Så er det blevet tid til det sidste kalenderspørgsmål - og så skal I endelig få lov til at drikke jeres gløgg/æggesnaps i fred...

Dagens spørgsmål er:

Hvor mange gætter rigtigt på dagens spørgsmål? Svaret skal angives som et naturligt tal (en literal).

Hvis du absolut ønsker en definition på en literal, kan du eksempelvis studere afsnit "9.4.4.2 Integer literals" i specifikationen af C# sproget: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-334.pdf.


Send svaret til lykke@captator.dk senest kl. 4:42 natten til på tirsdag den 27. (så I får virkelig god tid til at tænke over jeres svar). Blandt de korrekte og/eller underholdende svar bliver der udloddet to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/. Skriv dit navn og adresse i malien og angiv ANUGXMAS i subject. Alle der deltager i konkurrencen modtager en mail, når et nyt spørgsmål foreligger.


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 19. decembers svar

December 22, 2011 14:22 by henrik

Ikke overraskende har .NET udviklere mange tools, de finder uundværlige i deres værktøjskasse. Mere overraskende er det måske, at det er så forskellige tools.

Her kommer listen over de tools deltagerne i julekaldenderen nævner som deres favoritter i ikke-rangeret orden (jeg har tilladt mig at fjerne nogle enkelte som jeg synes faldt uden for tool-kategorien). Kommentarerne er deltagernes. Jeg har ikke orket at skrive kilde på de enkelte kommentarer, men I skal have stor tak for dem!

  • Browser (til dokumentation)
  • ReSharper
  • SQL Server Management Studio
  • Fiddler til at kigge på web requests med
  • Google Crome F12, Google chrome debugger, FireBug (http://getfirebug.com/) (uvurderligt til webudvikling!)
  • plugin'et: Mindscape Web workbence der gør det muligt at skrive og konverter: coffeescript->javascript, (scss/less)->css i visual studio
  • E - TextEditor windows svar på textMate
  • Expression Blend
  • Notepad
  • Total Commander
  • Gimp
  • ExamDiff
  • Expression Blend
  • Fiddler
  • Artisteer
  • Google - uundværlig søgemaskine når der skal bruges hvad der skal bruges input til en løsning. Omend man nogle gange skal kigge dig lidt for.
  • Stackoverflow - afledt af google, kan mange henvisninger havne netop her. Super godt sted at får nogle gode svar der oftest også er godt begrundet
  • WebEssentials - Når man sidder med f.eks. css er det super godt med lidt hjælp og der gør den det godt. Så er det nok også samtidig en måde at afprøve nye vs.net features på for MAds og $MS
  • Nuget - Virkelig noget der har manglet til .NET. 3rd party dependencies har altid været en plage at vedligeholde. Synes det efterhånden har ramt meget bredt og der nu er mange der blot henviser hertil, så det er helt klart kommet for at blive.
  • AppHarbor - Genial og lige til platform at anvende. Ikke mere FTP til webhoteller og at de så samtidig afvikler mine tests er jo bare endnu et plus.
  • Bitbucket - Nem og lige til hosted versions styring med GIT. Virker også rigtig når man f.eks. anvender appharbor.
  • Twitter - Ved at være godt med til at komme med svar når der er noget galt.
  • Notepad2 - nogle gange skal der bare noget helt simpelt til og der gør den det virkelig godt
  • TotalCommander - filnavigering på windows med tastaturet, det virker bare uanset hvad man skal.
  • PowerShell - Selv om jeg først lige er kommer igang her, så virker det godt. Anvender til primært til GIT i stedet for GIT BASH, men regner helt klart med at jeg skal til at bruge det til mere.
  • MongoVue - Hvis man anvender MongoDb, er dette et super godt lære værktøj og til test. Management studio til mongo :)
  • Focus Booster - Har anvendt det specielt til pairprogramming. Super enkelt og lige til værktøj
  • Kanbanary/AgileZen - Godt til at tracke opgaverne og processen
  • Windbg
  • DebugDiag
  • Svn, Tortoise
  • .Net reflector og/eller ILSpy
  • Indent Guides plugin til Visual Studio
  • Search References plugin til Visual Studio
  • RegEx Editor plugin til Visual Studio
  • ProductionPowerTools (http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/), giver en ny søgefunktion med markup samt en ny udgave af Solution Explorer som jeg er ret glad for.
  • PowerCommands (http://visualstudiogallery.msdn.microsoft.com/e5f41ad9-4edc-4912-bca3-91147db95b99/), der giver små genveje som ”Open Command Prompt (here)” og ”Open Containing Folder”, samt ”E-mail code snippet”.
  • Notepad++ (http://notepad-plus-plus.org/), åbner ”alt” og uden brok i en fart, og med integration til filbrowserens kontekstmenu er den altid lige ved hånden.
  • FileZilla (http://filezilla-project.org/) (FTP overførsler)
  • 7Zip (http://www.7-zip.org/) (gratis og effektiv komprimering)
  • ColorPic (http://www.iconico.com/colorpic/) (til at få fat i farvekoder)
  • A ruler for Windows (http://www.arulerforwindows.com/) (til pixel måling på skærmen)
  • Expresso (http://www.ultrapico.com/Expresso.htm) (til test og opbygning af Regular Expressions)
  • Paint.NET (http://www.getpaint.net/) (gratis featurerigt billedbehandling – med layers!)
  • Ninite (http://ninite.com/) (effektiv måde at få flere af de nævnte tools installeret på en clean pc)

Min egen liste omfatter til inspiration tools som:

  • Reflector
  • GhostDoc
  • Notepad (ja den gamle kending er stadig et af mine mest brugte værktøjer)
  • Paint, Paint.NET (Paint starter hurtigere end Paint.NET ;^)
  • Fiddler, Ethereal til HTTP henholdsvis TCP/IP debugging
  • Expresso
  • PowerISO, 7zip, WinRAR
  • WinDirStat
  • SQLAzureMW (migrering af data frem og tilbage mellem en almindelig Microsoft SQL Server og SQL Azure)
  • Browsere som IE, FF og Chrome (med deres udviklertools)
  • Samt en vrimmel af egenudviklede tools...

De to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/ tilfalder efter lodtrækning:

ASP.NET bogen går til: Peter Hansen, Holstebro
Pluralsight abonnementet går til: Kim Thomsen, Aarhus

En ekstrapræmie i form af et Pluralsight abonnement for en rigtig god kommentering af mange af værktøjerne på listen tilfalder Rasmus Christensen, Fredericia


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (1) | Comment RSSRSS comment feed

Julekalender: 19. decembers spørgsmål

December 19, 2011 15:41 by henrik

Dagens spørgsmål er:

Hvilke tre tools finder du (udover Visual Studio) mest nyttige i dit udviklingsarbejde? Standalone tools såvel som add-ins tæller med. Det behøver ikke at være dedikerede udviklerværktøjer - bare du finder dem nyttige i forbindelse med softwareudvikling. Du skal mindst nævne tre tools, men må meget gerne flere...

Se det er da et spørgsmål, hvor alle kan være med ;^)

Send svaret til lykke@captator.dk senest kl. 4:42 natten til onsdag. Blandt de korrekte og/eller underholdende svar bliver der udloddet to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/. Skriv dit navn og adresse i malien og angiv ANUGXMAS i subject. Alle der deltager i konkurrencen modtager en mail, når et nyt spørgsmål foreligger.


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (3) | Comment RSSRSS comment feed

Julekalender: 15. decembers svar

December 19, 2011 15:09 by henrik

Dagens svar kunne varieres på forskellig måde over en skabelon i stil med: "dd. MMMM yyyy g hh:mm zz" - et svar som alle deltagerne også var kommet frem til. Så koden kunne skrives noget i stil med:

  var dateTime = new System.DateTime(2011, 12, 15, 17, 42, 0, DateTimeKind.Local);

  string result = dateTime.ToString("dd. MMMM yyyy g hh:mm zz");

Det var dog alt, alt for simpelt for Brian Holmgård Kristensen som i stedet genererede formateringsstrengen med følgende umiddelbart ret besynderlige kode:

  var dato = 15.december(2011).Kl(17.42);

  Console.WriteLine(dato.ToDotHenrikString());

Da jeg så det, måtte jeg kigge en ekstra gang, gnide mig i øjnene og drikke en lille hvidtøl (samt kigge på resten af koden ;^) før pråsen gik op for mig: Extension metoder kan så sandelig misbruges - endda på fornøjeligste vis!

  public static class Extensions
  {
    public static DateTimeOffset december(this int dag, int aar)
    {
      return new DateTimeOffset(new DateTime(aar, 12, dag));
    }

    public static DateTimeOffset Kl(this DateTimeOffset dato, double tidspunkt)
    {
      var time = (int) tidspunkt;
      var minut = (int)((tidspunkt - time)*100);

      return new DateTimeOffset(new DateTime(dato.Year, dato.Month, dato.Day, time, minut, 0 /* sekund */));
    }

    public static string ToDotHenrikString(this DateTimeOffset dato)
    {
      return dato.ToString("dd. MMMM yyyy gg hh:mm zz");
    }
  }

Se det er god værkstedshumor! Brian har med denne fantastiske besvarelse helt automatisk vundet en af de to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/:

ASP.NET bogen går til: Brian Holmgård Kristensen
Pluralsight abonnementet går til: Allan Agerholm Dahl, Ringsted


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 15. decembers spørgsmål

December 15, 2011 16:34 by henrik

Hvilken formatteringsstreng skal sendes med til ToString-metoden på en System.DateTime for, at den genererer følgende

  15. december 2011 A.D. 05:42 +01

hvis System.DateTime objektet, er defineret ved følgende dato og klokkeslet:

  Den 15. december 2011 kl. 17:42 dansk tid.

De eneste karakterer, der må benyttes i formatteringsstrengen, er specialtegn, whitespace samt de såkaldte "format specifiers".

Send svaret til lykke@captator.dk senest kl. 4:42 natten til i mandag. Blandt de korrekte og/eller underholdende svar bliver der udloddet to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/. Skriv dit navn og adresse i malien og angiv ANUGXMAS i subject. Alle der deltager i konkurrencen modtager en mail, når et nyt spørgsmål foreligger.


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 13. decembers svar

December 15, 2011 15:51 by henrik

Selvom jeg havde holdt spørgsmålet i lidt uklare vendinger (for ikke at gøre det alt for let), så var det alligevel lykkedes de fleste at finde frem til at teknologien, jeg fiskede efter, var "fusion".

Brian Holmgård Kristensen gav følgende glimrende beskrivelse af fusion: "Det er fusion.dll (også kendt som Assembly Manager) i CLR'en som har ansvaret for bl.a. at loade assemblies samt at gemme disse i GAC'en. GACUtil.exe anvender dette komponent internt."

Selvom det nok kun er ganske få .NET udviklere, der har haft brug for at interagere direkte med fusion, så er der alligevel et rigtigt nyttig tool relateret til fusion, som jeg vil nævne (og som var grunden til, at jeg overhovedet ville lave et spørgsmål om fusion). Det er "Assembly Binding Log Viewer" også kendt som Fusion Log Viewer (Fuslogvw.exe). Fusion Log Viewer (jeg synes at "Fusion Log Viewer" lyder mere cool end "Assembly Binding Log Viewer" ;^) kan fortælle præcis, hvilke assemblies der loades og endnu mere nyttigt: Hvilke assemblies der _forsøges_ loadet. Dette lille - men meget nyttige tool - har mere end én gang reddet min dertil indrettede. Blandt andet brugte jeg det for år tilbage til efter en længere og meget frustrerende debugging session at konstatere, at Word loadede en anden version af .NET frameworket end, hvad jeg (og Microsoft selv!) forventede ;^) Som sagt et meget nyttigt lille tool!

I kan læse mere om Fusion Log Vieweren på eksempelvis: http://msdn.microsoft.com/en-us/library/e74a18c4.aspx og http://msdn.microsoft.com/en-us/library/e74a18c4(v=VS.71).aspx.

Nogle af svarene gik på, at teknologien, jeg spurgte til, var Reflection, og det er da også rigtigt nok, at den kan bruges til at loade assemblies med, men jeg synes ikke rigtigt, at det passer på hintet, om end Jesper Gaarsdal er uenig med mig, idet han argumenterer som følger: "Hvor det svar I leder efter nok er Reflection, da ’refleksion’ af lys skaber bl.a. varme ;^)" Selvom det ikke lige var et argument, jeg havde forudset, synes jeg, at det er så underholdende, at Jesper også kom med i lodtrækningen om præmierne sponsoreret af http://www.microsoft.com/web/webmatrix/ (hvilket som det ses nedenfor viste sig at være ret niftigt).

ASP.NET bogen går til: Mads Sandberg Brun, Hadsten
Pluralsight abonnementet går til: Jesper Gaarsdal, Aarhus


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 13. decembers spørgsmål

December 13, 2011 21:10 by henrik

Hvilket navn går den teknologi i .NET, der sørger for at loade assemblies under? Hint: I andre sammenhæng betegner det noget, der resulterer i blandt andet varme.

Send svaret til lykke@captator.dk senest kl. 4:42 natten til i torsdag. Blandt de korrekte og/eller underholdende svar bliver der udloddet to præmier sponsoreret af http://www.microsoft.com/web/webmatrix/. Skriv dit navn og adresse i malien og angiv ANUGXMAS i subject. Alle der deltager i konkurrencen modtager en mail, når et nyt spørgsmål foreligger.

 


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Julekalender: 8. decembers svar

December 13, 2011 20:25 by henrik

Jeg beklager det noget sene svar på det seneste spørgsmål - kodetravlheden har været meget overvældende de seneste dage...

Der kom kun tre svar på palindromspørgsmålet (så I andre havde haft ret gode chancer for at vinde præmier i denne uge). Til gengæld var alle tre svar særdeles gode svar.

Rasmus Faber-Espensen og Allan Agerholm Dahl havde lavet nogle løsninger, der lå ret tæt på hinanden - løsninger der iøvrigt begge to performede rigtigt, rigtigt godt. De sammenlignede begge enkeltkarakterer, hvilket nok var en ret god ide, idet deres løsninger performede langt, langt bedre end min egen løsning, hvor jeg havde været mere doven og sammenlignet strenge på traditionel manér. Det samme havde Leif Thomsen - og han havde fået en lige så ringe performance ud af det som jeg ;^) Til gengæld havde han også lavet en alternativ og ganske interessant løsning, hvor han konstruerede mulige palindromer for så derefter at tjekke, om de var en del af strengen. Hans egen konklusion var dog desværre, at "det kører herrelangsomt, så jeg droppede helt at teste og optimere yderligere på den fremgangsmåde!". Naturligvis ærgerligt hvis man skal se rent performancemæssigt på det, men han får mange point for den eksperimenterende tilgang. Alle tre kom iøvrigt frem til det rigtige antal unikke palindromer (144) ved søgning i strengen genereret af CreateRandomNumberString(42, 2442).

Som inspiration kommer her Rasmus og Allans løsninger...

Rasmus løsning:

  public static ICollection<string> FindPalindromes(string s)
  {
    var res = new HashSet<string>();
    // Odd length:

    for (int i = 1; i < s.Length - 1; i++)
    {
      for (int j = 1; i - j >= 0 && j + i < s.Length; j++)
      {
        if (s[i - j] != s[i + j])
          break;
        res.Add(s.Substring(i - j, 2 * j + 1));
      }
    }
    // Even length:
    for (int i = 1; i < s.Length; i++)
    {
      for (int j = 1; i - j >= 0 && j + i - 1 < s.Length; j++)
      {
        if (s[i - j] != s[i + j - 1])
          break;
        res.Add(s.Substring(i - j, 2 * j));
      }
    }
    return res;
  }

Allans løsning:

  public static class Palindromes
  {
    public static List<string> FindAllPalindromes(this string input)
    {
      List<string> found = new List<string>();
      if (input.Length >= 3) //this one counts palindromes of uneven length
      {
        for (int i = 1; i < input.Length - 1; i++)
        {
          if (input[i - 1] == input[i + 1])
          {
            found.Add(input.Substring(i - 1, 3));
            int counter = 2;
            while (i - counter >= 0 && i + counter < input.Length && input[i - counter] == input[i + counter])
            {
              found.Add(input.Substring(i - counter, counter * 2 + 1));
              counter++;
            }
          }
        }
      }

      if (input.Length >= 2) //this one counts palindromes of even length
      {
        for (int i = 0; i < input.Length - 1; i++)
        {
          if (input[i] == input[i + 1])
          {
            found.Add(input.Substring(i, 2));
            int counter = 2;
            while (i + 1 - counter >= 0 && i + counter < input.Length && input[i + 1 - counter] == input[i + counter])
            {
              found.Add(input.Substring(i + 1 - counter, counter * 2));
              counter++;
            }
          }
        }
      }
    return found;
  }

  public static int FindPalindromeCount(this string input)
  {
    return input.FindAllPalindromes().Count;
  }

  public static int FindUniquePalindromeCount(this string input)
  {
    return input.FindAllPalindromes().Distinct().Count();
  }
}


Rasmus har allerede vundet to gange og mener ikke at han kan bruge præmierne i flere eksemplarer (men cool nok at han alligevel deltager for udfordringens skyld ;^) så præmierne sponsoreret af http://www.microsoft.com/web/webmatrix/ går til:

ASP.NET bogen går til: Allan Agerholm Dahl, Ringsted
Pluralsight abonnementet går til: Leif Romme Thomsen, Aarhus


Tags:
Categories: Julekalender
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed