<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7131692409180029567</id><updated>2011-04-21T23:58:03.706+03:00</updated><category term='BUGS'/><category term='HR'/><category term='Patterns'/><category term='me'/><category term='Management'/><category term='.NET'/><title type='text'>//TODO: use the brain</title><subtitle type='html'>List&amp;lt;Idea&amp;gt; ideas = new List&amp;lt;Idea&amp;gt;();</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>5</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7131692409180029567.post-2094679153493627934</id><published>2007-12-22T13:37:00.000+02:00</published><updated>2007-12-22T13:58:45.609+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='BUGS'/><title type='text'>XmlInclude и SoapInclude аттрибуты</title><content type='html'>&lt;span style="font-family:courier new;"&gt;&lt;span&gt;&lt;span&gt;Писал давеча Web Service и натолкнулся на баг в платформе .NET. Собственно суть проблемы:&lt;br /&gt;&lt;br /&gt;Два класса, базовый и наследник.&lt;br /&gt;&lt;br /&gt;public class Foo&lt;br /&gt;{&lt;br /&gt;    private string _name;&lt;br /&gt;    public string Name&lt;br /&gt;    {&lt;br /&gt;        get { return _name; }&lt;br /&gt;        set { _name = value; }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class Child : Foo {}&lt;br /&gt;&lt;br /&gt;Дальше – метод веб службы:&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public Foo GetFoo()&lt;br /&gt;{&lt;br /&gt;    Foo foo = new Child();&lt;br /&gt;    return foo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Вызываю – вылетает ошибка:&lt;br /&gt;System.InvalidOperationException: There was an error generating the XML document. ---&gt; System.InvalidOperationException: The type Child was not expected. Use the XmlInclude or SoapInclude attribute to specify types that are not known statically.&lt;br /&gt;&lt;br /&gt;Ну, вперёд, в MSDN. Ну, думаю, у меня всё-таки WebService, поэтому решил использовать SoapInclude. Почитал про SoapIncludeAttribute – там даже пример есть. Всё просто, надо только указать этот аттрибут веб методу с указанием типа потомка. Получаем:&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;[SoapInclude(typeof(Child))]&lt;br /&gt;public Foo GetFoo()&lt;br /&gt;{&lt;br /&gt;    Foo foo = new Child();&lt;br /&gt;    return foo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Вызываю метод – индейская народная изба, ФигВам называется. Та же ошибка. Перерыл MSDN, немножко погуглил – никакого результата. Дай думаю попробую XmlIncludeAttribute:&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;[XmlInclude(typeof(Child))]&lt;br /&gt;public Foo GetFoo()&lt;br /&gt;{&lt;br /&gt;    Foo foo = new Child();&lt;br /&gt;    return foo;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;И о чудо! Заработало. Порылся ещё в Интернете – да, действительно, не я один такой наивный, многие на это напарывались и единственное решение, которое было – именно то, что я изложил – использовать XmlInclude, а не SoapInclude.&lt;br /&gt;&lt;br /&gt;Вывод: Майкрософт – редиски. ;)&lt;br /&gt;&lt;br /&gt;&lt;span&gt;P.S. Может кто-то знает в чём причина этой проблемы и почему пример из MSDN не работает?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7131692409180029567-2094679153493627934?l=dm-cat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/2094679153493627934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7131692409180029567&amp;postID=2094679153493627934' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/2094679153493627934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/2094679153493627934'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/2007/12/xmlinclude-soapinclude.html' title='XmlInclude и SoapInclude аттрибуты'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7131692409180029567.post-7785839122452289819</id><published>2007-12-09T23:38:00.000+02:00</published><updated>2007-12-09T23:47:06.143+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HR'/><title type='text'>Трудности перевода</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Вот так вот начиналось предложение о новой работе:&lt;br /&gt;&lt;/span&gt;&lt;i&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;Opportunity for very god job.&lt;/strong&gt;&lt;br /&gt;Visma is the biggest software producer in Scandinavia.&lt;br /&gt;Sins two month we are independent part of it in Poland.&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Последнее предложение дословно: «Грехи два месяц мы являемся независимым подразделением её (компании Визма) в Польше»&lt;br /&gt;&lt;br /&gt;Крупнейший производитель софта в Скандинавии, а людей, знающих английский – нет. А может это шок, вызванный отделением от основного подразделения и обретением независимости? Вообщем, не вызывают у меня доверия такие объявления из-за пределов моей Родины.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7131692409180029567-7785839122452289819?l=dm-cat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/7785839122452289819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7131692409180029567&amp;postID=7785839122452289819' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/7785839122452289819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/7785839122452289819'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/2007/12/blog-post.html' title='Трудности перевода'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7131692409180029567.post-4302442382358994034</id><published>2007-12-04T12:58:00.000+02:00</published><updated>2007-12-04T13:54:33.782+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Patterns'/><title type='text'>Singleton в .NET</title><content type='html'>&lt;span style="font-family:courier new;"&gt;&lt;span&gt;Читаю тут книжку по C# и .NET 2.0. Столкнулся с новым для себя моментом - volatile keyword. Начал выяснять, где его можно использовать. Друг показал на статью &lt;a href="http://msdn2.microsoft.com/en-us/library/ms954629.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms954629.aspx&lt;/a&gt;. В этой статье рассказывается про потокобезопасную реализацию Singleton. Сначала в C++, потом решение портируется на Java и C#. Тут как раз и появляются volatile поля. Ну а в нагрузку и два if с lock.&lt;br /&gt;А дальше идёт другой пример на C#:&lt;br /&gt;sealed class Singleton&lt;br /&gt;{&lt;br /&gt;   private Singleton() {}&lt;br /&gt;   public static readonly Singleton Instance = new Singleton();&lt;br /&gt;}&lt;br /&gt;Мне не сильно нравится использовать прямой доступ к полям, поэтому я его немного изменил:&lt;br /&gt;public sealed class Singleton&lt;br /&gt;{&lt;br /&gt;   private static readonly Singleton _instance = new Singleton();&lt;br /&gt;   private Singleton() { }&lt;br /&gt;   public static Singleton Instance&lt;br /&gt;   {&lt;br /&gt;         get { return _instance; }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;Так, а что с потокобезопасностью в этом случае?&lt;br /&gt;Платформа .NET гарантирует потокобезопасную инициализацию статических членов. То есть гарантирует, что всегда будет создан только один экземпляр класса.&lt;br /&gt;А вот с lazy инициализацией не всё так просто. Статические поля инициализируются при первом обращении к любому члену класса. То есть, в данном случае, чтобы иметь lazy инициализацию, в классе должен быть только один статический публичный член, который и будет обеспечивать доступ к экзепляру. Только так мы сможем предотвратить инициализацию экземпляра раньше того момента, когда он может понадобиться.&lt;br /&gt;На мой взгляд, это не самое большое ограничение.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7131692409180029567-4302442382358994034?l=dm-cat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/4302442382358994034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7131692409180029567&amp;postID=4302442382358994034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/4302442382358994034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/4302442382358994034'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/2007/12/singleton-net.html' title='Singleton в .NET'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7131692409180029567.post-5491423041540801622</id><published>2007-08-30T22:08:00.000+03:00</published><updated>2007-08-30T22:13:06.717+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Management'/><title type='text'>А не покнутить ли кого?</title><content type='html'>&lt;span&gt;&lt;span style="font-family:courier new;"&gt;Я вот думаю, как заставить человека заняться самообразрванием, даже если он не понимает, что ему нехватает знаний. И при этом, в каждой попытке донести до него эту мысль, я встречаю такой отпор, что у меня опускаются руки. А парень, вообще-то неплохой.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7131692409180029567-5491423041540801622?l=dm-cat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/5491423041540801622/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7131692409180029567&amp;postID=5491423041540801622' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/5491423041540801622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/5491423041540801622'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/2007/08/blog-post_30.html' title='А не покнутить ли кого?'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7131692409180029567.post-6994175275713100063</id><published>2007-08-29T15:28:00.000+03:00</published><updated>2007-08-29T15:50:58.503+03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='me'/><title type='text'>Мы открылись.</title><content type='html'>&lt;span&gt;&lt;span style="font-family:courier new;"&gt;Вообщем и до меня докатилась волна ведения дневника. Пока я не решил, что тут буду писать (да и буду ли вообще), но всё-таки.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7131692409180029567-6994175275713100063?l=dm-cat.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dm-cat.blogspot.com/feeds/6994175275713100063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7131692409180029567&amp;postID=6994175275713100063' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/6994175275713100063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7131692409180029567/posts/default/6994175275713100063'/><link rel='alternate' type='text/html' href='http://dm-cat.blogspot.com/2007/08/blog-post.html' title='Мы открылись.'/><author><name>Dmitriy Barday</name><uri>http://www.blogger.com/profile/11842314655485961809</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>
