﻿<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#">
  <channel>
    <title>maqdev.com</title>
    <description>сообщения с ограниченным временем жизни</description>
    <link>http://www.maqdev.com/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 1.5.0.7</generator>
    <language>ru-RU</language>
    <blogChannel:blogRoll>http://www.maqdev.com/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.maqdev.com/syndication.axd</blogChannel:blink>
    <dc:creator>Magomed Abdurakhmanov</dc:creator>
    <dc:title>maqdev.com</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <item>
      <title>Макрос для обрамления выделенного текста в тег для Visual Studio 2008</title>
      <description>&lt;p&gt;В процессе работы с HTML, ASPX часто приходится уже имеющийся на странице текст вставлять внутрь тега, что может быть довольно утомительно если текста много. Для того чтобы упростить эту задачу я написал простенький макрос.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Для того, чтобы можно было быстро выполнить эту операцию, необходимо подключить макрос в Visual Studio и привязать ее к какой нибудь комбинации клавищ (у меня это Ctrl-W). Для того чтобы воспользоваться - просто выделяете кусок текста и запускаете макрос - откроется диалог в котором надо ввести тег, например li (не нужно вводить &amp;lt;li&amp;gt;).&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier"&gt;Imports&amp;nbsp;System&lt;br /&gt;Imports&amp;nbsp;EnvDTE&lt;br /&gt;Imports&amp;nbsp;EnvDTE80&lt;br /&gt;Imports&amp;nbsp;EnvDTE90&lt;br /&gt;Imports&amp;nbsp;System.Diagnostics&lt;br /&gt;&lt;br /&gt;Public&amp;nbsp;Module&amp;nbsp;MaqdevMacros&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;Sub&amp;nbsp;WrapSelectionWithTag()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Dim&amp;nbsp;Tag&amp;nbsp;As&amp;nbsp;String&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Tag&amp;nbsp;=&amp;nbsp;InputBox(&amp;quot;Enter&amp;nbsp;TAG&amp;nbsp;to&amp;nbsp;wrap&amp;nbsp;selection&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;If&amp;nbsp;(Tag.Length&amp;nbsp;&amp;gt;&amp;nbsp;0)&amp;nbsp;Then&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DTE.ActiveDocument.Selection.Cut()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DTE.ActiveDocument.Selection.Text&amp;nbsp;=&amp;nbsp;&amp;quot;&amp;lt;&amp;quot;&amp;nbsp;+&amp;nbsp;Tag&amp;nbsp;+&amp;nbsp;&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DTE.ActiveDocument.Selection.Paste()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;End&amp;nbsp;If&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;End&amp;nbsp;Sub&lt;br /&gt;End&amp;nbsp;Module&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;</description>
      <link>http://www.maqdev.com/post/2009/03/27/wrap-text-with-tag-visual-studio-macros.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2009/03/27/wrap-text-with-tag-visual-studio-macros.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=0c5e0618-0b9e-4eef-8fc5-d374b77f5903</guid>
      <pubDate>Fri, 27 Mar 2009 13:23:00 +0400</pubDate>
      <category>разработка</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=0c5e0618-0b9e-4eef-8fc5-d374b77f5903</pingback:target>
      <slash:comments>10</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=0c5e0618-0b9e-4eef-8fc5-d374b77f5903</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2009/03/27/wrap-text-with-tag-visual-studio-macros.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=0c5e0618-0b9e-4eef-8fc5-d374b77f5903</wfw:commentRss>
    </item>
    <item>
      <title>Очищаем HTML код от ненужных атрибутов ID в серверных контролах ASP.NET</title>
      <description>&lt;h2&gt;Проблема&lt;/h2&gt;&lt;p&gt;Если у вас есть серверный контрол, с длинным атрибутом ID, либо он лежит внутри множества других контролов (что приводит к очень длинным ID), то этот ID всегда &amp;nbsp;выводится в конечный HTML выдаваемый клиенту в неком преобразованном виде. Если у вас на странице много таких контролов, скажем внутри Repeater лежит некий Label, то в итоге объем сгенеренных в HTML коде аттрибутов ID может быть существенным. При этом довольно часто, эти ID на клиентской стороне не нужны вовсе, обычно это касается ссылок, картинок, текста (если вы не производите никакие AJAX манипуляции с этими элементами на клиентской стороне).&lt;/p&gt;&lt;h2&gt;Решение&lt;/h2&gt;&lt;p&gt;Довольно красивое решение было найдено в блоге &lt;a href="http://weblogs.asp.net/salvo/archive/2007/11/09/how-to-clean-id-s-on-html-output-for-server-control-in-asp-net.aspx"&gt;salvo&lt;/a&gt;&lt;/p&gt;&lt;p&gt;На этапе PreRender, обнуляем значение ID серверного контрола. Что приводит к тому, что в итоге ID не передается клиенту.&lt;/p&gt;&lt;p&gt;Для упрощения этой задачи, создаем универсальный обработчик (например в неком базовом классе страниц и контролов сайта):&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space: pre"&gt;&lt;span class="Apple-style-span" style="font-weight: bold"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier"&gt;&lt;span class="Apple-style-span" style="font-weight: bold"&gt;public void DeleteID(object sender, EventArgs e)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if&amp;nbsp;(sender&amp;nbsp;is&amp;nbsp;Control)&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Control&amp;nbsp;c&amp;nbsp;=&amp;nbsp;(Control)sender;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;c.ID&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;Затем указываем его в атрибуте серверного контрола:&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new', courier"&gt;&lt;span class="Apple-style-span" style="font-weight: bold"&gt;&amp;lt;asp:Label ID=&amp;quot;MyLongIDLabelForName&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;Salvo&amp;quot; OnPreRender=&amp;quot;DeleteID&amp;quot;&amp;gt;&amp;lt;/asp:Label&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <link>http://www.maqdev.com/post/2008/09/20/Remove-HTML-ID-from-server-controls.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/09/20/Remove-HTML-ID-from-server-controls.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=c7bcb5f6-e12f-4868-bbe8-e11ab8702ee0</guid>
      <pubDate>Sat, 20 Sep 2008 17:19:00 +0400</pubDate>
      <category>разработка</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=c7bcb5f6-e12f-4868-bbe8-e11ab8702ee0</pingback:target>
      <slash:comments>14</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=c7bcb5f6-e12f-4868-bbe8-e11ab8702ee0</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/09/20/Remove-HTML-ID-from-server-controls.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=c7bcb5f6-e12f-4868-bbe8-e11ab8702ee0</wfw:commentRss>
    </item>
    <item>
      <title>Краткий обзор CMS систем для .NET Framework / ASP.NET</title>
      <description>&lt;p&gt;Возникла необходимость&amp;nbsp;выбора Open Source CMS для реализации очередного проекта. Вообще надо сказать, что популярные и известные CMS (а также различные open-source форумы, движки и библиотеки) написаны на PHP или Perl. Но подтягиваются и .NET реализации, некоторые из которых выглядят вполне качественными и функциональными. &lt;/p&gt;&lt;p&gt;В данной заметке приведу краткий обзор CMS которые я нашел в сети, в дальнейшем, возможно, приведу более детальное исследование некоторых из них. Критерии выбора были следующие: платформа ASP.NET, бесплатность, открытость исходного кода проекта. &lt;/p&gt;&lt;h2&gt;DotNetNuke&lt;img src="http://www.maqdev.com/image.axd?picture=dotnetnuke-cms-logo.gif" alt="" width="100" height="23" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.dotnetnuke.com/"&gt;http://www.dotnetnuke.com/&lt;/a&gt;&lt;br /&gt;Текущая версия 4.8.1&lt;br /&gt;Платформа: ASP.NET 2.0&lt;br /&gt;СУБД: Microsoft SQL Server (по всей видимости поддерживается 2000 и выше)&lt;br /&gt;Язык программирования: в основном VB.NET (один модуль на C#).&lt;br /&gt;Лицензия: BSD &lt;/p&gt;&lt;p&gt;Наверно, наиболее популярный из CMS реализованных на .NET (на сайте приведена цифра &amp;ndash; 400тыс. пользователей). Авторы описывают его как гибкий, дружелюбный и мощный одновременно. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	поддержка множества порталов; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	полностью настраиваемый внешний вид, поддержка стилей и скинов; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	многоязычный, в том числе поддерживается русский язык; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	управление файлами, корзина для удаленных, поддержка drag&amp;rsquo;n&amp;rsquo;drop; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	заявлена поддержка следующих стандартных модулей: авторизация и поддержка пользователей, анонсы, баннер, блоги, контакты, дискуссии и форумы, списки документов, списки событий, FAQ, обратная связь,&amp;nbsp; галерея изображений или мультимедиа, изображения, ссылки, RSS, поиск, XML/XSLT преобразования, вывод пользовательских табличных данных. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Помимо стандартных, &lt;a href="http://marketplace.dotnetnuke.com/"&gt;на сайте имеется&lt;/a&gt; довольно много дополнительных платных модулей. &lt;/p&gt;&lt;p&gt;На первый взгляд выглядит немного тормознутым, особенно поиск по ключевым словам &amp;ndash; по самому сайту &lt;a href="http://www.dotnetnuke.com/"&gt;http://www.dotnetnuke.com/&lt;/a&gt;&lt;br /&gt;Документация очень подробная по всем аспектам (как по разработке своих модулей, так и по использованию системы). &lt;/p&gt;&lt;h2&gt;Umbraco &lt;img src="http://www.maqdev.com/image.axd?picture=umbraco-cms-logo.gif" alt="" width="100" height="31" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://umbraco.org/"&gt;http://umbraco.org/&lt;/a&gt;&lt;br /&gt;Текущая версия 3.0.3 &lt;br /&gt;Платформа: ASP.NET 2.0, Microsoft ASP.NET 2.0 AJAX Extensions 1.0&lt;br /&gt;СУБД: Microsoft SQL Server 2005&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: MIT License &lt;/p&gt;&lt;p&gt;Функциональность определенно не такая объемная, как у DotNetNuke, но есть несколько довольно интересных возможностей, в том числе: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	интегрированный WYSIWYG редактор, редактор для шаблонов JavaScript файлов и CSS; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка редактирования непосредственно из Microsoft Word; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	версионирование всех изменений; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	публикация по расписанию; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	полная поддержка веб-стандартов, шаблонов и стилей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	легкая интеграция существующих .NET пользовательских контролов (User and custom controls), легко расширяемая объектная модель; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	удобный форум; 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Umbraco на первый взгляд выглядит более ориентированным на разработчиков. Очевидно что это может быть как плюсом, если вы хотите более полный контроль над сайтом и планируете существенные доработки, так и минусом если функциональность типична. &lt;/p&gt;&lt;p&gt;Помимо бесплатной версии предлагаются расширенные платные версии: &lt;a href="http://umbraco.org/products/umbraco-pro/feature-matrix"&gt;http://umbraco.org/products/umbraco-pro/feature-matrix&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;mojoPortal &lt;img src="http://www.maqdev.com/image.axd?picture=mojoportal-cms-logo.gif" alt="" width="100" height="39" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.mojoportal.com/"&gt;http://www.mojoportal.com/&lt;/a&gt;&lt;br /&gt;Текущая версия 2.2.4.6-b&lt;br /&gt;Платформа: ASP.NET 2.0 для Windows или Mono (Linux, Mac OS X)&lt;br /&gt;СУБД: MS SQL, MySQL, PostgreSQL, SQLite, FirebirdSql&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: CPL &lt;/p&gt;&lt;p&gt;Довольно интересная реализация, которая поддерживает, в том числе Mono и может работать с множеством бесплатных SQL серверов.&lt;br /&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	поддержка множества сайтов в одной инсталляции; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	XHTML совместимый менеджер контента; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	WYSIWYG редактор контента (FCKeditor , TinyMCE, или XStandard); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	блоги, форумы; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	календарь событий; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	галерея изображений; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	новости с рассылкой; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	RSS агрегатор; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	контакты; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	менеджер файлов; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	опросы и голосования; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	интернет магазин (базовая функциональность); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка многоязычности, также заявлена поддержка русского языка; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	авторизация пользователей Active Directory, OpenLDAP, OpenID и Windows Live ID. 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поиск по ключевым словам; 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Rainbow&lt;img src="http://www.maqdev.com/image.axd?picture=rainbow-cms.jpg" alt="" width="100" height="31" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.rainbowportal.net/"&gt;http://www.rainbowportal.net/&lt;/a&gt;&lt;br /&gt;Текущая версия: Rainbow 2.0.0.1881e&lt;br /&gt;Платформа: ASP.NET 2.0&lt;br /&gt;СУБД: MS SQL 2000&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: LGPL &lt;/p&gt;&lt;p&gt;Rainbow первоначально основывался (как и DotNetNuke) на портале IBuySpy который был разработан Microsoft для демонстрации возможностей ASP.NET.&lt;br /&gt;Смущает множество неработающих ссылок на сайте, в частности на текущий момент не открывается ссылка по главной новости о выпуске версии 2.0.0.1881e &lt;/p&gt;&lt;p&gt;Функциональность (более 45 стандартных модулей): &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	поддержка множества сайтов в одной инсталляции; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поиск; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	редактирование контента в режиме WYSIWYG; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	кастомизация сайта с помощью скинов и стилей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	управление пользователями и ролями; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	анонсы, статьи, блоги, форумы, контакты, списки событий, FAQ, галереи изображений, опросы, etc. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Перечисленная функциональность радует, но продукт производит впечатление довольно громоздкого и плохо поддерживаемого, на сайте творится некоторый бардак со ссылками и исходниками различных версий системы. &lt;/p&gt;&lt;h2&gt;AxCMS.net&lt;img src="http://www.maqdev.com/image.axd?picture=axcms-cms-logo.jpg" alt="" width="100" height="24" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;&lt;br /&gt;Веб сайт: &lt;a href="http://www.axcms.net/"&gt;http://www.axcms.net/&lt;/a&gt;&lt;br /&gt;Текущая версия: 7.0&lt;br /&gt;Платформа: ASP.NET 2.0, AJAX Extension 1.0, Web Service Enhancements 3.0&lt;br /&gt;СУБД: MS SQL 2000/2005&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: своя, нельзя декомпилировать части без исходников и распространять изменения &lt;/p&gt;&lt;p&gt;Большая часть системы поставляется без исходников, да и лицензия достаточно ограниченная, поэтому желание серьезно разбираться с этой CMS поубавилось. Хоть сайт производителя радует своей логичностью и доступностью документации по установке и настройке системы. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	модуль для печати; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка загрузки файлов на сайт пользователями; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	опросы; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поиск; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка Sitemap; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	RSS агрегатор; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	регистрация и аутентификация пользователей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	новостные рассылки; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	ротирующиеся картинки; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	форум; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	генератор форм и таблиц, без необходимости править HTML; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	многоязычность (русский поддерживается); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	интеграция с Explorer (видимо через WebDAV); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	электронные открытки, хлебные крошки, баннеры, etc. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Имеет смысл связываться с этой CMS, если вы собираетесь платить за это деньги (и получить соответственно поддержку и некоторые расширенные возможности). &lt;/p&gt;&lt;h2&gt;Cuyahoga&lt;img src="http://www.maqdev.com/image.axd?picture=cuyahoga-cms-logo.gif" alt="" width="100" height="35" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.cuyahoga-project.org/"&gt;http://www.cuyahoga-project.org/&lt;/a&gt;&lt;br /&gt;Текущая версия: 1.5.2&lt;br /&gt;Платформа: ASP.NET 2.0, Mono&lt;br /&gt;СУБД: MS SQL, PostgreSQL, MySQL&amp;nbsp; (через nhibernate)&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: BSD &lt;/p&gt;&lt;p&gt;Как пишут авторы этого труднопроизносимого на русском языке проекта - основная цель ее, это показать разработчикам .NET, что есть другой способ организации .NET приложений, нежели тот который показывается в стандартных примерах. Также авторы противопоставляют DotNetNuke, Rainbow, и Portal Starter Kit (ранее известный как IBuySpy Portal) своей системе, утверждая, что Cuyahoga дает возможность строить веб-сайты с любым дизайном, за счет использования гибкой разметки. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	Множество сайтов в одной инсталляции, алиасы для сайтов, иерархическая структура сайта с неограниченной вложенностью; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	связи между модулями на странице, что позволяет им взаимодействовать между собой; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	шаблоны с выделенными пользовательскими частями; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	тонкая настройка кеширования объектов и модулей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поиск; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка локализации контента; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	синдикация RSS;&amp;nbsp; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	WYSIWYG редактор; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	стандартные модули в себя включают: статьи, статический html, раздел downloads, remote content (контент с удаленных источников), регистрация и авторизация пользователей, переключатель языков; 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;На сайте выложено неплохое руководство по написанию модулей: &lt;a href="http://www.cuyahoga-project.org/46/section.aspx/download/19"&gt;http://www.cuyahoga-project.org/46/section.aspx/download/19&lt;/a&gt; &lt;/p&gt;&lt;h2&gt;N2&lt;img src="http://www.maqdev.com/image.axd?picture=n2-cms-logo.gif" alt="" width="31" height="16" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://n2cms.com/"&gt;http://n2cms.com/&lt;/a&gt;&lt;br /&gt;Текущая версия: 1.3.3&lt;br /&gt;Платформа: ASP.NET 2.0&lt;br /&gt;СУБД: MS SQL 2000/2005, MySQL (посредством nhibernate)&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: GNU &lt;/p&gt;&lt;p&gt;Описание на сайте производителя&amp;nbsp; гласит, что, N2 &amp;ndash; это легковесная CMS, которая дает простой и мощный интерфейс для редакторов, а для разработчиков &amp;ndash; понятный и открытый API.&amp;nbsp;Радует функциональность и простота использования самого сайта, не требуется много времени, чтобы найти какой функционал поддерживается, документацию для разработчика. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	Множество сайтов в одной инсталляции, иерархическая структура контента с неограниченной вложенностью; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	простой в использовании интерфейс редактора, легкость его расширения; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	сайты разрабатываются в Visual Studio (?); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	модель БД сохранена в виде исходного кода (nhibernate ?); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	авторизация с использованием стандартных провайдеров asp.net; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	есть возможность встроить в существующее приложение; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	WYSIWYG редактор, файл менеджер, редактирование поддерживается как минимум в IE и Firefox; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	гибкий дизайн шаблонов; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка JQuery, TinyMCE, Microsoft Ajax; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	версионирование контента; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	локализация контента; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	визард по созданию страниц; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	менеджер пользователей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	публикация по расписанию; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	включены модули: текст, новости, календарь событий, FAQ, галерея картинок, опросы, подписка RSS, поиск, и пр. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;XMLNUKE&lt;img src="http://www.maqdev.com/image.axd?picture=xmlnuke-cms-logo.gif" alt="" width="100" height="19" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.xmlnuke.com/"&gt;http://www.xmlnuke.com/&lt;/a&gt;&lt;br /&gt;Текущая версия: 2.0 RC1 (CSharp Edition)&lt;br /&gt;Платформа: любая, доступна также PHP реализация&lt;br /&gt;СУБД: не требуется, XML&lt;br /&gt;Язык программирования: C#, PHP&lt;br /&gt;Лицензия: GNU &lt;/p&gt;&lt;p&gt;CMS основана на преобразованиях XML в HTML при помощи XSLT, что в общем то является стандартной практикой. Не использует никакие БД, что с одной стороны плюс &amp;ndash; не нужно за них платить, с другой стороны минус &amp;ndash; при множестве операций записи, генерации XML файлов и выполнении XSLT преобразований (достаточно ресурсоемкая операция), производительность такой системы может быть заметно ниже. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	Множество сайтов в одной инсталляции; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	минимальное количество действий по запуску: просто распаковать и залить на сайт; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка локализации; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	сниппеты (упрощенный синтаксис генерации HTML, так как XSLT довольно сложен); 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	генерация site map; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	темы, печать документов; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	доступны модули: гостевая книга, поиск по ключевым словам, аутентификация пользователей и профили, раздел download. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Очевидно, что XMLNUKE, это простая система, с базовой функциональностью, подойдет тем, кому нужно быстро запустить простой сайт, при этом не нужно будет думать о том какой SQL сервер использовать. &lt;/p&gt;&lt;h2&gt;JMDCMS&lt;img src="http://www.maqdev.com/image.axd?picture=jmd-cms-logo.gif" alt="" width="100" height="25" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.jmdcms.com/"&gt;http://www.jmdcms.com/&lt;/a&gt;&lt;br /&gt;Текущая версия: 3.0.0.9 Alpha&lt;br /&gt;Платформа: ASP.NET 2.0&lt;br /&gt;СУБД: SQL Server 2000/2005&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: Common Public License &lt;/p&gt;&lt;p&gt;Описание с сайта: гибкая автоматическая разметка в 3,2 и 1 колонку. Контроль доступа на уровне страниц и модулей, контроль публикации. Сайт автора, на мой взгляд, перегружен рекламой. &lt;/p&gt;&lt;p&gt;Функциональность: &lt;/p&gt;&lt;ul&gt;	&lt;li&gt;	&lt;div&gt;	Множество сайтов в одной инсталляции, неограниченная вложенность страниц; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	разметка, основанная на CSS шаблонах; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	поддержка модулей; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	детальная статистика; 	&lt;/div&gt;	&lt;/li&gt;	&lt;li&gt;	&lt;div&gt;	встроенные модули: меню, управление пользователями, страницами и безопасностью. 	&lt;/div&gt;	&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;На текущий момент довольно слабая функциональность, хотя &lt;a href="http://www.codeplex.com/JMDCMS/Wiki/View.aspx?title=Modules&amp;amp;referringTitle=Home"&gt;многое заявлено как планируемое&lt;/a&gt;. &lt;/p&gt;&lt;h2&gt;NKCMS&lt;img src="http://www.maqdev.com/image.axd?picture=nkcms-logo.gif" alt="" width="100" height="30" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://nkcms.sourceforge.net/"&gt;http://nkcms.sourceforge.net/&lt;/a&gt;&lt;br /&gt;Текущая версия: ?&lt;br /&gt;Платформа: ASP.NET&lt;br /&gt;СУБД: MS SQL&lt;br /&gt;Язык программирования: C#&lt;br /&gt;Лицензия: BSD &lt;/p&gt;&lt;p&gt;Весьма аскетичный WEB сайт, приводит информация о некоторых возможностях этой системы:&lt;br /&gt;&amp;nbsp;- использование XSL для шаблонов;&lt;br /&gt;&amp;nbsp;- поддержка многоязычности;&lt;br /&gt;&amp;nbsp;- управление доступом пользователей;&lt;br /&gt;&amp;nbsp;- windows приложение для управления сайтом. &lt;/p&gt;&lt;p&gt;Судя &lt;a href="http://sourceforge.net/projects/nkcms/"&gt;по всему&lt;/a&gt;, последняя активность над проектом была в 2005 году, рассматривать его особого смысла не имеет. &lt;/p&gt;&lt;h2&gt;Freeleen&lt;img src="http://www.maqdev.com/image.axd?picture=freeleen-cms-logo.gif" alt="" width="100" height="16" align="right" /&gt;&lt;/h2&gt;&lt;p&gt;Веб сайт: &lt;a href="http://www.feeleen.ru/"&gt;http://www.feeleen.ru/&lt;/a&gt;&lt;br /&gt;Текущая версия: ?&lt;br /&gt;Платформа: ASP.NET ?&lt;br /&gt;СУБД: ?&lt;br /&gt;Язык программирования: ?&lt;br /&gt;Лицензия: ? &lt;/p&gt;&lt;p&gt;Из описания на самом сайте понять можно не очень много. Предлагается обращаться на e-mail. Предположительно система не бесплатна, исходного кода тоже не видно &amp;ndash; к загрузке предлагается только демоверсия Windows клиента для управления сайтом. &lt;/p&gt;&lt;p&gt;Привожу исключительно в качестве справочной ссылки, к тому же единственная в обзоре CMS, которая создана автором из России. &lt;/p&gt;&lt;h2&gt;Заключение&lt;/h2&gt;&lt;p&gt;Меня, как разработчика, наиболее заинтересовал из этого списка N2, в частности обещаниями легкой интеграции в существующие приложения. Еще кажутся достойными более пристального изучения mojoPortal, umbraco и Cuyahoga. Конечно, кажется что более функциональный DotNetNuke или, например Rainbow, тоже вполне достойные системы, но на исключительно поверхностный взгляд они выглядят избыточными и сложными в доработке и поддержке. &lt;/p&gt;&lt;p&gt;А у вас был опыт работы с&amp;nbsp;одной из перечисленных CMS? &lt;/p&gt;</description>
      <link>http://www.maqdev.com/post/2008/03/04/asp-net-cms-review.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/03/04/asp-net-cms-review.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=7b2e2e77-851f-4ac9-8588-5af0d9bb3f37</guid>
      <pubDate>Tue, 04 Mar 2008 08:40:00 +0400</pubDate>
      <category>разработка</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=7b2e2e77-851f-4ac9-8588-5af0d9bb3f37</pingback:target>
      <slash:comments>152</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=7b2e2e77-851f-4ac9-8588-5af0d9bb3f37</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/03/04/asp-net-cms-review.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=7b2e2e77-851f-4ac9-8588-5af0d9bb3f37</wfw:commentRss>
    </item>
    <item>
      <title>FIFO Semaphore (для Microsoft .NET Framework)</title>
      <description>&lt;p&gt;Семафор -&amp;nbsp;это примитив синхронизации потоков, который позволяет войти в заданный участок кода не более чем &lt;strong&gt;&lt;em&gt;n&lt;/em&gt;&lt;/strong&gt; потокам (это определение дал выдающийся ученый&amp;nbsp;&amp;nbsp;Эдсгер Дейкстра). &lt;/p&gt;&lt;p&gt;Обычно семафор нужен для того, чтобы ограничить доступ к некоторому ресурсу, заданным количеством потоков приложения (ресурсом может быть например внешнее устройство, или некий сетевой ресурс). &lt;/p&gt;&lt;p&gt;В некоторых случаях, может иметь значение порядок доступа потоков к ресурсу. Стандартный класс &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.semaphore.aspx" target="_blank"&gt;Semaphore&lt;/a&gt;&amp;nbsp;никак не гарантирует порядок, в котором заблокированные потоки будут получать доступ к ресурсу (входить в заданный участок). &lt;/p&gt;&lt;p&gt;Например, за каждым потоком может скрываться пользователь, который ожидает доступа к ресурсу. Если использовать стандартный класс Semaphore, то доступ к освобождающемуся ресурсу будет получать случайный пользователь, не зависимо от того как давно он ожидает. &lt;/p&gt;&lt;p&gt;Для решения этой задачи, мною был написан класс FifoSemaphore, который реализует политику FIFO (английское First In First Out - первым пришел, первым ушел) по отношению к ожидающим потокам -&amp;nbsp;поток который вызвал функцию Wait первым, должен получить доступ к ресурсу первым. При необходимости, его можно легко модифицировать так, чтобы он работал по принципу LIFO (Last In First Out). &lt;/p&gt;&lt;h2&gt;Краткое описание класса &lt;/h2&gt;&lt;p&gt;Интерфейс класса аналогичен стандартному классу, за исключением одного нюанса - он не наследует стандартный класс WaitHandle, и соответственно не реализует его свойства и методы (которые специфичны для Windows). Как следствие этот класс не получится использовать в вызове &lt;a href="http://msdn2.microsoft.com/en-us/library/tdykks7z.aspx" target="_blank"&gt;WaitAny&lt;/a&gt;.&amp;nbsp; &lt;/p&gt;&lt;p&gt;Конструкторы&lt;br /&gt;&lt;strong&gt;FifoSemaphore()&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;Создает объект. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;FifoSemaphore(int _InitialCount)&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;Создает объект и инициализирует начальное значение счетчика ресурсов - N; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;int Release(int _ReleaseCount)&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;Выходит из семафора заданное количество раз (освобождает заданное количество ресурсов), возвращает предыдущее значение счетчика ресурсов; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;int Release()&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;Выходит из семафора 1 раз, возвращает предыдущее значение счетчика ресурсов; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;bool Wait(int _MillisecondsTimeout)&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;Входит в семафор. Ожидает освобождения ресурса заданное время в миллисекундах. Если ресурс не был освобожден в указанный период времение, возвращает значение false, иначе - true. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;void Close()&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;Закрывает семафор и освобождает ресурсы. После этого вызова использовать семафор более не допустимо. &lt;/p&gt;&lt;h3&gt;P.S.&lt;/h3&gt;&lt;p&gt;Создание примитивов синхронизации иногда&amp;nbsp;кажется простым, но в реальности возможны нетривиальные ситуации которые довольно сложно предвидеть.&lt;br /&gt;Вполне допускаю, что в данном коде тоже есть ошибки, буду очень рад, если на них укажете. &lt;/p&gt;&lt;p&gt;Загрузить проект с реализацией и тестом: &lt;a rel="enclosure" href="http://www.maqdev.com/file.axd?file=FifoSemaphore.zip"&gt;FifoSemaphore.zip (7,85 kb)&lt;/a&gt; &lt;/p&gt;</description>
      <link>http://www.maqdev.com/post/2008/02/28/FIFO-Semaphore-for-Microsoft-NET-Framework.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/02/28/FIFO-Semaphore-for-Microsoft-NET-Framework.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=40ef9205-c67c-4797-b80b-ce77ebfa7dde</guid>
      <pubDate>Thu, 28 Feb 2008 23:00:00 +0400</pubDate>
      <category>разработка</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=40ef9205-c67c-4797-b80b-ce77ebfa7dde</pingback:target>
      <slash:comments>11</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=40ef9205-c67c-4797-b80b-ce77ebfa7dde</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/02/28/FIFO-Semaphore-for-Microsoft-NET-Framework.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=40ef9205-c67c-4797-b80b-ce77ebfa7dde</wfw:commentRss>
    </item>
    <item>
      <title>Эффективная домашняя страница</title>
      <description>&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;Какую домашнюю страницу можно задать, чтобы оптимально организовать свою работу?&amp;nbsp;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;Многие ставят себе домашней страницей поисковую форму Гугла или Яндекса (&lt;/span&gt;mail&lt;span&gt;.&lt;/span&gt;ru&lt;span&gt;, &lt;/span&gt;rambler&lt;span&gt;.&lt;/span&gt;ru&lt;span&gt; и т.д.). Более продвинутые пользователи предпочитают создавать собственную страницу, для этого есть множество средств, начиная от &lt;/span&gt;&lt;a href="http://www.google.ru/ig?hl=ru" target="_blank"&gt;Google&lt;span&gt; &lt;/span&gt;Personal&lt;/a&gt;&lt;span&gt;, до блогов или собственных сайтов.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;Лично я использую в качестве домашней страницы - &lt;/span&gt;html&lt;span&gt; файл, который находится на самом компьютере (и на домашнем и на рабочем). &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;div style="text-align: center"&gt;
