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

Yahoo! User Interface Library

No Comments

For et par dage siden skrev jeg lidt om AJAX. Jeg nævnte at script.aculo.us havde en dejlige pakke til fri download, indeholdende en god samling scripts, til at bygge spændende, interaktive webapplikationer. Nu har jeg måske fundet endnu en kilde!?

Yahoo! har udgivet en lignende pakke de kalder Yahoo! User Interface Library. Interfacet og et tilhørende Yahoo! Design Pattern Library er faktisk hvad der Yahoo! selv benytter, sådan står det skrevet på deres tilhørende developer blog.

Jeg har ikke haft tid til at se nærmere på biblioteket endnu, men har downloaded det og set på eksemplerne – Og der skulle nok være noget brugbart deri. Du kan finde flere links og dokumentation på Yahoo!´s  Developer Network.

Flickr Feed

No Comments

FlickrI den sidste er jeg kommet forbi flickr.com flere gange. Men hver gang har jeg hurtigt navigeret videre, uden at sætte mig ind i hvad det engentlig er. Sikkert bare endnu et online-storage site, har jeg tænkt. Men Flickr er nu lidt mere end det.

Flickr er rigtig nok et site, hvor du har mulighed for at uploade og gemme dine billeder. Men Flickr har en del features som gør det bare den lille smule bedere.

Flickr er, efter hvad jeg har forstået, en godt eksempel på en Web 2.0 applikation – Hvilket (vel) vil sige, intuitivt, brugervenligt og lige til. Siden opfører sig, som man regner med den vil gøre.
Med en god brug af Javascript, AJAX og sikkert andet, har hovederne bag sitet pumpet dette med massere af fede, og meget funktionelle, features. Heraf kan nævnes:
o Flere måder at uploade billeder på – Fra Flickr.com, via mail eller via et eksternt program (Flickr Uploadr).
o RSS-feeds til dine billeder.
o Giv retighedder til din billeder, om de skal være private, for en gruppe eller for alle (offentlige).
o Tilføjelse af tags, beskrivelse, titel, favoritter.
o Organisationsværktøj, hvilket virker fantastisk. Vha. drag-and-drop kan du tilføje selvvalgte billeder til forskellige sets, så du kan kategoriserer dine uploads.
o Benytter du WordPress eller et andet meget udbredt blogging-tool, har du mulighed for at blogge dine billeder på en eller anden måde.
o Og sikkert meget, meget mere…

Nu valgte jeg i sin tid selv at ville lave denne blog, så jeg hoppede ikke på WordPress el.lign. Men den skal da ikke stoppe mig fra at kunne "blogge" mine billeder, eller i hvertfald at "genbruge" dem. Som du måske har bemærket, er der kommet en flickr-feed i menuen til venstre. Denne benytter sig så snildt af flickr´s RSS-feed.
Til dette har jeg genbrugt, med få ændringer, det script jeg beskrev i posten "RSS til alle".

Du kan downloade den nye script nedenfor, hvilket giver dig mulighed for at tilføje din egen feed, og vælge antal billeder der skal vises.

o Download min version af "Flickr feed".

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.

mod_rewrite

2 Comments

Har du nogen sinde set URLs på formen:
www.mypage.dk/index.php?user=Simon&page=gallery
Dette er sider genereret med et dynamisk sprog som f.eks. PHP (se evt. posten "Vil du også være med? Del. II"), der unikt peger på indhold, som var det på formen:
www.mypage.dk/Simon/gallery.html

Men har du nogen sinde lavet et community, med brugerprofiler og mulighed for flere forskellige funktionaliteter, som f.eks personligt galleri, vil du vide at dette er mere eller mindre umuligt at holde styr på med HTML alene.
Alligevel kan du på f.eks. www.deviantART.com, som nok er verdens største kreative community, se URLs som:
http://user.deviantart.com/gallery/
Her skulle man igen, ved første øjekast, tro at der fantes et katelogene /User/gallery/ med en index-fil af en eller anden slags. Men med sine over 2 millioner brugere og mere end 21 millioner uploads (til dags dato), tvivler jeg meget stærkt på at dette er tilfældet!
Mere sandsynligt er det, at sider på formen /User/gallery/ er blevet mappet over på formen /?user=User&page=gallery – Og det er faktisk muligt!

Måden dette kan håndteres er ved hjælp af et såkaldt re-write modul, som er installeret på webserveren.
Da jeg selv benytter Apache´s webserver, og det er denne jeg har erfaring med, vil det blive denne jeg tager fat på.
Til Apache hedder modulet mod_rewrite, og følger med installationen som standard (til Windows i hvert fald).

mod_rewrite modulet fungerer ved at undersøge den URL der bliver sendt, og teste den op mod nogle rewrite regler.
Reglerne kan defineres i serverens konfigurations fil httpd.conf, eller hvis man ikke har adgang til denne, via en .htaccess-fil. Reglerne defineres vha. regulære udtryk, hvilket nemt kan virke som en gang hyroglyfer ved første møde.
Lad os springe ud i det. Tager vi overstående eksempel fra deviantART, vil målet her være at lave en regel, der mapper:
    /User/gallery
over i:
    /?user=User&page=gallery

Og dette kan vi gøre ved reglen:

RewriteEngine On
RewriteRule ^([a-z] )/([a-z] )/? index.php?user=$1&page=$2 [L]

Skridt for skridt:
- Først lader vi serveren vide at RewriteEngine, som er motoren bag hele modulet, skal være slået til.
- Herefter laver vi regel, der genkender URLs som består af to strenge, med et eller flere af karakterene [a-z] , efterfulgt af en eller ingen slash (/?).
- For hver streng, som er defineret meller paranteserne, substituerer vi disse over i variablen $1, $2, som er værdier for henholdvis user og page.

Og så er vi faktisk kørende. Du kan nu tilgå siden /?user=User&page=gallery med URLen /User/galley. Du skal dog være opmærksom på, at der ikke er nogen magi her, du skal selv i din kode omskrive dine URLs til at benytte den nye struktur, og blot hold for øjet, at de jo faktisk er på den mere forvirende form.

Men hvor skulle ham overhovedet ville gøre dette? Tja – hvad husker du bedst?
/?year=2006&month=May&day=22&id=21
eller
/22-May-2006/mod_rewrite.html
Og det gør søgemaskiner desuden også!

Før jeg skrev denne artikel, var jeg forbi følgende tre sider, som indeholder nogle noget mere detajlerede beskrivelser om både mod_rewrite og regulære udtryk. Er du mere interesseret, er de rigtig gode startsteder:
www.alistapart.com/articles/urls/
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
http://forum.modrewrite.com/

Older Entries Newer Entries