AJAX og Æ,Ø,Å.

31 Comments

I den tid jeg har arbejdet hos Reklamebureauet ReFocus A/S, har min interesse for AJAX for alvor taget til. Med en god blanding af prototype og Script.aculo.us og andre visuelle scripts, har vi mulighed for at lave hjemmesider, der ligner og fungerer mere og mere som “almindelige” dekstop applikationer – Men der er et catch eller flere!

Et af de første problemer jeg hørte om, var problemet med browsers back-buttons, hvilket der heldigvis findes en løsning på – og lad os ikke glemme, at dette faktisk kun finder sted, når vi bruger AJAX til navigation, eller fjerner/opdaterer et element, så det gamle indhold forsvinder.

Alex Bosworth har skrevet et par artikler om diverse problemer, som folk enten overser eller ikke kender til – Meget interessant og relevant læsning, for folk der vil igang, eller er igang med AJAX.

AJAX og Æ,Ø,Å

I de to nævnte artikler ovenfor, kan du læse meget mere om diverse små problemer. Jeg har i mellemtiden fundet mit eget problem – og det er der nu mange der har, hvis man googler det lidt. Problemet er Æ, Ø, Å og muligvis også andre specielteng i forbindelse med request i AJAX.

I resten af denne post vil jeg tage udgangspunkt i at lave et request med prototypes AJAX objekt.

More

DeviantART Gallery Feed.

4 Comments

Okay – Jeg var vidst lige en tand for ivrig da jeg skrev posten “DeviantART V.5.“.
Sandt nok ér DeviantART kommet med en version 5, og sandt nok byder denne også på nogle nye og spændende funktioner… Men så stopper jublen vidst også der?!

Fint nok at udviklerne nu endelig har fået øjnene op for RSS-feeds – Men det er dog den mest kedelige feed jeg nogen sinde har set!!!

Klik for at se billedet i fuld størrelse.

Billedet herover viser hvordan deres “gallery-feed” tager sig ud i RSSOwl, et OpenSource værktøj til at håndterer , og – Og nej, det er ikke bare fordi readeren ikke kan håndterer feeden. Læser du den direkte feed (), ser du faktisk at den ikke indeholder andet end et link!? Hvor kedeligt er det ikke? Og ikke mindst spild af potentiale!

Personligt havde jeg da nu håbet på at kunne slippe for at skulle browse www.deviantart.com, hvis jeg ville se en ny kontribution – Men næææh nej, sådan leger DeviantART ikke. Du kan få et link, og så må du selv finde ud af resten (hvilket dog heller ikke er så svært) – Men der synes ikke at være meget galley over det?!

DeviantART – Feeds – Kom igen million-foretagende! Ahhh – Det skulle bare ud.

FeedBurner

1 Comment

Klik for at se billedet i fuld størrelse.Jeg har netop registreret mine hos FeedBurner. I den forbindelse vil jeg bede/opfordre alle der har tilmeldt sig mine feeds, tilføjet live bookmarks eller på anden måde benytter dem, om at opdaterer disse til nu at bruge følgende URLs:
Poster via RSS 2.0:
o http://feeds.feedburner.com/simon-jensen
Kommentarer via RSS 2.0:
o http://feeds.feedburner.com/simon-jensen/comments

Hvorfor jeg har valgt at gøre dette, synes at blive besvaret med følgende citat:

FeedBurner is the worlds largest feed management provider. Our Web-based services help bloggers, podcasters and commercial publishers promote, deliver and profit from their content on the Web.

Klik for at se billedet i fuld størrelse.Det er ikke så meget det, at FeedBurner er de største, men mere de mange features man får ved at bruge dem, der har tiltrukket mig.
Da jeg første gang fandt ud af at lave RSS-feed blev jeg helt vild – Weee, nu kan man læse mine poster på alle mulige måder. Jeg har da også mødt et par folk der bruger mine feeds, men man ved jo aldrig hvor mange? FeedBurner hjælper dig med det.

Når du opretter en profil, kan du optimerer og tweeke dine feeds på mange forskellige måder, men det fedeste er deres statestikker.

For selv at komme igang, kan du læse min tidligere post, som forklare hvordan du sætter en RSS-feed op. Hernæst skal du bare følge guiden på FeedBurner.

FCK editor

2 Comments

I sin tid lavede jeg denne blog, mest af alt for bare lige at se om jeg kunne. Der finde allerede adskillige steder, hvor man gratis kan signe op til en blog, og steder hvor man gratis kan downloade blogs – Men jeg ville gerne lave min egen.

