Jeg har længe ønsket mig at kunne læse indholdet af andres XML news feeds og websider i min server-side ASP-kode. Men den litteratur jeg ligger inde med om ASP og ASP.NET udvikling har ikke været til megen hjælp. Forleden satte jeg mig så ned og søgte lidt på problemet, og for evt. andre interesserede er her så løsningen jeg kom frem til. Det skal siges at jeg på ingen måde er ekspert på området, og hvis der findes bedre metoder hører jeg meget gerne om det.

ASP og VBScript

I "gammeldags" ASP skal man have fat i objektet ServerXMLHTTP. Hvis man f.eks. vil læse indholdet af mit RSS news feed, så kan det gøres med følgende VBScript-kode:

Dim xml Dim ok ' Lav et xmlhttp objekt: Set xml = Server.CreateObject("MSXML2.ServerXMLHTTP") ' Åben forbindelsen: xml.Open "GET", "http://www.rockland.dk/xml/rss.asp", False ' Send request og læs data: xml.Send If xml.status = 200 Then ok = True If ucase(trim(mid(xml.responseText,1,6))) = "XMLERR" Then ok = False End If Else ok = False End If If ok = False Then ' Noget gik galt: Response.Write "xml.status: " & xml.status Response.Write "xml.statusText: " & xml.statusText Response.Write "ERROR: " & xml.responseText Else ' Udskriv det læste indhold: Response.Write "Læst kode: " & xml.responseText End If

Det læste indhold ligger nu som en streng i xml.responseText, og man kan bruge de sædvanlige streng-rutiner, regular expressions o.lign. til at fortolke indholdet. Indholdet af den læste side kan dog også tilgås i xml.responseXML, og jeg formoder at man her har en "DOM-repræsentation" af siden som man kan "kravle rundt i" med sædvanlige DOM-rutiner. Jeg er ikke selv nået dertil at jeg har kigget på dette endnu, så om responseXML virker med HTML, eller om det kun er med rigtige XML-dokumenter (som f.eks. Atom og RSS news feed) har jeg ikke fundet ud af.

ASP.NET og C#

Her er så kode der implementerer nogenlunde tilsvarende funktionalitet i ASP.NET. Eksemplet er i C#, og princippet er afprøvet i ASP.NET 1.1 og 2.0. Koden implementerer en funktion GetContent() som tager en URL på adressen der skal læses, samt en reference til en label (comstatus) hvori en evt. fejlmeddelelse skrives. Igen, jeg er ikke ekspert her, og måske kan det gøres på en bedre måde:

protected string GetContent(string url, System.Web.UI.WebControls.Label comstatus) { string result = ""; System.Net.HttpWebRequest wreq = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(url); wreq.Method = "GET"; wreq.Timeout = 3000; System.Net.HttpWebResponse wr = (System.Net.HttpWebResponse)wreq.GetResponse(); if (wr.StatusCode == System.Net.HttpStatusCode.OK) { System.IO.Stream s = wr.GetResponseStream(); System.Text.Encoding enc = System.Text.Encoding.GetEncoding("utf-8"); System.IO.StreamReader readStream = new System.IO.StreamReader(s, enc); result = readStream.ReadToEnd(); } else { comstatus.Text = "Error: " + wr.StatusCode + " / " + wr.StatusDescription; } wr.Close(); return result; }

I praksis...

