<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CkMER3Y_fip7ImA9WhRUGEg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496</id><updated>2012-01-29T16:20:06.846+01:00</updated><category term="Алгоритмы" /><category term="Windows Mobile" /><category term="Metadata" /><category term=".NET Profiling API" /><category term="Visual Studio 2005" /><category term="ARM" /><category term="Development Server" /><category term="x86" /><category term=".NET Framework" /><category term="Windows" /><category term="MSBuild" /><category term="Lock Free" /><category term="Visual Studio 2010" /><category term="XAML" /><category term="C#" /><category term="C++" /><category term="Remoting" /><category term="MSDN" /><category term="Visual Studio 2008" /><category term="IL" /><category term="Exception" /><category term=".NET Compact Framework" /><category term="Authentication" /><category term="dotCover" /><category term="IE" /><category term="CLR v4.0 Attach" /><category term="x64" /><category term="Silverlight" /><category term="dotTrace" /><title>Работаю не приходя в сознание</title><subtitle type="html">Плохому программисту ядра мешают</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://workblog.pilin.name/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://workblog.pilin.name/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>70</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/pilin/workblog" /><feedburner:info uri="pilin/workblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CkMER3Y-eyp7ImA9WhRUGEg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-6901602790945721485</id><published>2012-01-28T18:34:00.003+01:00</published><updated>2012-01-29T16:20:06.853+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-29T16:20:06.853+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Сюрприз Profiling API</title><content type="html">&lt;p&gt;На днях, при отладке профайлера, на приложении выделяющим и инициализирующим массив в 2Gb (максимальный размер объекта в CLR), во время очередного GC, был замечен странный кратковременный всплеск потребления памяти - выделялось дополнительно еще 2Gb (итого пиково было 4Gb). После расследования выяснилось, что на время вызова ICorProfilerCallback::ObjectReferences() CLR выделяет массив для передачи в профайлер всех исходящих рефернсов соответствующего объекта. Если референсы занимают эти самые 2Gb, то будут выделен массив в 2Gb. Проблема возникает только тогда, когда ICorProfilerCallback::ObjectReferences() возвращает всегда S_OK и производится полный обход графа для профайлера.&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-26S4GIY6y8I/TyQve0iwz6I/AAAAAAAABW4/Gsxf_93mjDk/s1600/Test.jpg" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="152" width="392" src="http://2.bp.blogspot.com/-26S4GIY6y8I/TyQve0iwz6I/AAAAAAAABW4/Gsxf_93mjDk/s400/Test.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;Собственно приложение (число 9 в коде подобрано для CLR 4.0 x64):&lt;br /&gt;
&lt;pre class="brush:csharp"&gt;using System;