Først og fremmest lurede jeg WordPress af, for ligesom at se hvad deres blog kunne indeholde, og for at se hvordan de havde designet deres administration. Blogge er i og for sig meget simple. Langt hen ad vejen synes de at bestå af: en banner/logo, x poster på forsiden, og en side-menu med arkiv, kategorier, links og lidt andet forskelligt lir, hvilket alt sammen er automatiseret.
Dynamisk postering af indhold var ikke nyt for mig, så jeg manglede kun én ting. Jeg ville gerne have en rigtig brugervenlig, editor til at skrive mine poster med.
Du har sikkert set dem rundt omkring, f.eks. hvis du har kommenteret på en blog et eller andet sted – Jeg ville have mulighed for at skrive på min blog, som skrev jeg i MS Word, OpenOffice el.lign. – Og til dette fandt jeg den fantastiske FCKeditor, som jeg vil detikerer denne post til.

More

RSS til alle

5 Comments

RSSRSS, RSS-feeds, RSS-streams eller Live-bookmarks, er muligvis stadig buzzwords for dig, teknologi som du ikke helt ved hvordan eller hvad du skal bruge til? Og det hjælper sikkert ikke meget, når jeg fortæller at RSS står for Really Simple Syndication eller de tidligere versioner Rich Site Summary?!
Teknologien er dog ikke specielt ny, den har bare ikke været så udbredt og understøttet som den er nu, og som den ganske sikkert vil blive det i fremtiden.

Kort sagt, er RSS et format, eller en måde hvorpå man kan posterer overskrifter og/eller indhold, sågar medie-filer, fra f.eks en hjemmeside, for derefter at hente og læse det posterede fra andre applikationer og/eller hjemmesider.

Den første version af RSS kan faktisk spores helt tilbage til 1999, og blev udviklet af Dan Libby i forbindelse med my.netscape.com – sådan skrives det på Wikipedia, ved en søgning på RSS. Idag findes RSS i version 2.0, og er blevet en anerkendt standard – W3C, som håndterer standarder på nettet, har sågar oprettet en valideringsfuntion til RSS feeds.
RSS bruges i vid udstrækning på de mange webblogs (som denne), der vælter frem for tiden, men også rigtig mange store nyhedssider er begyndt at benytte sig af RSS – F.eks TV2 nyhederne. Med RSS kan man nemt og hurtigt komme ud til mange brugere, og brugerne af en RSS-feed behøver ikke engang at skulle gå ind på den side hvorfra de vil læse – De skal blot bruge en applikation der kan håndterer RSS!

Selvom du måske stadig ikke kender specielt meget til RSS, findes der allerede adskillige programmer som kan håndterer formatet. Mozilla Firefox og Thunderbird kan begge håndterer RSS, og på Microsofts hjemmeside kan det læses at den næste version af Internet Explorer (version 7), også kommer til at understøtte dette. Derudover findes der flere programmer der er lavet specielt til RSS, se f.eks FeedReader og RSSOwl. Ja, faktisk findes der også programmer til din mobiltelefon, der undertøtter RSS.

Nok om RSS´ formål og historie, der er en grund til at denne post findes under kategorien Scripts – Det er nemlig ikke specielt svært at selv at lege med RSS!
Resten af denne post, vil koncentrerer sig om hvordan du kan få din hjemmeside til at leverer indhold via RSS (2.0), og hvordan du kan hente indhold fra andres RSS-feeds. Som programmeringssprog vil jeg benytte PHP, som du kan læse mere om i kategorien PHP.
Du kan i slutningen af hvert understående afsnit, download scripts som skulle være lige til at tilpasse dit eget site.

Postér RSS fra din side:
Den grundliggende idé er ganske simpel. Vi skal oprette en fil, hvortil vi skriver det indhold vi vil have andre skal kunne læse vha. understøttende applikationer. Tricket er så bare, at få skrevet denne fil, så de andre applikationer kan forstå den – Til dette er der heldigvis noget der hedder standarder.

En RSS-feed er i bund og grund blot et XML-dokument. Meget, meget kort fortalt, så indeholder et XML-dokument forskellige start- og slut-tags, hvor imellem den data man vil håndtere findes. Antallet af tags kan varierer, fra feed til feed, dog er nogle obligatoriske og findes dermed i alle feeds. På følgende link kan du læse mere om disse tags, og RSS specifikationerne gennerelt.

Det første vi skal have gang i, er en måde hvorpå vi kan oprette og skrive til en fil. Til dette har PHP den indbyggede funktion fopen(String, String). Første parameter vi giver dennne funktion er en fuld sti til den XML-fil vi vil oprette eller opdaterer. Findes denne fil ikke i forvejen, forsøger funktionen at oprettet den. Den næste parameter, er den mode, eller rettighed, som vi vil arbejde med. Der findes flere forskellige (læs linket til funktionen), men vi skal bruge skrive-rettigheden write, som betegnes med et "w". Funktionskaldet gemmer vi i en variabel, $rss_file, som vi skal bruge som resource til at skrive med:
$rss_file = fopen("./rss/index.xml", "w");
Når vi har åbnet en resource til filen, med fuktionen fopen, benytter vi funktionen fwrite(Resource, String) til at skrive til filen med. fwrite skrive en linie ad gangen, så vi skal bruge den en del gange.