Hvis du vil bruge ovenstående teknikker til at læse indhold fra andres sider eller news feeds for visning på dine egne sider, så skal man (udover evt. opretslovs-mæssige overvejelser) være opmærksom på at det ikke er så smart hvis andres sider læses hver gang dine sider vises. For det første er det ikke fair at duplikere alle requests mod dine sider til andres. Specielt ikke hvis dine sider er ofte besøgt. Og desuden er det heller ikke særligt venligt overfor dine brugere hvis de hver gang skal vente den ekstra tid det tager at læse de eksterne sider eller news feeds først. Vær også opmærksom på at nogle feeds er konstrueret så de maksimalt kan læses af den samme "bruger" f.eks. én gang i timen! I stedet bør man læse med et interval, og et ASP eksempel på hvordan man kan sætte det op i global.asa kan findes på ActiveDeveloper.dk. Det læste indhold kan man så vælge at gemme i en database, i en almindelig tekstfil, eller måske i simple applikations-variabler indtil der læses igen næste gang (Hvis man vælger at gemme i applikations-variabler, så skal indholdet selvfølgelig hentes igen hver gang applikationen genstartes).

Selv bruger jeg nu ovenstående til, via news feeds, at læse de seneste overskrifter fra et par venners weblogs, og linke til disse indlæg her fra siden (pt. i "Venner der blogger" boksen i højre spalte). Men der er flere ting på tegnebrættet...

Update 15/2: Via et indlæg på 9am.dk er jeg blevet opmærksom på et ASP-eksempel på html.dk der læser et XML dokument (RSS news feed), og dét ser ganske interessant ud.

 

Jeg har lige opdaget at Rockland i oktober sidste år fyldte 10 år. Det burde jeg have fejret på en eller anden måde, men jeg overså det altså...

Rockland startede oprindelig som en side hvor jeg systematisk listede alle mine musikalske anskaffelser, og kommenterede en stor del deraf. Den allerførste side dækker anskaffelser i perioden okt. - dec. 1995. Bemærk hvordan opbygningen fra starten har været a'la weblog (omvendt kronologisk), selvom weblog som begreb først kom til meget senere. Datoen i bunden af siden siger iøvrigt sept. 97, men det er bare der jeg foretaget den sidste rettelse på siden.

Sideløbende med Rockland havde jeg iøvrigt dengang en hjemmeside jeg kaldte Bandlist.dk hvor jeg vedligeholdte en samling af links til websites om danske bands, og i perioden okt. 98 - okt. 99 (de glade IT-dage hvor alt der lå på nettet lugtede af guld) havde jeg en aftale med Scandinavia Online der hostede både Rockland og Bandlist.dk på deres stort opslåede portal-projekt, sol.dk (RIP).

Fra april 2002 holdt jeg op med kun at skrive om musik på Rockland, og siden da har det været en almindelig "ufokuseret" personlig weblog om alt og måske allermest intet:-) Det var også kort herefter jeg fik opbygget mig en rigtig (hjemmesnedkret) weblog-applikation med database-backend og mulighed for at skrive kommentarer til mine indlæg. Det var så iøvrigt også lidt senere samme år, at jeg solgte Bandlist.dk.

Fra februar 2004 fik jeg tilføjet et news feed med mine indlæg på Rockland, og i hvert fald fra der, har det føltes som en 100% rigtig weblog :-) I maj 2005 begyndte jeg også at ligge mine billeder på nettet i lidt større stil, men det sker dog "eksternt" i mit Flickr-galleri.

2005 er indtil videre det år jeg har skrevet færrest indlæg, men det betyder nu ikke at min weblog er ved at dø. Faktisk har der været masser af inspiration, idéer og lyst, der er bare så mange ting der aldrig er nået længere end en skitse i mit hovede.

Nok navlepilleri. Næste indlæg skal nok handle om noget andet end om Rockland og mig selv... Det bliver dog med garanti også nørdet :-)

 

DR's hjemmeside kan man frem til midt i februar høre en koncertoptagelse med Under Byen fra deres nylige koncert i Jazzhouse, og her er masser af nyt materiale at høre fra gruppen. Under Byen er et af mine absolutte yndlingsbands og jeg glæder mig til deres nye album der skulle udkomme d. 6. marts. Det er første rigtige album fra bandet i 4 meget lange år! At dømme efter koncerten er rytmerne generelt kommet længere frem i lydbilledet og måske er lyden blevet både tungere og voldsommere? På en del af numrene er der endda lagt godt med forvrængning på Henriette Sennenvaldts stemme! Der har været en stor udskiftning i bandet over de sidste år, men det lyder nu som om gruppen fuldt ud har beholdt sin orginalitet og appeal.

