måndag 31 mars 2008

Webbredaktörsdatorer

På almän begäran så lägger jag upp vad webbredaktörerna har för program i sina datorer. När jag tänker på det så borde jag ha gjort detta innan vi la om dem för att få tips på fler och bättre.

Alla datorer som levereras till Nya Medier skall ha en gemensam grundkonfiguration. Beroende på arbetsuppgifter så tillkommer programvaror och anpassad konfiguration.

Grundkonfiguration
Såväl laptops som stationära datorer skall ha följande installerat
  • Citrix
  • FirstClass
  • Acrobat reader
  • Flash player
  • Timbuktu PRO
  • FireFox
  • Audacity inkl. Lame codec.
  • Real Player
  • Antivirus
  • VLC
  • Newspilot
Laptops
Förutom grundkonfiguration skall alla laptops ha följande.
  • Cisco VPN
  • Joost
  • 3G inställningar - Tre
  • MS Office, ink plugin som gör att man kan läsa doc
  • Flip4Mac
  • CyberDuck
  • Paparazzi!
  • Quicksilver
  • Adium
  • ffmpegx
Videoredigeringsdator (Laptop)
Allt som ingår i laptopkonfigurationen plus nedanstående
  • Final Cut Express
  • Squeeze

tisdag 18 mars 2008

Riktlinjer för leverantörer

Jag skrev i mitt förra inlägg att vi haft en hel del problem med våra leverantörer. Jag har fått en hel del positiva och igenkännande kommentarer på detta inlägg. Jag har även fått frågan om det kan vara så illa och om det inte varit småaktörer som gett oss problem? Jag tänker inte hänga ut någon här men det är de stora aktörerna som gett oss flest problem.

Vi har därför skrivit riktlinjer som skall skickas till alla leverantörer innan nya avtal skrivs eller förlängs. På så vis läggs ansvaret på funktionalitet på leverantören och de kan inte i efterhand ändra förutsättningarna. Om leverantören inte kan uppfylla alla nedanstående krav så innebär det inte per automatik att vi säger nej till tjänsten. Men vi bör då ta en diskussion internt innan vi accepterar. Om inte annat så vet vi vad vi ger oss in på.

Det ligger i vårt intresse att fler än oss ställer dessa krav så därför publicerar jag dem här. Vi vill gärna ha synpunkter på dessa och förslag på mer saker som bör tas upp.

Observanta läsare märker att jag inte skriver så mycket om Flash och hur det skall/bör användas på hd.se. Jag tänkte nämligen använda hela nästa blogginlägg till det.

Nu över till riktlinjerna:
1 Sammanfattning
Vi på hd.se tycker att webbstandarder är mycket viktigt och allt som läggs ut på vår sajt skall därför validera enligt http://validator.w3.org/. För att det skall fungera smidigt så kräver det att materialet vi får in följer våra riktlinjer. Det är också viktigt att olika leverantörers kod inte "krockar" med varandra, att säkerheten upprätthålls, att sajten fungerar för alla oavsett operativsystem och webbläsare.

Eftersom man kan leverera material på flera olika sätt och format så har vi gjort en sammanställning på hur vi vill ha det.

2 Plattform
2.1 Klientplattform
Vi strävar efter att alla lösningar skall fungera oavsett vilken webbläsare eller operativsystem som används. Därför skall lösningarna vara testade från följande versioner till senaste;

Internet Explorer 6
Safari 2.0 (build 412)
Firefox 2.0

Uppfylls kravet? Ja / Nej / Inte tillämpbart

2.2 Serverplattform
Vi använder följande mjukvaror på hd.se:
Linux
Apache 2.2
MySQL 5.0 med teckenkodningen UTF-8 (till skillnad från standard ISO-8859-1 aka latin1)
PHP 5.0 med register_globals, magic_quotes_gpc och safe_mode deaktiverat

Se även styckena under 3.5.1 Databasbaserade tjänster och 3.5.2 PHP för mer detaljerad information.

Om leverantörens lösning behöver installeras på hd.se:s servrar bör den vara anpassad för att fungera med ovanstående.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3 Drift
3.1 Leverans
Vi tar helst emot feeder av XML via FTP eller HTTP (tex RSS). Iframes som vi "bara" länkar in ger oss oftast mer problem än om vi får en feed med rådata. Om ni kräver specfik layout såsom logos och typsnitt så föredrar vi ett avtal om hur det skall se ut.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3.2 Felhantering
Leverantörens lösning måste hantera fel på ett för besökaren användarvänligt sätt. Det är till exempel inte acceptabelt att använda Javascript's alert() vid fel.

