Table of contents : RSS and Atom in Action......Page 1 foreword......Page 20 preface......Page 22 acknowledgments......Page 24 Who should read this book......Page 25 Author Online......Page 26 About the cover illustration......Page 27 Part 1 – Programming the writable web......Page 8 What you need to know first......Page 32 0.1 What you need to know about Java or C#......Page 33 0.2.3 C# web development......Page 34 0.3.2 C# XML tools......Page 35 0.4 Blog technology terminology......Page 36 0.5.1 Blog application building blocks......Page 37 0.6 Organization of the book......Page 39 0.7 The Blogapps examples......Page 43 0.8 Summary......Page 44 New ways of collaborating......Page 45 1.1 Research blogging......Page 46 1.2 Status blogging......Page 49 1.3 Build blogging......Page 50 1.4 Blogging the business......Page 51 1.5 Nina’s and Rangu’s grand plan......Page 54 1.6 Summary......Page 56 Development kick-start......Page 57 2.1 Blog server setup......Page 58 2.2 The Blog Poster example......Page 60 2.3 Blog Poster for Java......Page 61 2.4 Blog Poster for C#......Page 64 2.4.1 Running Blog Poster for C#......Page 67 2.5 Summary......Page 68 Under the hood......Page 69 3.1 Anatomy of a blog server......Page 70 3.1.1 Blog server data model......Page 71 3.1.2 Anatomy of a blog entry......Page 72 3.1.3 Users, privileges, and group blogs......Page 74 3.1.4 Blog server architecture......Page 75 3.2.1 Wiki server data model......Page 78 3.2.2 Wiki server architecture......Page 80 3.3.1 Narrowing your choices......Page 81 3.3.2 Comparing blog and wiki servers......Page 82 3.4 Summary......Page 84 Newsfeed formats......Page 85 4.1.1 RSS 0.91......Page 86 4.1.2 The elements of RSS 0.91......Page 88 4.2 The RDF fork: RSS 1.0......Page 90 4.2.1 The elements of RSS 1.0......Page 91 4.2.2 Extending RSS 1.0 with modules......Page 92 4.3.1 The elements of RSS 2.0......Page 94 4.3.3 Extending RSS 2.0......Page 96 4.4 The nine incompatible versions of RSS......Page 97 4.5.1 Atom by example......Page 99 4.5.2 Atom common constructs......Page 100 4.5.3 The elements of Atom......Page 102 4.5.4 Atom identifiers......Page 103 4.5.5 The Atom content model......Page 104 4.5.6 Podcasting with Atom......Page 105 4.6 Summary......Page 106 How to parse newsfeeds......Page 108 5.1 The possibilities......Page 109 5.2.1 Parsing RSS 1.0......Page 110 5.2.2 Parsing RSS 2.0......Page 112 5.2.3 Parsing Atom......Page 115 5.3.1 The Universal Feed Parser for Python......Page 120 5.3.2 The ROME newsfeed utilities......Page 121 5.3.3 Jakarta Feed Parser for Java......Page 122 5.3.4 The Windows RSS Platform......Page 124 5.4 Developing a newsfeed parser......Page 126 5.4.1 AnyFeedParser for Java......Page 127 5.5.1 HTTP conditional GET......Page 133 5.5.2 Other techniques......Page 135 5.6 Summary......Page 137 The Windows RSS Platform......Page 138 6.1 Windows RSS Platform overview......Page 139 6.1.1 Browse, search, and subscribe with IE7......Page 140 6.1.2 Components of the Windows RSS Platform......Page 142 6.2.1 Getting started with the Common Feed List......Page 146 6.2.2 Creating subscriptions......Page 149 6.2.3 Monitoring events......Page 150 6.3 Parsing newsfeeds with the Feeds API......Page 153 6.3.1 A simple newsfeed parsing example......Page 154 6.3.2 Parsing extension elements and funky RSS......Page 155 6.4 Windows RSS Platform newsfeed extensions......Page 159 6.4.1 Common Feed (CF) extensions......Page 160 6.4.2 Simple List Extensions (SLE)......Page 163 6.4.3 Simple Sharing Extensions (SSE)......Page 165 6.5 Summary......Page 168 The ROME newsfeed utilities......Page 169 7.1 Introducing ROME......Page 170 7.1.1 How ROME works......Page 171 7.1.3 The ROME subprojects......Page 175 7.2.1 Parsing to the SyndFeed model......Page 177 7.2.2 Parsing funky RSS......Page 179 7.2.3 Parsing to the RSS model......Page 181 7.2.4 Parsing to the Atom model......Page 183 7.3.1 How the ROME Fetcher works......Page 187 7.3.2 Using the ROME Fetcher......Page 188 7.4 Generating newsfeeds with ROME......Page 190 7.5 Extending ROME......Page 192 7.5.1 The ROME plug-in architecture......Page 193 7.5.2 Adding new modules to ROME......Page 195 7.5.3 Overriding ROME......Page 200 7.6 Summary......Page 205 How to serve newsfeeds......Page 206 8.1 The possibilities......Page 207 8.2.2 How to indicate newsfeeds are available?......Page 208 8.2.3 Static or dynamic?......Page 210 8.2.5 Ensuring well-formed XML......Page 211 8.2.6 Validating newsfeeds......Page 212 8.3 File Depot examples......Page 214 8.4.1 Implementing the File Depot in Java......Page 215 8.4.2 Generating the File Depot newsfeed in Java......Page 216 8.4.3 Serving the File Depot newsfeed in Java......Page 219 8.5 Generating newsfeeds with C#......Page 221 8.5.2 Generating the File Depot newsfeed in C#......Page 222 8.5.3 Serving the File Depot newsfeed with C#......Page 225 8.6.1 Server-side caching......Page 226 8.6.2 Web proxy caching......Page 227 8.6.5 Caching and compression in a Java web application......Page 228 8.6.6 Caching and compression in a C# Web application......Page 231 8.7 Summary......Page 234 Publishing with XML-RPC based APIs......Page 235 9.1.1 Making a method call......Page 236 9.2 The Blogger API......Page 239 9.3.1 The same metadata as RSS......Page 240 9.3.2 Six new methods that complement the Blogger API......Page 241 9.4.1 Why a blog client library?......Page 242 9.4.2 Three blog client library interfaces......Page 243 9.4.3 Implementing the blog client library in C#......Page 246 9.5 Using the blog client library......Page 253 9.6 Summary......Page 254 Publishing with Atom......Page 256 10.1.1 Why not XML-RPC or SOAP?......Page 257 10.2.1 Discovery and collections......Page 258 10.2.2 Atom protocol from the command line......Page 259 10.2.3 Discovering Atom resources and services......Page 260 10.2.4 Posting and updating blog entries......Page 264 10.2.5 Posting and updating media files......Page 267 10.3.1 Atom does more......Page 269 10.3.2 Expanding the blog client interfaces......Page 271 10.3.3 Atom blog client implementation......Page 273 10.3.4 Atom blog client in action......Page 274 10.4 Summary......Page 275 Part 2 – Blog apps......Page 9 Creating a group blog via aggregation......Page 278 11.1 Introducing Planet Tool......Page 279 11.2 Configuring Planet Tool......Page 280 11.3 Creating templates for Planet Tool......Page 282 11.5 Planet Tool object reference......Page 285 11.6 Under the hood......Page 288 11.7 Summary......Page 289 Searching and monitoring the Web......Page 290 12.1 Technorati.com: Conversation search engine......Page 291 12.1.2 Monitoring tags with Technorati......Page 293 12.2 The Technorati API......Page 294 12.2.2 Calling the Technorati API......Page 295 12.3 Other blog search services......Page 300 12.4.1 Open Search description format......Page 303 12.4.2 Open Search result elements......Page 304 12.5 Summary......Page 305 Keeping your blog in sync......Page 307 13.1 Designing Cross Poster for C#......Page 308 13.2 Configuring Cross Poster for C#......Page 309 13.3 The code for Cross Poster for C#......Page 310 13.5 Summary......Page 314 Blog by sending email......Page 315 14.2 Configuring Mail Blogger for C#......Page 316 14.3 The code for Mail Blogger for C#......Page 317 14.5 Summary......Page 320 Sending a daily blog digest by email......Page 321 15.2 Configuring Blog Digest for C#......Page 322 15.3 The code for Blog Digest for C#......Page 323 15.5 Summary......Page 327 Blog your software build process......Page 328 16.1 Blogging from Ant......Page 329 16.1.1 Base blog task......Page 330 16.1.2 Post blog entry task......Page 333 16.1.3 Post blog resource task......Page 335 16.2 Summary......Page 337 Blog from a chat room......Page 338 17.1.1 Chat Blogger design......Page 339 17.1.2 Chat Blogger guidelines......Page 340 17.1.3 Chat Blogger configuration......Page 341 17.1.4 Chat Blogger construction......Page 342 17.1.5 Chat Blogger implementation......Page 343 17.1.6 Running Chat Blogger......Page 347 17.2 Summary......Page 348 Distribute files podcast style......Page 349 18.1 Designing FileCaster......Page 350 18.1.1 The podcast server......Page 351 18.2 Implementing FileCaster......Page 352 18.3 FileCaster upload page......Page 354 18.4 FileCaster newsfeed......Page 359 18.7 Summary......Page 361 Automatically download podcasts......Page 362 19.1 Designing FileCatcher......Page 363 19.2 Implementing FileCatcher......Page 364 19.3 Running FileCatcher for C#......Page 367 19.4 Summary......Page 368 Automatically validate newsfeeds......Page 369 20.1.2 Setting up Feed Validator......Page 370 20.2 Implementing auto-validator......Page 371 20.3 Running auto-validator......Page 373 20.3.1 Using Windows Scheduled Tasks......Page 374 20.4 Summary......Page 375 The best of the rest......Page 376 21.1.1 Monitor the weather......Page 377 21.1.2 Shop with your newsfeed reader......Page 378 21.1.4 Monitor upcoming events via calendar newsfeeds......Page 379 21.2 Syndicate everything......Page 380 21.2.3 Syndicate your logs......Page 381 21.3.2 Create a tagged photo blog with Flickr.com......Page 382 21.3.4 Geotag the Web......Page 383 21.4.1 Create an aggregated blog with Planet Tool......Page 384 21.5.2 Bring bloggers together with tagging......Page 385 21.6.2 Syndicate your search results with A9 Open Search......Page 386 21.8 Blog your software project......Page 387 21.8.2 Pull software documentation from a wiki......Page 388 21.9 Summary......Page 389 A......Page 390 C......Page 391 G......Page 392 M......Page 393 P......Page 394 S......Page 395 W......Page 396 Z......Page 397