Den 8. april giver Under Byen i øvrigt koncert i Store Vega. Der er lang tid til, men billetten er selvfølgelig sikret :-)

Update: Koncerten fra Jazzhouse (eller dele af den i hvert fald) sendes også i "P3 Live" nu på søndag d. 29. januar, kl. 23.05.

PS. Hør også deres nye/kommende single (og sniglyt til prøver på andre danske udgivelser der er på vej).

 

Hvis er der er to ting som har ændret min måde at bruge internettet på de senere år, så er det "tabbed browsing" samt bloglines.com og newsfeeds (og hvis du talte tre ting, så er det fordi jeg tænker på bloglines og newsfeeds under ét). En ting der dog irriterede mig fra start da jeg begyndte at bruge bloglines, var at visse danske medier var langsomme til at lancere newsfeeds med nyheder. De store som DR, TV2 og de fleste dagblade var (eller kom i hvert fald hurtigt) med, men musikbladet Gaffa og de danske fodboldsites onside.dk og bold.dk var til min irritation ikke vågnet op endnu. For et års tid tid siden kom så Gaffa med på vognen, og fra i dag af er Bold.dk endelig også med. Ja, dette var såmænd bare en lille servicemeddelelse til fodboldinteresserede newsfeed brugere (goodbye onside.dk)...

Hvordan en umiddelbart lille ting som "tabbed browsing" helt ændrede min måde at bruge internettet på? Det må jeg nok forklare en anden gang, det passer ligesom ikke ind i dette indlægs tema iøvrigt (det var bare en smart indledning) :-)

 

Ca. et år efter frigivelsen af Firefox version 1.0 er opfølgeren nu ude. Hvis du hører til dem der har kørt med Release Candidate 3 de sidste uger, så har du faktisk kørt med den endelige version et par uger før de fleste andre, da der ikke opstod behov for yderligere rettelser inden Mozilla i nat officielt annoncerede frigivelsen af Firefox version 1.5.

Overfladisk set ser det måske ikke umiddelbart ud som om der er så meget nyt når man kigger på browseren, men det er fordi de fleste nyheder gemmer sig indeni. Nyt er bl.a. et forbedret opdateringssystem, hurtigere back/forward-funktionalitet, mulighed for automatisk slettelse af private browse-data, drag-and-drop reordering af browser-tabs, bedre generel sikkerhed, samt forbedret understøttelse af webstandarder inkluderende SVG-support, Javascript opgraderet til version 1.6 og flere nye CSS features. Der er også understøttelse af canvas html-elementet. Canvas er ikke en W3C standardiseret funktionalitet, men er også understøttet af Opera og Safari. Hvor SVG primært er vektor-orienteret, er integreret med DOM og kan "styles" med CSS, så er Canvas så vidt jeg kan forstå en simpel "bitmap-canvas" med et tilhørende javascript-API til at tegne med. JD har et indlæg med links til flere SVG og Canvas ressourcer.

Kompatibiliteten med "quirky" non-standard kode er tilsyneladende også generelt forbedret i Firefox 1.5, da det er i hvert fald for første gang er lykkedes mig at gennemføre et lotto-køb på tips.dk på trods af dette sites ret beskidte javascript-implementation. Og en bug som bl.a. gjorde indlæsningen af et site som politiken.dk til en ulidelig langsom og flimrende sag på min efterhånden 6,5 år gamle 400MHz AMD K6-II PC er også rettet (Hvis man har en hurtigere PC er det ikke sikkert at man har oplevet noget problem). En lille feature jeg savnede meget i version 1.0 var muligheden for at kunne tvinge links der vil åbne en side i et nyt vindue til at åbne i en ny tab i stedet. Det var godt nok muligt via en skjult setting i 1.0, men denne "feature" var ikke helt bugfri. I version 1.5 skulle problemerne omkring dette være løst, og det er en setting der kan slås til i de almindelige browser-indstillinger (Hvis der via javascript defineres en størrelse på den nye side, så åbnes den dog stadig i et nyt browservindue).

