Arkiv for januar 2007

Arrays og String.split()

tirsdag, 30. januar 2007

Jeg kan lige så godt sige det som det er, jeg elsker arrays!
Kan noget ikke laves ved hjælp af et loop, så bør man måske overveje om det i det hele taget er værd at lave?

Spøg til side, jeg er faktisk vild med arrays og i går havde jeg en problemstilling hvor de, sammen med den ligeledes klassiske String.split(), var den perfekte løsning.

Jeg sidder i øjeblikket og arbejder på en kampagne for en unavngiven større dansk radiostation som gå i luften 1. februar.
For at høre radio skal man kende frekvensen på det man ønsker at lytte til, og modsat internettet hvor alle skal indtaste den samme adresse for at finde det samme indhold, så er det en helt anden historie når vi snakker FM frekvenser.

I dette tilfælde er der cirka 25 forskellige frekvenser der hver især dækker forskellige dele af landet.
For at gøre det nemt for brugerne er vi derfor i gang med at producere noget materiale der blandt andet indeholder en lille funktion, hvor man ved at indtaste sit postnummer får en radiofrekvens retur.

Til det formål har jeg modtaget en frekvens liste der starter sådan her:

By Frekvens Postnumre
København 91,4 555-3670
Sydsjælland 103,9 4000-4983
Fyn 93,4 5000-5985
Middelfart 106,6 5500

Og sådan fortsætter den ellers derudaf, intet odiøst i det.

Men, bemærkede du den sidste på listen, Middelfart?
Her er der ikke tale om et postnummer interval, men derimod om et specifikt postnummer, som ovenikøbet er inde i et allerede eksisterende interval, der har en anden frekvens.
Med andre ord, så ville jeg få et positivt match både hvis jeg lavede en funktion der testede om 5500 var mellem 5000-5985, samt hvis jeg lavede en der testede om 5500 var lig med 5500.

I det her tilfælde blev det besluttet, at hvis et postnummer har et præcist match, så har det match højere prioritet end hvis det er med i et interval.
Løsningen er således først at tjekke om der er et præcist match, og hvis der ikke er det, så tjekke om det er med i et interval.

Okay, nu har vi tænkt de mulige scenarier og problemstillinger igennem, så nu er det tid til at kode en løsning.

Første skridt er at lave vores tabel om til nogle data som man kan arbejde videre med.
I mange tilfælde ville man nok vælge at bruge XML, men da dataene i dette tilfælde skal bruges i et banner, er det en stor fordel hvis man kan undgå at loade noget eksternt, så derfor er det simpelthen hardcodet:
(Bynavnene skulle ikke bruges i dette tilfælde, derfor er de udeladt)

var arrFrek1:Array = new Array(); //Specifikke postnumre
var arrFrek2:Array = new Array(); //Intervaller

arrFrek1.push("5500@106,6");

arrFrek2.push("555:3650@91,4");
arrFrek2.push("4000:4983@103,9");
arrFrek2.push("5000:5985@93,4");

Push funktionen gør simpelthen det at den indsætter den pågældende tekststreng som et nyt punkt i enden af array’et.
Så, nu har vi to arrays, et med specifikke postnumre og et med postnummerintervaller.

Næste skridt er så at lave en funktion der løber de to arrays igennem for at finde frekvensen til et bestemt postnummer.
Jeg har forsøgt at forklare koden med kommentarer i koden:

function findFrekvens(Frekvens:Number):String {
	var arrTemp1:Array = new Array();
	var arrTemp2:Array = new Array();
	var frekvensOutput:String = undefined; //Den streng funktionen skal returnere

	for(i = 0; i < arrFrek1.length; i++) {
		arrTemp1 = arrFrek1[i].split("@"); //Splitter data strengen, så vi kan teste på postnummeret
		if(Number(arrTemp1[0]) == Frekvens) { //Er postnummeret lig med postnummeret for denne frekvens
			frekvensOutput = arrTemp1[1]; //Gemmer frekvensen
			break; //Stopper loopet
		}
	}

	if(frekvensOutput == undefined) { //Blev der fundet et match i det første loop?
		for(i = 0; i < arrFrek2.length; i++) {
			arrTemp1 = arrFrek2[i].split("@");
			arrTemp2 = arrTemp1[0].split(":");
			if(Frekvens >= Number(arrTemp2[0]) && Frekvens <= Number(arrTemp2[1])) { //Er postnummeret i intervallet
				frekvensOutput = arrTemp1[1];
				break;
			}
		}
	}

	return frekvensOutput; //Returnerer den fundne frekvens, eller undefined hvis ingen blev fundet
}