Om en besökare helt saknar, eller har en för gammal version, av en plugin (t.ex. Flash) eller webbläsare så ska detta meddelas på ett, för besökaren, hjälpsamt sätt med information och länk dit senaste versionen kan hämtas.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3.3 Uppdateringar
Om det blir problem med nyare versioner av webbläsare, Flash etc så är det leverantörens ansvar att korrigera detta då det oftast uppstår när produktionssättet inte följt riktlinjer för webb och program-standard.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3.4 Övervakning
Alla leverantörer svarar själva för övervakning av att deras system fungerar. Om problem uppstår skall hd.se meddelas omedelbart enligt överenskommelse. T.ex. via e-post eller telefon.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3.5 Säkerhet
Det är leverantörens ansvar att se till att produkten inte äventyrar datasäkerheten på sajten.

3.5.1 Databasbaserade tjänster
Tjänster som använder en databas måste se till att skydda sig mot SQL-injections. Det ska framgå vilka privilegier (SELECT, INSERT, ..) databasanvändaren behöver för att applikationen ska fungera. Se MySQL's dokumentation över privilegiesystemet för mer detaljer.

Vid leverans av tabelldefinitioner och eventuell tabelldata så ska dessa levereras som en SQL-dump, förslagsvis UTF-8 kodad även om vi kan hantera standardteckenkodningen ISO-8859-1 aka latin1.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

3.5.2 PHP
Tjänster som behandlar någon form av indata från besökaren, både i form av inparametrar och eventuell information i kakor, måste se till att dessa har ett förväntat och acceptabelt format. Obehöriga ska inte kunna komma åt filer på servern, databasinformation som inte avsågs från början eller kunna exekvera kod eller kommandon på servern eller på i databasen.

Vanliga problem är till exempel SQL-injections, Cross Site Scripting (XSS) eller remote file inclusion.

Hos oss är följande avstängt:

PHP safemode
Register_globals
Magic_quotes_GPC -- applikationen måste själv sköta escapning av indata från HTTP GET/POST eller kakor.
Applikationen ska ur ett säkerhetsperspektiv följa best practices redan från början och det är leverantörens ansvar att se till att dessa följs. Vid behov kan vi ge tips på det vi känner till. Data som hämtas från request parametrar (t.ex. vid HTTP GET eller POST), kakor, filer eller databasposter ska alltid escape's innan de används.

