business

Rapport från EPiServers partnerdagar 2012

David af Sandeberg 12 juni 2012

EPiServers partnerdagar gick av stapeln i Stockholm 7-8 juni och vi på Ninetech fanns såklart på plats. Förra gången EPiServer samlade alla partners var för två år sedan och då låg mycket fokus på att presentera nyheterna i EPiServer CMS 6. I år handlade det till stor del om att presentera nyheterna i kommande version, EPiServer 7 som lanseras någon gång innan årsskiftet.

Det har varit två mycket framgångsrika år för EPiServer vilket avspeglas ett bredare produktutbud och att marknaden växt i Sverige såväl som andra delar av världen. EPiServer har gått från att tillhandahålla en produkt, ett CMS, till en hel familj av produkter som ska stödja organisationer i hela deras digitala närvaro. Det här visualiserar man i ”The user journey”.

Flera nyheter och några överraskningar presenterades under dagarna där den mest intressanta förstås var den nya versionen EPiServer 7, men även EPiServer Find, Google Analytics integration och Add-On Store är saker som jag och mina kollegor ser fram emot med spänning.

EPiServer 7 – vad händer?

Den största synliga skillnaden i sjuan är att användargränssnittet för redaktörer gjorts om från grunden. Här har man lagt ned mycket energi på analys och utförliga användartester vilket resulterat i ett renare och modernare gränssnitt som ska kännas mer intuitivt att arbeta med. Alla funktioner finns kvar och fler har tillkomit men de har grupperats annorlunda och placerats på paneler som enkelt kan döljas eller lyftas fram. Det traditionella sidträdet finns fortfarande kvar men har inte en lika framstående placering och tanken är att sökfunktionen ska fungera som ett effektivt sätt att navigera till sidor i redigeringsläget.

Det finns nu stöd för att kunna jobba med innehåll mot flera kanaler (t.ex. mobil) och olika skärmupplösningar på ett och samma ställe och att kunna förhandsgranska detta direkt i redigeringsläget. Bättre stöd för video och att kunna ladda upp flera filer samtidigt utlovas också.

Produkten som vi tidigare känt till som Composer har slopats och motsvarande funktionalitet finns nu som en integrerad del av CMSet. Detta gör att redaktören kan jobba med mer flexibla mallar och utöver att jobba med sidor också kan jobba med s.k. ”blocks” som kan placeras ut på sidorna och även återanvändas på olika sidor.

De största förändringarna finner vi under huven av EPiServer 7 som nu har stöd för både ASP.Net Forms och MVC till min och andra utvecklares stora förtjusning. Det har även skett en konsolidering av APIet som nu blir ett och samma för alla produkterna i familjen inklusive Relate Plus och Commerce vilket innebär att de fungerar mer sömlöst än vad de tidigare gjort.

EPiServer Find – en avancerad sökfunktion

Avancerade sökfunktioner har blivit en allt viktigare del av moderna webbplatser och listan på vad som bör innefattas av en riktigt bra sökfunktion kan göras lång; facetterad sök, sökordsförslag, search-as-you-type, synonymordlistor, stöd för böjningsformer, etc. Det blir också allt vanligare att innehåll presenteras utifrån olika filtreringar och kategorier som ett alternativ till den traditionellt hierarkiska indelningen i topp-vänstermeny. Till detta behövs en kraftfull sökfunktion vilket EPiServer hittills saknat. EPiServer tillkännagav för några veckor sedan att de köpt företaget 200 OK AB som utvecklat en mycket imponerande indexerings och sökprodukt och som nu fått namnet EPiServer Find. Denna har stöd för det mesta man kan tänka sig inom området för avancerad sökning och ska dessutom vara mycket snabb och skalbar. Vad EPiServer Find kommer att kosta är inte känt ännu men prisuppgifter har utlovats under de närmaste veckorna. Produkten kommer att finnas tillgänglig som SaaS (Software as a Service) och hostas av EPiServer.

Integration med Google Analytics

En stor majoritet av EPiServers kunder använder Google Analytics och det är något man har tagit fasta på. Under de närmaste veckorna har man för avsikt att släppa en tilläggsmodul till EPiServer som ska integrera CMS:et med Google Analytics för att kunna ge redaktören snabb och enkel återkoppling.

Add-On Store och annat smått och gott

