<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>e0ne's comments</title>
    <description>A Web Developer's Blog!</description>
    <link>http://blog.e0ne.info/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.Net Syndication Generator 1.0.0.0 (http://dotnetblogengine.net/)</generator>
    <language>en-US</language>
    <blogChannel:blogRoll>http://blog.e0ne.info/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://blog.e0ne.info/syndication.axd</blogChannel:blink>
    <dc:creator>e0ne</dc:creator>
    <dc:title>e0ne's comments</dc:title>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/e0nesComments" type="application/rss+xml" /><feedburner:emailServiceId>e0nesComments</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/e0nesComments" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fe0nesComments" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <title>Байты, строки и кодировки</title>
      <description>Все же знают (или не все?), что .net, по умолчанию, хранит строки в юникоде. Так почему же &amp;nbsp;я во всех примерах вижу такой код?&lt;br /&gt;&lt;div&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;		&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;byte&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;[]	byteArray = GetBytes();&lt;/span&gt;&lt;br /&gt;		&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;var&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; retval = &lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.ASCII.GetString(byteArray);&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;И что самое страшное в этом, так это то, что если байты представляют собой символы латинского алфавита, то, в большинстве случаев, всё будет замечательно работать. А когда работать оно перестаёт в содержимое строки примерно такое:&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;		&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; border-collapse: collapse"&gt;&amp;quot;\u0000&amp;quot;\u0000a\u0000&amp;quot;\u0000:\u00002\u00000....&amp;quot;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;Тогда все начинают громко ругаться и рвать на себе волосы со словами: &amp;quot;Ну ведь работало же! Да и вот в этом(&lt;a href="http://www.google.com.ua/search?rlz=1C1GGLS_enUA335US335&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=c%23+byte+array+to+string"&gt;http://www.google.com.ua/search?rlz=1C1GGLS_enUA335US335&amp;amp;sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=c%23+byte+array+to+string&lt;/a&gt;) примере так написано!&amp;quot;.&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;Хорошо, если мысль о неправильной кодировке прийдёт сразу, а если нет... Сколько времени/нервов потритит разработчик, прежде чем всё станит на свои места?&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;вышеприведённый пример лучше заменить на:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;		&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;byte&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;[]	byteArray = GetBytes();&lt;/span&gt;&lt;br /&gt;		&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue"&gt;var&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt; retval = &lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt;Unicode&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt;.GetString(byteArray);&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;Или даже на:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;	&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;byte&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;[]	byteArray = GetBytes();&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;&lt;/span&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;	&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px"&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'; color: blue"&gt;var&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt; retval = &lt;span style="color: #2b91af"&gt;Encoding&lt;/span&gt;.&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt;Default&lt;/span&gt;&lt;span style="font-size: 10pt; line-height: 115%; font-family: 'Courier New'"&gt;.GetString(byteArray);&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;&lt;/span&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=o1R8UATyiGY:WALEIc-Tufk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=o1R8UATyiGY:WALEIc-Tufk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=o1R8UATyiGY:WALEIc-Tufk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=o1R8UATyiGY:WALEIc-Tufk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/o1R8UATyiGY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/o1R8UATyiGY/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/bytes-symbols-and-encoding.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=c0fafd2b-8f95-44d8-983a-6f00c497ead9</guid>
      <pubDate>Fri, 16 Oct 2009 17:18:00 +0200</pubDate>
      <category>.NET Framework</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=c0fafd2b-8f95-44d8-983a-6f00c497ead9</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=c0fafd2b-8f95-44d8-983a-6f00c497ead9</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/bytes-symbols-and-encoding.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=c0fafd2b-8f95-44d8-983a-6f00c497ead9</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=c0fafd2b-8f95-44d8-983a-6f00c497ead9</feedburner:origLink></item>
    <item>
      <title>Программания 2009: Вести с полей</title>
      <description>Решать штабные заданния пока лениво. Играю один. Команда: e1team. Живой репортаж в титтере &lt;a href="http://twitter.com/e0ne"&gt;http://twitter.com/e0ne&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=c3yn7DJD9LI:04ocOE9ejJE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=c3yn7DJD9LI:04ocOE9ejJE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=c3yn7DJD9LI:04ocOE9ejJE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=c3yn7DJD9LI:04ocOE9ejJE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/c3yn7DJD9LI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/c3yn7DJD9LI/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/d09fd180d0bed0b3d180d0b0d0bcd0bcd0b0d0bdd0b8d18f-2009-d092d0b5d181d182d0b8-d181-d0bfd0bed0bbd0b5d0b8.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=9dddbe08-c7b4-4856-ae2f-4742474fdf0a</guid>
      <pubDate>Sat, 10 Oct 2009 13:21:00 +0200</pubDate>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=9dddbe08-c7b4-4856-ae2f-4742474fdf0a</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=9dddbe08-c7b4-4856-ae2f-4742474fdf0a</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/d09fd180d0bed0b3d180d0b0d0bcd0bcd0b0d0bdd0b8d18f-2009-d092d0b5d181d182d0b8-d181-d0bfd0bed0bbd0b5d0b8.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=9dddbe08-c7b4-4856-ae2f-4742474fdf0a</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=9dddbe08-c7b4-4856-ae2f-4742474fdf0a</feedburner:origLink></item>
    <item>
      <title>Программания 2009</title>
      <description>&lt;p&gt;Завтра состоится &lt;span class="Apple-style-span" style="text-decoration: line-through"&gt;очередной&lt;/span&gt; конкурс Программания. Другой формат. Не понятно зачем его таки делать. IMHO, лучше б уже не было. Заявку подал, но участие под вопросом.&lt;/p&gt;&lt;p&gt;P.S. Верните нам IT-Contest!&lt;/p&gt;&lt;p&gt;P.S.S. Получился не пост в блог, а сообщение для твиттера.&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=K_lGOSqXBXI:XV5XoBUpsBQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=K_lGOSqXBXI:XV5XoBUpsBQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=K_lGOSqXBXI:XV5XoBUpsBQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=K_lGOSqXBXI:XV5XoBUpsBQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/K_lGOSqXBXI" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/K_lGOSqXBXI/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/d09fd180d0bed0b3d180d0b0d0bcd0bcd0b0d0bdd0b8d18f-2009.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=207ea947-6e1d-4be1-87e7-97e5250704f0</guid>
      <pubDate>Fri, 09 Oct 2009 14:40:00 +0200</pubDate>
      <category>Offtopic</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=207ea947-6e1d-4be1-87e7-97e5250704f0</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=207ea947-6e1d-4be1-87e7-97e5250704f0</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/d09fd180d0bed0b3d180d0b0d0bcd0bcd0b0d0bdd0b8d18f-2009.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=207ea947-6e1d-4be1-87e7-97e5250704f0</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=207ea947-6e1d-4be1-87e7-97e5250704f0</feedburner:origLink></item>
    <item>
      <title>ASP.NET + Mono + Apache</title>
      <description>&lt;p&gt;Всё больше и больше можлно услышать о &lt;a href="http://go-mono.com/" target="_blank" title="Mono"&gt;Mono&lt;/a&gt;. Как изестно, основное его идеей является реализация действительно кроссплатформенной среды .NET. Таким образом, чеще всего Mono испльзуют в операционной системе, отличной от MS Windows. А если не Windows, то Linux или какой-то из Unix. И всё было бы хорошо, если б не 2 момента (в данном случае я не акцентрирую внимание на степень готовности реализации Mono: аналог WinForms и замена Internet Information Services (IIS).На за мену WinForms приходят GTK, QTи другие библиотеки. А вот с заменой IIS все не тах хорошо: либо Apache с соответствующими модуляли, либо &amp;quot;родной&amp;quot; для Mono веб-сервер XSP2. А так как Apache наиболее популярен, то будем пользоваться им.&lt;/p&gt;&lt;p&gt;Все примеры я буду приводить для Ubuntu linux, но для других nix-подобных ОС все будет делаться таким же способом, за исключением установки пакетов. &lt;/p&gt;&lt;p&gt;Для начала нам все же надо установить Mono и IDE для нее. В качестве IDE&amp;nbsp; будем использовать MonoDevelop. Устанавливаем всё необходимое:&lt;/p&gt;&lt;blockquote&gt;	&lt;em&gt;apt-get install mono-2.0-runtime mono-2.0-gac mono-2.0-service mono-2.0-devel mono-xsp2 mono-xsp2-base&amp;nbsp;&lt;strong&gt;	&lt;br /&gt;	&lt;/strong&gt;&lt;/em&gt;	&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;После чего можно запустить MonoDevelop, созать простое ASP.NET приложение и запустить. В результате получаем что-то похожее на это:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=blog.png" alt="" width="700" height="394" /&gt;&lt;/p&gt;&lt;p&gt;Теперь мы уже можем без проблем заниматься разработкой вплоть до момента, когда нужно запустить приложение на test-сервере, на которов, в качестве web-сервера, должен стоять Apache. Дело за малым - установить Apache и настроить его для работы с Mono.&lt;/p&gt;&lt;p&gt;Для наала, устанавливаем необходимы пакеты: &lt;/p&gt;&lt;blockquote&gt;	&lt;em&gt;sudo apt-get install apache2 mono-apache-server2 libapache2-mod-mono		&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Говорим веб-серверу о необходимости загрузки нового модуля:&lt;/p&gt;&lt;blockquote&gt;	&lt;em&gt;sudo a2enmod mod_mono							&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;И создаём новый конфиг (/etc/mono-server2/monotest.webapp) для нашего приложения:&lt;/p&gt;&lt;blockquote&gt;	&amp;nbsp;	&lt;em&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal"&gt;&amp;lt;apps&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;web-application&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;name&amp;gt;Mono test&amp;lt;/name&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;vpath&amp;gt;/mono&amp;lt;/vpath&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;path&amp;gt;/var/www/&amp;lt;/path&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;vhost&amp;gt;localhost&amp;lt;/vhost&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/web-application&amp;gt;&lt;br /&gt;	&amp;lt;/apps&amp;gt; 				&lt;/span&gt;&lt;br /&gt;	&lt;/strong&gt;&lt;/em&gt;	&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Последние что нас осталось сделать - это подправить конфигурационный файл Apache&amp;#39;а для нашего сайта (/etc/mono-server2/mono-server2-hosts.conf). Добавляем в него такие строки: &lt;/p&gt;&lt;blockquote&gt;	&lt;em&gt;Alias /mono &amp;quot;/var/www&amp;quot;&lt;br /&gt;	AddMonoApplications default &amp;quot;/mono:/var/www&amp;quot;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;       &amp;lt;Directory /var/www&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;         SetHandler mono&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           &amp;lt;IfModule mod_dir.c&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              DirectoryIndex Default.aspx&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;           &amp;lt;/IfModule&amp;gt;&lt;br /&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Directory&amp;gt;&lt;/em&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;Перезагружаем Apache командой: &lt;/p&gt;&lt;blockquote&gt;	&lt;em&gt;sudo /etc/init.d/apache2 restart		&lt;/em&gt;&lt;br /&gt;	&lt;br /&gt;&lt;/blockquote&gt;&lt;p&gt;И смотрим в браузере что у нас получилось:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=mono.png" alt="" width="700" height="394" /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=5Rj38kJte90:BFBu1prc-nA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=5Rj38kJte90:BFBu1prc-nA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=5Rj38kJte90:BFBu1prc-nA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=5Rj38kJte90:BFBu1prc-nA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/5Rj38kJte90" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/5Rj38kJte90/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/ASPNET-Mono-and-Apache.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=d5950548-5b3f-4ea8-9f14-291b33f1370b</guid>
      <pubDate>Tue, 22 Sep 2009 03:23:00 +0200</pubDate>
      <category>Mono</category>
      <category>Web Development</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=d5950548-5b3f-4ea8-9f14-291b33f1370b</pingback:target>
      <slash:comments>8</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=d5950548-5b3f-4ea8-9f14-291b33f1370b</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/ASPNET-Mono-and-Apache.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=d5950548-5b3f-4ea8-9f14-291b33f1370b</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=d5950548-5b3f-4ea8-9f14-291b33f1370b</feedburner:origLink></item>
    <item>
      <title>Patterns &amp; Practices Roadshow</title>
      <description>&lt;p&gt;
&lt;br /&gt;
Вчера в Киеве прошла конференция&amp;nbsp;&lt;a href="http://pnp.in.ua/" target="_blank"&gt;Patterns&amp;nbsp;&amp;amp;&amp;nbsp;Practices&amp;nbsp;Roadshow&lt;/a&gt;. Изначально она должна была пройти в офисе Microsoft Ukraine, но, т.к. было многожелающих, провели её в Киевском кукольном театре. Очень красивое место и здание. Из названия было понятно, что будет обсуждаться Enterprice Library (EntLib), Entity Framework и всем, что связано с &lt;a href="http://msdn.microsoft.com/en-us/practices/default.aspx" target="_blank"&gt;P&amp;#39;n&amp;#39;P&lt;/a&gt;. Догадки подтвердил опубликованный список ресурсов.&amp;nbsp; 
&lt;/p&gt;
&lt;p&gt;
Началось всё со вступительного слова представителя компании Microsoft Ukraine. Хотя, на самом деле всё началось с регистрации, где нам вдали пакеты с анкетой, ручкой и каким-то учебником для ВУЗов на украинском языке и кофе.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.e0ne.info/image.axd?picture=0.jpg" alt="" width="50%" /&gt;
&lt;br /&gt;
Первый доклад имел гордое название &amp;quot;Patterns &amp;amp; practices &amp;ndash; взгляд в будущее&amp;quot;, автором которого был Ajoy 
Krishnamoorthy, ведущий специалист группы 
patterns &amp;amp; practices в Microsoft, а в прошлом - PM продукта Visual Studio Team System. Было небольшое введение на тему &amp;quot;что такое Patterns &amp;amp; Practices, EntLib&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Вторым на сцену вышел Don 
Smith, которого встретили бурными авациями в том числе и из-за его Mac Book Pro, на котором оказалась установленная Windows 7.
&lt;br /&gt;
&lt;img src="http://blog.e0ne.info/image.axd?picture=1.jpg" alt="" width="50%" /&gt;
&lt;br /&gt;
&lt;br /&gt;
Тут доклады немного пеменялись местами и мы услышали&amp;nbsp; доклад &amp;quot;Руководство по архитектуре приложений: карта 
вашего путешествия&amp;quot;, который должен был быть после обеда. Но хуже от этого не стало. Нам рассказали о &amp;quot;Application Architecture Guide&amp;quot;, котором написано, что он создан для разработки решений на платформе .NET, но, по сути, может быть использован при использовании и других технологий. Это же нам подтвердил Дон. Application Architecture Guide рассазывает нам о высокоарзхитектурных решениях, не вдаваясь в подробности реализации конкретных частей приложений. Думаю, что это будет интересно не только архитекторам, но и всем разработчикам. Поэтому рекомендую прочесть этот почти 400-страничный мануал.
&lt;/p&gt;
&lt;p&gt;
Следующим был доклад нашего земляка Григория Мельника (Grigori 
Melnik). 
&lt;br /&gt;
&lt;img src="http://blog.e0ne.info/image.axd?picture=2.jpg" alt="" width="50%" /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;
Началось с приветствия и фразы &amp;quot;решил не выпендриваться и говорить на русском&amp;quot; (дословно). Было интересно послушать про EntLib 5,в которой будет поддерживаться совместимость до 2-й версии. Таким образом, если вы испульзовалм более старую версию библиотеки, то вы практически без проблем перейдёте на  EntLib 5. К сожалению, из-за большого количества вопросов, доклад получился не полным. Григорий успел рассказать в общих чертах об  Enterprice Library и рассказал о таких её частях, как Logging и Unity. Очень хотелось послушать ещё о Exception Handling и Data Access, который не является очередной ORM. Эту тему немного затронули в другом докладе, посвященному доступу к данным.
&lt;/p&gt;
&lt;p&gt;
Обед. После обеда снова появился Don Smith и с докладом &amp;quot;Современные методы доступа к данным: шаблоны 
и реализации&amp;quot;. Опять был сделан упор не на конкретную реализицию, а на то, какие вообще могут быть DataLayer. Немного была затронута тема Entity Libraкy и&amp;nbsp; LINQ to SQL. Несколько примеров приложений с разными архитектурами data layer хорошо продемонстрировали то, что Дон рассказывал и показывал на слайдах.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Подводя итог, хочу сказать что конференция понравилась, не жалко потраченных времени/денег. Докладчики хорошо разбираются в сути вопроса и, что немаловажно, не просто говорят какие их технологии классные и нужно использовать их, а просто говорят какие есть плюсы, а иногда и минусы, тех&amp;nbsp; или иных подходов. Не было сказано не одной фразы похожей на &amp;quot;это классно, используйте наши технологии&amp;quot;. Всё было достаточно объективно. Что касается организации, то не было привычных всем футболок, зато в обмен назаполенную анкету давали флешку с материалами конференции, на которой, к слову, не оказалось показанных презентаций и примеров проггрмамм, которые использовали докладчики. Так же не было EntLib 5, которая ещё не вышла в RTM. 
&lt;/p&gt;
&lt;p&gt;
P.S. &lt;a href="http://chaliy.name/" class="url fn"&gt;Mike Chaliy&lt;/a&gt;, спасибо за фото. 
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=U3AWpVUFGaM:brHg_y5tUfo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=U3AWpVUFGaM:brHg_y5tUfo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=U3AWpVUFGaM:brHg_y5tUfo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=U3AWpVUFGaM:brHg_y5tUfo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/U3AWpVUFGaM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/U3AWpVUFGaM/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/patterns-and-practices-roadshow.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=af82e817-2162-4a36-9cb6-4e114f0cc629</guid>
      <pubDate>Thu, 17 Sep 2009 15:30:00 +0200</pubDate>
      <category>.NET Framework</category>
      <category>Web Development</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=af82e817-2162-4a36-9cb6-4e114f0cc629</pingback:target>
      <slash:comments>10</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=af82e817-2162-4a36-9cb6-4e114f0cc629</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/patterns-and-practices-roadshow.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=af82e817-2162-4a36-9cb6-4e114f0cc629</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=af82e817-2162-4a36-9cb6-4e114f0cc629</feedburner:origLink></item>
    <item>
      <title>День программиста! Developer's Day!</title>
      <description>Всех с праздником! Сегдня 256-й день в году, который считается международным днём программиста!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DFJwkthCh6g:9Bfq5VmmeAk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DFJwkthCh6g:9Bfq5VmmeAk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=DFJwkthCh6g:9Bfq5VmmeAk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DFJwkthCh6g:9Bfq5VmmeAk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/DFJwkthCh6g" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/DFJwkthCh6g/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/Developers-Day.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=47ab5e80-d9ce-4823-beed-2715904d33cc</guid>
      <pubDate>Sun, 13 Sep 2009 19:12:00 +0200</pubDate>
      <category>Offtopic</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=47ab5e80-d9ce-4823-beed-2715904d33cc</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=47ab5e80-d9ce-4823-beed-2715904d33cc</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/Developers-Day.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=47ab5e80-d9ce-4823-beed-2715904d33cc</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=47ab5e80-d9ce-4823-beed-2715904d33cc</feedburner:origLink></item>
    <item>
      <title>А вы говорите индусский код...</title>
      <description>&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;internal&lt;/span&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;LinqConnection&lt;/span&gt;: &lt;span style="color: #2b91af"&gt;BaseDatabaseConnection&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #000000"&gt;{&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 11px"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'; color: blue"&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&lt;span style="color: #2b91af"&gt;&lt;span class="Apple-style-span" style="color: #000000"&gt;&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 11px"&gt;&lt;span style="font-size: 10pt; font-family: 'Courier New'"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;summary&amp;gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #000000"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; Should never be called&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #000000"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: gray"&gt;///&lt;/span&gt;&lt;span style="color: green"&gt; &lt;/span&gt;&lt;span style="color: gray"&gt;&amp;lt;/summary&amp;gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #000000"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="color: blue"&gt;internal&lt;/span&gt; LinqConnection()&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;{&lt;br /&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: blue"&gt;throw&lt;/span&gt; &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt;();&lt;br /&gt;&lt;span class="Apple-style-span" style="line-height: 14px"&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;}&amp;nbsp;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;&amp;nbsp;&lt;/p&gt;&lt;p style="margin-bottom: 0.0001pt; line-height: normal" class="MsoNormal"&gt;Написали программисты из США. И это ещё далеко не самый плохой кусок кода в проекте....&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=D7kwExhhzvU:Zc2-XFIsF3Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=D7kwExhhzvU:Zc2-XFIsF3Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=D7kwExhhzvU:Zc2-XFIsF3Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=D7kwExhhzvU:Zc2-XFIsF3Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/D7kwExhhzvU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/D7kwExhhzvU/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/bad-usa-code.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=01f44d02-994f-43dd-8a45-cc60545ee107</guid>
      <pubDate>Mon, 31 Aug 2009 18:47:00 +0200</pubDate>
      <category>.NET Framework</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=01f44d02-994f-43dd-8a45-cc60545ee107</pingback:target>
      <slash:comments>9</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=01f44d02-994f-43dd-8a45-cc60545ee107</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/bad-usa-code.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=01f44d02-994f-43dd-8a45-cc60545ee107</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=01f44d02-994f-43dd-8a45-cc60545ee107</feedburner:origLink></item>
    <item>
      <title>Blog was hacked: vol.2 или разбор полётов</title>
      <description>&lt;p&gt;В то время, пока я не мог найти время разобраться что же случилось с моим блогом, это случилось снова! 2 раза за два дня - это слишком.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=hacked-1.jpg" alt="" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=hacked-2.jpg" alt="" /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Решил что не стоит больше это откладывать на потом и сел внимательно просматривать логи. Практически сразу же нашел достаточно интересную строку:&lt;br /&gt;&lt;/div&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;2009-08-16 17:39:33 81.215.238.234 - W3SVC119 WINHOSTING2 194.54.88.53 80 PUT /index.html - 201 0 330 347 16 HTTP/1.0 Microsoft+Data+Access+Internet+Publishing+Provider+DAV+1.1 - -&lt;/em&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&amp;nbsp;&lt;/blockquote&gt;Получается каждый &lt;span class="Apple-style-span" style="text-decoration: line-through"&gt;нехороший человек&lt;/span&gt; желающий может залить любые файлы?! Нехорошо как-то... Сначала подумал что это всё настройки хостера, но проверив несколько других сайтов, расположенных на хостинге, понял, что данной уязвимости подлежат не все сайты. Интересно... Далее залез в панель управленя хостинга и обнаружил такое:&lt;br /&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=settings.jpg" alt="" /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Доступ на запись в корневую папку доступен всем! Похоже что когда-то я &amp;nbsp;зашел на эту страницу и, абсолютно случайно(!) дал доступ на запись всем желающим. Как и когда (и в каком состоянии) это было сделано - это уже отдельная история. &lt;/div&gt;&lt;div&gt;А мораль всего этого такова: проверяйте все настройки, прежде чем нажать на кнопку &amp;quot;Сохранить&amp;quot;.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;P.S. А пингвин мне понравился :).&amp;nbsp;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DzVHCHZ55RM:bylhQn_BzeY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DzVHCHZ55RM:bylhQn_BzeY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=DzVHCHZ55RM:bylhQn_BzeY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=DzVHCHZ55RM:bylhQn_BzeY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/DzVHCHZ55RM" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/DzVHCHZ55RM/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/Blog-was-hacked-vol2.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=2f3b85ef-de11-402c-b5bc-e22c34cec824</guid>
      <pubDate>Tue, 18 Aug 2009 01:05:00 +0200</pubDate>
      <category>Blog</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=2f3b85ef-de11-402c-b5bc-e22c34cec824</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=2f3b85ef-de11-402c-b5bc-e22c34cec824</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/Blog-was-hacked-vol2.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=2f3b85ef-de11-402c-b5bc-e22c34cec824</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=2f3b85ef-de11-402c-b5bc-e22c34cec824</feedburner:origLink></item>
    <item>
      <title>Это случилось: Blog was hacked!</title>
      <description>&lt;p&gt;Да, это всё-таки случилось. Товарищ по имени ZoRRoKiN хакнул мой блог. Произошло это, судя по всему, из-за моей глупости: лёгкий пароль на админку + старая и бажная версия движка &lt;a href="http://www.dotnetblogengine.net/" target="_blank"&gt;BlogEngine.NET&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;А случилось вот что:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=hacked-blog.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;На хочтинг были залиты файлы:&lt;/p&gt;&lt;ul&gt;					&lt;li&gt;default.html,&amp;nbsp;zorrokin.htm,&amp;nbsp;index.html с следующим содержанием:&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-tab-span" style="white-space: pre"&gt;		&lt;/span&gt;ZoRRoKiN&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;					&lt;li&gt;&amp;nbsp;ownz.htm с текстом:&lt;br /&gt;			&lt;span class="Apple-tab-span" style="white-space: pre"&gt;	&lt;/span&gt;Command Tribulation Ownz your b0x	&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Также была добавлена пустая папка&amp;nbsp;zorrokin.&lt;/div&gt;&lt;div&gt;Хорошо, что это был простой deface и вся информация осталась целой. Исходя из того, что на хостинге у меня под одним аккаунтом крутятся ещё несколько сайтов, которые не пострадали, то можно сделать вывод что это случилось либо из-за дыры в блоге, либо из-за неудачно выбранного пароля. В любом случае сейчас жду подробнуя статистику от хостинга.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;P.S. Пароль я уже поменял :).&amp;nbsp;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GXjwsd7ZBfc:Vvn12ItNakQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GXjwsd7ZBfc:Vvn12ItNakQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=GXjwsd7ZBfc:Vvn12ItNakQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GXjwsd7ZBfc:Vvn12ItNakQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/GXjwsd7ZBfc" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/GXjwsd7ZBfc/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/my-blog-was-hacked.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=846258f1-57ac-46cf-be93-8f812119ba56</guid>
      <pubDate>Fri, 07 Aug 2009 14:00:00 +0200</pubDate>
      <category>Blog</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=846258f1-57ac-46cf-be93-8f812119ba56</pingback:target>
      <slash:comments>4</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=846258f1-57ac-46cf-be93-8f812119ba56</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/my-blog-was-hacked.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=846258f1-57ac-46cf-be93-8f812119ba56</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=846258f1-57ac-46cf-be93-8f812119ba56</feedburner:origLink></item>
    <item>
      <title>Project dependences и project references: делаем это правильно</title>
      <description>&lt;p&gt;Раньше всегда это делал настолько автоматически, что даже и не задумывался что это млжно делать по-другому. Но когда столкнулся с такой проблемой в текущем проекте - решил написать.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Рассмотрим такую ситуацию: у нас есть главная сборка (Main), сборка с утилитными классами (Utils) и 3-rd party логгер (Logger):&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references.jpg" alt="" /&gt;&lt;div&gt;При этом Utils достался нам ещё со староко проекта и мы просто подключили его проект в наш solution, а логгер - соответствующий компонент из Microsoft Enterprise Library.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Решение этой задачи разбивается на следующие шаги:&lt;br /&gt;&lt;ol&gt;																																	&lt;li&gt;Добавляем в наш solution нужные нам проекты.&lt;/li&gt;																	&lt;li&gt;Добавляем ссылки на проекты.&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div&gt;Почему-то, некоторые выбирают такой способ решения: выполняют шаг 1 - тут у нас только один способ сделать это (я не беру в счёт способ ручного редактирования *proj-файла), Build -&amp;gt; Rebuild Solution, и собственно добавление ссылки на проект путём добавления ссылки на dll:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references1.jpg" alt="" /&gt;&lt;br /&gt;&lt;div&gt;В таком случае, если вам сильно повезёт и такого в вашем solution будет не много, достаточно будет сначала сделать&amp;nbsp;Build -&amp;gt; Rebuild Solution, после чего всё заработает, а если не повезёт... А если не повезёт прийдётся ещё руками настраивать project dependecies и писать не менее захватывающий сценарий для билдов.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Теперь рассмотрим как это делать правильно:&lt;/div&gt;&lt;div&gt;Добавляем ссылку не на сборку, а на проект в solution:&lt;br /&gt;&amp;nbsp;&lt;img src="http://blog.e0ne.info/image.axd?picture=references2.jpg" alt="" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references3.jpg" alt="" /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;После чего всё выглядит так:&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references4.jpg" alt="" /&gt;&lt;div&gt;Таким образом все зависимости на проекты выставляются автоматически и нам больше не нужен бубун для сборки solution и билдов.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Осталось подключись сборку с логгером. Но и здесь не всё так просто. В случае с Enterprise Library достаточно добавить ссылка на сборку из GAC:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references5.jpg" alt="" /&gt;&lt;div&gt;У этого спосоа есть несколько недостатков:&amp;nbsp;Enterprise Library должна быть установлена на всех машинах, где будет запускиться проект, и везде должна быть одна и таже версия. Второй недостаток хорошо ощёщается если использовать библиотеки, которые достаточно быстро развиваются и имеют множество версий (e.g. NUnit. AjaxControlToolkit, etc).&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Я предпочитаю другой способ решения этой задачи (не могу сказать, что он не имеет недостатков, но, лично для меня, его преимущества имеют больший вес).&lt;/div&gt;&lt;div&gt;Все сторонние библиотеки кладутся в Source Control и уже на них ссылаются все проекты. Для удобства можно ещё создать папку в solution:&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=references6.jpg" alt="" /&gt;&lt;p&gt;&lt;a rel="enclosure" href="http://blog.e0ne.info/file.axd?file=ReferencesSample.zip"&gt;ReferencesSample.zip (76.14 kb)&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=zWCAxjBgo2g:Hig5mudpsk4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=zWCAxjBgo2g:Hig5mudpsk4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=zWCAxjBgo2g:Hig5mudpsk4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=zWCAxjBgo2g:Hig5mudpsk4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/zWCAxjBgo2g" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/zWCAxjBgo2g/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/Right-way-for-project-dependences-and-project-references.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=4ba09ea7-7fae-49d0-8d7e-d6eb6c904c19</guid>
      <pubDate>Thu, 23 Jul 2009 17:00:00 +0200</pubDate>
      <category>.NET Framework</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=4ba09ea7-7fae-49d0-8d7e-d6eb6c904c19</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=4ba09ea7-7fae-49d0-8d7e-d6eb6c904c19</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/Right-way-for-project-dependences-and-project-references.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=4ba09ea7-7fae-49d0-8d7e-d6eb6c904c19</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=4ba09ea7-7fae-49d0-8d7e-d6eb6c904c19</feedburner:origLink></item>
    <item>
      <title>SourceGear Vault и ошибка при коммите</title>
      <description>&lt;p&gt;На проекте приходится использовать SourceGear Vault - source control система, которая очень похожа на VSS. Сегодня наткнулся на очередной глюк:&lt;/p&gt;&lt;p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=commit.jpg" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.e0ne.info/image.axd?picture=message.jpg" alt="" /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;То, что нажатия кнопок OK и Cancel приводят к одному и томуже результяту (закрытие окна) и что о причине этой ошибки приходится только догадываться, думаю, говорить не стоит...&amp;nbsp;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GCERgouLIyE:7A1J43VXQvo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GCERgouLIyE:7A1J43VXQvo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=GCERgouLIyE:7A1J43VXQvo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=GCERgouLIyE:7A1J43VXQvo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/GCERgouLIyE" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/GCERgouLIyE/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/SourceGear-Vault-commin-error.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=510eceef-68f8-4226-aac5-c484c4cca84a</guid>
      <pubDate>Tue, 21 Jul 2009 17:27:00 +0200</pubDate>
      <category>Offtopic</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=510eceef-68f8-4226-aac5-c484c4cca84a</pingback:target>
      <slash:comments>3</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=510eceef-68f8-4226-aac5-c484c4cca84a</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/SourceGear-Vault-commin-error.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=510eceef-68f8-4226-aac5-c484c4cca84a</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=510eceef-68f8-4226-aac5-c484c4cca84a</feedburner:origLink></item>
    <item>
      <title>Интересная особенность Enum</title>
      <description>&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				Те, кто знает на память книгу Дж.Рихтера C# via .NET, в этом врядли найдут для себя что-то новое/интересное.&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&amp;nbsp;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;Всё началось с того, что было у меня два похожих enum&amp;#39;ов (к примеру Numbers и BigNumbers) и нужно было как-то переменные первого типа приводить к другом, и наоборот.&amp;nbsp;&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	enum Numbers&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;One,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Two,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Three&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;&lt;br /&gt;				&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp;enum BigNumbers&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;One,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Two,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Three,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Four,&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Five&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/em&gt;&lt;/blockquote&gt;На практике такие преобразования выглядят примерно так :&lt;br /&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Numbers n1 = Numbers.One;&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Numbers n2 = (Numbers) 2;&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Int32 i1 = (Int32) n1;&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;&lt;br /&gt;				&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	BigNumbers b1 = BigNumbers.Five;&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;&lt;br /&gt;				&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Numbers n3 = (Numbers) b1;&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;&lt;br /&gt;				&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Console.WriteLine(String.Format(&amp;quot;n1 = {0}&amp;quot;, n1));&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Console.WriteLine(String.Format(&amp;quot;n2 = {0}&amp;quot;, n2));&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Console.WriteLine(String.Format(&amp;quot;i1 = {0}&amp;quot;, i1));&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Console.WriteLine(String.Format(&amp;quot;b1 = {0}&amp;quot;, b1));&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	Console.WriteLine(String.Format(&amp;quot;n3 = {0}&amp;quot;, n3));&lt;/em&gt;&lt;/blockquote&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&amp;nbsp;&lt;/blockquote&gt;&lt;p&gt;В результате на экране мы получим следующее:&lt;/p&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	n1 = One&lt;br /&gt;				n2 = Three&lt;br /&gt;				i1 = 0&lt;br /&gt;				b1 = Five&lt;br /&gt;				n3 = 4&amp;nbsp;&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;Здесь мы видем, что n3 теперь равняется 4-м. Логичный, но не совсем ожидаемый для меня результат. В таком случае хотелось бы получить какой-то Exception.&lt;/p&gt;&lt;p&gt;&amp;nbsp;Теперь разберёмся что представляет собой enum и почему он так работает.&lt;/p&gt;Enum (перечесляемый тим, enumerated type) предоставляет нам возможность хранить пару имя-значение и пришли в дополнение к константом (например: вместо того, чтоб в методе возвращать код ошибки, можно создать enum с именами ошибок). &amp;nbsp;По сути, System.Enum представляет обёкт размерного (value) типа, пронаследованного от System.ValueType:&lt;br /&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;strong&gt;&lt;span class="Apple-style-span" style="font-weight: normal"&gt;		&lt;/span&gt;&amp;nbsp;&lt;/strong&gt;&lt;em&gt;public&amp;nbsp;abstract&amp;nbsp;class&amp;nbsp;Enum&amp;nbsp;:&amp;nbsp;ValueType,&amp;nbsp;IComparable,&amp;nbsp;IFormattable,&amp;nbsp;IConvertible&lt;/em&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;И, по умолчию, запись &amp;nbsp;&amp;quot;enum Numbers&amp;quot; соответствует &amp;quot;enum Numbers : int&amp;quot;. В этом можно убедится, посмотрев на наше приложение с помощью IL DASM, который входит в комплект поставки .NET Framework SDK.&lt;br /&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&lt;em&gt;	.class&amp;nbsp;private&amp;nbsp;auto&amp;nbsp;ansi&amp;nbsp;sealed&amp;nbsp;Enums.Numbers&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;extends&amp;nbsp;[mscorlib]System.Enum{}&amp;nbsp;//&amp;nbsp;end&amp;nbsp;of&amp;nbsp;class&amp;nbsp;Enums.Numbers&lt;br /&gt;				.field&amp;nbsp;public&amp;nbsp;static&amp;nbsp;literal&amp;nbsp;valuetype&amp;nbsp;Enums.Numbers&amp;nbsp;One&amp;nbsp;=&amp;nbsp;int32(0x00000000)&lt;/em&gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp;&lt;br /&gt;Таким образом мы видем, что все элементы нашего enum являются целыми числами (int). Вместо int, можно указать byte, sbyte, short, ushort, int, long, и ulong. Интересно что если указать имя типа так, как они именуются в FCL (Byte, Int32 и т.д.), то мы получим ошибку:&amp;nbsp;&lt;br /&gt;&lt;em&gt;&amp;nbsp;Type&amp;nbsp;byte,&amp;nbsp;sbyte,&amp;nbsp;short,&amp;nbsp;ushort,&amp;nbsp;int,&amp;nbsp;uint,&amp;nbsp;long,&amp;nbsp;or&amp;nbsp;ulong&amp;nbsp;expected&lt;/em&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Вернёмся к нашему примеру. Чтоб в нём всё работало так, как ожидалось, достаточно добавить такой код:&lt;br /&gt;&lt;blockquote style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 40px; border-width: initial; border-color: initial; border-style: none; padding: 0px"&gt;				&amp;nbsp;&lt;em&gt;if&amp;nbsp;(!Enum.IsDefined(typeof(Numbers),&amp;nbsp;b1)){throw&amp;nbsp;new&amp;nbsp;ArgumentException();}&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;a rel="enclosure" href="http://blog.e0ne.info/file.axd?file=Enums.zip"&gt;Enums.zip (3.01 kb)&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=btqL2XWKwdw:m8-eul3bAH0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=btqL2XWKwdw:m8-eul3bAH0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=btqL2XWKwdw:m8-eul3bAH0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=btqL2XWKwdw:m8-eul3bAH0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/btqL2XWKwdw" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/btqL2XWKwdw/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/One-interesting-Enum-feature.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=ede2d10e-19e4-446d-9808-3b5f09edba2e</guid>
      <pubDate>Fri, 17 Jul 2009 15:45:00 +0200</pubDate>
      <category>.NET Framework</category>
      <category>Web Development</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=ede2d10e-19e4-446d-9808-3b5f09edba2e</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=ede2d10e-19e4-446d-9808-3b5f09edba2e</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/One-interesting-Enum-feature.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=ede2d10e-19e4-446d-9808-3b5f09edba2e</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=ede2d10e-19e4-446d-9808-3b5f09edba2e</feedburner:origLink></item>
    <item>
      <title>JavaScript: удаляем элементы из массива</title>
      <description>&lt;p&gt;
Решая на первый взгляд простую задачу я столкнулся с некоторыми поблемами. Задача состоит в том, чтобы из массива удалить один из его элементов. Оказалось, что стандартными средствами JavaScript этого не сделать.
&lt;/p&gt;
&lt;p&gt;
Итак, у нас есть исходный массив:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;var arr = new Array();&lt;br /&gt;
	arr.push(&amp;#39;q&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;w&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;a&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;e&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;r&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;t&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;z&amp;#39;);&lt;br /&gt;
	arr.push(&amp;#39;y&amp;#39;);&amp;nbsp;&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;nbsp;Задача состоит в том, чтобы удалить из него элементы со значениями &amp;quot;a&amp;quot; и &amp;quot;z&amp;quot;. Первой же идеей было использование оператора delete:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;em&gt;var i = arr.indexOf(&amp;#39;a&amp;#39;);&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;delete arr[i];&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;i = arr.indexOf(&amp;#39;z&amp;#39;);&lt;/em&gt;&lt;br /&gt;
	&lt;em&gt;delete arr[i];&lt;/em&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;nbsp;И было вы всё хорошо, еслиб не реализация этого самого оператора delete: элементы из массива на самом не удаляются, просто их значение стоновится undefined и, соответственно, свойство lenght не меняется. Можно, конечно, при обходе массива проверять значение элементов и таким образом проверять, удалённый он или нет, но в моём случае это несло за собой изменение логики на сервере, что делать не хотелось и было принято решение реализовать нужную функциональность в классе Array:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;Array.prototype.removeByValue = function(item){&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var itemIndex = -1;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;for (var index = 0; index &amp;lt; this.length; index++)&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (this[index] == item){&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;itemIndex=index;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (itemIndex == -1){&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var resultLeft = this.slice(0, itemIndex);&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var resultRight = this.slice(itemIndex+1, this.length);&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;var resultTotal = resultLeft.concat(resultRight);&lt;br /&gt;
	&lt;br /&gt;
	&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return resultTotal;&lt;/em&gt;
	&lt;/p&gt;
	&lt;p&gt;
	&lt;em&gt;&amp;nbsp;};&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;nbsp;Способ использования:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;span class="Apple-tab-span" style="white-space: pre"&gt;&lt;/span&gt;&lt;em&gt;var a = arr.removeByValue(&amp;#39;a&amp;#39;);&amp;nbsp;&lt;br /&gt;
	&lt;span class="Apple-tab-span" style="white-space: pre"&gt;&lt;/span&gt;arr = a.removeByValue(&amp;#39;z&amp;#39;);&amp;nbsp;&lt;/em&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Стоит отетить, что описанный выше способ не являтся оптимальным с точки зрения производительности, но на небольших массивах ето не является существенным.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=XWHrSfre-cY:njGpaPmgT6g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=XWHrSfre-cY:njGpaPmgT6g:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=XWHrSfre-cY:njGpaPmgT6g:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=XWHrSfre-cY:njGpaPmgT6g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/XWHrSfre-cY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/XWHrSfre-cY/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/JavaScript-remove-items-from-array.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=54168e54-5772-4e55-8dd7-7d2fdfc42078</guid>
      <pubDate>Fri, 03 Jul 2009 12:18:00 +0200</pubDate>
      <category>Web Development</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=54168e54-5772-4e55-8dd7-7d2fdfc42078</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=54168e54-5772-4e55-8dd7-7d2fdfc42078</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/JavaScript-remove-items-from-array.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=54168e54-5772-4e55-8dd7-7d2fdfc42078</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=54168e54-5772-4e55-8dd7-7d2fdfc42078</feedburner:origLink></item>
    <item>
      <title>ASP.NET, сэссия и рестарт приложения</title>
      <description>&lt;p&gt;
Всё началось с того, что в спецификации к проекту написали примерно такое: &amp;quot;Время продолжительности сэссии пользователя на сайте должно составлять 120 минут&amp;quot;. После чего, в web.config была добавлена следующая строка:&amp;nbsp;
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;em&gt;&amp;lt;sessionState mode=&amp;quot;InProc&amp;quot; cookieless=&amp;quot;false&amp;quot; timeout=&amp;quot;120&amp;quot; /&amp;gt; 
	&lt;/em&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
А на страницу был добавлен такой мета-тег:
&lt;/p&gt;
&lt;blockquote&gt;
	&lt;p&gt;
	&lt;strong&gt;&amp;lt;meta http-equiv=&amp;quot;Refresh&amp;quot; content=&amp;quot;7200; URL=/EzRc/Pages/LogOn/SessionExpired.aspx&amp;quot; /&amp;gt; 
	&lt;/strong&gt;
	&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;
Следует упомянуть конфигурацию  тестовых серверов: Windows Vista/2008, IIS7, .NET 3.5. Ничто не предвещало беды. Но, как и полагается, в один &amp;quot;прекрасный&amp;quot; день всеми людимые QA написали баг следующего содержания: &amp;quot;Session expiration occurs prior to 30 min (and as little as 10 min).&amp;quot; При этом повторить его было достаточно просто:
&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;залогиниться на сайт&lt;/li&gt;
	&lt;li&gt;оставить браузер в покое на 30 минут&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
После этих нетрудный манипуляций при попытке перейти по любой ссылке мы оказывались на странице, в которой радостно говорилось об окончании сэссии и предлагалось перейти на страницу логина. Естественно, этот баг повторялся не всегда.&lt;br /&gt;
&lt;br /&gt;
Ещё раз убедившись в правильности настроек сэссии в web.config я реши воспроизвести этот баг на локальном (dev) компьютере. Как ни странно, но баг воспроизводился в 100% случаев. &amp;quot;Странно&amp;quot; - подумал я и налил ещё чашку кофе.
&lt;/p&gt;
&lt;p&gt;
Запустив Fiddler2 и залогинившись на сайт я снова оставил его в покое на 30 минут. Через это время, убедившись, что cookie приходят валидные, я наал смотреть логи. Напервый взгляд всё было хорошо, но присмотревшись внимательно, увидел что отрабатывает событие ApplicationStart. Теперь понятно почему заканчивается сэссия. Осталось разобраться почему перезапускается приложение.
&lt;/p&gt;
&lt;p&gt;
Из логов IIS:
&lt;/p&gt;
&lt;blockquote&gt;
	Event code: 1002 &lt;br /&gt;
	Event message: Application is shutting down. Reason: Hosting environment is shutting down. &lt;br /&gt;
	Event time: 6/8/2009 1:50:21 PM &lt;br /&gt;
	Event time (UTC): 6/8/2009 10:50:21 AM &lt;br /&gt;
	Event ID: 80d0faffb34547fea6299cfff8cf1c6f &lt;br /&gt;
	Event sequence: 4 &lt;br /&gt;
	Event occurrence: 1 &lt;br /&gt;
	Event detail code: 50002 &lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	Application information: &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Application domain: /LM/W3SVC/1/ROOT/Web-1-128889305624881519 &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Trust level: Full &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Application Virtual Path: /EzRc &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Application Path: C:\Src\Sites\Web\ &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Machine name: localdev &lt;br /&gt;
	&amp;nbsp;&lt;br /&gt;
	Process information: &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Process ID: 6364 &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Process name: w3wp.exe &lt;br /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Account name: NT AUTHORITY\NETWORK SERVICE &lt;br /&gt;
&lt;/blockquote&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
После прочтения статьи из MSDN &lt;a href="http://msdn.microsoft.com/en-us/library/bb470252.aspx" target="_blank"&gt;ASP.NET Application Life Cycle Overview&lt;/a&gt; ответ на интересующий вопрос не был получен, из чего был сделан вывод, что проблема находится уровне выше, а именно в IIS. Начал детально изучать настройки, которые могут повлиять на работу приложения и остановился на Application Pools. После чтения документации и нескольких неверных попыток был найден источник проблемы. Им оказался параметр &lt;strong&gt;Idle Time-out&lt;/strong&gt;. 
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.e0ne.info/image.axd?picture=apppool.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
Оказалось, что при настройках по умолчанию, процесс, отвечающий за работу asp.net, тушится при условии, что к нему &lt;strong&gt;не обращаются&lt;/strong&gt; в течении 20 минут. Это объясняло, почему проблему можно было не всегда воспроизвести на тестовом сервере. 
&lt;/p&gt;
&lt;p&gt;
Это же можно настроить и через файл machine.config. Подробнее описано &lt;a href="http://www.xefteri.com/articles/show.cfm?id=14" target="_blank"&gt;здесь&lt;/a&gt;.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=pRVaZuS3CuU:hTALt9IgeLw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=pRVaZuS3CuU:hTALt9IgeLw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=pRVaZuS3CuU:hTALt9IgeLw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=pRVaZuS3CuU:hTALt9IgeLw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/pRVaZuS3CuU" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/pRVaZuS3CuU/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/aspnet-session-and-application-restart.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=426215ad-ad8f-420b-bf43-d14b85a4afd1</guid>
      <pubDate>Tue, 09 Jun 2009 13:28:00 +0200</pubDate>
      <category>Web Development</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=426215ad-ad8f-420b-bf43-d14b85a4afd1</pingback:target>
      <slash:comments>5</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=426215ad-ad8f-420b-bf43-d14b85a4afd1</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/aspnet-session-and-application-restart.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=426215ad-ad8f-420b-bf43-d14b85a4afd1</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=426215ad-ad8f-420b-bf43-d14b85a4afd1</feedburner:origLink></item>
    <item>
      <title>Встречаем новый язык программирования от Microsoft - Axum</title>
      <description>&lt;p&gt;
Не успели мы ещё познакомитя с F# и новыми возможнастями .NET 4.0, как Microsoft представила новый язык программирования &lt;a href="http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx" target="_blank"&gt;Axum&lt;/a&gt; (на самом деле Axum был представлен ещё до выпуска первой бета-версии .NET 4.0). Раньше он имел коддовое название Maestro.
&lt;/p&gt;
&lt;p&gt;
Что же представляет собой Axum? Это язык для паралельной разработки (parallel model language), который позволяетлегко создавать легкомасштабируемые, распределённые и многопоточные приложения. Лично мне синтаксис этого языка напомнил &lt;a href="http://erlang.org/" target="_blank"&gt;Erlang&lt;/a&gt;, которые имеет изменённый синтаксис и является полностью .net-совместимым языком программирования. Текущяя версия - CTP. В данный момент не известно о дальнейшей судьбе и планах о релизе. 
&lt;/p&gt;
&lt;p&gt;
Чтобы посмотреть на этот язык вживую необходимо скачать небольшой 4.2МБ) плагин для Visual Studio 2008, на момент написание этого поста плагина для Visual Studio 2010 ещё нет.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.e0ne.info/image.axd?picture=axum.jpg" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
Так же с сайта Axum можно скачать &lt;a href="http://download.microsoft.com/download/B/D/5/BD51FFB2-C777-43B0-AC24-BDE3C88E231F/Axum%20Language%20Spec.pdf"&gt;спецификицию языка&lt;/a&gt; и &lt;a href="http://download.microsoft.com/download/B/D/5/BD51FFB2-C777-43B0-AC24-BDE3C88E231F/Axum%20Programmers%20Guide.pdf" target="_blank"&gt;руководство разработчкика&lt;/a&gt; на 42 и 36 страниц соответственно. Некоторую информацию можно узнать из &lt;a href="http://blogs.msdn.com/maestroteam/default.aspx" target="_blank"&gt;блога &lt;/a&gt;команды разработчиков. Информации пока не много, но и её достаточно для знакомства с языкам и написанием приложений.
&lt;/p&gt;
&lt;p&gt;
И на завершении, по традиции привожу пример &amp;quot;Hello World!&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div class="csharp" style="border: 1px solid #d0d0d0; font-family: monospace; color: #000066; background-color: #f0f0f0"&gt;
&lt;ol&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #0600ff"&gt;using&lt;/span&gt; &lt;span style="color: #008080"&gt;System&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #0600ff"&gt;using&lt;/span&gt; &lt;span style="color: #008080"&gt;System.Concurrency&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #0600ff"&gt;using&lt;/span&gt; &lt;span style="color: #008080"&gt;Microsoft.Axum&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-weight: bold; color: #006060"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #0600ff"&gt;namespace&lt;/span&gt; ConsoleApplication1
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #000000"&gt;{&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &lt;span style="color: #0600ff"&gt;public&lt;/span&gt; domain Program
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;{&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #0600ff"&gt;private&lt;/span&gt; writer agent MainAgent &lt;span style="color: #008000"&gt;:&lt;/span&gt; channel Microsoft.&lt;span style="color: #0000ff"&gt;Axum&lt;/span&gt;.&lt;span style="color: #0000ff"&gt;Application&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-weight: bold; color: #006060"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;{&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #0600ff"&gt;public&lt;/span&gt; MainAgent&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;{&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #ff0000"&gt;String&lt;/span&gt; &lt;span style="color: #000000"&gt;[&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt; args &lt;span style="color: #008000"&gt;=&lt;/span&gt; receive&lt;span style="color: #000000"&gt;(&lt;/span&gt;PrimaryChannel&lt;span style="color: #008000"&gt;::&lt;/span&gt;&lt;span style="color: #0000ff"&gt;CommandLine&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-weight: bold; color: #006060"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Console.&lt;span style="color: #0000ff"&gt;WriteLine&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #ff0000"&gt;String&lt;/span&gt;.&lt;span style="color: #0000ff"&gt;Format&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #666666"&gt;&amp;quot;Hello, {0}!&amp;quot;&lt;/span&gt;, args&lt;span style="color: #000000"&gt;[&lt;/span&gt;&lt;span style="color: #ff0000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;]&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PrimaryChannel&lt;span style="color: #008000"&gt;::&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Done&lt;/span&gt; &lt;span style="color: #008000"&gt;&amp;lt;--&lt;/span&gt; Signal.&lt;span style="color: #0000ff"&gt;Value&lt;/span&gt;&lt;span style="color: #008000"&gt;;&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;}&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;}&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-weight: bold; color: #006060"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp; &amp;nbsp; &lt;span style="color: #000000"&gt;}&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&lt;span style="color: #000000"&gt;}&lt;/span&gt;
	&lt;/div&gt;
	&lt;/li&gt;
	&lt;li style="vertical-align: top; font-family: 'Courier New',Courier,monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 130%; line-height: normal; font-size-adjust: none; font-stretch: normal; color: #003030"&gt;
	&lt;div style="margin: 0pt; padding: 0pt; background: transparent none repeat scroll 0% 0%; font-family: monospace; font-style: normal; font-variant: normal; font-weight: normal; font-size: 1em; line-height: 1.2em; font-size-adjust: none; font-stretch: normal; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; vertical-align: top; color: #000020"&gt;
	&amp;nbsp;
	&lt;/div&gt;
	&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=0jQ3O6VFRdY:ugIa_oPKDCI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=0jQ3O6VFRdY:ugIa_oPKDCI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?i=0jQ3O6VFRdY:ugIa_oPKDCI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/e0nesComments?a=0jQ3O6VFRdY:ugIa_oPKDCI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/e0nesComments?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/e0nesComments/~4/0jQ3O6VFRdY" height="1" width="1"/&gt;</description>
      <link>http://feedproxy.google.com/~r/e0nesComments/~3/0jQ3O6VFRdY/post.aspx</link>
      <author>e0ne</author>
      <comments>http://blog.e0ne.info/post/Microsoft-Axum.aspx#comment</comments>
      <guid isPermaLink="false">http://blog.e0ne.info/post.aspx?id=8a6c1192-6536-4b9c-8825-edbbd26c95d1</guid>
      <pubDate>Sun, 24 May 2009 16:33:00 +0200</pubDate>
      <category>.NET Framework</category>
      <dc:publisher>e0ne</dc:publisher>
      <pingback:server>http://blog.e0ne.info/pingback.axd</pingback:server>
      <pingback:target>http://blog.e0ne.info/post.aspx?id=8a6c1192-6536-4b9c-8825-edbbd26c95d1</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://blog.e0ne.info/trackback.axd?id=8a6c1192-6536-4b9c-8825-edbbd26c95d1</trackback:ping>
      <wfw:comment>http://blog.e0ne.info/post/Microsoft-Axum.aspx#comment</wfw:comment>
      <wfw:commentRss>http://blog.e0ne.info/syndication.axd?post=8a6c1192-6536-4b9c-8825-edbbd26c95d1</wfw:commentRss>
    <feedburner:origLink>http://blog.e0ne.info/post.aspx?id=8a6c1192-6536-4b9c-8825-edbbd26c95d1</feedburner:origLink></item>
  </channel>
</rss>
