<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>AjaxLine blogs</title>
  <link rel="alternate" type="text/html" href="http://www.ajaxline.com/blog"/>
  <link rel="self" type="application/atom+xml" href="http://www.ajaxline.com/blog/atom/feed"/>
  <id>http://www.ajaxline.com/blog/atom/feed</id>
  <updated>2007-10-26T14:45:31+00:00</updated>
  <entry>
    <title>Second alpha release of qooxdoo 0.8</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/second-alpha-release-of-qooxdoo-0-8" />
    <id>http://www.ajaxline.com/second-alpha-release-of-qooxdoo-0-8</id>
    <published>2008-07-21T13:22:43+00:00</published>
    <updated>2008-07-22T12:06:57+00:00</updated>
    <author>
      <name>ae</name>
    </author>
    <summary type="html"><![CDATA[<p>qooxdoo is a comprehensive and innovative Ajax application framework. While it is a true open source project (including public SVN code repository, bugzilla, etc.), it offers many enterprise-level features and a professional, platform-independent tool chain. It allows you to create Rich Internet Applications that look and feel the same in any common web browser.  Another pre-release qooxdoo 0.8-alpha2 was made available. This milestone completes and stabilizes many of the exciting feature improvements and additions of 0.8.</p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/second-alpha-release-of-qooxdoo-0-8<p>qooxdoo is a comprehensive and innovative Ajax application framework. While it is a true open source project (including public SVN code repository, bugzilla, etc.), it offers many enterprise-level features and a professional, platform-independent tool chain. It allows you to create Rich Internet Applications that look and feel the same in any common web browser.  Another pre-release qooxdoo 0.8-alpha2 was made available. This milestone completes and stabilizes many of the exciting feature improvements and additions of 0.8. In particular the rewrite of the GUI toolkit demonstrates what is possible with a state-of-the-art widget set and advanced layouting/styling capabilities. To get an idea of the sophisticated GUI toolkit, you may want to browse through the online demos, <a href="http://demo.qooxdoo.org/0.8-alpha2/demobrowser" title="http://demo.qooxdoo.org/0.8-alpha2/demobrowser">http://demo.qooxdoo.org/0.8-alpha2/demobrowser</a> . Just remember that it is work in progress, so not every demo may be final just yet.  See the comprehensive release notes for more information, <a href="http://qooxdoo.org/about/release_notes/0.8-alpha2" title="http://qooxdoo.org/about/release_notes/0.8-alpha2">http://qooxdoo.org/about/release_notes/0.8-alpha2</a> and read the original blog entry at the qooxdoo homepage <a href="http://news.qooxdoo.org/second-alpha-release-of-qooxdoo-08" title="http://news.qooxdoo.org/second-alpha-release-of-qooxdoo-08">http://news.qooxdoo.org/second-alpha-release-of-qooxdoo-08</a> .</p>
    ]]></content>
  </entry>
  <entry>
    <title>Conquering the Busy Cursor with Sequentially</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/conquering-the-busy-cursor-with-sequentially" />
    <id>http://www.ajaxline.com/conquering-the-busy-cursor-with-sequentially</id>
    <published>2008-04-21T10:11:20+00:00</published>
    <updated>2008-04-21T10:11:20+00:00</updated>
    <author>
      <name>Spider84</name>
    </author>
    <summary type="html"><![CDATA[<p style="margin-bottom: 0cm;">Oliver Steel tells in his blog how to manage  with busy cursor in Javascript. He writes:</p>
<p style="margin-bottom: 0cm;">&laquo;What&rsquo;s wrong with this function? (Hint: it&rsquo;s meant to execute periodically on a JavaScript page.)</p>
<p style="margin-bottom: 0cm;">function updateExpirationText() {</p>
<p style="margin-bottom: 0cm;">  var now = new Date;</p>
<p style="margin-bottom: 0cm;">  products.forEach(function(item) {</p>
<p style="margin-bottom: 0cm;">    var expiresDate = item.expiresDate || Date.parse(item.expires),</p>
<p style="margin-bottom: 0cm;">        remaining = expiresDate &ndash; now,</p>
<p style="margin-bottom: 0cm;">        text = remaining &lt; 0 ? &lsquo;expired&rsquo; : msToDuration(remaining);</p>
<p style="margin-bottom: 0cm;">    $(&lsquo;item-&rsquo; + item.id + &lsquo; .time-remaining&rsquo;).text(remaining);</p>
<p style="margin-bottom: 0cm;">  });</p>
<p style="margin-bottom: 0cm;">}</p>
<p style="margin-bottom: 0cm;"></p>
<p style="margin-bottom: 0cm;">It&rsquo;s a trick question. Maybe nothing&rsquo;s wrong. But if products can get very long, or if the msToDuration is very slow, you&rsquo;ve locked up the UI for a long time. At best, this makes for sluggish response; at worst, the page that contains this will trigger a &ldquo;script running slowly&rdquo; error, and the user will likely abort all the JavaScript on the page.</p>
<p style="margin-bottom: 0cm;"></p>
<p style="margin-bottom: 0cm;">If this computation only needs to run once, and when (or before) the page loads, you can do it on the server. But often a computation depends on some aspect of the client state, that isn&rsquo;t known when the page is requested. In this example, the computation depends on the current time (and the current time keeps changing). In another case, the computation might depend upon the values of some controls or other widgets on the page &mdash; if we&rsquo;ve gone all AJAXy, and want to show the user an instant response, even if that means some client-side computation.&raquo;  </p>
<p style="margin-bottom: 0cm;"></p>
<p style="margin-bottom: 0cm;">You can read the full version of article on <a href="http://osteele.com/archives/2008/04/conquering-busy-cursor-sequentially">Oliver Steel Blog</a>.</p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/conquering-the-busy-cursor-with-sequentially<p style="margin-bottom: 0cm;">Oliver Steel tells in his blog how to manage  with busy cursor in Javascript. He writes:</p>
<p style="margin-bottom: 0cm;">&laquo;What&rsquo;s wrong with this function? (Hint: it&rsquo;s meant to execute periodically on a JavaScript page.)</p>
<p style="margin-bottom: 0cm;">function updateExpirationText() {</p>
<p style="margin-bottom: 0cm;">  var now = new Date;</p>
<p style="margin-bottom: 0cm;">  products.forEach(function(item) {</p>
<p style="margin-bottom: 0cm;">    var expiresDate = item.expiresDate || Date.parse(item.expires),</p>
<p style="margin-bottom: 0cm;">        remaining = expiresDate &ndash; now,</p>
<p style="margin-bottom: 0cm;">        text = remaining &lt; 0 ? &lsquo;expired&rsquo; : msToDuration(remaining);</p>
<p style="margin-bottom: 0cm;">    $(&lsquo;item-&rsquo; + item.id + &lsquo; .time-remaining&rsquo;).text(remaining);</p>
<p style="margin-bottom: 0cm;">  });</p>
<p style="margin-bottom: 0cm;">}</p>
<p style="margin-bottom: 0cm;">
</p>
<p style="margin-bottom: 0cm;">It&rsquo;s a trick question. Maybe nothing&rsquo;s wrong. But if products can get very long, or if the msToDuration is very slow, you&rsquo;ve locked up the UI for a long time. At best, this makes for sluggish response; at worst, the page that contains this will trigger a &ldquo;script running slowly&rdquo; error, and the user will likely abort all the JavaScript on the page.</p>
<p style="margin-bottom: 0cm;">
</p>
<p style="margin-bottom: 0cm;">If this computation only needs to run once, and when (or before) the page loads, you can do it on the server. But often a computation depends on some aspect of the client state, that isn&rsquo;t known when the page is requested. In this example, the computation depends on the current time (and the current time keeps changing). In another case, the computation might depend upon the values of some controls or other widgets on the page &mdash; if we&rsquo;ve gone all AJAXy, and want to show the user an instant response, even if that means some client-side computation.&raquo;  </p>
<p style="margin-bottom: 0cm;">
</p>
<p style="margin-bottom: 0cm;">You can read the full version of article on <a href="http://osteele.com/archives/2008/04/conquering-busy-cursor-sequentially">Oliver Steel Blog</a>.</p>
<p><!--break--></p>
    ]]></content>
  </entry>
  <entry>
    <title>Beginning AIR - Accessing the File System Parts 1 and 2</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/beginning-air-accessing-the-file-system-part" />
    <id>http://www.ajaxline.com/beginning-air-accessing-the-file-system-part</id>
    <published>2008-03-26T11:48:44+00:00</published>
    <updated>2008-03-26T11:48:44+00:00</updated>
    <author>
      <name>Spider84</name>
    </author>
    <summary type="html"><![CDATA[<p style="margin-bottom: 0cm;">Rich Tretola post a series of tutorials about working with the files and the filesystem in Adobe AIR.This tutorials based on excerpts frob a bokk about   Adobe AIR &laquo; Beginning AIR: Building Applications for the Adobe Integrated Runtime&raquo;.</p>
<p style="margin-bottom: 0cm;"><a href="http://www.insideria.com/2008/03/beginning-air-accessing-the-fi.html">Part 1</a> of this series gave examples of how to work with directories within the file system.  </p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/beginning-air-accessing-the-file-system-part<p style="margin-bottom: 0cm;">Rich Tretola post a series of tutorials about working with the files and the filesystem in Adobe AIR.This tutorials based on excerpts frob a bokk about   Adobe AIR &laquo; Beginning AIR: Building Applications for the Adobe Integrated Runtime&raquo;.</p>
<p style="margin-bottom: 0cm;"><a href="http://www.insideria.com/2008/03/beginning-air-accessing-the-fi.html">Part 1</a> of this series gave examples of how to work with directories within the file system.  </p>
<p style="margin-bottom: 0cm;"><a href="http://www.insideria.com/2008/03/beginning-air-accessing-the-fi-1.html">Part 2</a> covers how to use the File class to create, move, copy, and delete files. It will also demonstrate the usage of the FileStream class for working with the contents of individual files.  </p>
<p style="margin-bottom: 0cm;">
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Russian version of AjaxLine!</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/russian-ajaxline" />
    <id>http://www.ajaxline.com/russian-ajaxline</id>
    <published>2008-02-14T19:05:58+00:00</published>
    <updated>2008-02-14T19:05:58+00:00</updated>
    <author>
      <name>Spider84</name>
    </author>
    <summary type="html"><![CDATA[<p><span id="q_118189f18f4ef5cf_1" class="q"> Today we opened russian versian of AjaxLine - AjaxLine.ru. From this time the russian speaking programmers can read fresh news about web&nbsp; development on they native language.<br />
Welcome to <a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://ajaxline.ru/">AjaxLine.ru</a>!</span></p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/russian-ajaxline<p><span id="q_118189f18f4ef5cf_1" class="q"> Today we opened russian versian of AjaxLine - AjaxLine.ru. From this time the russian speaking programmers can read fresh news about web&nbsp; development on they native language.<br />
Welcome to <a onclick="return top.js.OpenExtLink(window,event,this)" target="_blank" href="http://ajaxline.ru/">AjaxLine.ru</a>!</span></p>
    ]]></content>
  </entry>
  <entry>
    <title>Prototype.js Template to C# 3.0</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/prototypejs-template-to-csharp" />
    <id>http://www.ajaxline.com/prototypejs-template-to-csharp</id>
    <published>2008-01-20T18:17:40+00:00</published>
    <updated>2008-01-20T18:21:44+00:00</updated>
    <author>
      <name>Kigorw</name>
    </author>
    <summary type="html"><![CDATA[<p>Have you ever seen such syntax in JavaScript: </p>
<textarea  name="code" class="js"  cols="60" rows="40">
// the template (our formatting expression)
var myTemplate = new Template('The TV show #{title} was created by #{author}.');

// our data to be formatted by the template
var show = {title: 'The Simpsons', author: 'Matt Groening', network: 'FOX' };

// let's format our data
myTemplate.evaluate(show);
// -> The TV show The Simpsons was created by Matt Groening.
</textarea>
<p>If you worked with great library <a href="http://prototypejs.org/">Prototype.js</a>  surely yes. Such functionality implemented in class <a href="http://prototypejs.org/Template">Template</a>, which has just one method - evaluate.  It does replacement in string template using input data object. </p>
<p>Now comes the tasty thing.   How do you thing is it possible in C# 3.0?
Of course yes! 
Let’s write the test (I expect you’ve heard about TDD):</p>
<textarea  name="code" class="C#" cols="60" rows="30">

[TestMethod()]
        public void EvalTest()
        {
            string template = "some string #{templateParam1} and #{someOtherParam}";
            Template target = new Template(template);      
            

            object o =new { templateParam1 = "12", someOtherParam = "other string" };
            string actual = target.Evaluate(o);
            string expected = "some string 12 and other string";
            Assert.AreEqual(expected, actual);
        }
</textarea>
<p>Now we should implement Template class. Use a little bit reflection and we got prototype.js Template on C# 3.0. </p>
<textarea  name="code" class="C#" cols="60" rows="30">
  public class Template
    {
       
        readonly string  _template;
    
        private  Hashtable GetPropertyHash(object properties)
        {

            Hashtable values = null;
            if (properties != null)
            {
                values = new Hashtable();
                PropertyDescriptorCollection props = TypeDescriptor.GetProperties(properties);
                foreach (PropertyDescriptor prop in props)
                {
                    values.Add(prop.Name, prop.GetValue(properties));
                }
            }

            return values;
        }

        public Template(string template)
        {
            _template = template;
        }
        public string Evaluate(object o)
        {
            Hashtable table = GetPropertyHash(o);
            string s = _template;
            foreach (DictionaryEntry v in table)
            {
                s = s.Replace("#{"+v.Key+"}",v.Value.ToString());
            }
            return s;
        }

    }
</textarea>

<p>Be happy of using it :) </p>

<a href="http://www.kigorw.com/2008/01/20/prototypejs-template-to-csharp/">In russian<a>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/prototypejs-template-to-csharp<p>Have you ever seen such syntax in JavaScript: </p>
<textarea  name="code" class="js"  cols="60" rows="40">
// the template (our formatting expression)
var myTemplate = new Template('The TV show #{title} was created by #{author}.');

// our data to be formatted by the template
var show = {title: 'The Simpsons', author: 'Matt Groening', network: 'FOX' };

// let's format our data
myTemplate.evaluate(show);
// -> The TV show The Simpsons was created by Matt Groening.
</textarea>
<p>If you worked with great library <a href="http://prototypejs.org/">Prototype.js</a>  surely yes. Such functionality implemented in class <a href="http://prototypejs.org/Template">Template</a>, which has just one method - evaluate.  It does replacement in string template using input data object. </p>
<p>Now comes the tasty thing.   How do you thing is it possible in C# 3.0?
Of course yes! 
Let’s write the test (I expect you’ve heard about TDD):</p>
<textarea  name="code" class="C#" cols="60" rows="30">

[TestMethod()]
        public void EvalTest()
        {
            string template = "some string #{templateParam1} and #{someOtherParam}";
            Template target = new Template(template);      
            

            object o =new { templateParam1 = "12", someOtherParam = "other string" };
            string actual = target.Evaluate(o);
            string expected = "some string 12 and other string";
            Assert.AreEqual(expected, actual);
        }
</textarea>
<p>Now we should implement Template class. Use a little bit reflection and we got prototype.js Template on C# 3.0. </p>
<textarea  name="code" class="C#" cols="60" rows="30">
  public class Template
    {
       
        readonly string  _template;
    
        private  Hashtable GetPropertyHash(object properties)
        {

            Hashtable values = null;
            if (properties != null)
            {
                values = new Hashtable();
                PropertyDescriptorCollection props = TypeDescriptor.GetProperties(properties);
                foreach (PropertyDescriptor prop in props)
                {
                    values.Add(prop.Name, prop.GetValue(properties));
                }
            }

            return values;
        }

        public Template(string template)
        {
            _template = template;
        }
        public string Evaluate(object o)
        {
            Hashtable table = GetPropertyHash(o);
            string s = _template;
            foreach (DictionaryEntry v in table)
            {
                s = s.Replace("#{"+v.Key+"}",v.Value.ToString());
            }
            return s;
        }

    }
</textarea>

<p>Be happy of using it :) </p>

<a href="http://www.kigorw.com/2008/01/20/prototypejs-template-to-csharp/">In russian<a>
<!--break-->
    ]]></content>
  </entry>
  <entry>
    <title>Free Silverlight video tutorials</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/free-silverlight-video-tutorials" />
    <id>http://www.ajaxline.com/free-silverlight-video-tutorials</id>
    <published>2007-12-17T13:33:10+00:00</published>
    <updated>2007-12-17T13:33:10+00:00</updated>
    <author>
      <name>Spider84</name>
    </author>
    <summary type="html"><![CDATA[<p style="margin-bottom: 0cm;">There is some video tutorials about Silverlight  on lynda.com Online Training Library that you can view for free.  This course covers  all aspects of Silverlight.Also you can download examples for this course.</p>
<p style="margin-bottom: 0cm;">Source: <a href="http://movielibrary.lynda.com/html/modPage.asp?ID=473">lynda.com Online Training Library</a></p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/free-silverlight-video-tutorials<p style="margin-bottom: 0cm;">There is some video tutorials about Silverlight  on lynda.com Online Training Library that you can view for free.  This course covers  all aspects of Silverlight.Also you can download examples for this course.</p>
<p style="margin-bottom: 0cm;">Source: <a href="http://movielibrary.lynda.com/html/modPage.asp?ID=473">lynda.com Online Training Library</a></p>
    ]]></content>
  </entry>
  <entry>
    <title>AjaxLine on FeedBurner.</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/node/476" />
    <id>http://www.ajaxline.com/node/476</id>
    <published>2007-11-27T01:02:28+00:00</published>
    <updated>2007-11-27T01:02:28+00:00</updated>
    <author>
      <name>Spider84</name>
    </author>
    <summary type="html"><![CDATA[<p>Today I have added AjaxLine and AjaxLine FeedBurn button to the subscribe panel.</p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/node/476<p>Today I have added AjaxLine and AjaxLine FeedBurn button to the subscribe panel.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Baseline grid - CSS typography</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/baseline-grid-css-typography" />
    <id>http://www.ajaxline.com/baseline-grid-css-typography</id>
    <published>2007-11-23T16:03:35+00:00</published>
    <updated>2007-11-23T16:34:04+00:00</updated>
    <author>
      <name>Kigorw</name>
    </author>
    <summary type="html"><![CDATA[<p>Yesterday I finished book<br />
<a href="http://www.oreilly.com/catalog/cssckbk2/> CSS Cookbook, Second Edition</a><br />
<img src="http://www.ajaxline.com/images/0596527411_cat.gif" /><br />
Interesting book, recommend. To be more concrete, it was interesting to learn about text sizing technique. Read about  <a href="http://clagnut.com/blog/348/"> 62.5 technique</a>, widely used in css world.</p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/baseline-grid-css-typography<p>Yesterday I finished book<br />
<a href="http://www.oreilly.com/catalog/cssckbk2/> CSS Cookbook, Second Edition</a><br />
<img src="http://www.ajaxline.com/images/0596527411_cat.gif" /><br />
Interesting book, recommend. To be more concrete, it was interesting to learn about text sizing technique. Read about  <a href="http://clagnut.com/blog/348/"> 62.5 technique</a>, widely used in css world.</p>
<p>At the same time read interesting article on A List Apart <a href="http://www.alistapart.com/articles/howtosizetextincss/">How to size text in css</a>. Author in the several iterations showed how to define font size which will be the same for all main browsers.</p>
<p><code><br />
&lt;style type="text/css"&gt;</code></p>
<p><code>body{     font-size:100%;     line-height:1.125em; }</code><br />
<code>bodytext p {     font-size:0.875em; }</code><br />
<code>.sidenote {     font-size:0.75em; }</code><br />
<code> &lt;/style&gt;</code><br />
<code>&lt;!--[if !IE]&gt;--&gt;</code><br />
<code>&lt;style type="text/css"&gt;</code><br />
<code>body {     font-size:16px; } </code><br />
<code>&lt;/style&gt;</code><br />
<code>&lt;!--&lt;[endif]--&gt;</code>
</p>
<p>
This article is rich for useful links so I did some research.<br />
I found very interesting topic.</p>
<h2>Baseline grids</h2>
<p>
Very popular technique.<br />
 <a href="http://www.alistapart.com/articles/settingtypeontheweb">Setting Type on the Web to a Baseline Grid</a> author showed how to code grided page. <a href="http://www.alistapart.com/d/settingtypeontheweb/example_grid.html">Result here</a>.</p>
<p>
Interesting method you can use<br />
<a href="http://www.kigorw.com/files/layout_grid.gif">background image</a>, to check your page.  <a href="http://cameronmoll.com/archives/2006/12/gridding_the_960/">Here you can find set of such backgrounds.</a>
</p>
<p>
Here series of articles about such grid systems: <a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_1/">One</a>, <a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_21/">two</a>, <a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_3/">three</a>, <a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_4/">four</a>, <a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_5/">five</a>.</p>
<p>The most interesting was YUI tool. It’s <a href="http://developer.yahoo.com/yui/grids/builder/">generator of table layout</a>. It can even generate liquid layout. Drawback - is not very friendly names of css classes.</p>
<p>
Also you can use <a href="http://code.google.com/p/blueprintcss/">Blueprint framework</a>.</p>
<p>I like it. It also has generator <a href="http://kematzy.com/blueprint-generator/"> layout generator </a>.<br />
Unfortunately it doesn’t generate liquid layout.
</p>
<p><a href="http://www.kigorw.com/2007/11/21/baseline-grid-css-links/">In Russian</a></p>
    ]]></content>
  </entry>
  <entry>
    <title>Url rewriting in .NET (clean url&#039;s)</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/kigorw/url-rewriting-in-dot-net-clean-urls" />
    <id>http://www.ajaxline.com/kigorw/url-rewriting-in-dot-net-clean-urls</id>
    <published>2007-11-09T12:50:08+00:00</published>
    <updated>2007-11-09T12:51:08+00:00</updated>
    <author>
      <name>Kigorw</name>
    </author>
    <summary type="html"><![CDATA[<p>Clean url's have big advantages. You can read in google about clean url's and url rewriting.
</p>
<p>Example:<br />
<a href="../../../../common-ajax" mce_href="http://www.ajaxline.com/common-ajax">http://www.ajaxline.com/common-ajax</a><br />
<a href="http://www.ajaxline.com/index.php?pid=12&amp;something=24" title="http://www.ajaxline.com/index.php?pid=12&amp;something=24">http://www.ajaxline.com/index.php?pid=12&amp;something=24</a></p>
<p>Not hard to see that first url is self explained. Easy to memorize and more interesting for search bots.</p>
<p>In this post I'm not going to make Url rewriting overview. I just tell about my experience with 2 tools. I used them on Windows Server 2003 and IIS6.</p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/kigorw/url-rewriting-in-dot-net-clean-urls<p>Clean url's have big advantages. You can read in google about clean url's and url rewriting.
</p>
<p>Example:<br />
<a href="../../../../common-ajax" mce_href="http://www.ajaxline.com/common-ajax">http://www.ajaxline.com/common-ajax</a><br />
<a href="http://www.ajaxline.com/index.php?pid=12&amp;something=24" title="http://www.ajaxline.com/index.php?pid=12&amp;something=24">http://www.ajaxline.com/index.php?pid=12&amp;something=24</a></p>
<p>Not hard to see that first url is self explained. Easy to memorize and more interesting for search bots.</p>
<p>In this post I'm not going to make Url rewriting overview. I just tell about my experience with 2 tools. I used them on Windows Server 2003 and IIS6.</p>
<h2>ISAPI Filter</h2>
<p><a href="http://cheeso.members.winisp.net/IIRF.aspx" mce_href="http://cheeso.members.winisp.net/IIRF.aspx"> http://cheeso.members.winisp.net/IIRF.aspx</a><br />
This tool allows to use syntax like in apache mod_rewrite. It's open source and free.<br />
There is binaries and source <a href="http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx?ReleaseId=5018" mce_href="http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx?ReleaseId=5018">http://www.codeplex.com/IIRF/Release/ProjectReleases.aspx?ReleaseId=5018</a><br />
To install you just need to add isapi filter to your website in IIS6 and set rewrite rules in ini file. Works perfectly. Can be used not only in .NET</p>
<h2>urlrewriter.net</h2>
<p>Even more comfortable tool. Without isapi filters. All rules defined in web.config file. On site <a href="http://urlrewriter.net/" mce_href="http://urlrewriter.net/">http://urlrewriter.net/</a> you can read <a href="http://urlrewriter.net/index.php/support/installation/" mce_href="http://urlrewriter.net/index.php/support/installation/">instructions </a> how to install it on different versions of windows.</p>
<p>Event for IIS6, which doesn't support &quot;.*&quot; mask for query processing you can find there <a href="http://urlrewriter.net/index.php/support/installation/windows-server-2003" mce_href="http://urlrewriter.net/index.php/support/installation/windows-server-2003">solution</a>.</p>
<p></p>
<p><a href="http://www.kigorw.com/2007/11/09/url-rewriting-in-dot-net/">Russian version of article</a></p>
<p>
</p>
    ]]></content>
  </entry>
  <entry>
    <title>Open source blog engine for .NET</title>
    <link rel="alternate" type="text/html" href="http://www.ajaxline.com/node/397" />
    <id>http://www.ajaxline.com/node/397</id>
    <published>2007-07-05T11:45:09+00:00</published>
    <updated>2007-10-26T14:45:31+00:00</updated>
    <author>
      <name>Kigorw</name>
    </author>
    <summary type="html"><![CDATA[<p>Found very interesting project</p>
<p><a href="http://www.dotnetblogengine.net/">http://www.dotnetblogengine.net/</a></p>
<p>It's free Blog engine with big number of interesting features.<br />
<a href="http://technorati.com/claim/idyarwb59" rel="me">Technorati Profile</a></p>
    ]]></summary>
    <content type="html"><![CDATA[http://www.ajaxline.com/node/397<p>Found very interesting project</p>
<p><a href="http://www.dotnetblogengine.net/">http://www.dotnetblogengine.net/</a></p>
<p>It's free Blog engine with big number of interesting features.<br />
<a href="http://technorati.com/claim/idyarwb59" rel="me">Technorati Profile</a></p>
    ]]></content>
  </entry>
</feed>
