RSS står för Really Simple Syndication och är en XML-dialekt som följer XML 1.0-specifikationen. RSS är av de nya beståndsdelarna i den "nya webben" och har blivit väldigt populärt på senare tid. Användare kan med egna RSS-läsare, prenumenera på innehåll från en webbplats. Fördelen är enorm genom att man kan från en samlad plats se exakt vilka av ens favoritsajter som har skrivit något nytt. RSS skapar även möjligheten för olika nyhetssajter att publicera innehåll från en annan webbsida.
Jag använde artikeln "Skapa en RSS-feed för din webbplats" som inspiration. Jag skrev om den för att passa till ASP.NET C# samt att jag i mitt kodexempel skriver en fysisk xml fil direkt på hårddisken. I exemplet på Dileno.com läggs xml-filen i cache. Min funktion som skapar ett RSS-flöde av posterna i min blogg och ser ut ungefär så här.
//Fysisk sökväg på servern (Byt ut mot den på din server) string strXMLPath = "C:/ . . . /rss.xml";
FileStream objFileStream = new FileStream(strXMLPath,FileMode.Create); XmlTextWriter xtw = new XmlTextWriter(objFileStream,System.Text.Encoding.GetEncoding("iso-8859-1")); xtw.Formatting = Formatting.Indented; xtw.WriteStartDocument();
//skriv ut <rss version="2.0"> xtw.WriteStartElement("rss"); xtw.WriteAttributeString("version","2.0");
//skriv ut <channel> xtw.WriteStartElement("channel");
//skriv ut element som tillhör <channel> xtw.WriteElementString("title","Codeodyssey.se"); xtw.WriteElementString("link","http://www.codeodyssey.se/"); xtw.WriteElementString("description","Code Odyssey - expanderar webben"); xtw.WriteElementString("language","sv-SE"); xtw.WriteElementString("copyright","Copyright (c) 2004-2006 Code Odyssey");
OleDbConnection conn = new OleDbConnection (strConn); bool boolPermission = false; OleDbDataReader objDataReader=null; try { string strSQL = "SELECT Blog.Id, Blog.Title, Blog.Body, Blog.PublishDate FROM Blog ORDER BY Blog.PublishDate DESC";
conn.Open();
OleDbCommand objCommand = new OleDbCommand(strSQL, conn); objDataReader = objCommand.ExecuteReader(); while (objDataReader.Read() == true) { int Id = Convert.ToInt32(objDataReader["Id"]); string Title = Convert.ToString(objDataReader["Title"]); string Body= Convert.ToString(objDataReader["Body"]); //Se till att datum följer RFC-822 standard string PublishDate = Convert.ToString( ((DateTime)objDataReader["PublishDate"]).ToString("r"));
Visa RSS för läsaren Sen är det dags att lägga till en länk så att Firefox (och antagligen IE7) ska kunna se att din webbplats innehåller ett RSS-flöde och visa detta med den lilla RSS ikonen.
Vill man lägga till en länk till RSS från koden kan man göra så här:
//Lägg till RSS länk HtmlLink link = new HtmlLink(); link.Attributes.Add("type", "application/rss+xml"); link.Attributes.Add("rel", "alternate"); link.Attributes.Add("href", "feed/rss.xml"); this.Page.Header.Controls.Add(link);
Bilder i RSS? Först tänkte jag visa de bilder i mitt RSS-flöde men efter ha läst "RSS - bra eller dåligt?" så ångrade jag mig. Speciellt om man ska prenumenera på RSS genom en mobiltelefon så vill man ju inte ladda med en massa bilder i onödan.
Validera bloggen Till sist är det dags att prova så att allt fungerar som det ska. Mozilla Thunderbirds inbyggda RSS läsare fungerar utmärkt till detta. Eller aktiva bokmärken i Firefox. Man bör även validera CSS-flödet, en valideringstjänst finns på Feedvalidator.org.
Ingen har väl missat bloggens intågande på webben. Nu poppar det även upp mängder av portaler där man kan marknasföra sin blogg. Vi testar några av dem.
Bloggtoppen.se Först ut är Bloggtoppen.se. Registrering är lätt och man får sedan instruktioner om hur man ska gå vidare. Man får man klistra in lite kod i ens blogg för att statistik ska kunna registreras på deras hemsida. En bildlänk hamnar på ens blogg som ser ut som nedan. Sedan är det bara att vänta på att redaktionen på Bloggtoppen ska godkänna din blogg. Det kan ta några dar men de meddelar att de siktar på att godkänna bloggar inom 48 timmar.
Knuff.se Härnäst tänkte jag prova på Knuff.se och har läst igenom hur man ska göra. Man måste ha ett RSS flöde i anknytning till sin blogg samt pinga Nyligen.se för att det ska indexeras.
Bloggkartan.se Bloggkartan.se är en geografisk bloggportal som visar bloggar i Sverige kategoriserat efter områden. För att få med din blogg här ska man lägga in den på Nyligen.se och se till att den kommit upp i Knuff.se. Sedan ska man även länka från sin blogg till rätt område på bloggkartan. Jag har placerat min blogg i Göteborg och Majorna på bloggkartan.se. Du kan även se Bloggkartan.se som KML för Google Earth
BlogRanker En till bloggportal som för tillfället erbjuder bloggar från USA, UK, Sverige och Kina.
Under de senaste sju åren har webbdesign kört fast i en visst spår. Det hela började med upptäckten att man kunde använda tabeller för att skapa layouter för hemsidor. Man använder rader och celler för att placera elementen på sidorna. Detta sätt fungerar ju fortfarande bra men resulterar i svårhanterlig kod som är svår att uppdatera. Tabellerna med sina celler har blivit ett fängelse och gjort oss att fastna i ett visst tänkande hur man bygger upp layouten.
Några började drömma om ett nytt sätt att placera objekten med hjälp av <div> och <span> taggarna. CSS Zen Garden är en webbplats helt dedikerad åt detta nya sätt att skapa design.
Ett problem med det nya sättet att göra design är ju att den mest använda webbläsaren idag, IE6, inte stödjer CSS 2.1 standarderna. Men med IE7 kommer situationen bli mycket bättre och det känns som man på allvar kan anamma de nya teknikerna. Microsoft har gjort en egen "Zen Garden"-design för att visa hur bra IE7 kommer att stödja CSS. Läs mer om exprimentet i artikeln The Zen in 7: Enhanced Styles In Internet Explorer 7.
Eric meyer är en man som forskar mycket i nya CSS ideer och driver en webbplats som heter css/edge. Där visas många exempel på nytänkande tekniker. Där visar han bland annat hur man kan göra effekter genom fixerade bakgrundbilder, popupmenyer i ren CSS och mycket mer.
På Stopdesign.com finns en post som handlar om hur en webbsida görs om för att använda ordnade listor istället för tabeller. Lägre laddningstider och renare kod blir resultatet.
Select * Into [DestinationTableName] From [SourceTableName]
Vill man inte ha med data utan bara strukturen kan man använda följande SQL.
Select * Into [DestinationTableName] From [SourceTableName]) Where 1 = 2
Av någon anledning fungerade inte ovanstående skript i SQL Query Analyzer men det beror nog på att jag i mitt fall hade en tabell med namnet "Admin". Den klagade på Invalid object eller likande. Det hela gick bra när jag körde det genom en asp.net applikation.
Filen Web.sitemap i Asp.Net är väldigt användbar. Om man som jag redan har utvecklat ett CMS-system i Asp.Net 1.1 så kan man ju skapa den dynamisk från SQL Servern. Det är ju lite extra jobb att skriva in alla sina url:er och metadata igen.
Shelta är en butik som ligger på Andra Långgatan i Göteborg och kan lätt klassificeras som göteborgs fräschaste streetwearbutik. Idag släppte vi deras webbshop som vi har jobbat fram under det senaste året. DJ Digga på Shelta har själv gjort den stiliga designen och vi har kodat shoppingsystemet.
Jag har stött på följande fel några gånger. Det uppstår ofta när man utför AJAX-operationer och byter ut innehållet i komponenter. Speciellt med rullistor har jag problem. Här hittade jag ett forum med några teorier.
Hela felmeddelandet
Ogiltigt återanslag- eller återanropselement. Händelseverifiering aktiveras med <pages enableEventValidation="true"/> i konfigurationen eller <%@ Page EnableEventValidation="true" %> på sidan. Av säkerhetsskäl verifierar denna funktion att argumenten till återanslående- eller återanropshändelser kommer från den serverkontroll som ursprunligen renderade dem. Om data är giltiga och förväntade, bör du använda metoden ClientScriptManager.RegisterForEventValidation för att registrera verifieringsdata.
En enkel lösning kan vara att stänga av event valideringen helt i web.config eller på själva sidan. Men det kan ju vara dumt att gå miste om den extra säkerheten. Injektionsattacker är något att se upp för och event valideringen är till för att skydda mot dessa.
Att ha med .aspx-ändelsen och massa querystring-parametrar på webbadresser känns lite klumpigt ibland, och inte så bra ur sökoptimerings-synpunkt. IIS6 med ASP.NET 2.0 har inte något inbyggt sätt att göra detta. Jag menar istället för för att ha en lång url som "Blog.aspx_year=2006&month=09" är det ju trevligare med "blog/2006/09".
I Ruby on Rails är omskrivning av URL:er enkelt och en naturlig del av språket. På Apache servrar finns mod_rewrite som äe en bra modul för alla PHP-utvecklare.
Med Asp.Net kan man använda HttpContext.RewritePath men det är inte så lätt som man först kan tro. Jag hittade mängder av artiklar om olika lösningar men många beskrev problem med cachning, themes och problem med PostBack.
På Urlrewriting.net finns det en open source komponent som sägs ha löst många av dessa problem. Har dock inte provat den själv.
Jag har även läst en del info om att det kommer finnas bättre stöd för detta när IIS 7.0 kommer.
Så här gör man för att inkludera Javascript inuti head-taggen genom kod i Asp.Net.
HtmlGenericControl Include = new HtmlGenericControl("script"); Include.Attributes.Add("type", "text/javascript"); Include.Attributes.Add("src","FilSomSkaInkluderas.js"); this.Page.Header.Controls.Add(Include);
Glöm inte att skriva in runat-attributet på head-taggen
<head runat="server">
Hittade även en artikel om hur man kan få Visual Studio att gruppera javascriptfiler under .aspx-filen i Solution Explorer. Krävs dock ett tillägg i register-nycklarna. Snälla VS utvecklare - lägg till detta direkt i programmet.