Standard for vores XML-fil er, at den skal begynde med følgende:
<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0">

<channel>

<title>Feed titel</title>

<link>Link til din hjemmeside</link>

<description>En kort beskrivelse til din feed</description>

<language>da</language>

Og skrives med fwrite, på følgende måde:
fwrite($rss_file, "<?xml version="1.0" encoding="ISO-8859-1"?>");

fwrite($rss_file, " ");

fwrite($rss_file, "<rss version="2.0">");

fwrite($rss_file, " ");

fwrite($rss_file, "<channel>");

fwrite($rss_file, " ");

fwrite($rss_file, "<title>Feed titel<title>");

fwrite($rss_file, " ");

fwrite($rss_file, "<link>Link til din hjemmeside</link>");

fwrite($rss_file, " ");

fwrite($rss_file, "<description>Feed beskrivelse</description>");

fwrite($rss_file, " ");

fwrite($rss_file, "<language>da</language>");

fwrite($rss_file, " ");

Herefter kan du f.eks. lave et kald til en database, hente titler, poster, tidspunkter, hvad det nu end måtte være du vil posterer, og udskrive disse mellem tagget <item> og </item>. Det er her antallet af tags kan varierer. Denne version har kun medtaget de mest anvendte, og nødvendige:
while(der er poster der skal skrives)

{

    fwrite($rss_file, "<item>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "<title>".$title."</title>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "<link>".$link."</link>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "<description>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "<![CDATA[".$post."]]>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "</description>");

    fwrite($rss_file, " ");

    fwrite($rss_file, "</item>");

    fwrite($rss_file, " ");

}
Endelig afslutter du din RSS-feed, og lukker skrivningen til filen vha. funktionen fclose(Resource):
fwrite($rss_file, "</channel>");

fwrite($rss_file, " ");

fwrite($rss_file, "</rss>");

fclose($rss_file);

o DOWNLOAD funktionen rss_generate og begynd at postere via RSS.

Hvis du, som jeg, benytter Mozilla Firefox, kan du anbringe et lille ikon i adresselinien (som det i topen af denne artikel), ved at tilføje følgende linie i sidens <head>-sektion:
<link rel="alternate" type="application/rss xml" title="Min feed" href="http://www.din-side.dk/rss/" />

F.eks. Internet Explorer 6 undestøtter endnu ikke RSS, så du kan også placerer ikonet på din side på traditionel vis, ved at linke til din feed. Du kan downloade forskellige formater, farver og størrelser af ikonet fra www.feedicons.com.

Hent RSS til din side:
For at kunne læse andres RSS-feeds, skal vi have lavet en parser, mere præcist, en XML-parser.
En XML-parser benytter sig af de definerede tags, ved at genkende disse, og håndtere de data, der måtte eksisterer imellem dem. I denne version vil jeg kun håndterer tagsene title og link, for på den måde at kunne udskrive en liste med titler, som indeholder links til den tilsvarende titels post.

Parseren er bygget op af følgende fire funktioner:
readFeeds

startElement

characterDataHandler

endElement

readFeeds(String, Int) fungerer som en slags "main", og er den vi kalder for at parse en RSS-feed. Stengen skal indeholde stien til den feed du vil parse, og tallet er antallet af nyheder vi vil have vist.
Herudover findes funktionerne startElement, endElement og endelig characterDataHandler, som erstandard XML-parser funktioner.
I readFeeds opretter vi en resource til den feed vi vil parse, og selve parsingen af dataen udførers herefter af de tre sidstnævnte funktioner.
i startElement funktionen vælger vi kun at ville håndterer hvad der findes mellem item tagsene. Herefter benyttes characterDataHandler fukntionen til at gemme dataen for title og link gemt i variabler. Endelig udskriver vi selve dataen i endElement funktionen, hvorefter vi nulsætter variablerne. Denne process fortsætter indtil vi har fået udskrevet hvad der svarer til det tal vi gav som sidste parameter til readFeeds funktionen.

Det er en process der er lidt svær at forklarer på tekst, men vælger du at downloade scriptet nedenfor, er det faktisk ikke særlig svært selv at lege med. Vil du have flere tags med, kan du tilføje disse til de globale variabler, og gemme dataen for disse i characterDataHandler funktionen. Selve udskrivelsen foregår i endElement funktionen, og fungere som normalt i PHP.

Scriptet nedenfor indeholder de fire funktioner, samt eksempeler på hvordan scriptet anvendes.

o DOWNLOAD XML-parseren readFeeds.