Blog in application - how to make rss feeds private?

(Detta inlägg är ett svar till en engelsk blog, men postar den här också på vår svenska sajt)

Ayende writes an interesting post about the how idea of having a blog incorporated in your application can be a clever idea.

I have been thinking of this concept myself for a admin system I am developing. I think that a rss feed would be very handy but havn't been able to figure out how to make it private. Think I read somewhere about a way to put password on a feed, but some of the big rss readers does not support it yet (for example Google Reader).

One of the commenters to Ayende's post gave me a tip worth checking out. Unfortunatly it only works in Outlook / IE.

If you want to make RSS feeds private the easiest way (that works with Outlook at least) is to enable HTTP Basic Authentication and visit the RSS feed with IE to input credentials and check the option to save them. Then Outlook will transparently use those credentials to update the feed.
By Jesper Lind

rssHugger - min recension

http://www.codeodyssey.se/upload/resource/blog/rssHugger-logo.png

Okej har inte så mycket att säga om sajten rssHugger ännu eftersom jag just registrerade min blogg.Det handlar om en tjänst som man kan promota sin blogg på, så mycket har jag förstått.

De har i alla fall en smart registreringsprocess måste jag säga. När man kommer till steget där man ska lägga till sin blogg så har man två alternativ. Antingen betalar man 20 dollars eller så skriver man en recension. Jag valde det senare alternativet...

By Jesper Lind

Google Reader uppdateras med sökruta

http://www.codeodyssey.se/upload/resource/blog/search-reader(1).gif

Startade upp Readern när jag skulle prenumenera på ett nytt RSS-flöde och märkte med en gång att något hade förnyats. Ajax-indikationen som visar att något laddas var annolunda med gul bakgrund.

Sen såg jag den viktigast nyheten i denna uppdatering, ett sökfält längst uppe till höger!

Det var verkligen på tiden och nu kan jag ta bort den temporära söklösningen som jag hackade dit med ett Greasemonkey-skript.

Läs mer om uppdateringen på den officiella Google Reader bloggen

By Jesper Lind

Sök i Google Reader med Greasemonkey-skript

http://www.codeodyssey.se/upload/resource/blog/google-reader-search.png

Library clips visar 15 sätt som man kan pimpa upp sin Google Reader på och bland dessa finns ett som jag väntat på länge, nämligen möjlighet till sökning.

Det har funnits några sätt att göra detta innan men de har varit rätt komplicerade och innefattat att man skapar en egen Google Co-Op och liknande.

Detta nämda skript som finns på Userscript.org installeras genom ett enkelt klick. (Förutsatt att man redan har Firefox-tillägget Greasemonkey)

By Jesper Lind

Virtuellt RSS-flöde med .NET

Vi har tidigare har vi på bloggen visat hur man kan skapa en RSS-fil från poster i en databas.

Nu tänkte jag visa ett snarlikt exempel men här skriver vi flödet direkt till Response-strömmen istället för att skapa en fysisk fil. Kallar denna metoden, att leverera ett RSS-flöde "virtuellt", i brist på bättre term.

Hämtade lite inspiration från Dileno.com men använde istället min egen kod från tidigare exempel.

Själva ASPX-filen sparar jag som Rss.aspx och innehåller endast en rad kod.

<%@ Page Language="C#" Strict="False" Debug="True" Inherits="_Rss" CodeFile="Rss.aspx.cs" %>

I koden bakom hämtas posterna ur en tabell i en Access-databas. Bygger ihop en sträng med xml taggarna för RSS-definitionen och lägger sedan in den i cache. Detta för att det inte ska bli överbelastning ifall flödet anropas ofta.

using System;
using System.Data;
using System.Data.OleDb;
using System.Configuration;
using System.Text;
using System.Web;
using System.IO;
using System.Xml;

public partial class _Rss : System.Web.UI.Page
{
static string strConn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
static string strRootUrl = "http://codeodyssey.se";

protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.UTF8;
Response.Write(GetRssString());
}

//Kollar om det redan finns en sträng i cache, annars skapas en ny
protected string GetRssString()
{
string cacheName = "rss-feed";

//Hämta chachad data om det finns
if (Cache[cacheName] != null)
{
return Convert.ToString(Cache[cacheName]);
}
else
{
string newlyGeneratedRss = GenerateRss();
Cache.Insert(cacheName, newlyGeneratedRss, null, DateTime.Now.AddMinutes(20), TimeSpan.Zero);
return Convert.ToString(newlyGeneratedRss);
}
}

//Funktion som skapar en textSträng som innehåller rss-feed
protected string GenerateRss()
{
StringWriter sw = new StringWriter();
try
{

XmlTextWriter xtw = new XmlTextWriter(sw);//,System.Text.Encoding.GetEncoding("UTF-8")
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 - gräver djupt i kodträsket");
xtw.WriteElementString("language","sv-SE");
xtw.WriteElementString("copyright","Copyright (c) 2004-2007 Code Odyssey");

OleDbConnection conn = new OleDbConnection (strConn);
bool boolPermission = false;
OleDbDataReader objDataReader=null;
try
{
string strSQL = "SELECT TOP 10 * FROM News WHERE Published=true ORDER BY 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"));


//skriv ut <item> och dess innehåll
xtw.WriteStartElement("item");
xtw.WriteElementString("title",Title);
xtw.WriteElementString("link", strRootUrl.ToLower() + "/news.aspx?id=" + Id);
xtw.WriteElementString("guid", strRootUrl.ToLower() + "/news.aspx?id=" + Id);
xtw.WriteElementString("description",Body);
xtw.WriteElementString("pubDate",PublishDate);
xtw.WriteEndElement();
}
objCommand.Dispose();
objCommand = null;
}
catch (Exception objException)
{
Trace.Warn("GenerateRss() Fel!",objException.Message);
}
finally
{
if(objDataReader!=null)
{
objDataReader.Close();
objDataReader = null;
}
if(conn!=null)
{
conn.Close();
conn = null;
}
}