Voila, ved hjælp at et par arrays eller fire samt nogle splits, så fik vi lavet en lille simpel funktion.

Hvis det var en funktion der ville blive kaldt mange gange af den samme bruger, så kunne man sagtens vælge at definere data anderledes, så man ikke brugte unødig CPU på at gentage de mange splits, så ville det se sådan her ud:

arrFrek2.push(new Array(new Array("5000","5985"),"93,4");

Men, i dette tilfælde har jeg prioriteret overskueligheden højere, særligt da 9 ud af 10 brugere kun vil kalde funktion én gang.

Så, det var et bud fra min side på en løsning af en meget specifik problemstilling, håber det kan bruges til noget.

NB: Har set at kodedelen bryder designet lidt, men syntes at det var vigtigt at den var rigtigt formatteret for at give et bedre overblik, må lige se om jeg kan få opdateret min template på et tidspunkt.

Forskelle på ActionScript 2.0 og ActionScript 3.0

torsdag, 25. januar 2007

Er du på udkig efter en hurtig oversigt af, hvilke funktioner og objekter der har fået nye navne i ActionScript 3.0, samt hvilke nye funktioner der er blevet tilføjet, så er her et super godt overblik fra Adobe:
ActionScript 2.0 Migration

Wordpress DK Meetup - Mød andre Wordpress brugere live

tirsdag, 23. januar 2007

Wordpress 2.1 er netop kommet på gaden og i den anledning bliver der i København holdt et meetup for alle interesserede, hvor man kan få hjælp til at installere den nye version samt bare generelt udveksle tips og tricks.

Der er tale om et helt og aldeles uformelt møde uden nogen egentlig dagsorden, hvor man bare møder op med sig selv og eventuelt sin bærbare computer, og herefter bare mingler med de andre tilstedeværende.

Datoen er p.t. sat til søndag d. 4. marts kl. 11.00.

Du kan læse mere om arrangementet på den danske Wordpress-blog:
Wordpress.dk - WordPress DK Meetup

Og du kan tilmelde dig på den tilhørende Meetup gruppe:
Wordpress DK Meetup

Jeg har lokket Jubii til at lægge lokaler til, så der vil både være kaffe og trådløst internet ad libitum.

Ses vi? Det tror jeg nok vi gør ;-)

Danish Internet Award 2007 - og vinderen blev…

fredag, 19. januar 2007

I går løb DIA07 af stablen, og efter at have været lidt hårde ved de nominerede kampagnesites tidligere, så må det også være på plads med en opfølgning i den forbindelse.

Lad mig starte med at sige gudskelov, gudskelov var det ikke en af de rigtigt slemme kandidater der vandt!

Vinderen som årets bedste kampagnesite blev iForms løberuteplanlægger.
Mit eneste forbehold overfor den var, at den jo er en enkel funktion på et stort site og derfor ikke ligefrem kan kaldes et kampagnesite, men den fungerer fint og tilbyder brugerne en rigtig nyttig funktionalitet, så det er så absolut et valg der er til at leve med.

Hovedvinderen af Årets Internet Award på tværs af kategorier blev CityMan, en kampagne fra CityMail for at skaffe postbude.
Efter at have kigget BlivCityManNu.dk igennem se det også ud til at det er en god kampagne, sitet er i hvert fald rigtigt veludført og filmene med Rune Klan har da så absolut også lidt humor i sig, hvis man ellers er til ham, hvilket målgruppen jo må siges at være.

Så, alt i alt, set i lyset af den svingende kvalitet af de nominerede, så er jeg i hvert fald glædeligt overrasktet over at vinderne rent faktisk er fornuftigt :-)

Læs mere om arrangementet og vinderne her:
City Mail blev årets store vinder ved Danish Internet Awards – DIA07

Shared Library - Spar på pladsen

tirsdag, 16. januar 2007

De fleste kender Shared Objects, Flash’s version af cookies, men de færreste kender Shared Libraries og det er en skam!