EPiServer kommer också att lansera Add-On Store som är tänkt att fungera ungefär som AppStore där sajtägaren/administratören ges möjlighet att installera tilläggsprodukter direkt via administratörsgränssnittet.

Andra tilläggsprodukter som släppts tidigare under året visades också, däribland SocialReach och SiteAttention. Den förstnämnda ger redaktören stöd att kommunicera via sociala kanaler som Twitter, Facebook och LinkedIn direkt från EPiServers gränssnitt, meddelanden kan anpassas till varje kanal och SocialReach har även inbyggd kampanjanalys där man kan se retweets, kommentarer och likes. SiteAttention är en plugin som ger redaktören SEO-stöd direkt på sidan som redigeras baserad på Google:s rankningsalgoritm.

Det är tydligt att EPiServer inte har legat på latsidan utan har satsat stort på den nya versionen och vi ser med spänning fram emot att vara med på resan tillsammans med våra kunder!

Etiketter:, , , , , , , , , ,

12 juni 2012 |

2 Kommentarer

  1. Kommentar av Nikki den 31 mars 2017 kl: 2:51
    Nikki skriver:

    You’ve really helped me unnsaetrdd the issues. Thanks.

  2. Kommentar av Coatesville, PA car isurnce den 10 maj 2017 kl: 16:44
    Coatesville, PA car isurnce skriver:

    , “And current research suggests that there is no evidence that the pill works by preventing implantation.”Incorrect.And, it also helps to follow the funding. But that is a whole ‘nuther kettle o’ fish.

Tyck till! :)

Ibland är innovation bättre än revolution

Mattias Norell 30 maj 2012

Jag fick min första dator, en Apple Macintosh IIvi, när jag var 15 år. Utan att överdriva kan jag säga att detta förändrade mitt liv. Inte så mycket för att vi nu hade en dator hemma utan för att det var just den datorn, en Apple Macintosh IIvi.

På den här tiden hade ingen av mina vänner en Appledator. De hade, citat, ”riktiga datorer”, slutcitat. Deras datorer använde MS-DOS eller, om de hade en riktig bra dator, Windows 3.1. När de sa ”riktig dator” menade de en dator som det fanns spel till, en vara som det på den tiden fanns ytterst få av till Apples datorer. De få spel som fanns krävde mycket bättre datorer än den jag hade för handen på hjärtat, Apple Macintosh IIvi var ingen snabb dator. Där emot hade den öppnat dörren till en helt ny värld för mig. Jag var inte speciellt imponerad av många av de spel mina vänner hade så att det inte gick att spela på den gjorde inte så mycket (jag hade min Playstation) utan jag började utforska hur den fungerade. Vad det egentligen var som fick en dator att starta och fungera. Detta ledde i sin tur till att jag började lära mig bygga webbsidor, gick vidare till att förstå hur databaser fungerade och slutligen lärde mig programmera både för webben och andra plattformar.

Nu för tiden går det att köpa en bra dator för några tusen. Det skulle gå att uttrycka det på ett annat sätt: dagens 15-åringar behöver i stor utsträckning inte tänka så mycket på själva datorn utan kan spela sina spel, lyssna på sin musik och sedan uppdatera sin Facebook-status om något som är världsnyheter för dem utan att bry sig om datorn klarar av det. På sätt och vis har datorernas otroliga utveckling skjutit sig själv i foten då även om mängden datoranvändare idag är fler än någonsin är det inte en lika stor del som sätter sig ner, lär sig hur och varför datorer fungerar som de gör. Något som över tid kan leda till problem för hela it-branschen.

Denna slutsats kom även en grupp engelsmän fram till. Antalet elever i brittiska skolor som gick datortekniska linjer sjönk och intresset för hur datorer fungerade hade bytts ut till ”hur får jag flest re-tweets på Twitter”. De bestämde sig för att ge brittiska skolbarn en liten knuff i rätt riktning. Raspberry Pi Foundation, och i förläningen resultatet Raspberry Pi, föddes.