Som webudvikler finder jeg forbedringerne omkring understøttelse af webstandarderne interessante, så det vil jeg gå lidt tættere på:

Det er klart at en del af de nye features der er tilføjet support af i Firefox 1.5 (Gecko version 1.8) er af begrænset værdi for webudviklere sålænge det ikke er ting der er bredt understøttet af de fleste browsere. Men mange af specielt de nye CSS-features kan dog godt bruges som ekstra en behagelighed der kommer brugere af Firefox (og andre browsere der er på forkant med udviklingen) til gode uden at det forringer siderne når de ses i browsere der ikke understøtter de brugte features. Det er også værd at bemærke at Microsoft efter 4 års dyb søvn endelige er begyndt at rykke lidt igen. I hvert fald lover Microsoft at den kommende Internet Explorer 7 Beta 2 vil indeholde en række forbedringer som webudviklere har skreget efter i årevis. PC World tog iøvrigt for nylig et interessant lille kig på Firefox 1.5 Release Candidate 1, Opera 9 Preview 1 og Internet Explorer 7 Beta 1 for at danne sig et lille overblik over hvad der rører sig på browserfronten for tiden.

Firefox links:

Mere om CSS3 Multicolumn support

Jeg vil lige tage et hop på ca. 8 år tilbage i tiden, til dengang Netscape introducerede Netscape version 4. Der er i dag ikke meget positivt at sige om den gamle Netscape 4.x browser fra 90'erne, men Netscape havde dog dengang implementeret en interessant udvidelse af HTML som bare aldrig blev adopteret af de officielle HTML/XHTML-standarder, eller endsige fuldt op med support i andre browsere. End ikke Mozilla-browseren eller efterfølgende Netscape-versioner fortsatte med at understøtte dette. Derfor slog dét <multicol cols="x"> tag som Netscape introducerede dengang aldrig rigtigt an, selvom man kunne konstruere spalter med dynamisk reflow, så indholdet i elementet automatisk blev jævnt fordelt i det specificerede ("x") antal spalter. En funktionalitet som jeg ellers tror at mange webdesignere ville sætte stor pris på at se understøttet i moderne browsere generelt.

Det er egentlig ikke så underligt at det aldrig blev optaget i W3C's html-standard, da funktionaliteten konstrueret med HTML-tags ikke rigtig harmonerede med W3C's intentioner om at skille struktur og præsentation. Derfor er det mere naturligt at styre funktionaliteten fra CSS, og I W3C's CSS version 3 er funktionaliteten nu tilsyneladende da også på vej tilbage! Det er stadig en specifikation i udkast, men Mozilla har implementeret en eksperimental understøttelse af den som kan prøves i den nye Firefox. Tag et kig på specielt denne demo med Firefox 1.5 og læs evt. mere om demoen på Fini Alring's weblog. Bemærk bl.a. hvordan antallet af kolonner skifter hvis du ændrer bredden af browser-vinduet. Og det er vel og mærke helt uden brug af Javascript, det er udelukkende styret af CSS.

 

Jeg har en HP ScanJet 6300C flatbed-scanner til salg. Den er fra juni 2000 og er med 1200 dpi optisk hardware-opløsning (36 bit). USB eller SCSI-2 tilslutning. Passiv dias-adapter. Incl. software, samt USB- og strømkabler. Det er en god scanner i perfekt stand, og sælges kun fordi jeg har anskaffet mig en ny med lidt mere ambitiøs film-scannings faciliteter indbygget.