Ved at bruge et Shared Library er der nemlig mulighed for at spare rigtigt mange kilobyte på større projekter, kilobyte der vil give brugeren en bedre oplevelse og kunden en besparelse på båndbredden.

Jeg vil ikke beskrive hvordan man laver og bruger et Shared Library, for det har Kirupa allerede gjort:
Using the Shared Library

I stedet vil jeg komme med et eksempel på hvornår det kan være ekstra nyttigt at bruge.

Spil
Spil indeholder ofte store mængder grafik og lyd, som alle genbruges i større eller mindre udstrækning, så det er et sted hvor man næsten altid vil have en gevinst ved at bruge Shared Library.

Hvis man for eksempel har et spil bestående af flere baner, så går mange af elementerne typisk igen, det eneste der ændrer sig er måske baggrunden og elementernes placering.

Ved at flytte disse elementer ud i et Shared Library, så loades de kun én gang, nemlig på level 1, og på de resterende baner genbruges de.
På den måde har man måske et library på 1000 kb, mens hver enkelt bane kun fylder 50 kb.

Samme fordele kan man jo naturligvis opnå ved at give hvert element sin egen Flash fil og loade dem dynamisk via loadMovie, men det betyder så også at man skal placere elementer via ActionScript.

Bruger man i stedet Shared Library, så kan man stadig bruge Flash som en slags level editor, så man hele tiden har et godt overblik over banen.

Ikke altid
Shared libraries er som alt andet ikke et vidundermiddel der bør bruges hele tiden, men derimod et super nyttigt værktøj når det bruges rigtigt.

Eksempelvis er shared libraries sjældent gode hvis det man ønsker at dele er komplekse, individuelle movieklip. Her kan det være en fordel at eksportere movieclippet som swf og loade det via loadMovie i stedet.

Tower Defense - Cool gameplay!

torsdag, 11. januar 2007

Det er sjældent grafikken alene der gør et spil godt, og i dette tilfælde er den endda stort set ikke eksisterende, men på trods af det er Tower Defense et fantastisk lille spil!

Meget basalt, så går det ud på at forsvare sin borg mod angribende prikker (yes prikker, sagde jo at grafikken ikke var god). Disse prikker bevæger sig af en foruddefineret rute på vej mod din borg, og langs denne rute kan du så sætte tårne til at skyde på prikkerne.

Nogle af tårnene er kraftige med kort rækkevidde, andre modsat og nogen midt imellem.
Alle tårnene kan opgraderes i flere omgange, og alt i alt giver det kombinationsmuligheder nok til ufatteligt mange spil, på trods af at der kun findes en bane.

Prøv det selv her:
Tower Defense

Volvo C30 prisberegner - Suverænt interface!

onsdag, 10. januar 2007

Volvo C30 interface
Nogen gange når jeg falder over eksperimentelle Flash-sites med vilde menuer der folder sig ud og ind, roterer om hinanden og jeg skal gi’ dig, så ender jeg med at tænke: Okay, det ser flot ud, men hvad er fordelen dog ved det?

På den nye prisberegner for Volvo C30 kan man se hvad det for eksempel kan bruges til, og hold da fast hvor fungerer det godt!

Man starter med en enkelt valgmulighed hvor man skal vælge farve i en slags 3D karrusel. Når man har valgt den, kommer der en ny til med bodykit, så en med indtræk og så videre indtil man står med en færdig, skræddersyet Volvo C30.
Alt sammen i et meget levende interface hvor valgene bindes sammen af dynamiske blå streger, og hvor bilens samlede pris løbende opdaterer sig.

En sjov detalje er også, at når man vælger lydanlæg, så hører man en lille lyd ved mouseover, og volumen på den lyder bliver højere og højere jo dyrere anlæg man vælger.
Modsat de andre ting, så er anlæggene dog i omvendt rækkefølge af alt det andet som er billigste øverst og dyrest nederst, men alt i alt synes jeg at det bare fungerer og er med til virkelig at få Volvo til at fremstå som et moderne firma der har tjek på tingene.

Se det selv her:
Volvo C30 prisberegner

Tak til min kollega Janus for linket.

Danish Internet Award 2007 - Er det virkelig toppen af dansk onlinemarkedsføring?