Raspberry Pi är en dator i storleken av ett kreditkort.  Den är inte speciellt kraftfull eller användbar jämfört med dagens datorer utan den är byggd med en enda tanke, att den ska vara enkel att leka med och lära sig av. Prestandamässigt går den att jämföra med en dator från åren 1997-2000 men med trumfkortet att tack vare en potent grafikkrets kan spela upp film i full hd-kvalité samt rendera 3D-grafik i hög upplösning. Man skulle kunna säga att den, bortsett från grafikchipet, är en ganska medioker sak. En modern smartphone i stil med iPhone 4S eller Samsung Galaxy SII springer segervarv runt en Pi om man ser till processorkraft. Men, om man enbart ser till processor och ramminne har man missat poängen. Den här lilla datorn kan för dagens 14-15-åringar vara det min gamla Applebruk var för mig. En väg in på vad som i mitt fall visade sig vara helt rätt spår i livet. Den har det som behövs för att lära sig allt från att bygga webbsidor till avancerade 3D-spel. Har man dessutom elkunskaper kan man enkelt (nåja) bygga ut sin Pi med egen hårdvara. Den är kort och gott ett roligt sätt att lära sig hur en dator fungerar, inte genom att läsa hur man kan göra i en bok utan praktiskt lära sig genom att göra det själv. Att en Raspberry Pi endast kostar 35 dollar gör det förmodligen ännu enklare för skolor, föräldrar och dataintresserade att motivera ett köp. Det priset är dessutom för premiummodellen, det finns en budgetmodell för 25 dollar.


Raspberry Pi är en väldigt liten men väldigt trevlig sak.

Det är kanske inte svårt att förstå varför jag lyfter på hatten för personerna bakom Raspberry Pi-projektet och önskar att skolor även i Sverige beställer både en och tusen exemplar. Inte för att jag tror en Raspberry Pi omvänder alla landets skolungdomar till dataingenjörer men några kommer säkert upptäcka något de inte annars skulle gjort. Det är såklart inte den slutgiltiga lösningen på att få ungdomar intresserade av datorer men några skulle säkert ta det till sig och vilja lära sig mer. De andra som inte får samma aha-upplevelse kan säkert komma på något annat att använda den till.

Uppdatera sin Facebook-status till exempel.

Etiketter:,

30 maj 2012 |

1 kommentar

  1. En bit ur ”Ibland är innovation bättre än revolution” | blog.mattiasnorell.com skriver:

    […] Läs resterande inlägg på Business by web. « Säg hej till familjens nya medlem – del 3 […]

Tyck till! :)

Gör GDI+ till ett minne blott – använd WPF!

Anders Tufvesson 03 mars 2012

I var och vart annat projekt man sitter i (i alla fall när det gäller e-handel eller integration) så skall det skalas bilder. De skall ha bestämda storlekar, bestämda bredder, de ska beskäras och ramas in.

GDI+ ligger under System.Drawing vilket har en liten drawback, ända upp till senaste versionen av .NET (4.5) så skriver Micosoft så här på MSDN:
Classes within the System.Drawing namespace are not supported for use within a Windows or ASP.NET service. Attempting to use these classes from within one of these application types may produce unexpected problems, such as diminished service performance and run-time exceptions. For a supported alternative, see Windows Imaging Components.
GDI+ ligger säkerligen på många av våra webbar och i många av våra Windows-tjänster och fungerar riktigt bra, men varför chansa i fortsättningen? Dessutom kan jag tycka att resultatet av det som GDUI+ genererar inte alltid är tillfredsställande ur en kvalité. Men det finns en lösning!

Windows Imaging Components

Det finns två sätt att arbeta med Windows Imaging Components (vidare kallat WIC). Det ena är via Windows Presentation Foundation (vidare kallat WPF) och det andra är via COM. Det senare alternativet kan vara användbart där vi har problem med trust eller vi inte vill programmera i något av de språk som tillhandahålls inom ramen för .NET. Men för den här gången kommer vi fokusera på C#.

Tanken jag har med detta lilla blogginlägg är att ge er alla lite hjälp på vägen, lite kod ni kan kopiera och utgå i från i era egna projekt. Så slipper ni skriva allt från början, vilket gör en övergång ganska mycket smidigare.

Jag har fokuserat på tre olika typer av bildomskalingar.

  • En omskalning där vi håller en av sidorna konstant och låter den andra skala efter behov. Det här är det klassiska sättet att skala om bilder.
  • Där vi använder en fixerad storlek (både höjd och bredd) på resultatet och lägger in vår omskalde bild i denna, så att den får plats.
  • Samt en tredje variant där vi, likt vår förra variant, använder en fixerad storlek på bilden men den här gången så skalar vi ner bilden så att en av sidorna exakt matchar en av resultatet sidor och sedan beskär vi bort överflödet av bilden.

