Etikettarkiv: Google

Google favoriserar https

Som Google meddelade för några månader sedan gällande att de avser att favorisera webbsajter som använder sig av https är nu officiellt bekräftat.

Detta är så klart en bra utveckling men många webbhotell åtminstone i Sverige verkar inte riktigt vara med på banan.

För att citera några webbhotell:

”För att ha SSL-certifikat under eget domännamn krävs en egen IP-adress” – Loopia

”Ett SSL-cert med inkluderad privat ipv4-adress” – Binero

Det behövs ej egen IP-adress utan Server Name Indication (SNI) finns implementerat i TLS (SSL) och bör användas istället. Som alla vet så är IP-adresserna slut sedan länge och att slösa på detta sätt gynnar ingen som webbhotellen föreslår.

Att kräva privat IP-adress för tls är lite 1900-tal tycker jag, eller i varje fall före 2010. Vid 2010 påstår jag tåget gick.

Skriver Internetgurun Patrik Fältström i gruppen Kodapor på Facebook.

Det finns även en mängd andra saker som bör tänkas på (lämna gärna en kommentar om jag glömt något mer)

  • Använd protokollrelativa URL:er dvs // istället för http://domän (finns i RFC 1808 sedan 16 år tillbaka)
  • Testa så du får bra betyg via Qualys SSL-Test
  • Håll koll på när certifikatet förfaller
  • Hur gör du revokering om något inträffar såsom Heartbleed?
  • Använd PFS, secure cookies och HSTS.
  • Vilket certifikat ska användas? Domänvaliderat eller EV? Wildcard?
  • Kontollera så du ej har mixed content:

Mixed content

Lättaste sättet att hitta mixed-content är enligt mig att använda Chrome Developer Tools och klicka på Networks-tabben.

Och jag säljer så klart SSL-Certifikat via https.se.

Google Adsense nu med https-stöd

Google har nu lagt in stöd för https-sajter för de som använder Google Adsense. Rätt minimal förändring som behövs göras för att visa koden:

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">
</script>

Denna kodsnutt gäller så klart om du använder asynkron annonskod, vilket jag hoppas att du gör. Denna förändring gör bl.a. att eventuella felmeddelanden i webbläsaren såsom nedan försvinner om du visar annonser på en https-sajt:

https varning

Att lämna ute http eller https i sökvägen och i stället börja med två slash \\ kallas för protokoll-relativa URL:er och är ett bra sätt att ej erhålla en mixad http/https-sida av misstag.

PS: Använd rabattkoden UTVBLG för 100 kr rabatt på SSL-certifikat via min tjänst https.se

Källa: Google

Google AdSense intäkter 2012

Här kommer en liten sammanställning gällande intäkter från Google Adsense under året 2012:

Skärmavbild 2013-01-13 kl. 12.48.28

Den mörkare gröna linjen är årets intäkter och den ljusare är för 2011. Som man kan se så började 2011 bättre för att sedan ligga under 2012. Annars så var 2012 relativt likt 2011 gällande intäkterna.

Och precis som 2012 så försöker jag bli mindre och mindre beroende av Adsense, men dock inte helt trivialt då många tjänster jag byggt är baserade på annonsintäkter.

Se även mina Google Adsense intäkter för 2010 här.

Så tjänar du mer pengar på Google AdSense

För några år sedan så skrev jag följande blogginlägg om hur du kan fördubbla dina Google Adsense-intäkter.

Nu tänkte jag skriva igen om lite nya erfarenheter och lärdomar:

Placera ut fler än tre annonser

Först och främst, du kan enbart placera tre stycken annonsenheter per webbsida. Vad som dock ej är inräknat i detta är länkenheter som du även kan placera tre stycken av.

Vad många gör är också att ”baka in” dessa länkenheter i en befintlig menystruktur vad gäller färg exempelvis. Detta är dock något som kan vara emot Google Adsense-policyn vad som gäller placering av annonser.

Använd nytt större annonsformat

Även värt att tänka på är att Google nu har ett nytt annonsformat som är 300×600 i storleken, och här kan du hitta mer information om detta format. Helst hade jag själv sett 600×300 i storleken då just 300×600 kan vara lite svårt att placera ut då den är lång och smal.

Algoritmer, Facebook och f8

I torsdags kväll så hängde jag hemma hos Tripbirds med bl.a. Improove och Readmill och  tittade på när Mark Zuckerberg körde sitt keynote och berättade om nya fräsiga funktioner i Facebook. En en av de saker som slog mig gällande de utannonserade förändringarna är just algoritmer och dess betydelse som ökar markant.

