<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type='text/xsl' href='http://pmouse.spaces.live.com/mmm2008-07-24_12.50/rsspretty.aspx?rssquery=en-US;http%3a%2f%2fpmouse.spaces.live.com%2fcategory%2fProject__x3%2bCTConnect%2ffeed.rss' version='1.0'?><rss version="2.0" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:msn="http://schemas.microsoft.com/msn/spaces/2005/rss" xmlns:live="http://schemas.microsoft.com/live/spaces/2006/rss" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:cf="http://www.microsoft.com/schemas/rss/core/2005" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>pMouse嘅個性空間: Project: CTConnect</title><description /><link>http://pmouse.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&amp;_c=BlogPart&amp;partqs=catProject__x3%2bCTConnect</link><language>en-US</language><pubDate>Tue, 05 Aug 2008 15:40:57 GMT</pubDate><lastBuildDate>Tue, 05 Aug 2008 15:40:57 GMT</lastBuildDate><generator>Microsoft Spaces v1.1</generator><docs>http://www.rssboard.org/rss-specification</docs><ttl>60</ttl><cf:parentRSS>http://pmouse.spaces.live.com/blog/feed.rss</cf:parentRSS><live:type>blogcategory</live:type><live:identity><live:id>-6924638082884724999</live:id><live:alias>pmouse</live:alias></live:identity><cf:listinfo><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="typelabel" label="Type" /><cf:group ns="http://schemas.microsoft.com/live/spaces/2006/rss" element="tag" label="Tag" /><cf:group element="category" label="Category" /><cf:sort element="pubDate" label="Date" data-type="date" default="true" /><cf:sort element="title" label="Title" data-type="string" /><cf:sort ns="http://purl.org/rss/1.0/modules/slash/" element="comments" label="Comments" data-type="number" /></cf:listinfo><item><title>Utilizing the Hidden Jewel: .Net PropertyGrid</title><link>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!468.entry</link><description>&lt;p&gt;After days of research, I've finally implemented the property view, which utilizes the .net propertygrid.  &lt;p&gt;The PropertyGrid displays filtered runtime reflection info about any object, namely, public properties for the object. It allows additional info via attributes, however, there is no easy way to display customized names for the property. This means that the user will see names such as &amp;quot;AssignmentPath&amp;quot; and &amp;quot;UseMDIView&amp;quot; - not very user friendly. &lt;p&gt;It turns out that implementing the customizble names aren't that big a deal - which makes me wonder why M$ had not done it. First off all, I've created a new attribute class named DisplayName attribute. Then I needed a Custom PropertyDescriptor that will get this attribute at runtime and display its info rather than the original name. This is done by extending the System.CompoentModel.PropertyDescriptor class and override its DisplayName method. Finally, I've created a Type Descriptor Proxy so I don't need to extend ICustomTypeDescriptor on every class. In the proxy it simply gets all properties of the object and encapsulate them in the CustomPropertyDescriptor class. &lt;p&gt;This implementation is easy and extentable, and proven very reliable. Below is the code segments for the property grid support classes. Some screenshot of the code in action is also uploaded to the CTConnect album.  &lt;p&gt;1. The DisplayNameAttribute &lt;p style="text-align:left" align=left&gt;    public class DisplayNameAttribute : System.Attribute &lt;p style="text-align:left" align=left&gt;    { &lt;p style="text-align:left" align=left&gt;        private string _value; &lt;p style="text-align:left" align=left&gt;        public string Value &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            get { return this._value; } &lt;p style="text-align:left" align=left&gt;            set { this._value = value; } &lt;p style="text-align:left" align=left&gt;        } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        public DisplayNameAttribute(string name) &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            this._value = name; &lt;p style="text-align:left" align=left&gt;        }    &lt;p style="text-align:left" align=left&gt;    } &lt;p&gt; &lt;p&gt;2. The AttributedTypeDescriptor &lt;p style="text-align:left" align=left&gt;    /// &amp;lt;summary&amp;gt; &lt;p style="text-align:left" align=left&gt;    /// A proxy for generic objects. Supports Attributes to alter property descriptors &lt;p style="text-align:left" align=left&gt;    /// &amp;lt;/summary&amp;gt; &lt;p style="text-align:left" align=left&gt;    public class AttributedTypeDescriptorProxy : System.ComponentModel.ICustomTypeDescriptor &lt;p style="text-align:left" align=left&gt;    { &lt;p style="text-align:left" align=left&gt;        /// &amp;lt;summary&amp;gt; &lt;p style="text-align:left" align=left&gt;        /// Property Descriptor that supports attributes &lt;p style="text-align:left" align=left&gt;        /// &amp;lt;/summary&amp;gt; &lt;p style="text-align:left" align=left&gt;        internal class CustomPropertyDescriptor : PropertyDescriptor &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            private PropertyInfo propInfo; &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            public CustomPropertyDescriptor( System.Reflection.PropertyInfo propInfo ) &lt;p style="text-align:left" align=left&gt;                : base(propInfo.Name, (Attribute[])propInfo.GetCustomAttributes(typeof(Attribute), true)) &lt;p style="text-align:left" align=left&gt;            { &lt;p style="text-align:left" align=left&gt;                this.propInfo = propInfo; &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            #region Overriding Functions &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            public PropertyInfo Property  &lt;p style="text-align:left" align=left&gt;            {  &lt;p style="text-align:left" align=left&gt;                get  &lt;p style="text-align:left" align=left&gt;                {  &lt;p style="text-align:left" align=left&gt;                    return propInfo; &lt;p style="text-align:left" align=left&gt;                } &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-indent:21pt;text-align:left" align=left&gt;// part of the source code omitted &lt;p style="text-indent:21pt;text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            public override string DisplayName &lt;p style="text-align:left" align=left&gt;            { &lt;p style="text-align:left" align=left&gt;                get &lt;p style="text-align:left" align=left&gt;                { &lt;p style="text-align:left" align=left&gt;                    object[] attrs = propInfo.GetCustomAttributes( typeof(DisplayNameAttribute), false ); &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;                    if ( attrs != null &amp;amp;&amp;amp; attrs.Length &amp;gt; 0 ) &lt;p style="text-align:left" align=left&gt;                    { &lt;p style="text-align:left" align=left&gt;                        DisplayNameAttribute attr = attrs[0] as DisplayNameAttribute; &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;                        if ( attr != null &amp;amp;&amp;amp; attr.Value != null ) &lt;p style="text-align:left" align=left&gt;                            return attr.Value; &lt;p style="text-align:left" align=left&gt;                    } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;                    return propInfo.Name; &lt;p style="text-align:left" align=left&gt;                } &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            public override object GetValue(object component)  &lt;p style="text-align:left" align=left&gt;            {  &lt;p style="text-align:left" align=left&gt;                return propInfo.GetValue( component, null ); &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            public override void SetValue(object component, object value)  &lt;p style="text-align:left" align=left&gt;            { &lt;p style="text-align:left" align=left&gt;                propInfo.SetValue(component, value, null);  &lt;p style="text-align:left" align=left&gt;                OnValueChanged(component, EventArgs.Empty); &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            #endregion &lt;p style="text-align:left" align=left&gt;        } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        private object _type; &lt;p style="text-align:left" align=left&gt;         &lt;p style="text-align:left" align=left&gt;        public object Type &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            get { return _type; } &lt;p style="text-align:left" align=left&gt;            set { _type = value; } &lt;p style="text-align:left" align=left&gt;        } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        public AttributedTypeDescriptorProxy(object _type) &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            this._type = _type; &lt;p style="text-align:left" align=left&gt;        } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        #region ICustomTypeDescriptor Proxy &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        // part of the source code omitted &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        public PropertyDescriptorCollection GetProperties(Attribute[] attributes) &lt;p style="text-align:left" align=left&gt;        { &lt;p style="text-align:left" align=left&gt;            // Create the property collection and filter &lt;p style="text-align:left" align=left&gt;            PropertyDescriptorCollection props = new PropertyDescriptorCollection(null); &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            foreach ( PropertyInfo prop in _type.GetType().GetProperties() ) &lt;p style="text-align:left" align=left&gt;            { &lt;p style="text-align:left" align=left&gt;                CustomPropertyDescriptor p = new CustomPropertyDescriptor( prop ); &lt;p style="text-align:left" align=left&gt;                props.Add(p); &lt;p style="text-align:left" align=left&gt;            } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;            return props; &lt;p style="text-align:left" align=left&gt;        } &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        // part of the source code omitted &lt;p style="text-align:left" align=left&gt;  &lt;p style="text-align:left" align=left&gt;        #endregion &lt;p style=""&gt;    } &lt;p&gt; &lt;p style=""&gt;To use the code, add the attributes to properties you want to expose to the user, ie., &lt;p style=""&gt;  &lt;p style="text-align:left" align=left&gt;     [DisplayName(&amp;quot;Assignment File Directory&amp;quot;)] &lt;p style="text-align:left" align=left&gt;[Editor( typeof(System.Windows.Forms.Design.FolderNameEditor), typeof( System.Drawing.Design.UITypeEditor ))] &lt;p style="text-align:left" align=left&gt;    [Category(&amp;quot;Marking Scheme&amp;quot;)] &lt;p style="text-align:left" align=left&gt;    [DefaultValue(null)] &lt;p style="text-align:left" align=left&gt;    [Description(&amp;quot;Specifies the directory where the assignment files are located&amp;quot;)] &lt;p style="text-align:left" align=left&gt;    public string AssignmentDirectory &lt;p style="text-align:left" align=left&gt;    { &lt;p style="text-align:left" align=left&gt;        get { return scheme.AssignmentDirectory; } &lt;p style="text-align:left" align=left&gt;        set { scheme.AssignmentDirectory = value; } &lt;p style=""&gt;    } &lt;p style=""&gt;  &lt;p style=""&gt;Then specify the propertygrid to load the object &lt;p style=""&gt;  &lt;p style="text-align:left" align=left&gt;    protected void OnPropertyRequested( object sender, EventArgs e ) &lt;p style="text-align:left" align=left&gt;    { &lt;p style="text-align:left" align=left&gt;        this.propView.SelectObject( new AttributedTypeDescriptorProxy(this) ); &lt;p style=""&gt;    } &lt;p style=""&gt;    ... &lt;p style=""&gt;    PropertyView: &lt;p style=""&gt;     &lt;p style="text-align:left" align=left&gt;    public void SelectObject(object o) &lt;p style="text-align:left" align=left&gt;    { &lt;p style="text-align:left" align=left&gt;        this.propGrid.SelectedObject = o; &lt;p style=""&gt;    } &lt;p style=""&gt;  &lt;p style=""&gt; &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6924638082884724999&amp;page=RSS%3a+Utilizing+the+Hidden+Jewel%3a+.Net+PropertyGrid&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pmouse.spaces.live.com&amp;amp;GT1=pmouse"&gt;</description><comments>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!468.entry#comment</comments><guid isPermaLink="true">http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!468.entry</guid><pubDate>Sun, 10 Apr 2005 03:32:21 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pmouse.spaces.live.com/blog/cns!9FE6BE5A178396F9!468/comments/feed.rss</wfw:commentRss><wfw:comment>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!468.entry#comment</wfw:comment><dcterms:modified>2005-04-10T03:32:21Z</dcterms:modified></item><item><title>Major Progress on CTConnect</title><link>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!450.entry</link><description>&lt;p&gt;A new screenshot have been uploaded to the CTConnect project folder. It shows the finalized User Interface, with some highlight features labelled. This is, of course, the result of yet another entire day of work. &lt;p&gt;Coming up next is the Marking Scheme Creation dialog, the Student List View's sorting handler, and a grade report generator. The main menu will be implemented afterwards, with no Editing controls included however (Copy&amp;amp;Paste, Undo\Redo, etc). Finally, a Plug-In interface needs to be added, together with a plug-in that allows communication with WebCT via HTTP. That'll be everything required in the Alpha build. I'm hoping that another 3 or 4 days will get me there. However, the Pre-Alpha build should soon be stable enough to be distributed for testing and previewing.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6924638082884724999&amp;page=RSS%3a+Major+Progress+on+CTConnect&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pmouse.spaces.live.com&amp;amp;GT1=pmouse"&gt;</description><comments>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!450.entry#comment</comments><guid isPermaLink="true">http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!450.entry</guid><pubDate>Mon, 07 Mar 2005 05:19:40 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pmouse.spaces.live.com/blog/cns!9FE6BE5A178396F9!450/comments/feed.rss</wfw:commentRss><wfw:comment>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!450.entry#comment</wfw:comment><dcterms:modified>2005-03-07T05:19:40Z</dcterms:modified></item><item><title>Progress Report, Marking Scheme View</title><link>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!442.entry</link><description>&lt;p&gt;The base frame, or skeleton of the Marking scheme have been finished. During the first trial run a lot of problems have been spotted, hopefully they will be elimated tonight. &lt;p&gt;Two screenshots have been uploaded to my Space, showing the program in it's pre-alpha stage. As you can see the marking scheme view utilizes the &amp;quot;PropertyGrid&amp;quot; control, which is a standard .Net compoent. However it has not been implemented yet, as it now shows a blank space. &lt;p&gt;The Student list is currently loaded from a CSV file everytime the program is loaded - which is extremely inefficient. In the future they will be serialized and stored separately with the program. One thing to note is that the treeview on the left shows sign of bugs - L00 should not be there at all. I haven't look into this issue yet, hopefully it's caused by a corruption in the data. &lt;p&gt;Well, that's it for now. The project is now 44% into its pre-alpha development, and 27% towards the finishing line.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6924638082884724999&amp;page=RSS%3a+Progress+Report%2c+Marking+Scheme+View&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pmouse.spaces.live.com&amp;amp;GT1=pmouse"&gt;</description><comments>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!442.entry#comment</comments><guid isPermaLink="true">http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!442.entry</guid><pubDate>Mon, 21 Feb 2005 23:54:45 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pmouse.spaces.live.com/blog/cns!9FE6BE5A178396F9!442/comments/feed.rss</wfw:commentRss><wfw:comment>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!442.entry#comment</wfw:comment><dcterms:modified>2005-02-21T23:54:45Z</dcterms:modified></item><item><title>New Progress, and Funding Issue.</title><link>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!437.entry</link><description>&lt;p&gt;The CTConnect project is going well. I have already invested 4-5 hours of work to it, and the StudentList module now meets the pre-alpha requirements. I am now moving onto building the framework for the Marking Project Environment. &lt;p&gt;However there has been a slight problem with the faculty. Appearently their budge can only allow about 10 hours of work. I highly doubt with that amount of time any useful program can be created. Any more funding on this project will have to go through the Associate Dean. Looks like Engineering aren't that rich after all. &lt;p&gt;Well, to be honest I wasn't expecting any money at all. This project was created as a result of my personal interest, mainly because I cannot sustain the tedious and inefficient marking process that I have to go through every week. So yeah, looking from a more positive side, I should be grateful that there is a source of funding at all. &lt;p&gt;With the current development speed I estimate that the alpha build can be released in about 3 or 4 days. It then will be tested for a part of Assignment 2 marking, where bugs will be found and killed. At the end of this week there should be a Beta release. &lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6924638082884724999&amp;page=RSS%3a+New+Progress%2c+and+Funding+Issue.&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pmouse.spaces.live.com&amp;amp;GT1=pmouse"&gt;</description><comments>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!437.entry#comment</comments><guid isPermaLink="true">http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!437.entry</guid><pubDate>Mon, 21 Feb 2005 00:52:46 GMT</pubDate><slash:comments>2</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pmouse.spaces.live.com/blog/cns!9FE6BE5A178396F9!437/comments/feed.rss</wfw:commentRss><wfw:comment>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!437.entry#comment</wfw:comment><dcterms:modified>2005-02-21T00:52:46Z</dcterms:modified></item><item><title>New Project: CTConnect</title><link>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!341.entry</link><description>&lt;p&gt;In the effort of trying to improve the efficiency of the marking process of the course I'm TAing. I am now starting a new project, which I name &amp;quot;CTConnect&amp;quot;. The fundamental functionality of it is to provide automation for marking student works online. &lt;p&gt;Once fully functional, CTConnect will assist the markers by managing student records, generating reports and upload the results to WebCT automatically. Ideally CTConnect will provide a fully integrating environment for all day to day tasks involving student management, which I call it ISME (Integrated Student Management Environment). This means that users will not longer need to switch between IE, Excel, Acrobat Reader or any other program, which is a major cause of efficiency currently. &lt;p&gt;Currently marking individual assignments takes somewhere around 7-10 mins, starting from initialize the report scheme, download the assignment, evaluate for a grade, and finally upload the report. It is esitimated that with CTConnect's help, the process can be reduced to about 30 minutes each. &lt;p&gt;What's even better? Well, the development process is funded by the University, although the resources is very limited, it's a lot better than having nothing at all. &lt;p&gt;I have created a new List in my space that shows the tasks to be completed. Currently the Alpha version is scheduled for release at the end of the reading-week break.&lt;img src="http://c.services.spaces.live.com/CollectionWebService/c.gif?cid=-6924638082884724999&amp;page=RSS%3a+New+Project%3a+CTConnect&amp;referrer=" width="1px" height="1px" border="0" alt=""&gt;&lt;img style="position:absolute" alt="" width="0px" height="0px" src="http://c.live.com/c.gif?NC=31263&amp;amp;NA=1149&amp;amp;PI=73329&amp;amp;RF=&amp;amp;DI=3919&amp;amp;PS=85545&amp;amp;TP=pmouse.spaces.live.com&amp;amp;GT1=pmouse"&gt;</description><comments>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!341.entry#comment</comments><guid isPermaLink="true">http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!341.entry</guid><pubDate>Sun, 20 Feb 2005 01:05:46 GMT</pubDate><slash:comments>0</slash:comments><msn:type>blogentry</msn:type><live:type>blogentry</live:type><live:typelabel>Blog entry</live:typelabel><wfw:commentRss>http://pmouse.spaces.live.com/blog/cns!9FE6BE5A178396F9!341/comments/feed.rss</wfw:commentRss><wfw:comment>http://pmouse.spaces.live.com/Blog/cns!9FE6BE5A178396F9!341.entry#comment</wfw:comment><dcterms:modified>2005-02-20T01:05:46Z</dcterms:modified></item></channel></rss>