Klassisk omskalning

Den klassisk omskalningen är bara ”vänligt” implemneterad, med det menar jag att den alltid kommer att skala om en bild proportionellt. Den väljer alltid den skalning som blir minst om man anger båda parametrarna, annars kan man skicka in 0 (noll) på en av dem för att vara övertygad om att skalning sker med den aktuella parametern i avseende.

private BitmapFrame ResizeImage(BitmapSource input, int width, int height) {
  double newHeightRatio = (height / (double)input.PixelHeight);
  double newWidthRatio = (width / (double)input.PixelWidth);

  if (newHeightRatio <= 0 && newWidthRatio > 0)
    newHeightRatio = newWidthRatio;
  else if (newWidthRatio <= 0 && newHeightRatio > 0)
    newWidthRatio = newHeightRatio;

  var scale = Math.Min(newWidthRatio, newHeightRatio);
  if (scale > 1)
    scale = 1;
  var target = new TransformedBitmap(input, new ScaleTransform(scale, scale));
  return BitmapFrame.Create(target);
}

WPF innehåller en så kallad BitmapSource som transformerar vår bild, denna tar emot en transformationstyp och .NET tillhandahåller några standardiserade. Dessa är

  • MatrixTransform
  • RotateTransform
  • ScaleTransform
  • SkewTransform
  • TranslateTransform

Just nu kommer jag enbart att fokusera på ScaleTransform eftersom det är den som är mest intressant för mig, men här kan vi lätt modifiera koden ovan för att exempelvis rotera eller skeva en bild istället.

Det här sättet att skala bilder med WPF är det snabbaste och ger en helt godkänd bildkvalité. Vi har inte heller någon möjlighet att direkt påverka bilddjupet, resultatbilden kommer i detta fall att ha samma upplösning (DPI) som orginalet.

Det här är ressultatet av en sådan här omskalning. Jag har talat om att bilden skall vara 200 px hög.

Det inte den här metoden ger möjlighet till är att välja vilken algoritm som skall användas för omskalningen. För att kunna ange detta måste vi använda ett annat sätt när vi skalar om bilderna, och förlorar då effektivitet. Det här är en avvägning man får göra i fall till fall, dock tycker jag att den algoritm som används av exemplet ovan ger en bra bildkvalité till en bra hastighet.

public BitmapFrame Resize(BitmapFrame input, int width, int height, BitmapScalingMode salingMode, int dpi) {
  var group = new DrawingGroup();
  RenderOptions.SetBitmapScalingMode(group, scalingMode);
  group.Children.Add(new ImageDrawing(photo, new Rect(0, 0, width, height)));
  var targetVisual = new DrawingVisual();
  var targetContext = targetVisual.RenderOpen();
  targetContext.DrawDrawing(group);
  var target = new RenderTargetBitmap(width, height, dpi, dpi, PixelFormats.Default);
  targetContext.Close();
  target.Render(targetVisual);
  var targetFrame = BitmapFrame.Create(target);
  return targetFrame;
}

I exemplet ovan kan man se hur vi kan välja både skalningsmetod och djup i bilden som vi producerar. Vi använder en helt annan metodik för att skala bilderna vilken tar mer kraft från systemet.

Skala en bild och placera den i en ram

Om man alltid vill ha en fast storlek på bilderna, tillexempel till en produklista där det skulle se otroligt dumt ut om bilderna var i olika bredder eller höjder, kan man välja att lägga dem i en ”omgivande ram”. Lösningen är vanlig och gör det mycket enklare att designa webbplatser.