Inom SEO-branschen har man länge försökt att förstå hur Googles rankningsalgoritmer fungerar men nu när Facebook spelar en allt större roll i våra dagliga beslut vid köp så kommer även fler att försöka sig på att lista ut hur Facebooks algoritmer fungerar. Du kanske spontant tänker: Men det handlar ju om vad mina vänner rekommenderar och gör? Och i sin grundform handlar det om just det. Men algoritmerna kommer att ranka, gruppera och sortera just det som vi gör.

Att en av mina vänner tittat på filmen Hackers kanske inte gör att jag kommer att uppmärksamma händelsen men att tre personer just tittade på filmen gör att den händelsen får ett större utrymme i mitt flöde eller på den specifika sidan för det verbet ”watching”. Men som alltid så kommer det finnas utrymme för manuella eller automatisk viktning av algoritmerna till den som betalar bäst?

Filterbubblan blev plötsligen mycket större.

Google +1

Nu har jag installerat Googles senaste +1-knapp här på bloggen som skall synas vid varje blogginlägg längst uppe till höger. När någon som du är vän med använder knappen så kommer detta att synas i sökresultatet. Ungefär som delade länkar från Twitter, Facebook och Google Reader(?) som dyker  i sökresultatet.

De sajter du plussar på synes även på din Google Profil samt så kommer annonser att anpassas efter den typ av sajter som du plussar på. Här finns sekretesspolicyn för Google Plus One.

”Rekommendationer när du vill ha dem.”

Vad händer då över nätverket när man trycker på knappen? Jo ett JSON RPC anrop görs till ungefär följande URL med hjälp av HTTP POST:

https://clients6.google.com/rpc?key=AIzaSyCKSbrvDasunBoV16zDH9R33D88CeLr9DF

Följande skickas från klienten:

[{”method”:”pos.plusones.insert”,”id”:”pos.plusones.insert”,”params”:{”cdx”:”154211″,”id”:”http://techcrunch.com/2011/03/30/google-plus-one/”,”source”:”widget”,”container”:”http://techcrunch.com/2011/03/30/google-plus-one/”,”userId”:”@viewer”,”groupId”:”@self”},”jsonrpc”:”2.0″,”key”:”pos.plusones.insert”,”apiVersion”:”v1″}]

Och svaret från Google är enligt följande:

[
{
”result”: {
”kind”: ”pos#plusones”,
”id”: ”http://techcrunch.com/2011/03/30/google-plus-one/”,
”isSetByViewer”: true,
”metadata”: {
”type”: ”URL”,
”title”: ” With +1, Google Search Goes Truly Social — As Do Google Ads ”,
”globalCounts”: {
”count”: 0.0
}
}
},
”id”: ”pos.plusones.insert”
}
]
Ovan förfrågan går alltså krypterat över https och det enda som är unikt är troligtvis key=X. Undrar om det är möjligt att göra en egen knapp?

Här kan du generera HTML-kod för knappen eller så kan du ladda hem ett WordPress-plugin här.

Andra som bloggat om detta: Nikke, Magnus, Kristoffer.

SSL-certifikat från https.se

Apple iOS utvecklarlicens

Efter många om och men så har jag äntligen blivit godkänd av Apple att utveckla iOS-appar till iPad, iPhone osv. Förfarandet att godkännas var inte helt lätt då Apple ville att jag skulle faxa(?!) in ett registreringsbevis på mitt bolag. Som tur var så köpte jag en fax på B Locket för några år sedan men insåg rätt snabbt att jag inte hade någon analog förbindelse att koppla in den på.

Bild CC http://www.flickr.com/photos/78518472@N00

Efter lite Google-hjälp så var det någon som föreslog att det gick att använda sig av någon ”gratis fax på Internet”-tjänst som skulle leverera dessa handlingar till Apple. Sagt och gjort så testade jag några stycken men hörde inte så mycket av Apple så jag kontaktade dess support som svarade att de ej godkände att handlingarna faxades via tredje part(!).

Nåväl, så jag skickade tillbaka en länk till Dropbox där handlingarna återfanns men inte det heller fungerade så till slut så bifogade jag dem som filer till ett svar på supportbrevet. Efter några dagar så ringer en person från Apple i USA och bekräftar då att jag har någon slags koppling till mitt företag. Pust, vilken process.

Nu återstår bara att införskaffa en Macdator.

10 saker att tänka på vid skapande av API

Så du går i tankarna på att tillhandahålla ett API? Då har du kommit rätt. Jag försöker här att redogöra över de tankar jag har när det gäller det mesta vid API utveckling.

Först och främst så bör du ställa dig frågan om ett API verkligen är rätt, och i de flesta fall så skulle jag säga att API är rätt väg. De fall då ett API kanske inte är lämpligt är då din tjänst enbart bygger på ett annat API och ej tillför något mervärde. Prioritering är också en viktig punkt, i flertalet fall så kan det tillåmed vara så att ett API skall finnas innan en webbsida finnes (framförallt i offentlig sektor).

Om du tillhandahåller en iPhone-app eller någon annan typ av extern tjänst så är detta också tillämpningsbart.

1. Placera ditt API under ett eget DNS-namn, exempelvis api.domän.se. Även om api.domän.se pekar till domän.se till en början.

2. Detta har med ovan punkt att göra: Exportera din data till en separat server som exempelvis ligger i molnet. Detta för att enkelt göra ditt API redundant och icke beroende av din ordinarie tjänst som kanske får problem om du får tusentals API-förfrågningar per sekund. Kan dock bli problem med realtidstjänster om API:et tillhandahåller sekundaktuell information.

3. Fundera om du bör tillhandahålla en krypterad version över HTTPS. Fundera även över om anrop bör vara signerade, för https i sitt standardutförande verifierar ej klient, bara server. Självklart kan du köpa SSL-certifikat via min sajt https.se.

4. Vilket format är lämpligast. JSON REST, XML SOAP eller annat? Jag rekommenderar REST JSON. Se Google eller FRAPI

5. Vill du hålla koll på vilka som anropar ditt API? Då bör du tillhandahålla en API-nyckel och bygga en registreringsprocess för detta. Enklast är att använda Google Forms. Det finns ofantligt många sätt att bygga detta förfarande.

6. Du bör införa kontroll av anrop samt begränsningar. Detta kan vara bra för att förhindra miljontals anrop i sekunden eller forcering av lösenord/användarnamn. Begränsa förfrågningar på så mycket som du bara kan, exempelvis IP-nummer.

7. Vilken licens kan användas? Här kan myndigheter få problem då CC-licenser kan gå emot lagstiftning. E-delegationen håller på med ett arbete om bl.a. detta och kommer att tillhandahålla mer information.

8. Upprätta en changelog, blogg eller E-postlista (Google Groups) för att berätta om eventuella förändringar. Här kan det även vara bra att prefixa alla API-anrop med versionsnummer för att bibehålla bakåtkompabilitet. Exempelvis: api.domän.se/v1/anropstyp

9. Glöm framförallt inte att erbjuda dokumentation och kod-exempel på hur API:et används. Berätta om innehållet, begränsningar, datatyper, relationer, statuskoder osv. Kanske ett forum för frågor? Wiki? Status-sida för att berätta om eventuella problem med ditt API eller fördröjningar. Se Pingdom eller Watchmouse.

10. Övriga punkter: Länka till de som använder ditt API för att uppmuntra användning. Ta betalt för ditt API? Berätta för Mashup.se att du har ett API. Hur länge bör du cacha? Pagination, page=1 vs.  cursor: start_id=1234. Loggning? If-Modified-Since header?

That’s it! Har säkert glömt många bra saker, skriv en kommentar och berätta vad du saknar.

Så kommer du igång med Node.js

Först och främst så kanske jag ska skriva lite om vad Node.js är för något. Som du ser av filändelsen så är det ett JavaScript-språk och används på serversidan för att kommunicera med exempelvis en webbklient (webbläsare).

Node.js är eventbaserat, litet och lätt till skillnad mot exempelvis Apache. Dock är det värt att notera att Node.js inte är är skapat för att lösa alla problem utan har uppstått från realtidswebbens behov av snabb, skalbar och minnessnål.

Prestandamässigt så kan Node.js jämföras med Nginx (när enbart webbsidor levereras). Bland användare av Node.js så kan Yammer och Plurk nämnas.

— Installation —

Ladda hem källkoden som tar.gz eller zip från Github: https://github.com/joyent/node eller med kommandot:

$ git clone git://github.com/ry/node.git

Gå sedan in i katalogen som skapats och skriv ./configure och då skall det varna om något saknas, sen är det bara skriva make. Ta en kopp kaffe och vänta några minuter. Bland annat så byggs Googles V8 JavaScript-motor.

Om du som jag använder FreeBSD så kommer din byggprocess att misslyckas på två ställen, först och främst så måste du använda gmake istället för make och sedan så måste du lägga på den patch som återfinnes här.

'build' finished successfully (2m10.790s)
$ ./node -v
v0.5.0-pre

För att lättare komma åt node-binären samt dess verktyg så glöm inte att skriva gmake install (eller make install).

— Hello world med Node.JS —

Nu är det dags att skriva vårt första script samt se till att Node hanterar detta program korrekt. Scriptet helloworld.js ser ut enligt följande:

var sys = require("sys");
var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(80);

console.log('Server running at port 80');

Sedan för att se till att node exekverar och levererar ovan på TCP port 80 så skriver vi enligt följande:

$ sudo node helloworld.js
Server running at port 80

Observera att du måste köra detta med root-behörighet eftersom vi lyssnar på port 80. Många väljer att använda port 8080 eller liknande men det är inget jag rekommenderar eftersom många brandväggar ej släpper igenom denna port. Läs denna guide hur du undviker att köra som root men ändå kan använda port 80. Att köra program som root är något som du vill undvika i största mån då detta kan innebära en säkerhetsrisk.

Koden ovan är tämligen självförklarande. Om du vill använda Nginx + PHP på samma server så kan du binda till olika IP-nummer genom att ändra .listen(80); till .listen(80, ”1.2.3.4”); eller det IP-nummer du vill binda till. Du måste även binda Nginx till det andra IP-nummret.

Node.JS i bakgrunden

Om du vill ha möjligheten att lägga program i bakgrunden vilket är troligt i en skarp miljö så måste du göra enligt följande förfarande då det saknas en modul vid namn daemon.node.

  1. Ladda hem koden från https://github.com/Slashed/daemon.node
  2. Kompilera med hjälp av verktyget node-waf (följer med Node.JS) på följande sätt: node-waf configure build
  3. Lägg den binär med sökväg build/default/daemon.node i samma mapp som helloworld.js
  4. Byt ut koden mot nedan där två rader är tillagda:
var sys = require("sys");
var daemon = require("./daemon");
var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(80);

console.log('Server running at port 80');
daemon.start();

Startar du helloworld.js nu så läggs tjänsten i bakgrunden.

Trevligt! Hör av dig om du har några frågor. Nästa gång så går jag in på hur du kan kommunicera lätt mellan Redis och webbläsaren med hjälp av Node.JS

Att tänka på innan lansering

CC BY-NC-SA http://www.flickr.com/photos/adesigna/4090782772/Innan jag lanserar en ny webbsajt så är det några saker jag brukar gå igenom som en ren hygienåtgärd. Dessa kan vara bra att använda som en checklista. Fungerar för WordPress, egenutvecklade sajter etc:

  • Titta efter eventuella 404 (not found) i webbserverloggarna. Exempel: En favicon som pekats ut med meta-tagg i header var felpekad
  • Titta efter felmeddelanden i errorloggen. Exempel: Nu senast så såg jag att minnesinställningarna för PHP var ställda för lågt, fick öka till 256MB
  • Se till att HTML, CSS samt RSS-feed är korrekt med hjälp av W3C html validator, CSS validator och Feed validator
  • Använd Firebug för att hitta eventuella 404:or som är offsite. Kanske anropas bilder i en widget eller dylikt
  • Prestandatest med Firebug + Google Pagespeed. Kanske även med LoadImpact eller Apache Bench.
  • Se till att korrekt HTTP-statuskoder skickas tillbaka, ta stickprov. Exempel: Har varit med om att sidor returnerat 404:or vilket inte märks vid vanlig webbsurf men Google kommer inte att indexera
  • Lägg till Google Analytics kod samt lägg upp sajten i Google Webmaster tools
  • Testa att allt ser korrekt ut med IE, Chrome, FF och Safari (på Mac + Win om möjligt)
  • Se till att sitemap finnes, är genererad och innehåller sidor
  • Ta backup!
  • Verifiera att kontaktuppgifter eller kontaktforumlär finnes och fungerar
  • Gå igenom CSS, JavaScript och HTML-kod och ta bort sådant som kan vara överflödigt
  • Minifiera CSS
  • Uppdatering: Se till att sajten/servern övervakas av Pingdom
  • Uppdatering 2: Se att sökmotorhygienen är bra. Titel, url och h1 matchar exempelvis
  • Uppdatering 3: Informera om cookies samt se till att det framgår vilket företag eller person som står bakom sajten
  • Uppdatering 4: Titta efter eventuella JavaScript-fel i javascript-konsollen i din webbläsare
  • Uppdatering 5: Hur ser sajten ut på mobiltelefon?

Lämna gärna en kommentar med fler förslag!