&lt;a href="http://www.maqdev.com/ext-pages/my-homepage/default.html" target="_blank"&gt;&lt;img src="http://www.maqdev.com/image.axd?picture=my-home-page.gif" alt="Моя домашняя страница - кликните чтобы открыть" width="400" height="249" /&gt;&lt;/a&gt; 
&lt;/div&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;span&gt;&lt;font face="Calibri" size="3"&gt;&lt;/font&gt;&lt;/span&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;В результате - домашняя страница загружается очень быстро, ее можно легко отредактировать (конечно для того кто знает &lt;/span&gt;HTML&lt;span&gt;). Под рукой все наиболее часто используемые ресурсы. Понятно, что тогда нет никакой серверной обработки, но есть клиентский скрипт, в котором тоже можно много чего сделать.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Calibri"&gt;&lt;span&gt;У меня этот &lt;/span&gt;home&lt;span&gt; &lt;/span&gt;page&lt;span&gt; указан во всех четырех браузерах, которые приходится использовать по работе. Это удобно еще тем, что не привязываешься собственно к меню, или избранным/ссылкам каждого конкретного браузера. &lt;/span&gt;&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font&gt;&lt;font face="Calibri"&gt;&lt;span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;font&gt;&lt;font face="Calibri"&gt;&lt;font&gt;&lt;font size="3"&gt;&lt;span&gt;Небольшая подсказка - если вы захотите использовать этот файл как &lt;/span&gt;home&lt;span&gt;-&lt;/span&gt;page&lt;span&gt;, при открытии его непосредственно с локального диска &lt;/span&gt;Internet&lt;span&gt; &lt;/span&gt;Explorer&lt;span&gt; выдает предупреждение, что файл содержит скрипт и может быть небезопасен. При этом если этот же файл открывается по сети, либо через интернет, таких предупреждений нет (при настройках по умолчанию). Для того чтобы предупреждение не выдавалось, можно например открывать его через &lt;/span&gt;URL&lt;span&gt; \\&lt;/span&gt;pc&lt;span&gt;-&lt;/span&gt;name&lt;span&gt;\&lt;/span&gt;c&lt;span&gt;$\&lt;/span&gt;HomePage&lt;span&gt;\&lt;/span&gt;default&lt;span&gt;.&lt;/span&gt;html&lt;span&gt;, где &lt;/span&gt;pc&lt;span&gt;-&lt;/span&gt;name&lt;span&gt; - имя компьютера. Вместо &lt;/span&gt;c&lt;span&gt;$, доступного администратору, можно использовать любую расшаренную папку, тогда предупреждения тоже не будет.&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;font size="2"&gt;Загрузить страницу с иконками: &lt;/font&gt;&lt;a rel="enclosure" href="http://www.maqdev.com/file.axd?file=my-homepage.zip"&gt;&lt;font size="2"&gt;my-homepage.zip (17,11 kb)&lt;/font&gt;&lt;/a&gt; 
&lt;/p&gt;
</description>
      <link>http://www.maqdev.com/post/2008/02/14/my-home-page.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/02/14/my-home-page.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=7e3ac7b7-98a4-4306-ad5a-99d1f1490041</guid>
      <pubDate>Thu, 14 Feb 2008 12:38:00 +0400</pubDate>
      <category>разное</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=7e3ac7b7-98a4-4306-ad5a-99d1f1490041</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=7e3ac7b7-98a4-4306-ad5a-99d1f1490041</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/02/14/my-home-page.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=7e3ac7b7-98a4-4306-ad5a-99d1f1490041</wfw:commentRss>
    </item>
    <item>
      <title>TcpProxy - создаем цепочки TCP соединений</title>
      <description>&lt;h2 align="left"&gt;Введение&lt;br /&gt;