public BitmapFrame ResizeAndFit(BitmapSource input, int width, int height) {
  if (input.PixelWidth == width && input.PixelHeight == height)
    return BitmapFrame.Create(input);

  if (input.Format != PixelFormats.Bgra32 || input.Format != PixelFormats.Pbgra32)
  input = new FormatConvertedBitmap(input, PixelFormats.Bgra32, null, 0);

  var scale = Math.Min((double)width / input.PixelWidth, height / (double)input.PixelHeight);
  if (scale > 1)
    scale = 1;

  var x = (int)Math.Round((width - (input.PixelWidth * scale)) / 2);
  var y = (int)Math.Round((height - (input.PixelHeight * scale)) / 2);
  var scaled = new TransformedBitmap(input, new ScaleTransform(scale, scale));
  var stride = scaled.PixelWidth * (scaled.Format.BitsPerPixel / 8);
  var result = new WriteableBitmap(width, height, scaled.DpiX, scaled.DpiY, scaled.Format, null);
  var colorFrame = GetColorBitmap(width, height, Brushes.White);
  var colorFrameStride = colorFrame.PixelWidth * (colorFrame.Format.BitsPerPixel / 8);
  var colorFrameData = new byte[colorFrame.PixelHeight * colorFrameStride];
  var data = new byte[scaled.PixelHeight * stride];

  colorFrame.CopyPixels(colorFrameData, colorFrameStride, 0);
  scaled.CopyPixels(data, stride, 0);

  result.WritePixels(new Int32Rect(0, 0, width, height), colorFrameData, colorFrameStride, 0, 0);
  result.WritePixels(new Int32Rect(0, 0, scaled.PixelWidth, scaled.PixelHeight), data, stride, x, y);

  return BitmapFrame.Create(result);
}

private BitmapSource GetColorBitmap(int width, int height, Brush color) {
  var renderBitmap = new RenderTargetBitmap(size.Width, size.Height, 96, 96, PixelFormats.Pbgra32);
  var drawingVisual = new DrawingVisual();
  using (var context = drawingVisual.RenderOpen()) {
    context.DrawRectangle(color, null, new Rect(0, 0, size.Width, size.Height));
  }
  renderBitmap.Render(drawingVisual);
  return renderBitmap;
}

Den här typen av omskalning blir lite mer avancerad. Här måste vi nämligen rita ut vår omskalde bild i en ytterligare bild. Först så ser vi till att båda våra bildformat är på samma format, om vår inkommande bild inte är 32bitars RGB (Bgra32) så omvandlar vi källan till detta, exempel på andra format kan vara 16bitars RGB eller CMYK.

Efter detta skalar vi ner bilden så att den får plats i vår ram. Det vi gör är att vi räknar ut proportionell skalning i både X- och Y-led för att sedan välja den som är minst. Det kommer vara den skalfaktor vi använder för att se till att bilden får plats i vår destinationsstorlek.

Som standard är vår nya skrivbara bitmap transparent, detta fungerar mycket bra för PNG och kanske till och med är önskvärt. Det vi i så fall gör är att vi raderar våran colorFrame från koden ovan och låter inte denna skrivas till bilden. När vi skalar foton är det i de flesta fall önskvärt att spara bilderna som JPEG eftersom det tar minst plats. JPEG stödjer inte transparens och därför måste vi måla vår bakgrund i en önskad färg.

Vi kopierar sedan över vår bakgrund och därefter vår bild till vår destination och returnerar denna. Omskalningen är klar!

Det här är resultatet. Jag har talat om att jag vill ha en bild som är 500 px bred och 200 px hög, och med blå bakgrund.

Skala en bild och beskär det som inte får plats

Om du vill ha en fast bildstorlek men inte vill ha en ”ful” färgad ram kring din bild så kan det vara nog så bra att beskära bort en del av bilden. Om dina orginalbilder ligger väldigt nära dina omskalade bilder i proportioner så är detta ett utmärkt alternativ, på bilderna som jag använder blir resultatet dessvärre mycket sämre. s

public BitmapFrame ResizeAndCrop(BitmapSource input, int width, int height) {
  if (input.PixelWidth == width && input.PixelHeight == height)
    return BitmapFrame.Create(input);

  var useScaleH = (width / (double)input.PixelWidth) * input.PixelHeight;
  var newSizeH = 0;
  var newSizeW = width;
  if (useScaleH < height) {
    var newSizeH = height;
    var newSizeW = 0;
  }

  var scaled = ResizeImage(input, newSizeW, newSizeH);
  var x = ((scaled.PixelWidth - width) / 2);
  var y = ((scaled.PixelHeight -height) / 2);
  var stride = scaled.PixelWidth * (scaled.Format.BitsPerPixel / 8);
  var result = new WriteableBitmap(width, height, scaled.DpiX, scaled.DpiY, scaled.Format, null);
  var data = new byte[scaled.PixelHeight * stride];
  var copyWidth = scaled.PixelWidth - (scaled.PixelWidth - width);
  var copyHeight = scaled.PixelHeight - (scaled.PixelHeight - height);
  if (x < 0) {
    x = 0;
    copyWidth = scaled.PixelWidth;
  }
  if (y < 0) {
    y = 0;
    copyHeight=scaled.PixelHeight
  }

  scaled.CopyPixels(data, stride, 0);
  result.WritePixels(new Int32Rect(x, y, copyWidth, copyHeight), data, stride, 0, 0);

  return BitmapFrame.Create(result);
}