//skriv ut </channel>
xtw.WriteEndElement();

//skriv ut </rss>
xtw.WriteEndElement();

//Stäng xml skrivaren
xtw.Close();
}
catch (Exception objException)
{
Trace.Warn("GenerateRss() Fel!",objException.Message);
}
return sw.ToString();
}

}

By Jesper Lind

Integrera W3C Validation Service i dina projekt

När man tillhandahåller ett CMS-system åt en kund så är det nästan oundvikligt att kunderna kommer att skriva in ogiltig XHTML. Alla kan helt enkelt inte vara webbstandard-freaks och det är inget man kan kräva av någon.

Då skulle det vara perfekt om man kunde få en varning så fort ogiltig kod har publiserats, så man kan gå in och rätta till den.

Blitz Labs har gjort en sådan lösning och delar med sig av .NET-koden. Funktionen tar emot en url som ska kontrolleras. Skickar ett anrop till W3C Markup Validation Service. Tar emot resultatet genom deras SOAP-tjänst och transformerar det till RSS med hjälp av en XSLT-fil.

Prenumenera sedan på den RSS som skapats och få meddelande så fort någon ogiltig kod har publiserats.

By Jesper Lind

RSS Toolkit - Publicera och konsumera RSS-flöden

Hittade en intressant artikel av Steve Clements där han visar hur man kan bygga en RSS-läsare för att lägga in på en webbplats. Den använder AJAX-funktioner för att öppna inläggen när man läser dem. Till kodexemplet används ett speciellt RSS Toolkit som finns att läsa om på Dmitry’s blog. Där finns även en zip-fil med verktygslådan att ladda hem.

Har inte testat den själv men det verkar intressant, skriv gärna en kommentar ifall du provar på detta. Är jättenyfiken på hur det fungerar.

Man kan också läsa samma artikel om RSS-läsaren på The Code Project.

By Jesper Lind

Skapa Flex-apps direkt på nätet

Flex är ett häftigt koncept som förenklar utvecklandet av flash-applikationer. Om du vill se vad det hela handlar om innan du införskaffar programmet så finns det en kompilerare att testa på nätet.

Börja från schratch och skriv in MXML- och ActionScript-kod, eller utgå från de färdiga exemplen. När du är klar finns en knapp som mailar den färdiga swf- och mxml-filen till valfri email.

Här under kan ni se en RSS-läsare som jag gjorde. Observera att det inte går att skriva in vilken RSS-som helst på grund av säkerhetsinställningarna i flash-spelaren. För att kunna komma åt filer på andra domäner behöver man ställa in domänsäkerheten.

 

 

 

By Jesper Lind

EvilRSS - prenumenera på sökresultat från Google

Tjänsten EvilRSS feed låter dig prenumenera på valfria sökfraser via RSS och få resultaten så fort de förändras. Skaparna av tjänsten har gjort den som en protest mot att Google skrotade sin egen SOAP Search API, och lämnade många utvecklare strandsatta som hade satsat på tekniken.

Applikationen finns även i nedladdningsbar version som du kan använda i dina egna projekt, läs mer på EvilAPI.

Utvecklarna utfärdar dock en varning att metoden kan vara emot Googles riktlinjer (eftersom den skrapar sajterna på innehåll) och rekommenderas att användas varsamt och endast i testsyften.

Via: Smidigt.se

By Jesper Lind

Spammare tjuvar på mitt innehåll

http://www.codeodyssey.se/upload/resource/blog/CodeOdyssey-spampirates.png

Jag söker ibland efter innehåll från min egen webbplats på Google för att se om någon använder material från min webbplats. Nyligen tycker jag mig ha sett en ganska kraftig ökning av sidor som snor innehåll och publicerar det på spam-sajter. Just nu finns det bland annat några sökresultat med Poker-relaterade rubriker i Googles cache-sidor som har snyltat på mitt innehåll. Själva sidorna finns dock inte längre kvar. En sida med titeln "Feed FeedBurner On Google" finns dock i skrivandes stund fortfarande uppe på nätet och använder sig av lite innehåll från min webbplats. När jag först hittade länken blev jag nästan lite glad eftersom, sidans titel antyder på att den använder RSS-flöden, vilket dock visade sig vara felaktigt. Den har helt enkelt återanvänt SERPs från Google eller på annat sätt skannat min webbplats. Jag väntar nämligen på att någon ska använda mitt RSS-flöde i spammningssyfte, så att jag får ett skäl att gå till motattack. Den metod som jag då tänker prova är att förgifta RSS-flödet ungefär som ha.ckers.org gjorde.
By Jesper Lind