&lt;/h2&gt;
&lt;div&gt;
Здесь описывается программа, с помощью которой вы сможете удаленно подключиться к своему домашнему компьютеру из сети Интернет (например через терминальное соединение) не имея внешнего (реального) IP адреса на домашнем компьютере,&amp;nbsp;создавать tcp&amp;nbsp;прокси соединения, перекидывающие коннекты с одной машины на другую.&amp;nbsp;Если вам, когда либо приходилось с этим сталкиваться, возможно эта заметка вам поможет. 
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h2&gt;Описание&lt;br /&gt;
&lt;/h2&gt;
&lt;div&gt;
Будучи активным участником построения разного рода сетей, мне довольно часто приходилось решать такую задачу:&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Имеется некий сетевой сервис, работающий на компьютере Server, с заданным номером порта TCP. Есть некоторый клиент этого сервиса, работающий на компьютере Client, но который по разным причинам не может подключиться к этому сервису (например Server ограничивает клиентов по IP адресам, или сервис работает в локальной сети, а клиент находится в сети Интернет, причины могут быть разные). При этом у нас есть некий третий компьютер Proxy, который имеет доступ к компьютеру Server, и к которому в свою очередь имеет доступ наш клиент Client. 
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h3&gt;Вариант №1&lt;br /&gt;
&lt;/h3&gt;
&lt;div&gt;
Требуется организовать прокси сервер на компьютере Proxy, который бы прокидывал (мэппил) соединение по цепочке: Client -&amp;gt; Proxy -&amp;gt; Server. Это, в общем то, достаточно просто, многие общеизвестные прокси реализуют эту функцию - обычно она называется Mapped Link. 
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&amp;nbsp; 
&lt;div style="text-align: center"&gt;
&lt;img src="http://www.maqdev.com/image.axd?picture=case1.png" alt="" width="469" height="110" /&gt;&lt;br /&gt;
&lt;font size="1"&gt;Рисунок к варианту 1.&lt;/font&gt; 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h3&gt;Вариант №2&lt;br /&gt;
&lt;/h3&gt;
&lt;div&gt;
Задача становится более сложной и интересной в случае, если компьютер Proxy также не имеет возможности исходящего подключения к Server, но при этом сам Server может инициировать и установить соединение с Proxy . Т.е. Соединение возможно установить по следующей цепочке Client -&amp;gt; Proxy &amp;lt;- Server.&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
Каким же образом Server узнает о том, что есть запрос на входящее для него соединение от клиента? Ответ: он может установить контрольное постоянное подключение к компьютеру Proxy, через которое он и получит сообщение о входящем соединении от клиента. Получив такое сообщение он сам инициирует исходящее соединение к Proxy &amp;nbsp;которое затем связывается с клиентским соединением. 
&lt;/div&gt;
&lt;div&gt;
&lt;div style="text-align: center"&gt;
&lt;img src="http://www.maqdev.com/image.axd?picture=case2.png" alt="" width="499" height="235" /&gt;&lt;br /&gt;
&lt;font size="1"&gt;Рисунок к варианту 2.&lt;/font&gt; 
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h2&gt;Программа TcpProxy&lt;br /&gt;
&lt;/h2&gt;
&lt;div&gt;
Собственно приведенные выше &amp;nbsp;задачи и решаются в программе, которую вы можете скачать здесь совершенно бесплатно (и использовать на свой страх и риск). 
&lt;/div&gt;
&lt;div&gt;
TcpProxy позволяет шифровать контрольное соединение, чтобы никто кроме вас не мог воспользоваться сервисом. Также можно ограничивать клиентов по IP адресам. 
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h3&gt;Системные требования и загрузка&lt;br /&gt;
&lt;/h3&gt;
&lt;div&gt;
Приложение использует Microsoft .Net Framework 2.0, если его у вас нет, то &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=ru&amp;amp;FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5" target="_blank"&gt;можете загрузить ее с сайта Microsoft&lt;/a&gt;. 
&lt;/div&gt;
&lt;div&gt;
Скачать программу TcpProxy:&amp;nbsp;&lt;a rel="enclosure" href="http://www.maqdev.com/file.axd?file=SetupTcpProxy.msi"&gt;SetupTcpProxy.msi (427,00 kb)&lt;/a&gt;. 
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;h3&gt;Настройка и запуск&lt;br /&gt;
&lt;/h3&gt;
&lt;div&gt;
Скачайте TcpProxy, затем установите ее, для варианта 1 на компьютере Proxy, для варианта 2 еще и на компьютере Server.&lt;br /&gt;
Отредактируйте конфигурационный файл LinkConfig.xml, в котором указываются все настройки для программы. 
&lt;/div&gt;
&lt;div&gt;
Я постарался откомментировать этот файл, правда на английском языке, если что то не понятно - пишите. &lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
После чего можно запускать службу, через оснастку Services, или командой &amp;quot;net start TcpProxy&amp;quot;. 
&lt;/div&gt;
&lt;div&gt;
Мониторинг работы можно выполнять по сообщениям в Eventlog: Application. По умолчанию пишутся ошибки и предупреждения, уровень логирования 
&lt;/div&gt;
&lt;div&gt;
можно менять в конфигурационном файле, параметр LogLevel. 
&lt;/div&gt;
&lt;h2&gt;Заключение&lt;br /&gt;
&lt;/h2&gt;
&lt;div&gt;
Конечно есть и альтернативные способы решения этой задачи. Например - организация VPN соединения. Или же в каких то случаях вы (или администратор вашей сети) может открыть входящее соединение на роутере. К слову, многие домашние роутеры с NAT позволяют это.&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
Использование TcpProxy имеет следующие плюсы:&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	не нужен внешний IP адрес; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	можно удаленно подключаться к вашему мобильному устройству или ноутбуку, даже если вы все время меняете сеть (wi fi, gprs) - главное чтобы устройство было в сети; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	ваше компьютер не &amp;quot;светится&amp;quot; напрямую в сети Интернет с открытыми &amp;nbsp;портами (но светится шлюз - Proxy), это дает некоего рода анонимность. 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Минусы &amp;nbsp;- во многом вытекают из плюсов: 
&lt;/div&gt;
&lt;ul&gt;
	&lt;li&gt;
	&lt;div&gt;
	нужен отдельный сервер в сети, который может принимать входящие соединения, на котором установлен Microsoft Windows и .NET Framework 2.0; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	весь трафик идет через этот промежуточный сервер; 
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li&gt;
	&lt;div&gt;
	соединение устанавливается дольше, в связи с дополнительными манипуляциями которые нужно произвести. 
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
Буду рад, если кому то эта программа поможет. 
&lt;/div&gt;
&lt;div&gt;
Если вы нашли в ней ошибку, пожалуйста напишите мне! 
&lt;/div&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
</description>
      <link>http://www.maqdev.com/post/2008/01/24/TcpProxy-tcp-mappings-proxy-software.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/01/24/TcpProxy-tcp-mappings-proxy-software.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=83bd1fe4-a6fe-4572-8d56-f6b5010211d2</guid>
      <pubDate>Thu, 24 Jan 2008 21:18:00 +0400</pubDate>
      <category>утилиты</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=83bd1fe4-a6fe-4572-8d56-f6b5010211d2</pingback:target>
      <slash:comments>18</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=83bd1fe4-a6fe-4572-8d56-f6b5010211d2</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/01/24/TcpProxy-tcp-mappings-proxy-software.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=83bd1fe4-a6fe-4572-8d56-f6b5010211d2</wfw:commentRss>
    </item>
    <item>
      <title>MutableHyperLink - ссылка мутирующая в span</title>
      <description>&lt;p&gt;