Det här ser mer avancerat ut än vad det är. Vi måste först räkna ut vilken sida som, när vi skalat ner bilden, kommer att vara lika stor som den nya bilden medan den andra sidan är större. När vi gjort det kan vi skala ner bilden proportionellt.

Vi skapar därefter en destinationsbild som är exakt så stor som vi vill ha den. Eftersom vår nedskalade bild är större än denna måste vi räkna ut en ram som skall användas för att beskära bilden. Det gör vi genom att räkna ut hur mycket som ”hänger över” i bredd- och höjdled. Vi centrerar bilden genom att dela dessa värden i hälften och koperar nu över de pixlar som ligger inom ramen till vår destinationsbild.

Viktigt att notera här är att om orginalbilden är mindre än destinationsbilden så kommer vi bara kopiera över bilden till det övre vänstra hörnet. Det är för att vi inte vill sträcka ut bilden och förstöra den. Det bästa är inte använda denna metod vid sådana bilder, utan i stället lösa det problemet på annat sätt, exempelvis genom att lägga en ram kring den.


Det här är resultatet. Jag har talat om att bilden skall vara 500 px bred och 200 px hög. Min orginalbild är stående och denna liggande, därför förlorar vi mycket av bilden. Två bildformat som ligger nära varandra i proportioner resulterar

Avkoda och koda bilder från disk/ström.

För att allt det här ska fungera behöver du också några småsaker, exempelvis en bild-decoder och en bild encoder. Självklart finn detta inbyggt och är inte direkt rocket-sience. Här kommer lite exempel:

Stream orginalImage = null; //Load stream from image-file or like.
var orginalImageDecoder = BitmapDecoder.Create(
                                    orginalImage,
                                    BitmapCreateOptions.PreservePixelFormat,
                                    BitmapCacheOption.None);
BitmapSource source = orginalImageDecoder.Frames[0];

När du skall spara dina omskalade bilder kan du göra det i sex format som Microsoft tillhandahåller. Dessa är

  • BmpBitmapEncoder
  • GifBitmapEncoder
  • JpegBitmapEncoder
  • PngBitmapEncoder
  • TiffBitmapEncoder
  • WmpBitmapEncoder

alla dessa format används på samma sätt som nedan. JpegBitmapEncoder har dessutom möjlighet att sätta kvalité för kompressionen.

Stream resizedImage = null; //Init a writable stream for the destination
BitmapFrame resizedImageFrame = null; //Frame from one of the resize algorithms above.
var targetEncoder = new JpegBitmapEncoder(){
    QualityLevel = 85;
};
targetEncoder.Frames.Add(resizedImageFrame);
targetEncoder.Save(resizedImage);

Jag hoppas att det här har väckt dina tankar lite kring att kanske använda WPF för att göra din bildmanipulering i framtiden.

Etiketter:, , , , , , , , , , , , , , ,

03 mars 2012 |

3 Kommentarer

  1. Kommentar av Bobbi den 31 mars 2017 kl: 3:01
    Bobbi skriver:

    You’re a real deep thnekir. Thanks for sharing.

  2. Kommentar av Adiana den 31 mars 2017 kl: 3:15
    Adiana skriver:

    That’s a smart answer to a diuffcilt question.

  3. Kommentar av Santa Clara insuranse den 16 maj 2017 kl: 11:20
    Santa Clara insuranse skriver:

    Hey. Very cool blog!! Man .. Excellent .. Amazing .. I’ll bookmark your website and take the feeds additionally…I’m happy to locate a lot of useful information right here within the post. Thanks for sharing..

Tyck till! :)

Facebooks nyheter spiken i kistan för Google+?

Anders Tufvesson 22 september 2011
Facebook Ticker

Facebook Ticker

