1. Certificerede Sitecore CMS .NET udviklere

    Kategori: .NET,Meddelelser,Programmering | Tags: , , ,
    Skrevet af d. 2010-04-09 kl. 18:02:16, sidst opdateret d. 23. jun 2011 kl. 09:37:42

    Så har en flok fra Hinnerup Net været afsted på certificeringskurser: Sitecore Developer Foundation og Sitecore .NET Developer.


    Certified .NET Developers

    Et stort tillykke til de ny-certificerede medarbejdere:

     Michael Schøler
     Jakob Justsen
     Rune Alblas
     Tobias Hinnerup
     Lars Støttrup Nielsen
     Casper Hornstrup

    Vi føler os nu rigtig godt klædt på til at indgå i opgaveløsning med relation til Sitecore CMS, med en fornyet og gennemgående teknisk indsigt, inden for eksempelvis:

    • Rådgivning om forskellige aspekter omkring Sitecore CMS løsninger
    • Udvikleroplæring og workshops
    • Integration af websites, webservices og eksterne systemer med Sitecore CMS
    • Udvikling af komponenter, kontroller, layouts med videre
    • Udvidelser til Sitecore CMS systemet samt administrations-wizards
    • Design, implementering og vedligeholdelse af eksisterende såvel som nye Sitecore CMS Sites

    Strukturel processering af billeder

    Kategori: .NET,Computer Vision,Programmering | Tags: , , , , ,
    Skrevet af d. 2010-01-02 kl. 22:17:43

    Når billeder skal processeres programmatisk anvendes en matematisk metode der kaldes morfologiske transformationer (morphological transformations), mønster genkendelse (pattern recognition) og/eller egenskabs ekstraktion (feature extraction).

    Her i juletiden har mange været påvirket af huller i asfalten langs eksempeltvist Vejle fjordbroen. Hvis vi begiver os ud i et tankeeksperiment er det med relativt simple billedbehandlingsalgoritmer “nemt” at detektere en betydelig andel af opbyggende huller og dermed kunne man forebyggende iværksætte udbedrende vejarbejde før et problem opstår.

    Et eksempel kunne være anvendelse af thresholding, erosion og dilation på en stribe billeder taget af asfaltoverfladen på udvalgte vejstrækninger. For resten af denne artikel antages det, at sådanne billeder er tilgængelige.

    Herunder vises en række billeder af asfaltoverflader hvor der er opstået minimale huller og sprækker, samt hvor alvorlige slaghuller forekommer og er delvist udbedrede. Ligeledes vises en normal asfalt overflade. Under hvert billede vises en morfologisk behandlet udgave, der har været underlagt den samme algoritme for samtlige billeder. Givet disse resultatbilleder er det relativt simpelt at afgøre hvorvidt et behandlet resultatbillede udgør en kandidat til manuel inspektion eller ej.

    Klik på billedet for at se en stor udgave.

    “Proof-of-concept” algoritmen benyttet på resultatbillederne herover er skrevet i .NET C#, og ser overordnet således ud:

    Bitmap input = new Bitmap(filename);
    Bitmap output =
      Dilate(
        Dilate(
          Threshold(
            Dilate(
              Dilate(
                Dilate(
                  Dilate(
                    Grayscale(input)
                  )
                )
              )
            ), 70
          )
        )
      );
    
    output.Save(
      Path.GetFileNameWithoutExtension(filename) +
      ".processed" + Path.GetExtension(filename));

    Tankeeksperimentet skal naturligvis føres videre ud før det bliver praktisk anvendeligt.

    Det er klart at der vil være tale om mange tusinde billeder og adskillige terrabytes data, hvorfor system arkitekturen bag processeringssystemet bør være baseret på en skalerbar multiserver/multikerne teknologi. Et eksempel på en gratis open-source arkitektur kunne være AMD’s Framewave eller nVidia’s CUDA.

    Ligeledes vil der være særlige elementer i billederne der skal tages særlig hånd om, f.eks. vejstriber og overgange mellem forskellige belægningstyper med videre.

    Geo IP redirigering

    Kategori: .NET,Programmering | Tags: , , ,
    Skrevet af d. 2009-09-30 kl. 19:51:47, sidst opdateret d. 23. okt 2009 kl. 21:32:49

    GeoLite City er et praktisk lille Open Source-værktøj fra firmaet MaxMind, som kan være til stor hjælp ved IP redirigering. Applikationen består i al sin enkelthed af en database-fil, samt en række C# klasser, som bruges til at tilgå databasen. Databasen kan bruges til at finde oplysninger om bl.a. land, landekode, region, by, postnummer, længde- og breddegrader og meget andet for en given IP-adresse.

    Det Open Source API fra MaxMind som vi har anvendt består af seks C# klasser, hvoraf kun to skal instantieres for at benytte applikationen til fulde (der er API til yderligere programmeringssprog også, se forrige link). Det drejer sig om klasserne: LookupService og Location.

    LookupService instantieres med en sti til databasen, samt (optionelt) en int, der fortæller om databasen skal læses direkte fra filen, eller gemmes i en buffer. Som standard læses der direkte fra filen, men i hastighedskritiske sammenhænge, kunne man muligvis ønske at cache databasen. Dernæst bruges LookupService objektet til at instantiere Location.

    Location instantieres ved at kalde getLocation() på LookupService med den ønskede IP-adresse som parameter. Når det er gjort, er man klar til at udnytte de mange muligheder GeoLite City tilbyder. Dette gøres i første omgang ved at tilgå de public attributter der ligger i Location.

    Dette eksempel udskriver land og breddegrad for IP-adressen, 208.77.188.166:
    Bemærk at der kastes en exception hvis IP’en ikke findes, og koden bør derfor sættes i en try-catch blok.

    LookupService ls = new LookupService(@"C:\...\...\GeoLiteCity.dat", GEOIP_STANDARD);
    Location l = ls.getLocation("208.77.188.166");
    Console.WriteLine("Land: " + l.countryName);
    Console.WriteLine("Breddegrad: " + l.longitude.ToString());

    Oplysninger om land ville i praksis f.eks. kunne bruges til, at redirigere en hjemmesidebruger hen til en version af siden i det pågældende lands sprog.

    Man kunne også forestille sig, at en hjemmeside ønskede at vise mindre ressourcekrævende udgaver af siden til langsomme forbindelser. Her ville man også kunne benytte sig af GeoLite City. I dette tilfælde kunne koden se nogenlunde sådan her ud:
    Bemærk at man her benytter LookupService og ikke Location.

    int i = ls.getID("208.77.188.166");
    if (i == LookupService.GEOIP_UNKNOWN_SPEED)
    {
       Response.Redirect("http://example.net/standard.asp");
    }
    else if (i == LookupService.GEOIP_CABLEDSL_SPEED)
    {
       Response.Redirect("http://example.net/fast.asp");
    }
    else if(i == LookupService.GEOIP_DIALUP_SPEED)
    {
       Response.Redirect("http://example.net/slow.asp");
    }

    Her er et eksempel på en lille webapplikation, der oplyser land, by og koordinater for angivne IP adresser. Eksemplet vælger som standard www.hinnerup.net serverens globale IP. Der kan indtastes såvel IPv4 som IPv6 adresser i IP-adressefeltet.

    GeoLite City kan hentes her og opdateres en gang om måneden.



    <<< Forrige side - Næste side >>>