В процессе разработки довольно часто приходится решать такую задачу: превращать ссылки в некоторый текст, если они указывают на текущую страницу (на элемент который выбран). Например это может быть меню, которое ссылается на страницы сайта. Соответственно при клике на этот пункт меню, желательно его выделить убрав саму ссылку. 
&lt;/p&gt;
&lt;p&gt;
Страницы ссылающиеся сами на себя нежелательны и путают пользователей. Якоб Нильсен пишет про это в своей статье&amp;nbsp;&lt;a href="http://webmascon.com/topics/designdetails/29a.asp" target="_blank"&gt;10 главных ошибок веб-дизайна 2003 года&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Обычный путь решения этой задачи в ASP.NET, это поставить PlaceHolder&amp;#39;s и&amp;nbsp;в зависимости от того, является&amp;nbsp;страница текущей или нет - показывать нужный текст или ссылку. Или можно например указать пустое значение ссылки href для тэга &amp;lt;A&amp;gt;, тогда браузер не будет отображать ее как ссылку (правда не уверен насчет кроссплатформенности такого решения). Заниматься всем этим достаточно скучно и нудно. 
&lt;/p&gt;
&lt;p&gt;
Собственно для решения этой задачи я создал достаточно простой контрол MutableHyperLink, который наследуется от стандартного контрола ASP.NET HyperLink. Этот контрол автоматически определяет страницу на которой он находится, и если ссылка ведет на эту же страницу - отображается тэг SPAN с таким же содержимым, как если бы это была ссылка. Дополнительно можно задать отдельный класс стилей для SPAN, что позволяет выделить этот элемент. 
&lt;/p&gt;
&lt;p&gt;
Пример использования этого контрола можно посмотреть на этом сайте, кликните например на ссылку &amp;quot;Архив&amp;quot; или &amp;quot;Написать мне&amp;quot;. 
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;img src="http://www.maqdev.com/file.axd?file=MutableHyperLinkSample.gif" alt="" width="218" height="31" /&gt;&amp;nbsp;&lt;br /&gt;
&lt;font size="1"&gt;Пример выделенной ссылки. &lt;/font&gt;
&lt;/p&gt;
&lt;h2&gt;Краткая документация по контролу MutableHyperLink&lt;/h2&gt;
&lt;p&gt;
Помимо стандартных, унаследованных от класса HyperLink, доступны следующие свойства: 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;SpanCssClass &lt;/strong&gt;- класс&amp;nbsp;CSS, который будет задан у контрола, если он отображается как SPAN. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ParameterMatch &lt;/strong&gt;- свойство которое задает, должны ли совпадать параметры URL (Url Parameters) текущей страницы, с теми которые заданы в свойстве NavigationUrl, для того что бы считать страницу текущей. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;IgnoreCase&lt;/strong&gt; -&amp;nbsp;свойство, которое задает, игнорировать регистр букв при сравнении URL текущей страницы с NavigationUrl, или учитывать. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;DefaultPage - &lt;/strong&gt;свойство, которое задает текущую дефолтную страницу (Default Page), если ссылка ведет не на файл, а на директорию с некой страницой по умолчанию, в ASP.NET обычно это &amp;#39;default.aspx&amp;#39; 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ForceSpan - &lt;/strong&gt;всегда генерировать тэг SPAN, независимо от того, какая страница текущая. 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;ForceLink - &lt;/strong&gt;всегда генерировать тэг A, независимо от того, какая страница текущая. 
&lt;/p&gt;
&lt;h2&gt;Установка и подключение к проекту&lt;/h2&gt;
&lt;p&gt;
Скачайте и разархивируйте приложенный к заметке файл. Он содержит проект на C#, который компилируется в .dll содержащий нужный контрол. 
&lt;/p&gt;
&lt;p&gt;
Подключается контрол стандартным способом - можно включить проект в ваш Solution, добавить reference на проект и указать его в файле Web.Config: 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="courier new,courier" size="1"&gt;&lt;font face="courier new,courier"&gt;&amp;nbsp;&amp;nbsp; &lt;/font&gt;&amp;lt;add namespace=&amp;quot;maqdev.Web.UI.WebControls&amp;quot; tagPrefix=&amp;quot;maqdev&amp;quot; assembly=&amp;quot;maqdev.MutableHyperLink&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;br /&gt;
После чего вы можете его добавить на свою страницу, например так: 
&lt;/p&gt;
&lt;p&gt;
&lt;font face="courier new,courier"&gt;&lt;font size="1"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;maqdev:MutableHyperLink NavigateUrl=&amp;quot;~/contact.aspx&amp;quot;&amp;nbsp;Text=&amp;quot;Contact&amp;quot; SpanCssClass=&amp;quot;SelectedLink&amp;quot;&amp;nbsp;runat=&amp;quot;server&amp;quot; /&amp;gt;&lt;/font&gt;&lt;br /&gt;
&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Скачать проект с контролом: &lt;a rel="enclosure" href="http://www.maqdev.com/file.axd?file=maqdev.MutableHyperLink.zip"&gt;maqdev.MutableHyperLink.zip&lt;/a&gt; 
&lt;/p&gt;
</description>
      <link>http://www.maqdev.com/post/2008/01/15/MutableHyperLink-asp-net-control.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/01/15/MutableHyperLink-asp-net-control.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=2517ff97-5fbd-4539-a538-d542b39ed611</guid>
      <pubDate>Tue, 15 Jan 2008 20:00:00 +0400</pubDate>
      <category>разработка</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=2517ff97-5fbd-4539-a538-d542b39ed611</pingback:target>
      <slash:comments>6</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=2517ff97-5fbd-4539-a538-d542b39ed611</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/01/15/MutableHyperLink-asp-net-control.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=2517ff97-5fbd-4539-a538-d542b39ed611</wfw:commentRss>
    </item>
    <item>
      <title>Начало</title>
      <description>&lt;p&gt;