Pris kr. 300,- ved afhentning i Kbh. S (Oprindelig nypris 2970,-). Kontakt mig på min email-adresse hvis du er interesseret: stig [at] rockland [dot] dk.

Update 24/11: Solgt.

 

Det skete noget mærkeligt for et øjeblik siden. Jeg stod ude i køkkenet da jeg pludselig stivnede. En fascinerende, dragende, mystisk og fremmed - og så alligevel meget bekendt - lyd kom inde fra stuen. Jeg var pludselig rejst mange år tilbage i mit liv. Det var Kate Bush i radioen, men det var ikke et nummer jeg kendte. Jeg havde godt nok hørt at der var nyt på vej fra en en af mine første yndlinge som ellers ikke har givet en lyd fra sig i 12 år, men det var fandme en underlig, nærmest magisk, oplevelse pludselig at høre hende med noget nyt igen. Selvom vi nok skal endnu længere tilbage end 12 år for at finde en rigtig god Kate Bush plade, så lød det nye nummer endda rigtig spændende. Gid de snart spiller det igen...

Ahh! Man kan se videoen til "King of the Mountain" på hendes hjemmeside. Og ellers er det vist bare at vente på at hendes comeback (dobbelt-)album "Aerial" der skulle komme ud d. 7. november i Danmark. Damn.

 

Jeg ville egentlig skrive et langt og ambitiøst indlæg om de nye features i denne beta-version, men det kniber lige lidt med tiden til det. Lad mig blot i stedet kort konstatere at jeg har kørt med Firefox 1.5 beta 2 som min primære browser på hjemme-PC'en i et par uger, og jeg har ikke haft et eneste crash eller stødt på nogle betydelige bugs. Med andre ord, så prøv den endelig og vær med til at gøre det endelige produkt endnu bedre ved straks at rapportere eventuelle fejl du støder på, før Mozilla.org lukker for yderligere rettelser inden den endelige udgave af Firefox version 1.5 frigives.

Som sagt er mine erfaringer yderst positive, og derfor vil de fleste nok ikke have noget problem ved blot at erstatte deres nuværende Firefox 1.0 installation med 1.5beta2 uden videre. Men man skal dog være opmærksom på at mange extensions ikke er opdateret til at virke med beta'en, så tjek dette først hvis der er nogle af disse du er afhængig af fungerer. Hvis du ikke vil lade 1.5beta2 erstatte din 1.0 installation, så kan du sagtens have begge versioner installeret på én gang. Du skal så bare sørge for at de kører på hver deres profil.

Installering med separat profil (under Windows):

  1. Kør installationsprogrammet til Firefox beta 2, og sørg får at installere i et separat directory. Du vil på et tidspunkt blive spurgt om browseren skal startes automatisk når installationen er færdig, og det er vigtigt at du fravælger dette!
  2. Start den nyinstallerede Firefox beta 2 med -profileManager som parameter, f.eks via "Run"-kommandoen (eller fra en dos-prompt). Kommandoen der skal køres fra "Run", kan f.eks. se således ud (uden kantede paranteser): ["c:\program files\firefox beta\firefox.exe" "-profileManager"].
  3. Opret nu en ny profil til betaen, f.eks. kaldet "beta".
  4. Ret alle ikoner med shortcut til beta-browseren, så de bruger den oprettede beta-profil: ["c:\program files\firefox beta\firefox.exe" "-p" "beta"].

Ovenstående fremgangsmåde er iøvrigt generel hvis man ønsker to forskellige mozilla-baserede browsere installeret på én gang uden at risikere at ens profil-data bliver ødelagt.

Selvom jeg selv er sluppet godt fra at lade 1.5beta2 erstatte min 1.0 installation, så må det nok principielt være to-profil løsningen der anbefales. Det vil uanset hvad altid være en chance at tage hvis man overskriver en produktions-version (og profil) med en beta-version.