mandag, 8. januar 2007

DIA07 - Danish Internet Award
Den 18. januar løber årets udgave af Danish Internet Awards, DIA07 af stablen.

For dem der ikke ved hvad DIA er, så er det en konference med et efterfølgende awardshow. Ved awardshowet uddeles der priser til de bedste inden for dansk onlinemarkedsføring.
I år uddeles der priser i kategorierne Årets Internet Award, banner, kampagnesite, synergi, effekt (medievalg), effekt (søgeord), publikumsprisen og jobkampagne.

Og hvad har alt det her så med Flash at gøre? Meget simpelt, Flash er hjørnestenen i onlinemarkedsføring i dag, og som sådan er det jo interessant at tage et lille kig på toppen af kransekagen for at få lidt inspiration og ideer.

Den komplette liste af nominerede kampagner i alle kategorierne kan ses her:
46 kampagner nomineret DIA07

Fokus for dette indlæg af kampagnesites, men inden vi når dertil, så så først lige et lille suk.
Når nu der laves en liste over liste over nominerede kampagner, så ville det være fantastisk dejligt med links til de kampagnesites der nævnes og/eller screenshots.
Det samme gælder for bannerne. Selvom jeg synes jeg har set min del af onlineannoncering i året der gik (eller måske netop derfor), så kan jeg ikke huske hvordan banneret for Totalkredit - Have Haves så ud og opførte sig.

Kampagnesites
Efter lidt søgen i diverse søgemaskiner har jeg fundet adressen til de fleste af de nominerede i kategorien for bedste kampagnesite, og ærlig talt, så synes jeg ikke det er imponerende.

Men lad os starte med det positive: Alle de nominerede kampagnesites har brugt Flash!
Det er jo ikke nødvendigvis et plus i sig selv, men alle sites har udnyttet det til at lave ting som ikke er mulige med almindelig html, og som dermed er med til at give brugerne en bedre oplevelse.

Lad mig forsøge at løbe de nominerede igennem:

Fastelavnsmysteriet (produceret af G2 og Grey)
En meget sjov ide, hvor brugeren ved at se en række små videoklip skal forsøge at finde ud af hvem af de mistænkte der smadrede tønden før festen gik igang.

Videoklippene er gode og billederne af de udklædte børn fungerer fint, men kigger man overordnet på sitet så synes jeg det efterlader et småsjusket og gammeldags indtryk. Indrømmet, jeg er absolut ikke i målgruppen for kampagnen, men imponerende er det ikke, og det er synd når nu der er lagt så meget arbejde i videoklippene.

Scandic: Scandic City Breakers (produceret af Projector)
Det lykkedes mig desværre ikke at finde dette site, ved du hvor det er, så smid meget gerne en adresse i kommentarerne.

DFDS Seaways: Love cruise (produceret af Mijoheto cph)
Dette site bygger på en række gamle stumfilm, hvor brugeren selv får mulighed for at udfylde de sorte pauseslides med tekst, for herefter at kunne sende den færdige film videre til en bekendt.

Stilen spiller fint op til stumfilmstemaet og sitet er rimeligt nemt at bruge (men det kan så også kun én ting). Idemæssigt er der lidt tale om gammel vin på nye flasker da lignende funktionalitet efterhånden er set rigtigt mange steder, men det behøver jo ikke at være et problem, da brugerne så omvendt også instinktivt kan forstå hvad det handler om.

Dansk Retursystem: Dåsens Hævn (produceret af Plant & IUM Interactive)
Dåsens Hævn er et spil hvor man skyder dåser op af affaldsskakter. Målet er at ramme mennesker der går forbi skakterne med dem.

Den grafiske stil er lagt an til at være meget retro og arkade-agtigt, personligt synes jeg ikke det holder.
Derudover, så har kan jeg ikke helt forstå meningen med spillet.

Budskab 1 går fint nok igennem, dåserne hører ikke til i affaldsskakten, men hvorfor skal jeg ramme tilfældige forbipasserende med dem?

Bonnier Publications: Iform Løberuteplanlægger (produceret af Zupa)
Iforms løberuteplanlægger er det første af de nomirede sites som jeg kendte til inden jeg så dem på listen, og som en løberuteplanlægger fungerer det rigtig fint.
Det er nydeligt pakket ind og funktionaliteten med at opmåle og dele sine løberuter med andre er også helt ok.

