Kruse-Net.dk

Det man blogger er man selv...
27. december 2006

Pearl

Som faste læsere nok har bemærket er sitet i disse dage ved at få nyt udseende. Jeg faldt over et nyt tema ved navn Pearl, af Neimple som jeg syntes så godt ud. Der er dog en del ting der skal rettes til, så der går nok et par dage endnu før alting falder på plads.

28. november 2006

Tagline

Som det fremgår har jeg to børn i børnehave-alderen, så jeg hører den hver dag: “det man siger er man selv” osv. Og jeg husker den fint fra jeg selv var i samme alder. Den har ikke ændret sig det mindste.

Det er lykkedes at få oldeforældre-generationen digitaliseret, så nu må det være ungernes tur. Kruse-Net’s tagline hermed ændret som et første skridt på vejen. Så skal jeg bare have omskrevet resten af verset, der er alligevel ikke noget der hedder “Aktuelt” mere.

17. november 2006

Scanduc 2006

Der bygges

Så er Scanduc 2006 dag 2 startet!

Konferencen startede i går med en teambuilding workshop. To folk fra Kommunikations faBRIKKEN kom og legede med os. De er en virksomhed der gennem leg med Lego klodser “sætter fokus på kommunikation, samarbejde og værdiskabende relationer” i andre virksomheder. Ganske underholdende start på dagen. Derefter fik vi en grundig gennemgang af den (meget snart) kommende version 12 af VDF af John Tuohy. VDF 12 er spændende fordi studiet er bygget på ny fra bunden af. Alle de dejlige features man måske kender fra …

9. november 2006

Prototype dokumentation

Det lader til at der — endelig — er ved at blive organiseret noget officiel dokumentation af Prototype biblioteket. Indsatsen er meget ny, og der er intet synligt endnu, men lad os håbe projektet kommer ordentligt på skinner.

25. oktober 2006

Hibernate

Jeg har altid været en flittig bruger af Hibernate funktionen på min bærbare computer. På den måde kunne jeg slippe for at genstarte — en proces der godt kunne tage omkring et kvarters tid — i noget nær en måned ad gangen.

Nu har jeg fået en ny. En funklende flot Acer Ferrari 5000. En virkeligt dejlig maskine, men… Hibernate virker ikke. Hver gang jeg prøver får jeg en fejl om at der ikke er tilstrækkelige system-ressourcer, hvorefter funktionaliteten slås fra.

Heldigvis viser det sig at der er tale om en kendt fejl i Windows XP SP2, og ovenikøbet en som er rettet. Så vist vides eksisterer problemet primært på Dual Core maskiner med over 1 GB ram. Og løsningen? Den …

10. august 2006

AJAX aktivitet i Prototype

Som Sergio Pereira beskriver i sine Developer Notes for prototype.js kan man, når man bruger Prototype til at foretage AJAX kald, forholdsvis let tilføje en spinner eller lignende på siden som viser når der er AJAX aktivitet:

Ajax.Responders.register({
	onCreate: function(){
		Element.show('systemWorking');
	},

	onComplete: function() {
		if (Ajax.activeRequestCount == 0) {
			Element.hide('systemWorking');
		}
	}
});

Det har jeg selv brugt flittigt, og undrede mig i dag over en situation hvor denne spinner aldrig forsvandt igen. Nærmere undersøgelser viste at ikke bare blev onComplete funktionen ovenfor aldrig kaldt, Ajax.activeRequestCount blev heller ikke talt ned, på trods af at der tydeligvis kom svar på de pågældende requests.

31. juli 2006

Google taber

Ser ud som om der nu i hvert fald er mindst én dommer der er enig i min tidligere påstand om at AdSense programmet er et dække for gemen svindel. Gad vide hvor mange retssager det kan nå at blive til?

Computerworld – Google skal betale 527 mio. for falske klik

28. juli 2006

Brug af script.onload

En fiks måde asynkront at loade JSON data i en AJAX applikation på er:

var script = document.createElement('script');
script.type = "text/javascript";
script.src = "http://enurl";
document.getElementsByTagName('head')[0].appendChild(script);