Jeg har ikke kunnet finde en enkelt side med en god oversigt over hvad der er nyt imellem 1.0 og 1.5beta2, men hvis man lægger indholdet sammen af "The Burning Edge"'s lister over nyheder i hhv. Alpha 1, Alpha 2, Beta 1 og Beta 2, så skulle man i hvert fald få nogle af de vigtigste med. Mange af beskrivelserne på disse lister er dog ret tekniske.

Der kommer nok yderligere en eller et par "release-candidates" på markedet inden den helt endelige Firefox version 1.5 frigives, men når først release-candidates er ude, så er det sandsynligvis kun eventuelle kritiske fejl der bliver rettet. Så hellere finde og rapportere dem der irriterer dig nu end om en uge.

Update 2. nov. 2005: Firefox 1.5 Release Candidate 1 er nu frigivet (Se evt. også den officielle "whats new" samt Burning Edge's uofficielle 1.5beta2 til 1.5RC1 changelog).

Update 11. nov. 2005: Firefox 1.5 Release Candidate 2 er frigivet.

Update 1. dec. 2005: Firefox 1.5 blev frigivet forleden i den endelige version.

 

Det er lidt småt med indlæg i min weblog for tiden. Det er ikke fordi jeg ikke har lyst eller emner jeg gerne vil skrive om. Jeg tror faktisk jeg render rundt med 17 potentielle indlæg i mit hovede for tiden (og nogle af dem meget omfattende), men der mangler lige tiden til at få dem skrevet. Men Mew's koncert igår i en propfyldt KB Hallen må jeg lige give et par hurtige kommentarer med på vejen...

Det var min fjerde Mew-koncert, og bandet er således et af de navne jeg har set oftest live. Måske kun lige slået af Blue Foundation som sjovt nok netop var bandet der blev annonceret som et ekstra opvarmningsband et stykke tid efter at vi havde købt vores billetter.

Jeg vil sige at Blue Foundation skuffede mig, og det kan der måske nok være mange årsager til. Én kunne være situationen som opvarmningsband, og en anden kunne være at de ikke havde fyren med den elektriske cello (eller hvad det er?) med i går. Men frem for alt lød det for mig som om at deres musik led meget kraftigt under KB Hallens berygtede akustiske forhold. Jeg synes i hvert fald de har leveret klart bedre oplevelser de andre gange jeg har set dem.

Mew's nye album har slået benene væk under mig, på en måde det er lang tid siden jeg sidst har oplevet med en plade. "And the glass handed kites" er et mesterværk i mine ører, og jeg kan ikke rigtig lige nu se hvem der skal konkurrere med dem når jeg skal tænke på hvad der har været årets album for mig i år. Så det var selvfølgelig med store forhåbninger jeg så frem til at de gik på. De seneste år har Mew med deres "Frengers"-sæt turneret med et meget stramt gennem-korigraferet show hvor bandet det meste af tiden nærmest kun stod som silouetter foran en meget dominerende baggrund af underlige videoer og animationer. Det var et meget fængende show første gang jeg så det, og selvom de efterfølgende koncerter også har været rigtig gode har jeg alligevel efterhånden savnet lidt at de ville træde ud af mørket og skabe lidt mere direkte kontakt med deres publikum... Og gæt engang, i en hæsblæsende orkan af en koncert var det lige præcis hvad de gjorde igår. Videoerne kører stadig på baggrunden til mange af numrene, men det var som hele bandet var trådt et par skridt frem på scenen, og lyset var skruet op så bandet aldrig bare blev reduceret til silhoutter på en baggrund. Det var en koncert med masser af power fra allerførste tone og hele vejen igennem igår, og det lignede absolut ikke et band der var uvante eller usikre ved rampelyset. Jeg har aldrig set dem bedre, og nu må de da snart blive de verdensstjerner de kæmper så hårdt for at blive (og afgjort fortjener).