Все должно быть сделано так просто, как возможно, но не проще этого. &lt;br /&gt;
Альберт Эйнштейн. 
&lt;/p&gt;
&lt;p&gt;
Хочется начать блог с этой цитаты, в дальнейшем надеюсь здесь будут достаточно полезные, и при этом простые мысли и творения. 
&lt;/p&gt;
</description>
      <link>http://www.maqdev.com/post/2008/01/13/d0bdd0b0d187d0b0d0bbd0be.aspx</link>
      <author>maqdev</author>
      <comments>http://www.maqdev.com/post/2008/01/13/d0bdd0b0d187d0b0d0bbd0be.aspx#comment</comments>
      <guid>http://www.maqdev.com/post.aspx?id=84e59311-425f-46f2-b3c1-4eae5a0533b8</guid>
      <pubDate>Sun, 13 Jan 2008 02:56:00 +0400</pubDate>
      <category>разное</category>
      <dc:publisher>maqdev</dc:publisher>
      <pingback:server>http://www.maqdev.com/pingback.axd</pingback:server>
      <pingback:target>http://www.maqdev.com/post.aspx?id=84e59311-425f-46f2-b3c1-4eae5a0533b8</pingback:target>
      <slash:comments>19</slash:comments>
      <trackback:ping>http://www.maqdev.com/trackback.axd?id=84e59311-425f-46f2-b3c1-4eae5a0533b8</trackback:ping>
      <wfw:comment>http://www.maqdev.com/post/2008/01/13/d0bdd0b0d187d0b0d0bbd0be.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.maqdev.com/syndication.axd?post=84e59311-425f-46f2-b3c1-4eae5a0533b8</wfw:commentRss>
    </item>
  </channel>
</rss>