Google har jobbat hårt för att på kort tid försöka komma ikapp Facebook med sin egen sociala plattform Google+. I dag lanserade Facebook ett flertal nyheter som vad jag tror kommer öka avståndet mellan plattformarna ordentligt.

Just nu pågår Facebooks årliga utvecklarkonferens och under keynoten presenterades en rad nya funktioner som kommer att rullas ut de närmaste veckorna. Timeline är den mest iögonfallande eftersom det är en total redesign av profilen och innebär ett nytt sätt att berätta om sig själv över längre tid.

Det jag tycker är mest intressant är utökning av Open Graph, det vill säga det nät av sociala kopplingar Facebook skapat mellan personer, företag, platser, produkter, m.m. Vi går nu från att ”gilla” saker till att istället göra saker utan att behöver micro-dela allt. Ett exempel är en tätare integration med Spotify och många andra media-leverantörer. Spotify kommer med det nya Open Graph automatiskt dela med sig av vad du lyssnar på och dina vänner kan upptäcka, och sen lyssna och interagera och dela upplevelsen med dig direkt.

Sen blir det upp till oss utvecklare att uppfinna nya typer av appar som kan utnyttja de nya funktionerna på intressanta sätt åt våra kunder.

Etiketter:, , , , ,

22 september 2011 |

0 Kommentar

   Inga kommentarer än... Bli den första!

Tyck till! :)

Lägg till Googles nya +1-knapp

Anders Tufvesson 29 juni 2011

Google har nu även för svenska sajter släppt sin egen variant av gilla-knappen liknande den vi är vana att använda på Facebook. Skillnaden med den nya är att det är just Google som ligger bakom. Tanken är nämligen att +1, som knappen kallas, skall påverka sökningar för dig själv och dina vänner.

Nästa gång du googlar t.ex. efter vilket semestermål du skall välja, kan ställen som dina vänner +1:at visas högre upp i sökresultatet. Detta är förstås mycket intressant ur sökmotoroptimerings-synpunkt.

Om du har en webbplats av något slag kan du nu med några enkla steg lägga upp den nya knappen.

Skapa din egen Google +1 knapp

Besök +1:a din webbplats. Här kan du välja vilken storlek knappen skall ha, samt vilket språk du vill använda. Kopiera sedan kodsnutten och klistra in den på lämpligt ställe på webbplatsen.

Om du vill lägga in knappen på flera ställen på samma sida, t.ex. för varje nyhet eller blogginlägg kan du under avancerade alternativ ange vilken adress som skall +1:as.

Avancerade länkalternativ

Etiketter:, ,

29 juni 2011 |

0 Kommentar

   Inga kommentarer än... Bli den första!

Tyck till! :)

Umbraco Codegarden 11 – Konferens i Köpenhamn

Anders Tufvesson 27 juni 2011
Ninetech på Codegarden 11

Ninetech på Codegarden 11
Foto av Douglas Robar

För två veckor sedan var jag i Köpenhamn och besökte Codegarden 11 som är en konferens för utvecklare och användare av Umbraco CMS. Konferensen som sträckte sig över tre dagar var såklart fullspäckad av presentationer, nyheter och handfasta tips, men för mig var det alla möten med nya människor som jag kommer att minnas. Även kvällarna var fyllda med aktiviteter som inbjöd till samtal över en bit mat och en öl, eller handgripliga, gemensamma utforskningar över en laptop.

För en community som är byggd kring öppen källkod tror jag den här typen av konferenser är helt avgörande för plattformens spridning och överlevnad. Om man jämför med andra konferenser jag besökt som är, skall vi säga drivna av mer proprietära syften, är det här ett helt annat klimat.

Något som var en stor snackis i år var E-handel. Till Umbraco har det blommat upp inte mindre än fyra olika e-handelsmoduler med lite olika inriktningar och licensmodeller. Det finns allt från fria alternativ med öppen källkod till mer kommersiella produkter som börjar kännas mogna och kompetenta.

Det kommer bli ett spännande år där jag hoppas vi får leverera mycket schyst affärsnytta och e-handel med hjälp av Umbraco.

Etiketter:, , ,

27 juni 2011 |

1 kommentar

  1. Kommentar av Lilian den 30 mars 2017 kl: 16:09
    Lilian skriver:

    Frankly I think that’s absetuloly good stuff.

Tyck till! :)