Det jeg undrer mig over ved den er, hvad gør den til et kampagnesite? Umiddelbart virker det mere til at være en permanent funktion på et allerede eksisterende site.

KiMs: KiMs KiKs (produceret af NetPeople)
Det lidt pudsige navn dækker over et site hvor brugerne kan se og uploade kamerakiks.
Alt i alt er det meget basic, man kan stort set kun én ting, og havde det været lavet rigtig lækkert så kunne det måske godt have været en kandidat, men det er det ikke.

Vil man uploade en film gøres det i en formular der åbner i et popupvindue og på den måde skiller sig meget ud fra resten af sitet, og at dømme efter de i skrivende stund 38 uploadede film så har det heller ikke været en kæmpesucces.

Hvis noget fra KiMs skulle nomineres, hvorfor så ikke bare nominere KiMs.dk?
Det site virker meget mere helstøbt og indeholder en lang række forskellige funktioner, altså både større og bedre.


Tuborg: Tuborg Bright Head Award
(produceret af NetPeople)
Det har været meget svært at gennemskue hvad Tuborg Bright Head Award egentlig dækker over, men jeg er kommet frem til at det nok må være LCRA, Lacure Reklame Academy. (Hvis jeg tager fejl, så ret mig endelig)

Har jeg gættet rigtigt, så er det efter min vurdering langt, langt det bedste site blandt de nominerede!

Stilen er gennemført, alting har fået ekstra shiny, ekstra buzzwords, ja, ekstra hvad som helst.
Det kan være en svær opgave at skulle spille op til et så veldefineret univers som Lacure er blevet efter de mange reklamefilm, men sitet gør det til UG med sin underspillede humor.

Summa summarum
Alt i alt synes jeg at summen af de nominerede i bedste fald er middelmådig og i værste fald et godt stykke under standard. Hvis dette er det bedste vi i Danmark kan præstere når det kommer til kampagnesites, så står det skidt til.

Men, det mest ærgelige ved disse nomineringer er jo at det rent faktisk ikke står helt skidt til!

I det forgangne år er jeg faldet over langt flere fede, dansk-producerede sites end jeg gjorde året før, blandt andet Palmesus - Star Tours nye destinationer (som jeg tidligere har skrevet om) og Lalandias site for bademesteren er heller ikke helt dårligt.
Og der findes helt sikkert andre gode som jeg ikke lige kan huske på stående fod.

Forslag til forbedring: Gennemskuelighed
Måden de forskellige nomineres er ved at webbureauer, mediebureauer m.fl. selv indstiller de kampagner som de føler er relevante. Indstillingen er ikke blot at sende et link til et site eller et banner, men består også af en tekstbeskrivelse af det gode ved kampagnen, relevante statistikker osv.

Jeg synes at det ville være ekstremt relevant at disse indstillingsdokumenter blev offentliggjort for de nominerede kampagner.
Det ville være med til at give et meget større indblik i hvorfor en given kampagne er på listen, samt ikke mindst give et indblik i om det er indstillingsmaterialet eller sitet i sig selv der vægter mest.

Et par ord med på vejen af juryen i forhold til hvad de føler gør den pågældende kampagne speciel ville hellere ikke være af vejen, men det første er vigtigere.

Note: Det bør nævnes at jeg selv har været med i et par kampagner der var indstillet, men som ikke blev nominerede, så dem der har lyst til at affeje det ovenstående med at jeg nok bare er sur fordi jeg ikke selv blev nomineret skal være hjerteligt velkomne til det ;-)

10 indflydelsesrige Flash animationer

tirsdag, 2. januar 2007

På denne første arbejdsdag efter jul og nytår skal man jo passe på med ikke at overanstrenge sig, så derfor er her et link som man godt kan bruge en time eller to på:
The Top 10 most influential Online Flash Shorts

I det blogindlæg har Aaron Simpson forsøgt at lave en liste over de hidtil vigtigste Flash animationer.
Det der adskiller denne top 10, er at der ikke bare er tale om 10 links, han har rent faktisk fundet frem til hvem der har lavet animationerne og interviewet de fleste af dem.

Så, god fornøjelse og godt nytår! :-)