namespace AllocationTest
{
  internal class Program
  {
    private static void Main()
    {
      var tmp = new object[0x80000000U / (uint) IntPtr.Size - 9];

      for (int n = 0; n &lt; tmp.Length; ++n)
        tmp[n] = tmp;

      Console.Write("Press any key...");
      Console.ReadKey();
      Console.WriteLine();

      GC.KeepAlive(tmp);
    }
  }
}
&lt;/pre&gt;
&lt;b&gt;P.S.&lt;/b&gt; Если убрать в примере запонение массива, то эффект наблюдается не будет.
&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-6901602790945721485?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/i_TPbY8cKWF201pNhClZotw2A_U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i_TPbY8cKWF201pNhClZotw2A_U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/i_TPbY8cKWF201pNhClZotw2A_U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/i_TPbY8cKWF201pNhClZotw2A_U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/lPc1boqiuTc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/6901602790945721485/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=6901602790945721485" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6901602790945721485?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6901602790945721485?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/lPc1boqiuTc/2gb-clr-gc-2gb-4gb.html" title="Сюрприз Profiling API" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-26S4GIY6y8I/TyQve0iwz6I/AAAAAAAABW4/Gsxf_93mjDk/s72-c/Test.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2012/01/2gb-clr-gc-2gb-4gb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUICRHk-eSp7ImA9WhRSF0U.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-905552093096166755</id><published>2011-11-10T20:57:00.008+01:00</published><updated>2011-11-20T12:12:45.751+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-20T12:12:45.751+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows Mobile" /><title>Как определить есть ли очередь сообщений у треда?</title><content type="html">&lt;p&gt;Оказывается все просто и не просто одновременно. Проблемы нам подкладывает само Win32 API - оно при любом удобном случае само создает очередь сообщений для треда, если ее еще не было. Про &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms633525(v=vs.85).aspx"&gt;IsGUIThread()&lt;/a&gt; я ничего особого говорить не буду, так как он позволяет узнать то, что нам нужно, только для текущего треда. И, кстати, метод отсутствует в WinCE. На помощь нам придет &lt;a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms644946(v=vs.85).aspx"&gt;PostThreadMessage()&lt;/a&gt;, но у него есть одна неприятная особенность - &lt;b&gt;тот тред в котором вы его вызвали приобретает очередь сообщений, даром&lt;/b&gt;. Поэтому вызывать его для текущего треда бессмысленно. Вот и пришлось для него завести специальный, рабочий тред.&lt;/p&gt;&lt;pre class="brush:csharp"&gt;// Note: It works correctly when GetCurrentThreadId() != tid !
//       Current thread will have the message queue after this call!
bool HasThreadMessageQueue(DWORD const tid)
{
  return PostThreadMessage(tid, WM_NULL, 0, 0) || GetLastError() == ERROR_NOT_ENOUGH_QUOTA;
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-905552093096166755?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/m3lK46Ssfikx0gSMbUFK64lsYIo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m3lK46Ssfikx0gSMbUFK64lsYIo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/m3lK46Ssfikx0gSMbUFK64lsYIo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/m3lK46Ssfikx0gSMbUFK64lsYIo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/mK3pgY-kQAg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/905552093096166755/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=905552093096166755" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/905552093096166755?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/905552093096166755?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/mK3pgY-kQAg/blog-post_10.html" title="Как определить есть ли очередь сообщений у треда?" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/11/blog-post_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQ3Yzfyp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-704731093238879693</id><published>2011-10-27T18:36:00.005+02:00</published><updated>2011-11-17T20:30:32.887+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:32.887+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="x64" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>x64 calling conversion</title><content type="html">&lt;p&gt;Отличная статья про &lt;a href="http://blogs.msdn.com/b/ntdebugging/archive/2009/01/09/challenges-of-debugging-optimized-x64-code.aspx"&gt;x64 calling conversion&lt;/a&gt;. Читается взахлеб, как роман.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update:&lt;/b&gt; Еще статья про &lt;a href="http://blogs.msdn.com/b/ntdebugging/archive/2010/05/12/x64-manual-stack-reconstruction-and-stack-walking.aspx"&gt;x64 stack trace reconstuction&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-704731093238879693?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/w51lu8CzcMdOybzmyfpixic3WGI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w51lu8CzcMdOybzmyfpixic3WGI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/w51lu8CzcMdOybzmyfpixic3WGI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/w51lu8CzcMdOybzmyfpixic3WGI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/xRqoxkmxHsQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/704731093238879693/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=704731093238879693" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/704731093238879693?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/704731093238879693?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/xRqoxkmxHsQ/x64-calling-conversion_27.html" title="x64 calling conversion" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/10/x64-calling-conversion_27.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUIFSXs-fSp7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-1573808593767715588</id><published>2011-09-30T19:33:00.005+02:00</published><updated>2011-11-24T18:58:38.555+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T18:58:38.555+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="dotCover" /><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Чем опасен managed DllMain или история одного deadlock'а</title><content type="html">&lt;p&gt;Собственно этот пост возник из-за проблемы с &lt;a href="http://www.jetbrains.com/profiler/"&gt;dotTrace&lt;/a&gt;. При профиляции приложения пользователя  программа намертво зависала. Отладка показала, что зависание происходило точно в момент загрузки Microsoft.DirectX.Direct3D.dll внутри профайлерного эвента ModuleLoadFinished(). Другими словами виноват однозначно dotTrace.&lt;/p&gt;&lt;a href="http://workblog.pilin.name/2011/09/dottrace.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-1573808593767715588?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8UHUGU7XjgRZSBPYEge12jMzals/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8UHUGU7XjgRZSBPYEge12jMzals/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8UHUGU7XjgRZSBPYEge12jMzals/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8UHUGU7XjgRZSBPYEge12jMzals/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/yPKaNwsw37s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/1573808593767715588/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=1573808593767715588" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1573808593767715588?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1573808593767715588?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/yPKaNwsw37s/dottrace.html" title="Чем опасен managed DllMain или история одного deadlock&amp;#39;а" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Mwlhwzj1icQ/ToX7FjeIIkI/AAAAAAAABNA/AdQcbea2-vM/s72-c/NETDirectory2.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/09/dottrace.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQ3c4cCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-7880052228108805620</id><published>2011-05-07T22:46:00.002+02:00</published><updated>2011-11-17T20:30:32.938+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:32.938+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>Коммандная строка и что вы о ней знаете</title><content type="html">&lt;p&gt;Каждый разработчик сталкивался с коммандной строкой тем или иным образом. Многие даже писали батнички. Другими словами вам кажется, что вы все знаете о командной строке все. Так? Тогда скажите что будет в массиве &lt;b&gt;argv&lt;/b&gt; для вот такой коммандной строки: &lt;b&gt;1.exe "D:\" C:\\"Program Files\"MyApp&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Чтобы получить правильный ответ нужно читать &lt;a href="http://msdn.microsoft.com/en-us/library/17w5ykft.aspx"&gt;тут&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-7880052228108805620?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/P77JqFXur5mLxAQIbshSH4PXLY4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P77JqFXur5mLxAQIbshSH4PXLY4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/P77JqFXur5mLxAQIbshSH4PXLY4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/P77JqFXur5mLxAQIbshSH4PXLY4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/B76ldxnIqDM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/7880052228108805620/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=7880052228108805620" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7880052228108805620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7880052228108805620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/B76ldxnIqDM/blog-post_07.html" title="Коммандная строка и что вы о ней знаете" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/05/blog-post_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQ3c-cCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-6534603530390687917</id><published>2011-04-08T14:42:00.001+02:00</published><updated>2011-11-17T20:30:32.958+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:32.958+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="XAML" /><title>Маленький трюк в XAML</title><content type="html">Предположим, что вы, по идейным соображениям (имя сборки меняется от проекта к проекту), не хотите явно указывать имя некой assembly в своем XAML, но хотите использовать класс оттуда. Запись типа&lt;br /&gt;
&lt;pre class="brush:xml"&gt;xmlns:RRR="clr-namespace:NNN;assembly=AAA"&lt;/pre&gt;вам тут уже не годиться - имя сборки ведь нужно указать точно. Как быть спросите вы? А выход есть. В assembly AAA на которую вы хотите ссылаться нужно указать следующий атрибут &lt;pre class="brush:csharp"&gt;[assembly: XmlnsDefinition("http://UUU", "NNN")]&lt;/pre&gt;а в XAML использовать следуюший синтаксис &lt;pre class="brush:xml"&gt;xmlns:RRR="http://UUU"&lt;/pre&gt;и проблема решена.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-6534603530390687917?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KamXWm961hc-GS9NdBb0Mz_WHqU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KamXWm961hc-GS9NdBb0Mz_WHqU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KamXWm961hc-GS9NdBb0Mz_WHqU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KamXWm961hc-GS9NdBb0Mz_WHqU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/k7jaSVYVUv4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/6534603530390687917/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=6534603530390687917" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6534603530390687917?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6534603530390687917?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/k7jaSVYVUv4/assembly-xaml.html" title="Маленький трюк в XAML" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/04/assembly-xaml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQ3czcSp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-6113928127960003199</id><published>2011-01-04T22:25:00.006+01:00</published><updated>2011-11-17T20:30:32.989+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:32.989+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IE" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Проблемы с личными сертификатами под Windows 7 и IE8</title><content type="html">&lt;p&gt;Суть проблемы в том, что ваши сертификаты видны через менэджер сертификатов, а вот IE8 чихал на это и всегда показывает пустой список. Соответственно ничего не работает. Оказывается это известная проблема и для нее есть хотфикс, но он особо не офишируется и не доступен через центр обновления. Имя ему - &lt;a href="http://support.microsoft.com/kb/977222"&gt;&lt;b&gt;KB977222&lt;/b&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;P.S. Проблема актуальна и для Windows Server 2008.&lt;/p&gt;&lt;p&gt;P.P.S. Напоролся на это &lt;a href="http://wiki.7405405.ru/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BB%D0%B8%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D1%81%D0%B5%D1%80%D1%82%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%82%D0%B0_%D1%81_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC_ruToken_%D0%B8%D0%BB%D0%B8_eToken"&gt;при настройке КриптоПро CSP&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-6113928127960003199?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/r5JnXO7Z6jLsrTec0uuAr_8-Mk4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r5JnXO7Z6jLsrTec0uuAr_8-Mk4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/r5JnXO7Z6jLsrTec0uuAr_8-Mk4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/r5JnXO7Z6jLsrTec0uuAr_8-Mk4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/PSHXPH_OMaY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/6113928127960003199/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=6113928127960003199" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6113928127960003199?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6113928127960003199?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/PSHXPH_OMaY/ie8.html" title="Проблемы с личными сертификатами под Windows 7 и IE8" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/01/ie8.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn46eyp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-1910818277327450109</id><published>2011-01-01T11:04:00.003+01:00</published><updated>2011-11-17T20:30:33.013+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.013+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><title>О культуре работы с реестром (Продолжение)</title><content type="html">&lt;p&gt;И снова проблемы у наших пользователей (слава богу хоть не массовые), и снова проклятые переменные окружения, которые не чистятся конкурентами. На этот раз все упирается только в IIS 7.x. Оказывается доблестные конкуренты модифицируют переменные окружения для аккаунтов под которыми запускаются пулы приложений. Пара часиков и все готово - версия dotTrace Performance 4.0.2 будет содержать фикс.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://workblog.pilin.name/2010/11/blog-post.html"&gt;Предыдущая серия...&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-1910818277327450109?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PXHD5mfLjgzKiZ9DGabSt6mg9Nc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PXHD5mfLjgzKiZ9DGabSt6mg9Nc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PXHD5mfLjgzKiZ9DGabSt6mg9Nc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PXHD5mfLjgzKiZ9DGabSt6mg9Nc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/LZq5X0KgH_s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/1910818277327450109/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=1910818277327450109" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1910818277327450109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1910818277327450109?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/LZq5X0KgH_s/blog-post_01.html" title="О культуре работы с реестром (Продолжение)" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2011/01/blog-post_01.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn4_eCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-1037174100825982451</id><published>2010-12-08T18:29:00.001+01:00</published><updated>2011-11-17T20:30:33.040+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.040+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="CLR v4.0 Attach" /><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Восстановление списка активных тредов во время attach</title><content type="html">&lt;p&gt;Список ThreadID для работающих managed тредов нельзя получить через CLR v4 profiling API в чистом виде. Для sampling профайлера это очень серьезная неприятность, так как профайлер не сможет узнать о уже существующих тредах. Он их попросту не увидит.&lt;/p&gt;&lt;p&gt;Но есть не плохой выход - установить флажок COR_PRF_MONITOR_JIT_COMPILATION. Таким образом профайлер сможет получать events о JIT компиляции. Компиляция же происходит достаточно часто и профайлер легко сможет получить ThreadID при помощи вызова GetCurrentThreadID.&lt;/p&gt;&lt;p&gt;P.S. В следующей версии dotTrace, ну той что после 4.0.1, наконец-то будет attach.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-1037174100825982451?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V7ZcBM1BCkFGcEvnzCe718dX1z8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V7ZcBM1BCkFGcEvnzCe718dX1z8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V7ZcBM1BCkFGcEvnzCe718dX1z8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V7ZcBM1BCkFGcEvnzCe718dX1z8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/SfLxygoBlik" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/1037174100825982451/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=1037174100825982451" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1037174100825982451?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1037174100825982451?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/SfLxygoBlik/threadid-managed-clr-v4-profiling-api.html" title="Восстановление списка активных тредов во время attach" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/12/threadid-managed-clr-v4-profiling-api.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn49fCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-7292880139832736134</id><published>2010-11-26T19:03:00.001+01:00</published><updated>2011-11-17T20:30:33.064+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.064+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>Определение разрядности работающего процесса</title><content type="html">Периодически тредуется код который сможет определить разрядность процесса по его id. Вот пример такого кода:&lt;/p&gt;&lt;pre class="brush:csharp"&gt;[DllImport("kernel32.dll", PreserveSig = true, SetLastError = true, ExactSpelling = true)]
private static extern unsafe bool _IsWow64Process(void* hProcess, out bool wow64Process);

private static bool IsWow64Process(Process process)
{
  if (process == null)
    throw new ArgumentNullException("process");
  if ((Environment.OSVersion.Version.Major == 5 &amp;&amp; Environment.OSVersion.Version.Minor &gt;= 1) || Environment.OSVersion.Version.Major &gt;= 6)
    unsafe
    {
      bool retVal;
      if (_IsWow64Process(process.Handle.ToPointer(), out retVal))
        return retVal;
    }
  return false;
}

public static string GetPointerSize(int processId)
{
  using (Process p = Process.GetProcessById(processId))
    if (IsWow64Process(p))
      return 4;
  switch (IntPtr.Size)
  {
  case 4:
    return IsWow64Process(Process.GetCurrentProcess()) ? 8 : 4;
  case 8:
    return 8;
  default:
    throw new ApplicationException("Unknown pointer size");
  }
}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-7292880139832736134?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/UbQjkKniVPvesoX08NXsOtFyRgg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbQjkKniVPvesoX08NXsOtFyRgg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/UbQjkKniVPvesoX08NXsOtFyRgg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/UbQjkKniVPvesoX08NXsOtFyRgg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/VsVexKL6FIA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/7292880139832736134/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=7292880139832736134" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7292880139832736134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7292880139832736134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/VsVexKL6FIA/id.html" title="Определение разрядности работающего процесса" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/id.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn4zfCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-7504277723870270747</id><published>2010-11-26T19:01:00.001+01:00</published><updated>2011-11-17T20:30:33.084+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.084+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="CLR v4.0 Attach" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Attach особенности реализации</title><content type="html">&lt;p&gt;Неприятной особенностью интерфейса ICLRMetaHost является то, что поодерживаются только процессы с той же разрядностью, что и у вашего приложения. Другими словами если ваше приложение 64 бита, то и работать вы сможете только с 64-х битными процессами, а если 32 бита, то - только с 32-я битными.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-7504277723870270747?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o0qJyOWWvGrbGcRY2GVbynWChxo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o0qJyOWWvGrbGcRY2GVbynWChxo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o0qJyOWWvGrbGcRY2GVbynWChxo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o0qJyOWWvGrbGcRY2GVbynWChxo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/1BzLf0IuK94" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/7504277723870270747/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=7504277723870270747" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7504277723870270747?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7504277723870270747?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/1BzLf0IuK94/iclrmetahost.html" title="Attach особенности реализации" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/iclrmetahost.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUICQns_eSp7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-1266705961330491583</id><published>2010-11-12T09:29:00.003+01:00</published><updated>2011-11-24T18:59:23.541+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T18:59:23.541+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><title>О важности default значений</title><content type="html">&lt;p&gt;Забавная ситуация происходит, пользователи нам пишут что &lt;i&gt;dotTrace Performance 4.0&lt;/i&gt; работает медленно. С другой стороны многие ли позователь имеют ясное и четкое представление о том чем отличается &lt;i&gt;sampling&lt;/i&gt; профиляция от &lt;i&gt;tracing&lt;/i&gt;? Понимают ли пользователи, что один вид профиляции принципиально сильно быстрее или медленнее другого и почему это так?&lt;/p&gt;&lt;a href="http://workblog.pilin.name/2010/11/dottrace-performance-4.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-1266705961330491583?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/1at4h0dRncla1aCkAvd1Ec5SypM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1at4h0dRncla1aCkAvd1Ec5SypM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/1at4h0dRncla1aCkAvd1Ec5SypM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/1at4h0dRncla1aCkAvd1Ec5SypM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/Ins_PufC694" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/1266705961330491583/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=1266705961330491583" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1266705961330491583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1266705961330491583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/Ins_PufC694/dottrace-performance-4.html" title="О важности default значений" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/dottrace-performance-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn84eSp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-4650244140091708955</id><published>2010-11-10T18:19:00.002+01:00</published><updated>2011-11-17T20:30:33.131+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.131+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Смена семантики COR_PRF_ENABLE_STACK_SNAPSHOT</title><content type="html">В &lt;i&gt;.NET Framework v2.0&lt;/i&gt; флаг &lt;i&gt;COR_PRF_ENABLE_STACK_SNAPSHOT&lt;/i&gt; входил в группу &lt;i&gt;COR_PRF_MONITOR_IMMUTABLE&lt;/i&gt; (флаг можно устанавливать один раз и только во время вызова&lt;i&gt; ICorProfilerCallback::Initialize&lt;/i&gt;), а в &lt;i&gt;.NET Framework v4.0&lt;/i&gt; уже входит в группу &lt;i&gt;COR_PRF_ALLOWABLE_AFTER_ATTACH&lt;/i&gt; (этом флагом можно манипулировать в любое время). Собственно напоролся на это.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-4650244140091708955?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yvDE0cQ73pVk3YJ-opwHteZlOkg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvDE0cQ73pVk3YJ-opwHteZlOkg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yvDE0cQ73pVk3YJ-opwHteZlOkg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yvDE0cQ73pVk3YJ-opwHteZlOkg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/_LdPt6eTIzY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/4650244140091708955/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=4650244140091708955" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4650244140091708955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4650244140091708955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/_LdPt6eTIzY/blog-post_10.html" title="Смена семантики COR_PRF_ENABLE_STACK_SNAPSHOT" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/blog-post_10.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn8-fip7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-3716435034978132798</id><published>2010-11-06T23:45:00.001+01:00</published><updated>2011-11-17T20:30:33.156+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.156+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><title>Несколько слов о пищеварении профайлеров</title><content type="html">&lt;p&gt;Получилось так, что главным заказчиком &lt;a href="http://www.jetbrains.com/profiler/"&gt;&lt;i&gt;dotTrace&lt;/i&gt;&lt;/a&gt; стал &lt;a href="http://www.jetbrains.com/resharper/"&gt;&lt;i&gt;ReSharper&lt;/i&gt;&lt;/a&gt;. А все потому что ReSharper очень серьезное и тяжелое приложение и не каждый профайлер способен проглотить в &lt;i&gt;tracing/line-by-line&lt;/i&gt; режимах такой кусок &lt;strike&gt;мяса&lt;/strike&gt; кода и в добавок выжить после такого издевательства.&lt;/p&gt;&lt;p&gt;На сегодня нашим классическим тестом на выносливость является: профиляция процесса загрузки солюшена &lt;i&gt;ReSharper 5.1/6.0&lt;/i&gt; под &lt;i&gt;Visual Studio 2008/2010&lt;/i&gt; с установленным релизным &lt;i&gt;ReSharper 5.1&lt;/i&gt;. Перед началом теста все кэши стираются. Расширенный тест предполагает, что после загрузки солюшена запускается анализ солюшена на всю ночь (желателен пустой 500Gb HDD для нашего снапшота).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-3716435034978132798?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QGx7F0NYdohEBoEj03h7621uQgU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGx7F0NYdohEBoEj03h7621uQgU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QGx7F0NYdohEBoEj03h7621uQgU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QGx7F0NYdohEBoEj03h7621uQgU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/1jCzNVKsKBQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/3716435034978132798/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=3716435034978132798" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3716435034978132798?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3716435034978132798?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/1jCzNVKsKBQ/dottrace-resharper.html" title="Несколько слов о пищеварении профайлеров" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/dottrace-resharper.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn8zeCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-7864276602390967493</id><published>2010-11-06T22:55:00.006+01:00</published><updated>2011-11-17T20:30:33.180+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.180+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Compact Framework" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Недоделки которые сильно портят мнение пользователя о продукте</title><content type="html">К моему глубокому сожалению поддержка профайлера в &lt;i&gt;.NET Compact Framework v3.5.7283&lt;/i&gt; содержит серьезную ошибку, которая увы &lt;b&gt;делает невозможным корректную профиляцию в &lt;i&gt;tracing&lt;/i&gt; режиме, если в коде кидаются &lt;i&gt;exception&lt;/i&gt; которые не ловятся в той же функции где возникают&lt;/b&gt;. Как выяснилось причина в том, что необходимые нам нотификации из &lt;i&gt;ICorProfilerCallback::ExceptionXXX&lt;/i&gt; просто не приходят. Получается, что наш продукт не виноват, но пользователю-то все равно кто виноват, программа же не работает. Обидно...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-7864276602390967493?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I96z5CmI3JfA13wpRkbu9zl7geg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I96z5CmI3JfA13wpRkbu9zl7geg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I96z5CmI3JfA13wpRkbu9zl7geg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I96z5CmI3JfA13wpRkbu9zl7geg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/0oDWGhk_XNA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/7864276602390967493/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=7864276602390967493" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7864276602390967493?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7864276602390967493?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/0oDWGhk_XNA/blog-post_06.html" title="Недоделки которые сильно портят мнение пользователя о продукте" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/blog-post_06.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUINQnc_eip7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-7082821119875843878</id><published>2010-11-03T16:53:00.004+01:00</published><updated>2011-11-24T18:59:53.942+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T18:59:53.942+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><title>О культуре работы с реестром</title><content type="html">&lt;p&gt;Хотел озвучить одну вещь, которая меня крайне раздражает в некоторых программах, а именно нежелание за собой чистить реестр после деинсталляции и после окончания работы. На днях очень тесно столкнулся с этим. У пользователей наш dotTrace переставал нормально работать сразу после использования сторонних профайлеров (однозначно это было замечено за &lt;a href="http://www.yourkit.com/"&gt;YourKit&lt;/a&gt; и &lt;a href="http://www.red-gate.com/"&gt;ANTS от RedGate&lt;/a&gt;).&lt;/p&gt;&lt;a href="http://workblog.pilin.name/2010/11/blog-post_03.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-7082821119875843878?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ayHt3ubVQc80VMW9JnO-v5K_TmQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ayHt3ubVQc80VMW9JnO-v5K_TmQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ayHt3ubVQc80VMW9JnO-v5K_TmQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ayHt3ubVQc80VMW9JnO-v5K_TmQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/6WcZjv1MdGQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/7082821119875843878/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=7082821119875843878" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7082821119875843878?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/7082821119875843878?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/6WcZjv1MdGQ/blog-post_03.html" title="О культуре работы с реестром" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/11/blog-post_03.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQnw_fip7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-6599656500829337643</id><published>2010-04-23T20:47:00.007+02:00</published><updated>2011-11-17T20:30:33.246+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.246+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><title>Выплыл однако</title><content type="html">Ух, 2 недели тяжелой, глубокой и безостановочной отладки и ... инструментация для Silverlight 4.0 практически готова. С другой стороны в этом есть и свои плюсы - получил гору бесценного опыта.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-6599656500829337643?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Iej6jmRQJ1RR7qcHJ_ADOn1Jd4Q/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iej6jmRQJ1RR7qcHJ_ADOn1Jd4Q/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Iej6jmRQJ1RR7qcHJ_ADOn1Jd4Q/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Iej6jmRQJ1RR7qcHJ_ADOn1Jd4Q/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/9FjEC-eWovI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/6599656500829337643/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=6599656500829337643" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6599656500829337643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/6599656500829337643?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/9FjEC-eWovI/2.html" title="Выплыл однако" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/04/2.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHSXs7eCp7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-3685014498510671069</id><published>2010-03-30T08:17:00.009+02:00</published><updated>2011-11-24T19:00:38.500+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T19:00:38.500+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Authentication" /><category scheme="http://www.blogger.com/atom/ns#" term="Remoting" /><title>Своя личная NTLM authentication в remoting (Часть №1)</title><content type="html">&lt;p&gt;Задача поставлена, теперь как бы ее так реализовать с использованием того-же &lt;span style="font-style:italic;"&gt;NegotiateStream&lt;/span&gt; но уже поверх remoting. Сперва наперво должно прийти понимание, что наш &lt;span style="font-style:italic;"&gt;NegotiateStream&lt;/span&gt; будет работать только с некоторыми стримами: NetworkStream или PipeStream. FileStream, MemoryStream не годятся категорически. Можно еще нагородить что-то свое, но это довольно долго. Сперва напишем интерфейс общения клиента и сервера.&lt;/p&gt;&lt;a href="http://workblog.pilin.name/2010/03/negotiatestream-remoting.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-3685014498510671069?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/REQqhA8NG1-74-JKzhOqjRz4y0o/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/REQqhA8NG1-74-JKzhOqjRz4y0o/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/REQqhA8NG1-74-JKzhOqjRz4y0o/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/REQqhA8NG1-74-JKzhOqjRz4y0o/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/o5yLQsXDTCE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/3685014498510671069/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=3685014498510671069" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3685014498510671069?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3685014498510671069?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/o5yLQsXDTCE/negotiatestream-remoting.html" title="Своя личная NTLM authentication в remoting (Часть №1)" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/03/negotiatestream-remoting.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQnwycCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-1166852337896467828</id><published>2010-03-30T08:07:00.006+02:00</published><updated>2011-11-17T20:30:33.298+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.298+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Metadata" /><title>Вольности в метаданных</title><content type="html">&lt;p&gt;Ну как всегда, напишешь что-нибудь хорошее, а на каких-то исходных данных оно не работает. Вот и с метаданными произошла такая засада: некоторые .NET компиляторы именуют главный &lt;span style="font-style:italic;"&gt;metadata stream&lt;/span&gt; не &lt;span style="font-weight:bold;"&gt;#~&lt;/span&gt; как все белые люди, а так сказать упрощенно, для бедных: &lt;span style="font-weight:bold;"&gt;#-&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-1166852337896467828?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qx181I7emHORMIuuw1GE8snTgKE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qx181I7emHORMIuuw1GE8snTgKE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qx181I7emHORMIuuw1GE8snTgKE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qx181I7emHORMIuuw1GE8snTgKE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/SoM3Cq3i9zY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/1166852337896467828/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=1166852337896467828" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1166852337896467828?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/1166852337896467828?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/SoM3Cq3i9zY/blog-post_30.html" title="Вольности в метаданных" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/03/blog-post_30.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUAFRHs6fyp7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-2801435829785028610</id><published>2010-03-08T10:05:00.012+01:00</published><updated>2011-11-24T19:01:55.517+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T19:01:55.517+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Authentication" /><category scheme="http://www.blogger.com/atom/ns#" term="C#" /><title>NTLM Authentication просто и со вкусом</title><content type="html">&lt;p&gt;Я довольно долго искал простой и стандартный путь для того чтобы произвести аутентификацию пользователя (текущий пользователь - вы не знаете его пароля и пользователь заданный при помощи &lt;span style="font-style:italic;"&gt;NetworkCredential&lt;/span&gt;) на удаленном компьютере. Хотел уже было все написать ручками через &lt;span style="font-style:italic;"&gt;AcquireCredentialsHandle/InitializeSecurityContext/AcceptSecurityContext/CompleteAuthToken&lt;/span&gt;, но совсем неожиданно нашел &lt;span style="font-style:italic;"&gt;NegotiateStream&lt;/span&gt; - который и занимается данным непростым процессом. По сему поводу написал маленький &lt;a href="http://rapidshare.com/files/360547147/AuthTest.rar.html"&gt;примерчик&lt;/a&gt; (пример работает только в пределах одного компьютера, если хотите большего, то замените  NamedPipeXxxStream на Socket).&lt;/p&gt;&lt;a href="http://workblog.pilin.name/2010/03/networkcredential.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-2801435829785028610?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/ROJEVjx9fp0EKQN5e9-cKGCAXnk/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ROJEVjx9fp0EKQN5e9-cKGCAXnk/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/ROJEVjx9fp0EKQN5e9-cKGCAXnk/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/ROJEVjx9fp0EKQN5e9-cKGCAXnk/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/alZx2NMUWKc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/2801435829785028610/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=2801435829785028610" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/2801435829785028610?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/2801435829785028610?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/alZx2NMUWKc/networkcredential.html" title="NTLM Authentication просто и со вкусом" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/03/networkcredential.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQn0_fSp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-4300024572497308659</id><published>2010-03-03T08:39:00.004+01:00</published><updated>2011-11-17T20:30:33.345+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.345+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Remoting" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><title>Object synchronization method was called from an unsynchronized block of code</title><content type="html">&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Симптомы:&lt;/span&gt; Посредством remoting вы создаете Mutex на удаленной машине все работает хорошо, но в один прекрасный момент при попытке вызвать ReleaseMutex вы получаете exception "Object synchronization method was called from an unsynchronized block of code". Ошибка плавающая, возникает время от времени и не на всех компьютерах.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Диагноз:&lt;/span&gt; ReleaseMutex вызывается не из того же thread что и вызов WaitOne так как никто не гарантирует, что отдельные remoting вызовы будут работать в том же thread.&lt;/p&gt;
&lt;p&gt;&lt;span style="font-weight:bold;"&gt;Лечение:&lt;/span&gt; Можно нагородить на удаленной машине объект, который будет обеспечивать тот же тред для вызывов WaitOne и ReleaseMutex. А можно просто заменить Mutex на Semaphore...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-4300024572497308659?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/4aTPr_lItaLOBafzTKmrJg9irds/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4aTPr_lItaLOBafzTKmrJg9irds/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/4aTPr_lItaLOBafzTKmrJg9irds/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/4aTPr_lItaLOBafzTKmrJg9irds/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/8NAoWnfyT-c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/4300024572497308659/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=4300024572497308659" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4300024572497308659?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4300024572497308659?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/8NAoWnfyT-c/remoting-mutex-releasemutex-exception.html" title="Object synchronization method was called from an unsynchronized block of code" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/03/remoting-mutex-releasemutex-exception.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUACSX47fSp7ImA9WhRREUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-4555641065745748894</id><published>2010-02-15T09:21:00.014+01:00</published><updated>2011-11-24T19:02:48.005+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T19:02:48.005+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET Framework" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Compact Framework" /><title>Выравнивание в CLR и в C/C++</title><content type="html">Столкнулся вот с проблемой: нужно было установить однозначное соответствие структуры в C/C++ и в CLR, структурка небольшая вот такого вида:&lt;pre class="brush:cpp"&gt;#pragma pack(push, PPP)
struct XXX
{
    LPVOID m_AAA;
    ULONG m_BBB;
    ULONG m_CCC;
    ULONG m_DDD;
};
#pragma pack(pop)
&lt;/pre&gt;&lt;a href="http://workblog.pilin.name/2010/02/cc-clr-pragma-packpush-ppp-struct-xxx.html#more"&gt;Дальше »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-4555641065745748894?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/I4spMYET3u6tWnmjHay7f7OMI2k/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4spMYET3u6tWnmjHay7f7OMI2k/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/I4spMYET3u6tWnmjHay7f7OMI2k/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/I4spMYET3u6tWnmjHay7f7OMI2k/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/33fSxc7-nMI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/4555641065745748894/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=4555641065745748894" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4555641065745748894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/4555641065745748894?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/33fSxc7-nMI/cc-clr-pragma-packpush-ppp-struct-xxx.html" title="Выравнивание в CLR и в C/C++" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/02/cc-clr-pragma-packpush-ppp-struct-xxx.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQno7eCp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-543689696932431477</id><published>2010-01-31T20:34:00.011+01:00</published><updated>2011-11-17T20:30:33.400+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.400+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="x64" /><category scheme="http://www.blogger.com/atom/ns#" term="Windows" /><title>Бережливой хозяйке на заметку</title><content type="html">Все знают функцию &lt;span style="font-style:italic;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms644904(VS.85).aspx"&gt;QueryPerformanceCounter&lt;/a&gt;&lt;/span&gt;, но как давеча выяснилось не все знают, что ее реализация под &lt;span style="font-style:italic;"&gt;Windows Vista x64&lt;/span&gt; использует операции с плавающей арифметикой и соответственно портит регистр &lt;span style="font-style:italic;"&gt;xmm0&lt;/span&gt; после своего вызова. &lt;span style="font-style:italic;"&gt;Windows7 x64&lt;/span&gt; такой пакости не делает.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-543689696932431477?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/l3BQKDk3yvyuxS-LhjzWtAChUA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l3BQKDk3yvyuxS-LhjzWtAChUA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/l3BQKDk3yvyuxS-LhjzWtAChUA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/l3BQKDk3yvyuxS-LhjzWtAChUA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/1GuS8DdXXkk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/543689696932431477/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=543689696932431477" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/543689696932431477?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/543689696932431477?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/1GuS8DdXXkk/queryperformancecounter-windows-vista.html" title="Бережливой хозяйке на заметку" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/01/queryperformancecounter-windows-vista.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQno5eyp7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-3772591078676731288</id><published>2010-01-27T13:50:00.005+01:00</published><updated>2011-11-17T20:30:33.423+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.423+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><category scheme="http://www.blogger.com/atom/ns#" term="Exception" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Нестыковочки</title><content type="html">&lt;p&gt;Неожиданно на одном компьютере dotTrace 4.0 начал валиться при профиляции безобидного приложения. Выяснилось, что виноват во всем класс &lt;span style="font-style:italic;"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.reflection.emit.dynamicmethod.aspx"&gt;System.Reflection.Emit.DynamicMethod&lt;/a&gt;&lt;/span&gt;. Оказывается при обработке исключений он сильно влияет на парность &lt;span style="font-style:italic;"&gt;ExceptionSearchFunctionLeave&lt;/span&gt; и &lt;span style="font-style:italic;"&gt;ExceptionUnwindFunctionLeave&lt;/span&gt; - вызовы &lt;span style="font-style:italic;"&gt;ExceptionSearchFunctionEnter&lt;/span&gt; и &lt;span style="font-style:italic;"&gt;ExceptionUnwindFunctionEnter&lt;/span&gt; напрочь отсутствуют. Профайлер не ожидавший такой подставы валится (в релизной сборке убрано большинство проверок для увеличения производительности). Сейчас все починено и работает...&lt;/p&gt;
&lt;p&gt;P.S. Подробности по этой проблеме &lt;a href="http://blogs.msdn.com/davbr/archive/2010/01/07/clr-v4-stuff-that-may-break-your-profiler.aspx"&gt;тут в разделе DynamicMethods&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-3772591078676731288?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CQkIn-eXH0YXavYBSQ851PMNQDA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CQkIn-eXH0YXavYBSQ851PMNQDA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CQkIn-eXH0YXavYBSQ851PMNQDA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CQkIn-eXH0YXavYBSQ851PMNQDA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/oTPJKY1hJo4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/3772591078676731288/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=3772591078676731288" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3772591078676731288?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/3772591078676731288?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/oTPJKY1hJo4/dottrace-4.html" title="Нестыковочки" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/01/dottrace-4.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHQno_eip7ImA9WhRSFUg.&quot;"><id>tag:blogger.com,1999:blog-8643966532123751496.post-5552443786243489241</id><published>2010-01-27T13:44:00.004+01:00</published><updated>2011-11-17T20:30:33.442+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T20:30:33.442+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotTrace" /><category scheme="http://www.blogger.com/atom/ns#" term="Silverlight" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET Profiling API" /><title>Новое в dotTrace 4.0</title><content type="html">Появилась поддержка Silverlight 4.0, пока не сделан отдельный тип аргумента, но я уже думаю об этом. Технически вся поддержка свелась к правильной установке CORECLR_ENABLE_PROFILING и CORECLR_PROFILER, прошу не путать с COR_ENABLE_PROFILING и COR_PROFILER.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8643966532123751496-5552443786243489241?l=workblog.pilin.name' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/RNn9ticBq_tIQUl_sNk6UaI6oXQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNn9ticBq_tIQUl_sNk6UaI6oXQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/RNn9ticBq_tIQUl_sNk6UaI6oXQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RNn9ticBq_tIQUl_sNk6UaI6oXQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/pilin/workblog/~4/i2eZ-ruuOiE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://workblog.pilin.name/feeds/5552443786243489241/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=8643966532123751496&amp;postID=5552443786243489241" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/5552443786243489241?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/8643966532123751496/posts/default/5552443786243489241?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/pilin/workblog/~3/i2eZ-ruuOiE/silverlight-4.html" title="Новое в dotTrace 4.0" /><author><name>Mikhail Pilin</name><uri>http://www.blogger.com/profile/08559056369876557207</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/-cBd3aZSu-Sw/TgDnF5Ek-pI/AAAAAAAABIA/FrlQepc5R0I/s220/TTT.png" /></author><thr:total>0</thr:total><feedburner:origLink>http://workblog.pilin.name/2010/01/silverlight-4.html</feedburner:origLink></entry></feed>