Hvis man også ønsker at vide hvornår script’et er loadet, og ens data dermed er klar, kan man blot tilføje følgende linie et sted i midten:

script.onload = function() { alert('data er klar!'); } // eller en anden funktion efter eget valg

Det virker fint i browsere der bare overholder standarderne nogenlunde. I Internet Explorer (testet på version 6) er der dog et par fælder man skal være opmærksom på!

  1. Hvis IE før har loadet et script fra samme URI, så kontaktes serveren slet ikke. I nogle tilfælde er det fint (data fra sidst indlæses fra cachen), i andre tilfælde …
22. juni 2006

Scroll-hjul events

Tidligere på året udarbejdede jeg [en lille javascript widget][indtastning af datoer] til hjælp med indtastning af datoer i web applikationer. Den understøtter bl.a. at datoen kan ændres ved tryk på [pil op] og [pil ned] på tastaturet. Og det er en fin hjælp når man alligevel har fingrene på tastaturet. Men brug af denne widget har siden afsløret at der er en række situationer hvor det ville være fordelagtigt at kunne bladre datoer med musen. Og det er helt oplagt at det meget praktiske hjul som de fleste mus efterhånden er udstyret med kan bruges til dette.

Opgaven er ikke triviel. [W3's specifikationer][] rummer ingen events fra hjulet, så vi er nødt til at bevæge os ind i det pigtrådsklædte, minefyldte …

4. juni 2006

Forbedring af nedarvning i Prototype

Dem der har prøvet at arbejde med [Prototype][] ved det formentlig allerede — nedarvning fungerer lidt klodset:

var Subklasse = Class.create();

Subklasse.prototype = Object.extend(Object.extend({}, Grundklasse.prototype), {
    
    initialize: function(value) {
        Grundklasse.prototype.initialize.call(this, value);
        ++this.value;
    }
    
});

Faktisk er det ikke bare klodset, syntaksen er også så indviklet at der er alle mulige chancer for at komme til at gøre det forkert. Det er heldigvis [faldet Justin Palmer for brystet][]. Og hvad bedre er, så har ingen mindre end Dean Edwards (som jeg først lærte at kende da han skrev et javascript bibliotek — IE7 — der rettede …

11. maj 2006

Dell “support” aftaler

Jeg har længe været, og er til dels stadig, rimeligt begejstret for Dells produkter. Deres service er en anden sag. I de fleste tilfælde er de meget flinke til hurtigt at udbedre eventuelle problemer, men hvis det går galt så går det meget galt!

Det interessante i denne sammenhæng er deres service aftaler. De har forskellige udgaver, hvoraf den mest almindelige formentlig er deres “Next Business Day Onsite Service”. Ifølge den lover de at udbedre ethvert problem den næst følgende arbejdsdag, der hvor udstyret befinder sig. Når man vælger den aftale ved køb af noget udstyr betaler man en eller anden pris for den. I skrivende stund f.eks. omkring 1000 kr ekskl. moms ved køb af en computer. Og det kan …

2. maj 2006

Animerede SVG filer i IExplorer og Firefox

En rose lavet i SVG, er en rose lavet i SVG, er en…

Der er mange måder hvorpå man kan gøre den samme ting – men, desværre ikke altid én måde at gøre det samme på i henholdsvis IExplorer og Firefox. Det er ved at blive bedre, jo vist, men når man bevæger sig ud på gyngende grund, der hvor nye browserteknologier er ved at blive dannet og standardiserede, så ber’ man jo selv om problemer. “Nye” browserteknologier er af samme grund ofte længe undervejs, og det må formodes at SVG formattet ikke rigtigt har fået et fodfæste endnu, fordi der stadig er forskelle browserne imellem. Den første W3 recommended version af SVG undertegnede kunne finde frem til er dateret 2001. Lidt sørgeligt egentlig.

Nå, men jeg kunne jo ikke blive ved med at vente på at Adobe, Microsoft og Mozilla teamet bliver enige og tænkte at jeg derfor måtte tage skeen i egen hånd. Det er denne artikel så resultatet af. Det passer så ikke helt, jeg har ikke trasket rundt siden 2001 og bare ventet på en løsning, men et konkret behov i forbindelse med en programmeringsopgave gjorde, at NU skulle der altså ske noget.

Inline eller embedded

Den umiddelbare forskel man konfronteres med, er at Internet explorer har det bedst med embedded SVG, og at firefox stortrives med inline SVG.

Embedded SVG i Internet Explorer:
Filen “cirkel.svg” som bruges i embed tagget:
Inline SVG i firefox:

I skrivende stund har jeg ikke kigget på om inline SVG data kan bringes til at validere. Men det er klart, at <svg:svg ... > midt i et XHTML dokument ikke er helt efter valideringsreglerne. Jeg savner muligheden for helt at droppe <embed ... /> og inline <object ... /> mulighederne, og istedet have et standardiseret og cross-browser <svg src="..." /> tag tilrådighed.

Eksempel 1: Se et eksempel på embedded SVG her, og et eksempel på inline SVG her.

25. april 2006

Offline web applikationer

Med AJAX og udviklingen af deciderede web “applikationer” er en af de ting man kan risikere at støde på, behovet for at kunne tage applikationen med sig “på farten”. Internet Explorer og Firefox har begge en “Arbejd offline” tilstand som understøtter dette. Problemet i den forbindelse er at applikationens tilstand er meget skrøbelig. Lukkes browser vinduet, reloades siden, eller navigeres der væk fra siden, så er tilstanden tabt.

Her præsenteres en løsning hvor en signeret java applet bruges til at gemme applikationens tilstand lokalt. “Applikationen” er i dette tilfælde meget simpel. To lister, hvorimellem en stribe “muligheder” kan flyttes. Tilstanden af de to lister gemmes i en fil på din pc ved klik på “Save file” i java applet’en — der i øvrigt skal godkendes af brugeren først (tør du? — du giver den lov til at læse og skrive alle filer!).

23. marts 2006

Om billederne foroven

Hvis du har været her før har du sikkert lagt mærke til det — der er kommet billeder i toppen. Jeg syntes der skulle ske lidt på siden, og pladsen deroppe var blevet så tom efter Google forlod mig.

Billederne er nogle jeg selv har taget. De er skaleret ned til 1200 pixels i bredden og så er der sakset en 70 pixels høj stribe ud af dem. Denne har i Paintshop fået en fin gradient i venstre side. Så er alle billederne (der er 12 i skrivende stund, men der kommer flere til løbende) placeret i en mappe på serveren, hvorfra en lille fiks plugin “[Random Header Image][]” tager sig af at vise dem, helt uden ændring af eksisterende skabelon.

Er …

20. marts 2006

Include/import i Javascript

Med Web 2.0 og de deraf følgende Javascript biblioteker af stigende størrelse er der specielt én mangel i Javascript der så småt begynder at blive kritisk: mangelen på en “include” eller “import” erklæring, eller med andre ord at man ikke umiddelbart i én script fil kan angive at en anden skal indlæses. Min forrige artikel, “Leg med AJAX”, illustrerer det kun alt for tydeligt. Der skal inkluderes ikke mindre end 8 forskellige biblioteker for at få stillet funktionaliteten i det sidste til rådighed. Den stakkels udvikler der skal bruge Google biblioteket skal …

14. marts 2006

WordPress 2.0.2

Har opgraderet til nyeste WordPress version her til aften (fra 1.5.2). Fulgte anvisningerne, og det fungerede helt uden problemer af nogen art. Der var et par plugins der ikke lige fungerede efter opgraderingen, men ikke nogen væsentlige.

2. marts 2006

Leg med AJAX

Opdatering: Eksemplet nedenfor har stadig en vis relevans kode-mæssigt, men da Google har droppet deres SOAP API fungerer det ikke længere.

Dagens menu står på kald af SOAP-baserede web services via AJAX. Og hvis ikke du for nylig har forsynet dig med en kop kaffe, så var det måske en god idé at gøre det før du læser meget videre. For det er en hel del komponenter jeg hermed bringer i spil på samme tid. For de utålmodige starter jeg med resultatet — indlejrede Google søgninger:

10 første resultater (af ?):

Bemærk at Google kun tillader 1000 forespørgsler pr. dag pr. nøgle, så hvis der ikke kommer noget svar kan det være derfor.

24. februar 2006

Google AdSense – Reklamer eller svindel?

Tidligere besøgende har måske bemærket reklamer fra Googles “AdSense” program her på sitet. De er nu væk, og ikke med min gode vilje. Det var sjovt så længe det varede, åbenbart lidt for sjovt for Google. Desværre lader det til at Google har taget lektioner i svinestreger fra Microsoft.

Indtjeningen fra programmet har fra starten af — og jeg har været med i små to år — været meget beskeden. Hvilket var acceptabelt fordi den stod mål med indsatsen. For nogle måneder siden omlagde jeg så mit site, og de indlæg du læser nu gjorde sit indtog. Det repræsenterede en øget indsats fra min side, og jeg blev positivt overrasket over at indtjeningen fra AdSense programmet steg tilsvarende. Indtil jeg modtog …

23. februar 2006

Flere CSS print styles

AListApart har været igang igen. Og det er ved at være længe siden. Med artiklen “ Printing a Book with CSS: Boom!” dykker de ned i hvordan det med en god blanding af almindelig HTML, CSS2, CSS3 og en PDF generator ved navn Prince er muligt at fremstille bøger. Og selvom man ikke lige har interesse for bog-fremstilling kan jeg varmt anbefale artiklen. Den er proppet med flotte CSS tricks som kan få enhver webdesigner til (igen?) at bande over alle browsere der ikke understøtter de nyeste standarder.

Konvertering af Thai tekst

Før Unicode kom til, anvendte computere i Thailand et 8-bit tegnsæt ved navn [TIS-620][]. Det indeholder de almindelige engelske tegn på samme pladser som i ASCII tabellen, samt de thailandske tegn på de pladser hvor vi f.eks. har placeret æøå og diverse tegn med accenter på. Hvis en fil kodet i TIS-620 flyttes til en dansk (eller engelsk) computer og læses der, vil den indeholde tekst der ser ud som det her: “ÍÂÒ¡ÃÙéÇèÒ”. Når man som jeg har det ene ben i Thailand er det noget man ser ret ofte. Men det er heldigvis til at råde bod på. Personligt får jeg ikke meget ud af at konvertere volapyk’en til thai, men så kan min kære hustru da i det …

6. januar 2006

Indtastning af datoer

En af de ting der ofte er problematisk i web applikationer er indtastning af datoer. Nogle applikationer tvinger brugeren til at gå gennem en kalender (der ofte skal snakke med serveren for at skifte måned), for at være sikker på at datoen bliver indtastet i et gyldigt format. Det er langsomt, og det tvinger ofte brugeren til at bruge musen, selvom mange hellere vil taste datoen direkte. Andre applikationer giver kun mulighed for direkte indtastning, og tvinger dermed brugeren til overholde et specifikt format, som endda nogle gange slet ikke er nævnt.

Men hvorfor skal det være så besværligt? Her præsenteres et almindeligt input felt beregnet til dato-indtastning. Bag feltet ligger lidt logik der sørger for at en stribe forskellige formater …

3. januar 2006

Apache rewrite/proxy

Som web-udvikler arbejder jeg med både Apache og IIS, og der er flere af de maskiner jeg anvender der har begge dele installeret. Da de ikke kan køre på samme port havner man i en situation hvor alle referencer til den ene af dem indeholder et grimt portnummer som i “www.example.com:8000″. Ikke blot ser det ikke pænt ud, men en browser som Internet Explorer får også sådan en adresse helt galt i halsen med mindre man sætter det endnu mindre pæne “http://” foran.

Jeg præsenterer her Apache, der via hele to forskellige moduler kan håndtere at tilgangen til begge servere sker gennem den traditionelle port 80. Intet avanceret, det er bare et simpelt trick der kan løse problemet i de fleste situationer.