Data som hanteras i samband med SQL-frågor ska escape'as med mysql_escape_string() eller metoden mysqli::escape_string() om man använder den objektorienterade varianten av MySQL API:et i PHP.
Data från databasposter eller filer som skrivs ut i HTML-dokument ska alltid kodas med htmlspecialchars(), både för att HTML-koden ska blir korrekt och av säkerhetsskäl.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4 Format
4.1 HTML
Vi använder XHTML på hd.se och är väldigt noga med att den XHTML som finns på vår sajt är korrekt och validerar enligt W3C (http://validator.w3.org/).

Leverantörens HTML-kod skall validera enligt minst "XHTML 1.0 Transitional" standarden men vi ser gärna att "XHTML 1.0 Strict" används.

Om HTML levereras från leverantörens server ser vi gärna att den komprimeras (i Apache med mod_gzip/mod_deflate) innan den skickas för att minska datamängden som hämtas, till fördel för besökare med långsammare uppkopplingar.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4.2 Teckenkodning
Teckenkodningen vi använder på hd.se är UTF-8. Den används på webben, internt i våra system och vid kommunikation med externa system.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4.3 CSS
Om selektorer och klasser används så ska dessa ha ett prefix, gärna baserat på företags/tjänstens namn så att de inte krockar med vår eller andra leverantörers CSS. CSS:erna skall ligga i egen fil och kunna kontrolleras av HD.

Då en leverans resulterar i html-kod på hd.se är det ett krav att den ytterst omslutande taggen i html-portionen är identifierad med ett väl beskrivande och särskiljande ID-attribut.

Exempel på bra id´n som definierar både leverantören och tjänsten:

omxStockTicker
sjTimeTable
nordeaIntrRates

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4.4 Javascript
Alla variabler ska defineras med keywordet var innan de används. Exempel: 'var debug = false;'. Användning av variabler som inte definerats innan de används gör javascript långsammare.

Globala javascript variabler och funktioner ska ha ett prefix, gärna baserat på företagets/tjänstens namn, så att de inte krockar med våra eller andra leverantörers dito. Inneslut helst hela javascriptfunktionaliteten i en, alternativt några, omslutande variabler för att komma så nära konceptet "scoope" som möjligt.

Vi ser gärna att javascript så långt det är möjligt läggs i en extern fil och hämtas in på de ställen de behövs. På det viset kan webbläsaren cacha scriptet och besökaren behöver inte hämta hem samma javascriptkod för varje sidvisning.

OBS! Vi använder oss redan av vissa javascriptbibliotek som t.ex. SWFObject för att hantera Flash. Det kan finnas tillfällen då det kan utnyttjas utan att besökaren ska behöva hämta hem leverantörens bibliotek också. Kontrollera med oss om ni är osäkra på vad vi använder!

Om javascript är avslaget hos klienten så bör det finnas en alternativ lösning och i värsta fall ett läsbart "felmeddelande".

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4.5 Kakor (cookies)

Eventuella kakor som sätts bör ha korta namn och värden. Lagra inte information i kakorna som annars skulle kunna ligga i en sessionsvariabel (eller databas) på servern. Stora kakor i kombination med många anrop till webbservern påverkar prestandan negativt då kakorna måste skickas med varje gång. Många besökare har en liten bandbredd uppströms.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

4.6 Filformat och Plugins
Vi accepterar inga andra webbläsarplugins än Flash. Det skall fungera från version 9 till den senaste.

Uppfylls kravet? Ja / Nej / Inte tillämpbart

onsdag 12 mars 2008

Webbutvecklare sökes till marknadsavdelningen

Marknadsavdelningen på HD söker en webbutvecklare. Personen ifråga kommer att jobba i ett riktigt trevligt gäng med en kanonchef. H?n kommer även att jobba tätt ihop med oss på hd.se.

http://hd.se/b/i/annons/jobb/?id=1411

-----------------------------------------------------------------
Vi söker en webbutvecklare till marknadsavdelningen för ut-
veckling och underhåll av vår marknadssajt på hd.se. Med
hjälp av nätet bygger vi nya relationer till våra läsare och kun-
der så att det blir enklare för dem att på egen hand uträtta
sina ärenden.

Vi satsar även på att förbättra HDpassets erbjudande och
tjänster via vår hemsida. Här kommer du att få en viktig roll
genom att du arbetar nära marknadsgruppen.

För att klara våra mål behöver vi dig som är duktig på XHTML,
CSS, XML, JSP, SQL, AJAX och PHP.

Det är även meriterande om du har vissa kunskaper i Flash
och Photoshop och har bra känsla för form och text. Webb-
standarder, användarvänlighet och säkerhetsmedvetande är
viktiga ledord hos oss.

Har du frågor kring tjänsten kontakta Anders Nilsson på
042- 489 93 44 eller anders.nilsson@hd.se.
Facklig kontaktperson: Olof Eliasson 042-489 92 04.
Skicka din ansökan via mejl till petra.thulin@hd.se eller till
Helsingborgs Dagblad AB, Petra Thulin, 251 83 Helsingborg.
Vi vill ha din ansökan senast den 24 mars.
Märk din ansökan webbutvecklare.
-----------------------------------------------------------------

Om du bor närmare Kalmar än Helsingborg så kan du söka jobb hos Gota Media istället. http://www.networkers.se/2008/03/skes-ny-jobbarkompis.html

tisdag 4 mars 2008

Leverantörer, skärp er

Jag skäms för att det inte hänt nåt på den här bloggen på mycket länge. Jag tänkte råda bot på det med några inlägg om våra leverantörer och kraven på dem.

Jag har nu varit på hd.se i drygt 13 månader och en sak som har slagit mig är den dåliga kompetens många av våra leverantörer har. Det är mer regel än undantag att det är problem när vi skall sjösätta en ny lösning. Exempel på problem vi har haft är;
  • Lösningen kräver plugin som inte finns till Mac.
  • De testar inte lösningen på olika plattformar med de problem som där följer.
  • De är ibland omedvetna om att det finns olika teckenkodningar och byter utan att veta om det själva.
  • Lösningen validerar inte. Vi har till och med fått frågan om var man kan läsa på om validering.
  • Man levererar inte nya lösningar på samma sätt som tidigare så vi får bygga nya importskript. Leverantören har således inte satt en egen standard.
  • Lösningen har allvarliga säkerhetshål.
  • Det saknas bevakning så vi får uppmärksamma dem på deras egna problem.
  • Lösningen skalar inte och blir lätt överbelastad
När en leverantör talar om hur lätt de gör det för oss och att vi "bara behöver...." så är det dags att hissa varningsflagg. De som påstår detta är i regel de som skapar mest problem för oss.

Vi har därför skrivit ett långt dokument där vi listar alla de krav vi har på leverantörer som de skall få redan under upphandlingsfasen. Det ligger i vårt intresse att fler ställer dessa krav så jag kommer att publicera den här på bloggen.