<?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:blogger='http://schemas.google.com/blogger/2008' 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-2983243187321326120</id><updated>2017-07-16T23:39:45.726+03:00</updated><category term="General"/><category term="Career"/><category term="Certifications"/><category term=".NET"/><category term="70-536"/><category term="Blog"/><category term="English"/><category term="Google"/><category term="Python"/><category term="Research"/><category term="Wikipedia"/><category term="Events"/><category term="Facebook"/><category term="IBM"/><category term="Lua"/><category term="MediaWiki"/><category term="NHibernate"/><category term="Open-source"/><category term="Reverse engineering"/><category term="Stackoverflow"/><category term="TopCoder"/><title type='text'>DixonD&#39;s workshop</title><subtitle type='html'>Another one blog about software development related stuff - .NET, Java and much more</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-5129983517695760662</id><published>2012-07-01T14:15:00.002+03:00</published><updated>2012-07-01T14:17:20.256+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Events"/><category scheme="http://www.blogger.com/atom/ns#" term="Lua"/><category scheme="http://www.blogger.com/atom/ns#" term="MediaWiki"/><category scheme="http://www.blogger.com/atom/ns#" term="Wikipedia"/><title type='text'>Wikimedia Berlin Hackathon 2012</title><content type='html'>Hi!&lt;br /&gt;&lt;br /&gt;Better late than never:) Exactly one month ago I had a chance to be present at &lt;a href=&quot;http://www.mediawiki.org/wiki/Berlin_Hackathon_2012&quot; target=&quot;_blank&quot;&gt;Wikimedia Berlin Hackathon 2012&lt;/a&gt;. To be short - the event was really great. If you have ever tried to do some programming for Wikipedia or to MediaWiki in general, I&#39;m sure you would find interesting talks for you. And you may find them now - videos from some of those talks are available on &lt;a href=&quot;http://vimeo.com/user7709672&quot; target=&quot;_blank&quot;&gt;the Vimeo channel of Wikimedia Deutschland&lt;/a&gt;. Later they should appear on &lt;a href=&quot;http://commons.wikimedia.org/wiki/Category:Hackathon_Berlin_2012&quot; target=&quot;_blank&quot;&gt;Wikimedia Commons&lt;/a&gt; also.&lt;br /&gt;&lt;br /&gt;First presentation that was the most interesting for me was about using &lt;a href=&quot;http://www.lua.org/&quot; target=&quot;_blank&quot;&gt;Lua&lt;/a&gt; for developing templates. Now MediaWiki (and thus Wikipedia) uses own domain-specific markup language for creating reusable parts (templates) of pages (articles, help pages, whatever). Being declarative language, it puts some restrictions for template creators. Lua introduces imperative programming instead. I already can see how some quite complex templates can be simplified a lot. Cannot wait when the Lua support will be included into the new MediaWiki release and deployed to Wikipedia:)&lt;br /&gt;&lt;br /&gt;You can watch videos of the Lua presentation &lt;a href=&quot;http://vimeo.com/43340919&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; or &lt;a href=&quot;http://vimeo.com/43478421&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Try it at &lt;a href=&quot;http://scribunto.wmflabs.org/&quot;&gt;http://scribunto.wmflabs.org/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Other very interesting talk for me was about new features of ResourceLoader (&lt;a href=&quot;http://www.mediawiki.org/wiki/ResourceLoader&quot; target=&quot;_blank&quot;&gt;the delivery system in MediaWiki for the optimized loading and managing of modules&lt;/a&gt;). Better management, better localization, better code sharing. Of course, I doubt that it could be exciting for you, if you have never dealt with development of gadgets for MediaWiki. If you did, check &lt;a href=&quot;https://commons.wikimedia.org/wiki/File:ResourceLoader_2_Berlin_Hackathon_2012.v1.pdf&quot; target=&quot;_blank&quot;&gt;the presentation slides&lt;/a&gt;. Too bad that the video recording is still not available. I hope it will.&lt;br /&gt;&lt;br /&gt;I was unlucky to catch a cold in Berlin, so I didn&#39;t attend all talks at the event. You know, the weather in Berlin with about 15&lt;span class=&quot;st&quot;&gt;°C, cold wind and sometimes rain was too cold for a guy who came there from sunny Crete:) Still I managed to do also some sightseeing in Berlin, including the huge &lt;a href=&quot;http://en.wikipedia.org/wiki/Berlin_Zoological_Garden&quot; target=&quot;_blank&quot;&gt;Berlin Zoo&lt;/a&gt; and the also huge &lt;a href=&quot;http://en.wikipedia.org/wiki/German_Museum_of_Technology&quot; target=&quot;_blank&quot;&gt;German Museum of Technology&lt;/a&gt;. Last one was right near the Berlin Hackathon venue and definitely worth visiting. Check it if you will ever be in Berlin, you will find a lot of exciting stuff there.&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;st&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;st&quot;&gt;At last I was to thank Wikimedia Foundation and &lt;/span&gt;&lt;span class=&quot;lqt-thread-user-signature&quot;&gt;&lt;a href=&quot;http://www.mediawiki.org/wiki/User:Sumanah&quot; title=&quot;User:Sumanah&quot;&gt;Sumana Harihareswara&lt;/a&gt;&lt;/span&gt;&lt;span class=&quot;st&quot;&gt; in particular for the invitation to attend the event and for the travel support as well. Thank you for the great time in Berlin!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/5129983517695760662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2012/07/wikimedia-berlin-hackathon-2012.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5129983517695760662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5129983517695760662'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2012/07/wikimedia-berlin-hackathon-2012.html' title='Wikimedia Berlin Hackathon 2012'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3187278690085092307</id><published>2012-05-12T00:32:00.000+03:00</published><updated>2012-05-12T00:32:39.612+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="Research"/><title type='text'>Blog resurrection</title><content type='html'>Hi my dear readers!&lt;br /&gt;&lt;br /&gt;Are you ready for one more try to recover my blog?:)&amp;nbsp; So first of all I think I should briefly describe what happened in my professional life in the last year when I was too lazy to blog. And then I&#39;ll note what topics will arise in my blog now because I&#39;m sure that you&#39;ll see some changes:)&lt;br /&gt;&lt;br /&gt;After that time when I wrote my last post in this blog I&#39;ve changed a job. Twice:) First time, I changed it to another IT company in my city Lviv just to try something new and to learn that new stuff. And I think I accomplished that goal. Also it was good opportunity to work in very good and collaborative team. Guys, you rock! Especially, in team building! :) Nice times, I&#39;ll always remember them.&lt;br /&gt;&lt;br /&gt;And I recently I&#39;ve changed my job once more. Why, you&#39;ll probably ask. Well, because I will do something different that I used to do before. I&#39;d say, very different. This time I will not work as software engineer. I will work as researcher. As &lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;novice&lt;/span&gt; &lt;span class=&quot;hps&quot;&gt;researcher:) To be more precise, Early Stage Researcher. And I&#39;ll work in the computer science field and specifically in the distributed computing field. If you want to know more, please, refer to our project&#39;s page: &lt;a href=&quot;http://www.ics.forth.gr/carv/transform/&quot; target=&quot;_blank&quot;&gt;TransForm&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;While that last job change was a significant change in my life because of totally different kind of work I&#39;ll do, another reason why it was so significant is that I moved to another country quite far from my home.So if you can read Ukrainian, you may find interesting another blog that I contribute to - &lt;a href=&quot;http://cretan-ukrainians.blogspot.com/&quot; target=&quot;_blank&quot;&gt;Українці на Криті&lt;/a&gt;. It contains impressions and feelings of me and my wife when we moved to the beautiful Crete island.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;short_text&quot; id=&quot;result_box&quot; lang=&quot;en&quot;&gt;&lt;span class=&quot;hps&quot;&gt;So I think following posts will be less related to pure programming topics like my previous posts. But I hope that you&#39;ll find here other interesting stuff related to the computer science and specifically to the field of my research. Briefly speaking I&#39;ll put here everything what I&#39;ll find interesting for me. So stay tuned! And wish me to not be so lazy as I was in the last year:)&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3187278690085092307/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2012/05/blog-resurrection.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3187278690085092307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3187278690085092307'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2012/05/blog-resurrection.html' title='Blog resurrection'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>2</thr:total><georss:featurename>Heraklion, Greece</georss:featurename><georss:point>35.329162 25.138526</georss:point><georss:box>35.2255275 24.9805975 35.432796499999995 25.2964545</georss:box></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-1015696118739856181</id><published>2011-06-26T20:26:00.000+03:00</published><updated>2011-06-26T20:26:57.956+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="TopCoder"/><title type='text'>Digest: TopCoder, Python and other stuff</title><content type='html'>Hi all! This blog post will be in form of a digest just to summarize all that I had to post in last two months:)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;&lt;a href=&quot;http://twitter.com/#%21/bcwright1217/status/80742148894490624&quot;&gt;Welcome back to TopCoder&lt;/a&gt;&quot;&lt;/b&gt; or &lt;b&gt;&quot;TopCoder: go up, go down&quot;.&lt;/b&gt; Recently I considered to resume my activity at TopCoder in those tracks that I&#39;ve participated before. While unfortunately I didn&#39;t manage to code some TC component due to lack of free time, I participated in both algorithm tracks - SRMs and Marathons. Actually second part of this paragraph&#39;s header is related to my &lt;a href=&quot;http://www.topcoder.com/tc?module=MemberProfile&amp;amp;tab=alg&amp;amp;cr=22690346&quot;&gt;Algorithm&#39;s rating&lt;/a&gt; :) Just look at it. I managed to reach my highest rating ever and then to get -300 :) I cannot actually explain why my results are so unstable, maybe it is just &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Shit_happens&quot;&gt;shit happens&lt;/a&gt;&quot;-behavior, or maybe sometimes I can reach &quot;clear mind&quot; state and sometimes I can&#39;t. You suggestions in comments are welcomed.&lt;br /&gt;&lt;br /&gt;As for marathons, my rating decrease was foreseeable because my aim was just to code working solutions in Python in free time and I accomplished that goal in two matches (one of those was unrated). This was done just to practice in Python and it&#39;s a little pity that there weren&#39;t too much Python solutions to compare with or to learn them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Learning Python.&lt;/b&gt; IMO the best way to learn new language/technology is to code as much as possible. Of course, you need to know some must-know stuff but don&#39;t accent reading many textbooks without actual coding, of course, if all what you need is not just to pass one of those dummy MS certificate exams:) So as I mentioned above I practiced Python in TC Marathons. With the same purpose I registered at &lt;a href=&quot;http://www.spoj.pl/&quot;&gt;SPOJ&lt;/a&gt; - the only major online judge that I know to have possibility to test solutions in Python. Though currently I don&#39;t have much to boast of on SPOJ :)&amp;nbsp; Also I&#39;m considering to start contributing to some Python open-source project, probably, &lt;a href=&quot;http://orange.biolab.si/&quot;&gt;Orange&lt;/a&gt; or &lt;a href=&quot;http://www.nltk.org/&quot;&gt;Natural Language Toolkit&lt;/a&gt;. Any considerations on the subject?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Master&#39;s degree.&lt;/b&gt; Yes, finally I&#39;ve got it:) Believe me or not, I&#39;m not sure how my degree title sounds like officially :-[ I think it&#39;s either Master of Applied Mathematics or Master in System Analysis and Management but let&#39;s wait when I hold my diploma in my hands:) Maybe something will change in future, but now my decision is to cease my further academic education for several reasons. This will help me concentrate on other things.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Important personal stuff.&lt;/b&gt; Well, this blog is intended to be purely with programming-related topics, but there is something that I cannot ignore to mention. I&#39;m going to get married!:) And it will happen in a month. That also explains why I was so busy lately:) You congratulations are welcomed in comments :-P</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/1015696118739856181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/06/digest-topcoder-python-and-other-stuff.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/1015696118739856181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/1015696118739856181'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/06/digest-topcoder-python-and-other-stuff.html' title='Digest: TopCoder, Python and other stuff'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-2324827337373710522</id><published>2011-04-26T15:57:00.000+03:00</published><updated>2011-04-26T15:57:08.458+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Certifications"/><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><title type='text'>Google Summer of Code 2011: didn&#39;t pass as well</title><content type='html'>Yesterday Google announced accepted student proposals of Google Summer of Code. To be honest I had a hope to pass at least on one of my applications, but unfortunately I both of them were unsuccessful. What I don&#39;t like in such selections that I don&#39;t have any feedback to know what&#39;s wrong with my skills actually:)&lt;br /&gt;&lt;br /&gt;What&#39;s is your opinion? Should you ask for feedback every time when you don&#39;t pass some interview/selection process etc? Please, share you thoughts in comments:)&lt;br /&gt;&lt;br /&gt;And some stats. As someone wrote in GSoC IRC channel there were ~5.7 thousands of applications from ~ 3.2 thousands students. And as you probable now &lt;a href=&quot;http://google-opensource.blogspot.com/2011/04/students-announced-for-2011-google.html&quot;&gt;1,116 students&lt;/a&gt; passed to coding phase. Not too large rivalry, I think - approximately only three people for one ticket. So I can make conclusion that either I haven&#39;t made good choice of projects that meet my qualification (I tried to get Python ones even I haven&#39;t too much experience on it), or my qualification weren&#39;t just enough to apply to global program of such level:) Well, no luck here and I should just move on.&lt;br /&gt;&lt;br /&gt;BTW I discovered that my Microsoft Certification Pack voucher &lt;a href=&quot;http://www.microsoft.com/learning/career/en/us/career-offer.aspx#certification&quot;&gt;expired on June 30, 2011&lt;/a&gt;, so I should take any MS exam by that date in order not to loose my precious money:) Seeking advice from &lt;a href=&quot;http://andriybuday.com/&quot;&gt;my friend&lt;/a&gt; I&#39;ll take &lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?id=70-562&quot;&gt;ASP.NET exam&lt;/a&gt; most probably. So if I don&#39;t pass this exam, he will be responsible for that :) Just kidding :)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/2324827337373710522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/04/google-summer-of-code-2011-didnt-pass.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/2324827337373710522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/2324827337373710522'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/04/google-summer-of-code-2011-didnt-pass.html' title='Google Summer of Code 2011: didn&#39;t pass as well'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-312310379080769412</id><published>2011-04-21T14:20:00.000+03:00</published><updated>2011-04-21T14:20:43.945+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="IBM"/><category scheme="http://www.blogger.com/atom/ns#" term="Research"/><title type='text'>IBM Great Minds 2011: my failed attempt</title><content type='html'>That is nothing new already but I want you to know that I&#39;m failed once more time:) This time it was &lt;a href=&quot;http://www.zurich.ibm.com/greatminds2011/&quot;&gt;Great Minds student internships 2011&lt;/a&gt; at IBM Research – Zurich.&lt;br /&gt;&lt;br /&gt;IBM Great Minds is a great opportunity for students who pursue the Master degree in computer science related fields. If your application is successful, you&#39;ll be able to try yourself as researcher in IBM research center with compensation adequate to living expenses.&lt;br /&gt;&lt;br /&gt;Of course I haven&#39;t had big chances to pass their application process, but definitely it was worth a try. At that moment I was really unsure (and now I&#39;m still a bit unsure) what way to choose&amp;nbsp; - to go in research or in software development. So I prepared required documents and asked vice-dean to sent them to IBM.&lt;br /&gt;&lt;br /&gt;Well, I didn&#39;t pass:) I tried to apply to similar program at &lt;a href=&quot;http://www.research.ibm.com/haifa/&quot;&gt;IBM Research – Haifa&lt;/a&gt; but I didn&#39;t pass there as well. As I said I had only vague hopes but anyway it was a little disappointment for me.&lt;br /&gt;&lt;br /&gt;It is to be regretted that I haven&#39;t found out what exactly my weak qualifications made me not to pass applications. Of course such info is always helpful&amp;nbsp; as you can take it into account and use for self-improvement. Unfortunately they didn&#39;t provide me that information even after I&#39;d asked them for that.&lt;br /&gt;&lt;br /&gt;Anyway I&#39;m optimistic about a lot of other great opportunities in the software development/computer science world:) Even if there are a bit less of them when you finish your master&#39;s:)&lt;br /&gt;&lt;br /&gt;The one who searches will find, and for the one who knocks, the door will be opened.</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/312310379080769412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/04/ibm-great-minds-2011-my-failed-attempt.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/312310379080769412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/312310379080769412'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/04/ibm-great-minds-2011-my-failed-attempt.html' title='IBM Great Minds 2011: my failed attempt'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3435242650964192950</id><published>2011-04-07T17:55:00.001+03:00</published><updated>2011-04-07T17:58:47.996+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Blog"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>New commenting system on my blog: DISQUS</title><content type='html'>My previous post showed me that I need threaded commenting system on my blog:) So after a bit of research I chose DISQUS mainly because I saw it before on some other blogs.&lt;br /&gt;&lt;br /&gt;So enjoy my new commenting system where you can reply to someone directly, like some comment, use your Twitter or Facebook account to log in and use other cool features :)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3435242650964192950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/04/new-commenting-system-on-my-blog-disqus.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3435242650964192950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3435242650964192950'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/04/new-commenting-system-on-my-blog-disqus.html' title='New commenting system on my blog: DISQUS'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-6311641927422939139</id><published>2011-04-03T00:34:00.001+03:00</published><updated>2012-05-07T17:56:13.674+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Google"/><category scheme="http://www.blogger.com/atom/ns#" term="Open-source"/><title type='text'>Google Summer of Code 2011: don&#39;t miss it!</title><content type='html'>It is almost unbelievable that I haven&#39;t heard about this program before, especially taking into account that this is already seventh year when it takes place. So what is that actually?&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://lh4.googleusercontent.com/-4ePJGA3SaZg/T6fg6c8nNJI/AAAAAAAADrE/IjudTo-_Ebk/s800/GSoC2011_198x128.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://lh4.googleusercontent.com/-4ePJGA3SaZg/T6fg6c8nNJI/AAAAAAAADrE/IjudTo-_Ebk/s1600/GSoC2011_198x128.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;In short it is a global program for students who would like to work on some interest open-source project, to get working experience and by the way to get money for that:) Yeah, Google pays $5000 to every successful participant. Not a big money actually for three months if you have more or less good job (I&#39;m talking about Ukraine, of course), but as for me it is quite possible that I&#39;d give up my work if I get a chance to work on a really interesting project.&lt;br /&gt;&lt;br /&gt;Anyway if you are still student as of April 25, 2011 and you would like to become a part of something interesting don&#39;t miss your chance! The deadline for an application is April 8. Not too much time&#39;s left. Where to start? Read the &lt;a href=&quot;http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/faqs&quot;&gt;Frequently Asked Questions&lt;/a&gt; page, check out &lt;a href=&quot;http://www.google-melange.com/gsoc/program/accepted_orgs/google/gsoc2011&quot;&gt;the list of 175 mentoring organizations&lt;/a&gt; and their ideas lists and go ahead with your application!&lt;br /&gt;&lt;br /&gt;Even at first sight I found few ideas that could be interesting for me. What&#39;s about you? Share your thoughts in the form of comments! :)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/6311641927422939139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/04/google-summer-of-code-2011-dont-miss-it.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/6311641927422939139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/6311641927422939139'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/04/google-summer-of-code-2011-dont-miss-it.html' title='Google Summer of Code 2011: don&#39;t miss it!'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.googleusercontent.com/-4ePJGA3SaZg/T6fg6c8nNJI/AAAAAAAADrE/IjudTo-_Ebk/s72-c/GSoC2011_198x128.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-7866336316212841176</id><published>2011-01-09T01:47:00.000+02:00</published><updated>2011-01-09T01:47:32.043+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Facebook"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="Wikipedia"/><title type='text'>Learning of Python: Pywikipedia and Facebook Hacker Cup</title><content type='html'>Being a student of computer science related department in Ukraine usually means that you have been familiarized with a bunch of programming languages. Of course generally it means that you don&#39;t know any of them unless you&#39;ll learn some on yours own:) As for me I could say that I&#39;m really familiar more or less with only most popular languages. So it occurred to me that learning something totally new language will do me good. I think that could help you to expand your horizon that is always good idea in my opinion.&lt;br /&gt;&lt;br /&gt;So that &quot;something totally new&quot; for me was Python) Actually I got involved in Python because of use of &lt;a href=&quot;http://meta.wikimedia.org/wiki/Pywikipediabot&quot;&gt;Pywikipedia framework&lt;/a&gt; (I don&#39;t think that cheating by editing of save files for &lt;a href=&quot;http://en.wikipedia.org/wiki/Severance:_Blade_of_Darkness&quot;&gt;Blade of Darkness&lt;/a&gt; should be counted:)). This is quite good framework for doing some useful automatic edits to Wikipedia with bot account. Of course running of scripts doesn&#39;t require knowledge of Python itself, but the time of learning comes when standard features are not enough or you want to tune standard scripts for yourself. First tries were like &quot;copy these lines from here and that lines from there&quot;. Oh, you know, you can work at least on junior position at some software companies with such &quot;coding&quot; skills:) But the appetite comes in eating, so I decided to read tutorial to learn something new and systematize that I knew already. &lt;br /&gt;&lt;br /&gt;I must say that sometimes I was impressed with Python features and how easily some things can be done with them. Of course you know problem about swapping two variables without explicit use of other variables. Can it be done more simple than in Python?) Just look:&lt;br /&gt;&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(246, 248, 255); color: #000020;&quot;&gt;a&lt;span style=&quot;color: #308080;&quot;&gt;,&lt;/span&gt; b &lt;span style=&quot;color: #308080;&quot;&gt;=&lt;/span&gt; b&lt;span style=&quot;color: #308080;&quot;&gt;,&lt;/span&gt; a&lt;br /&gt;&lt;/pre&gt;Do you want the list of squares? Short and simple:&lt;br /&gt;&lt;pre style=&quot;background: none repeat scroll 0% 0% rgb(246, 248, 255); color: #000020;&quot;&gt;squares &lt;span style=&quot;color: #308080;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #308080;&quot;&gt;[&lt;/span&gt;t&lt;span style=&quot;color: #308080;&quot;&gt;*&lt;/span&gt;t &lt;span style=&quot;color: #200080; font-weight: bold;&quot;&gt;for&lt;/span&gt; t &lt;span style=&quot;color: #200080; font-weight: bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #e34adc;&quot;&gt;xrange&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #008c00;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;,&lt;/span&gt; maxN&lt;span style=&quot;color: #308080;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: #308080;&quot;&gt;]&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;Of course these examples don&#39;t show all power of Python, this is just the first things that came to my mind. For more cool examples look, for example, into this StackOverflow question: &lt;a href=&quot;http://stackoverflow.com/questions/101268/hidden-features-of-python&quot;&gt;Hidden features of Python&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And additional note about official documentation. It is really good for Python newcomers and explain things with lot of examples and good explanations. Recommend! (ha-ha, looks like as feedback on Ebay:))&lt;br /&gt;&lt;br /&gt;As conclusion I want to say that if you never programmed in other languages than classic imperative compilable (Java, .NET languages etc), then you just must to try something really different. At least for comparison. And who knows, maybe you won&#39;t return back;) &lt;br /&gt;&lt;br /&gt;P.S. And probably you&#39;ll ask what is about Facebook Hacker Cup that is mentioned in title? Simple - this is first contest that I&#39;m trying to compete in with Python:) I think that I&#39;ll write separate post about it. And Pywikipedia too)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/7866336316212841176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2011/01/learning-of-python-pywikipedia-and.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/7866336316212841176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/7866336316212841176'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2011/01/learning-of-python-pywikipedia-and.html' title='Learning of Python: Pywikipedia and Facebook Hacker Cup'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3823323753509647944</id><published>2010-12-20T20:46:00.000+02:00</published><updated>2010-12-20T20:46:19.062+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="Reverse engineering"/><title type='text'>.NET code protection. Can it be achieved?</title><content type='html'>Recently I had a challenge that consisted in some sort of cracking. I won&#39;t say what was that application as it doesn&#39;t matter for this post. As you already understood the application was built on top of .NET Framework, version 2.0 actually.&lt;br /&gt;&lt;br /&gt;What do you do if you want to dig in .NET app? Of course you use some reflector for that purpose, so do I. But that was the first time when &lt;a href=&quot;http://www.red-gate.com/products/dotnet-development/reflector/&quot;&gt;Reflector&lt;/a&gt; just threw the meaningless exception when I tried to view the code. When I investigated the application a bit more, I found that it was protected with some tool called CodeVeil.&lt;br /&gt;&lt;br /&gt;OK, having a little experience with packers for native code the first thing that I did was getting the memory dump from running application:) Simple? Of course, and you will be probably surprised to know how often it works with number of cheep application packers. And I hoped that it would work in my case because app was created in 2008 by some student which possibly just used the first .NET protector that he have found in the web. It&#39;s a pity but it hasn&#39;t work. As I investigated later on that version of CodeVeil (probably 1.2) encrypts methods in .NET executable. So when you run application and some method is called, then CodeVeil decrypts method&#39;s code, execute it, and encrypt back. That is why straightforward memory dump cannot help here.&lt;br /&gt;&lt;br /&gt;So what can be done in this situation?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Set breakpoint on encryption code and make memory dump then.&lt;/li&gt;&lt;li&gt;Patch the encryption code&amp;nbsp; in memory with anything so after executing of some method it will be possible to grab the code.&lt;/li&gt;&lt;/ol&gt;I tried first way with my old friend &lt;a href=&quot;http://www.ollydbg.de/&quot;&gt;OllyDbg&lt;/a&gt; but with no luck. As I understood CodeVeil also adds some antidebugging tricks and I didn&#39;t manage to deal with them with my lame experience in reverse engineering. &lt;br /&gt;&lt;br /&gt;So how has that story finished? Ok, in some cases when you cannot break the code you can use it:) And that was my case)&lt;br /&gt;&lt;br /&gt;In general I can say that yes, you can protect your .NET code from such lames as me. Anyway I think that for experienced cracker it is just matter of time to break your protection. So it is your decision if it is worth to pay for some good protection for your code.</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3823323753509647944/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/12/net-code-protection-can-it-be-achieved.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3823323753509647944'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3823323753509647944'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/12/net-code-protection-can-it-be-achieved.html' title='.NET code protection. Can it be achieved?'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-8787497409794688247</id><published>2010-12-13T15:05:00.001+02:00</published><updated>2012-05-07T17:58:09.928+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>Mr. Free Time, could you visit me more often?:)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.flickr.com/photos/atportas/329630852/&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;160&quot; src=&quot;http://lh3.googleusercontent.com/-UQlq80vBUT0/T6fg6Shu8qI/AAAAAAAADrI/VLsPHIr0Wnw/s200/329630852_fd3e6d7341.jpg&quot; width=&quot;160&quot; /&gt;&lt;/a&gt;&lt;/div&gt;More than two months... More than two months I haven&#39;t written to blog. Studies, work, different things - that&#39;s all that makes my free time close to non-existent.&lt;br /&gt;&lt;br /&gt;Other cause why I didn&#39;t write to blog is laziness. Don&#39;t let it get you! At first you think something like &quot;OK, I&#39;m too tired today, maybe I&#39;ll do it tomorrow&quot;, later on you think &quot;OK, it&#39;s a busy week, I think I can do it at the weekend&quot;. When weekend comes you think that you are very tired and you should relax on the weekend. Familiar situation?:)&lt;br /&gt;&lt;br /&gt;But now I&#39;m back) I hope that I&#39;ll manage to write more often in the coming days. About different things - studies, programming languages, ideas. I&#39;m here, I&#39;m still alive and with working brain:) Look for my next posts.</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/8787497409794688247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/12/mr-free-time-could-you-visit-me-more.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8787497409794688247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8787497409794688247'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/12/mr-free-time-could-you-visit-me-more.html' title='Mr. Free Time, could you visit me more often?:)'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.googleusercontent.com/-UQlq80vBUT0/T6fg6Shu8qI/AAAAAAAADrI/VLsPHIr0Wnw/s72-c/329630852_fd3e6d7341.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3886297405498460979</id><published>2010-10-04T22:37:00.002+03:00</published><updated>2012-05-07T17:59:44.232+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Certifications"/><title type='text'>Brainbench Paper Certificate</title><content type='html'>Few months ago I heard for the first time about Brainbench online exams from friend of mine. So just for fun I tried to pass one of them which was free of charge at that time (I don&#39;t know if it is now). It was C# exam and I passed it with score 4.02 and it was enough to earn &quot;Master&quot; level by Brainbench gradation. Actually it was not too really hard. It is allowed by rules that you can use Internet resources during exam and it helps actually if you know where to search;) &lt;br /&gt;In order to get any satisfaction from this achievement, I ordered paper certificate so that I can put it into the frame and hang on the wall when I&#39;ll have my own apartment:) Here it is how it looks like:&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://lh4.googleusercontent.com/-_f5t6pqbHvI/T6fg7jtqefI/AAAAAAAADrc/QAQgCWaGbpw/s1600/Cert.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;305&quot; src=&quot;http://lh4.googleusercontent.com/-_f5t6pqbHvI/T6fg7jtqefI/AAAAAAAADrc/QAQgCWaGbpw/s400/Cert.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;It looks not very astonishing especially after my local post service:) Maybe if the big red label &quot;FRAGILE: DO NOT BEND&quot; was wrote in Ukrainian, it could help. But I&#39;m not really sure on this matter...</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3886297405498460979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/10/brainbench-paper-certificate.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3886297405498460979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3886297405498460979'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/10/brainbench-paper-certificate.html' title='Brainbench Paper Certificate'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.googleusercontent.com/-_f5t6pqbHvI/T6fg7jtqefI/AAAAAAAADrc/QAQgCWaGbpw/s72-c/Cert.jpg" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-8818485842512478661</id><published>2010-10-02T23:26:00.000+03:00</published><updated>2010-10-02T23:26:09.996+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="English"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>English schools in Lviv</title><content type='html'>Oh, it has been almost a month since I wrote last blog post. It happens - you have many things during the day (work, university etc) and in the evening when you come home then you do not want to do anything. So promised post about English schools failed to appear &quot;in the next days&quot; as I wrote:) Let&#39;s try to fix this)&lt;br /&gt;&lt;br /&gt;If you are the constant reader of my blog (one of the few of them) then you should already know that about a month ago I decided to start improving my English in some of the available schools in &lt;a href=&quot;http://en.wikipedia.org/wiki/Lviv&quot;&gt;Lviv&lt;/a&gt;, the city where I live now. So I made quick search through the web and marked locations of found English courses using Google Maps. If it is useful for you, you could find this map &lt;a href=&quot;http://maps.google.com/maps/ms?ie=UTF&amp;amp;msa=0&amp;amp;msid=%20109442258403261651950.00048d8fee9589d3c1741&quot;&gt;here&lt;/a&gt;. Of course, this map is not full and there is other schools and private tutors as well - you are welcome to improve it.&lt;br /&gt;&lt;br /&gt;As for me the main criterion for selecting the schools was the distance from my work in order to spend less time for traveling. Therefore I chose between two schools - &lt;a href=&quot;http://ihlviv.com/index.php?lang=en&quot;&gt;International House&lt;/a&gt; and &lt;a href=&quot;http://ames.org.ua/index.php?id=1&amp;amp;L=1&quot;&gt;American English School&lt;/a&gt;. Both schools seem to be good so I think that you will be not wrong if you&#39;ll chose any of them. But my other requirement was the possibility to study in the morning or afternoon so that it will not interfere with the classes at the university. At International House I was told that morning classes will be in that case if they will get enough students. Hm, I didn&#39;t like the idea to pay for entrance test when I don&#39;t even know if it will be possible for me to study in time that they chose. So I enrolled in the American English School.&lt;br /&gt;&lt;br /&gt;As yet I&#39;m satisfied with the English classes. We are only 4 students in the group, so the teacher can devote enough attention to each of us. We teach grammar, some vocabulary, talk about different things. As part of homework we read English authentic literature, and then we discuss it in the class.&lt;br /&gt;&lt;br /&gt;So I have some practice speaking English, and it makes me very happy:) But this is still not enough for me. Actually we have also speaking club at school on Saturdays but I usually cannot visit it. Do you know other ways to practice speaking English in non English speaking country? Did someone have the experience of using sites like &lt;a href=&quot;http://sharedtalk.com/&quot;&gt;sharedtalk.com&lt;/a&gt;? Any comments will be appreciated.</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/8818485842512478661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/10/english-schools-in-lviv.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8818485842512478661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8818485842512478661'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/10/english-schools-in-lviv.html' title='English schools in Lviv'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-5769494385242710604</id><published>2010-09-09T00:32:00.001+03:00</published><updated>2011-04-03T01:01:13.746+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="70-536"/><category scheme="http://www.blogger.com/atom/ns#" term="Certifications"/><title type='text'>More about 70-536 exam</title><content type='html'>As I wrote in previous post I passed Microsoft &lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?id=70-536&quot;&gt;exam 70-536&lt;/a&gt;. Now I want to share some additional thoughts and tips about it.&lt;br /&gt;&lt;br /&gt;So, how to prepare to it? First of all I think you should start with corresponding &lt;a href=&quot;http://www.microsoft.com/learning/en/us/book.aspx?ID=12915&amp;amp;locale=en-us&quot;&gt;Self-Paced Training Kit&lt;/a&gt; provided by Microsoft Press. Be sure to own the second edition and check the &lt;a href=&quot;http://support.microsoft.com/kb/959409/en-us&quot;&gt;errata&lt;/a&gt; when reading. It can be good starting point but actually it is not required to read this book. Why? Because it is not enough to read it.&lt;br /&gt;&lt;br /&gt;Regardless whether you read book or not the MSDN Library is the best resource ever. Yes, for some topics it still lacks the information but it is rather the exception from the rule. It is good to check &lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-536&amp;amp;locale=en-us#tab2&quot;&gt;objectives&lt;/a&gt; of the exam and put all links to needed MSDN articles to some spreadsheet. It will be your checklist and helper in learning. Thanks for this idea to &lt;a href=&quot;http://www.blogger.com/profile/09993224722551065651&quot;&gt;Niall Merrigan&lt;/a&gt; whose Excel file I used as the base of mine. I imported it to Google Docs and significantly updated it when studying. If you&#39;ll find it useful you can access it &lt;a href=&quot;https://spreadsheets.google.com/ccc?key=0AhmCyM-NQ9pMdEFUYkg3cVk1TGR4bXRFa3pnVGhvUFE&amp;amp;hl=en&amp;amp;authkey=CK2ok4AK&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What else? Use practice tests. You can find quite lot of them in the free access on the Web. As for me I used it to check what fields of exam objectives I&#39;m bad in. And then I studied or refreshed about it with help of my checklist.&lt;br /&gt;&lt;br /&gt;Actually it is all about the way I used to prepare. Last tip - be sure to pay attention to details. Like that GZipStream uses format which includes a cyclic redundancy check value in opposite to DeflateStream. I can provide more examples but I&#39;m sure that you got the whole point.&lt;br /&gt;&lt;br /&gt;As for exam I finished it for an hour instead of provided pure two and half hours for answering the questions. Some questions I didn&#39;t know for sure but I don&#39;t think that I could answer it correctly if I&#39;ve meditated on it for more time. As I understood for one question I even changed answer to incorrect one, still it didn&#39;t matter actually.&lt;br /&gt;&lt;br /&gt;I still have voucher for another one exam, but I&#39;m not sure which to choose. I want to pass all of them!:)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/5769494385242710604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/09/more-about-70-536-exam.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5769494385242710604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5769494385242710604'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/09/more-about-70-536-exam.html' title='More about 70-536 exam'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3907478392472840776</id><published>2010-09-07T00:55:00.002+03:00</published><updated>2011-04-03T00:58:53.852+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="70-536"/><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="English"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>One day of my life</title><content type='html'>They say that Monday is a hard day. Yes, it was that for me today. I took day off from my work to clear off some business. Now I&#39;m tired and going to sleep but anyway I made decision to make post to by blog which was not updated frequently lately.&lt;br /&gt;&lt;br /&gt;Today I had my first lesson in English school. I&#39;ll have two lessons in a week in the morning so I think it should be not too hard to find time for them. I liked my group, I think, and my teacher particularly. Maybe in next days when I&#39;ll have free time I&#39;ll post expanded post for this matter.&lt;br /&gt;&lt;br /&gt;The next thing today was my scheduled Microsoft &lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?id=70-536&quot;&gt;exam 70-536&lt;/a&gt;. Yeah, I passed it!:) It was not too hard, but I think it is because I studied hard last few weeks. Anyway I think that my result with score 907 could be better - some topics was not learnt thoroughly. BTW I was surprised that I got maximum score in section about security as I thought that it was the topic which I knew worst. I&#39;m also planning to share my thoughts how to prepare, my checklist etc in the separate blog post. Maybe tomorrow, I don&#39;t know.&lt;br /&gt;&lt;br /&gt;And last. I had the conversation today about the possibility to continue studying for PhD after finishing my Master program. But it seems that I need to work hard to accomplish this, so actually I&#39;m not confident if it really needed for me, I&#39;m still in doubt. If you have any opinions for this matter, please share them with me in comment, I&#39;ll really appreciate that.&lt;br /&gt;&lt;br /&gt;Thanks for you time reading this and good night!;)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3907478392472840776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/09/one-day-of-my-life.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3907478392472840776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3907478392472840776'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/09/one-day-of-my-life.html' title='One day of my life'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-6904609662154746309</id><published>2010-08-23T21:42:00.001+03:00</published><updated>2011-04-03T01:01:02.252+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="70-536"/><category scheme="http://www.blogger.com/atom/ns#" term="Certifications"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>Microsoft Certification Exam 70-536: scheduled</title><content type='html'>Today I scheduled &lt;a href=&quot;http://www.microsoft.com/learning/en/us/exam.aspx?id=70-536&quot;&gt;exam 70-536 &quot;TS: Microsoft .NET Framework - Application Development Foundation&quot;&lt;/a&gt; for myself on September 6. So cross your fingers on that day!:) &lt;br /&gt;I trying to prepare to it in the evenings after work, but usually I&#39;m tired and the material is boring in many cases, so preparing is not going very well. Anyway I hope that I&#39;ll overcome my laziness and will be ready on time.&lt;br /&gt;&lt;br /&gt;Recently I got email from Microsoft about &lt;a href=&quot;http://www.microsoft.com/learning/Career/en/us/career-offer.aspx&quot;&gt;new offer&lt;/a&gt; - you can buy up to 5 exams together and get quite good discount as well as Second Shot voucher for each exam. Actually there are two type of discounts - 15% is you purchased 2 or 3 exams, and 20% if you purchased 4 or 5. There is also the special offer - you can pay additional 15% to regular price of single exam and get Second Shot for that. As for me the most interesting choice is to buy 2 exams - you do not need to pay large amount at once and you loose only 5% difference between discounts. So I purchased 2-exam pack and really happy to have additional chance for passing exam.&lt;br /&gt;&lt;br /&gt;As for how to prepare I think it will be more fair to share my experience if I&#39;ll pass exam. Really, who cares about advises from the failure?:) &lt;br /&gt;&lt;br /&gt;Wish me good luck and great patience!)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/6904609662154746309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/microsoft-certification-exam-70-536.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/6904609662154746309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/6904609662154746309'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/microsoft-certification-exam-70-536.html' title='Microsoft Certification Exam 70-536: scheduled'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-3854407593765504178</id><published>2010-08-14T22:46:00.000+03:00</published><updated>2010-08-14T22:46:35.842+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Stackoverflow"/><title type='text'>How to hit the daily reputation cap on Stackoverflow</title><content type='html'>About two weeks ago when I had the free time at work (yeah, it happens sometimes:)) I carried out some kind of an experiment. I wanted to check if it is too difficult to reach the maximum daily reputation on &lt;a href=&quot;http://stackoverflow.com/&quot;&gt;stackoverflow.com&lt;/a&gt;, the extremely popular a question-and-answer website about the programming related stuff. I think you at least heard about it, most probably you saw it many times in search results when googling some programming question:)&lt;br /&gt;&lt;br /&gt;All things on site are around the reputation points. The more you&#39;ll earn - more cool you&#39;ll be:) You can earn point if you questions or/and answer will be voted up by other members of the site. According to FAQ &quot;you can earn a maximum of &lt;b&gt;200&lt;/b&gt; reputation per day (although     accepted answers are immune to this limit)&quot;. So I wondered how hard it is.&lt;br /&gt;&lt;br /&gt;Actually it is not. You just have to spend some time on it or to post few but very useful answers. I&#39;ll describe a couple of ways of the reputation earning I figured out.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Easy question - fast answer.&lt;/b&gt; Actually you can earn quite good amount of point answering the trivial questions that usually asked by newbies in some technologies. Such questions receive relatively many answers and to earn the most point you should post on of the first and most full answers. Be aware, for such type of questions first answers appears for about one minute or even sooner:) The best strategy is to post right but not well-explained answer, and then to expand answer by editing it. Anyway hurry up!)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Situation-specific questions.&lt;/b&gt; The bunch of questions are like &quot;I did this, expected that, but I got...&quot;. Probably you will be able to answer such questions only if you encountered the same situation in the past. In other case you should spend the pretty much time to investigate it (unless you are the real guru:)), and I think you just will not want to do it (only if you are not an &lt;a href=&quot;http://en.wikipedia.org/wiki/Altruist&quot;&gt;altruist&lt;/a&gt;). Anyway you will not receive too much points for your answer (if any), because most likely it will be not useful for most other site members. More specific question will be - less point you&#39;ll earn, it is straightforward I think.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Subjective questions. &lt;/b&gt;Some questions posted on the site cannot really have the right answer. Too subjective questions will be closed at all, but some of them will be not if the community will consider this question and answers to it as useful. In this case you earn reputation if you&#39;ll post your original opinion that will be appreciated by other members.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Questions. Your questions.&lt;/b&gt; Of course you can ask your own questions and earn points for that. As for me I&#39;m only asking questions when I really need answer for them. IMO it is strange to make questions intentionally for earning points) But if you are fine with it, well...&lt;br /&gt;&lt;br /&gt;So how went the experiment? On the first day I received &lt;b&gt;175&lt;/b&gt; points, and on the second day&amp;nbsp;- &lt;b&gt;237&lt;/b&gt; points and my &lt;a href=&quot;http://stackoverflow.com/badges/144/mortarboard&quot;&gt;Mortarboard&lt;/a&gt; badge (remember that accepted answers are immune).&lt;br /&gt;&lt;br /&gt;Try hard and maybe some day you will be such famous man as &lt;a href=&quot;http://stackoverflow.com/users/22656/jon-skeet&quot;&gt;Jon Skeet&lt;/a&gt;! :)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/3854407593765504178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/how-to-hit-daily-reputation-cap-on.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3854407593765504178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/3854407593765504178'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/how-to-hit-daily-reputation-cap-on.html' title='How to hit the daily reputation cap on Stackoverflow'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-915255541173849627</id><published>2010-08-12T09:35:00.001+03:00</published><updated>2011-04-03T00:59:17.243+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Career"/><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>The job interview. My ambiguous impressions</title><content type='html'>Recently I was invited for the job interview to some software company in my city. Actually I have the work now and I didn&#39;t plan to change it in the nearest time. But on the other hand why not to try if there is such opportunity? So I decided to go for it. It turns out now that it was a good decision as I learnt some things that can help me in the future study and the carrier growth.&lt;br /&gt;&lt;br /&gt;I don&#39;t want to write about what exact questions were asked etc. I&#39;ll try to share with you my impressions and what conclusions I came to from this story. But I should notice that I do NOT want to accuse anybody in anything. But some bit of the criticism shouldn&#39;t harm anyone, should it?:)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Recruiters.&lt;/b&gt; &lt;br /&gt;There were two of them. (massive attack?:) ) I believe that this part went quite well except some things.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I really didn&#39;t like that my recruiters didn&#39;t bother even to read whole my CV. For example, one of the recruiters asked me whether I took some online tests like Brainbench. Damn, yes, and that was mentioned in my document! And this is just example...&lt;/li&gt;&lt;li&gt;About the same Brainbench. There was noted in my CV that I got &quot;Brainbench Master Certification in C#&quot; and the recruiter complained that I didn&#39;t mention the exact score. When I answered that it was 4.02 she said &quot;Fine! It is very good result!&quot; What then is not &quot;good&quot; result if the master level &lt;span name=&quot;bb_tests_qa&quot;&gt;requires to pass with a score of at least 4.0?:) Why are you asking about this test while are you not confident about it? (Actually I have no doubt that this test has no real value at all but it is subject for another story).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name=&quot;bb_tests_qa&quot;&gt;I will be very appreciate if the recruiter try to investigate what is wrote in CV before the interview. Yes, I know that almost all people never heard about TopCoder, but is it too difficult just to google it and to get some basic information? I think it will the plus for me if they would know about Topcoder&#39;s standards and practices.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span name=&quot;bb_tests_qa&quot;&gt;And last. I really didn&#39;t like experiments like the provocative questions to view reaction of the interviewee. &lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;Technical interviewers.&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Yeah, it will be very cool if in the next time someone will notify me in advance that I&#39;ll have technical interviews in the same day:) Especially in both Java and .NET:)&lt;/li&gt;&lt;li&gt;I&#39;m very disappointed that there wasn&#39;t ANY question for evaluating general skills like logic, the ability to solve problems etc. Just technical questions like &quot;how many ways are to synchronize threads&quot; etc. Yes, the working (!) knowledge is needed definitely for most positions, but is it the main constituent of the successful developer? What a hell, whom you need to hire?! Coding monkeys?!&lt;/li&gt;&lt;li&gt;I had the luck to compare two very different persons as interviewers. While one just asked a number of questions to hear proper answers, another one impressed me from the good side. Funny guy, he helped me a lot to think in the right way about my carrier and the priorities. It seems he is quite good in evaluating of the interviewee&#39;s knowledge. When I didn&#39;t say something that he wanted to hear, he asked another question to check if I didn&#39;t know that or just forgot to say about it. And in general... +1 to him definitely :)&lt;/li&gt;&lt;li&gt;The Java guy, if you sometimes read this, do not draw minuses on the paper when someone is continuing to answer the question and he sees what are you drawing.) And do not ask stupid questions like &quot;Will be your code readable for others?&quot;. &lt;/li&gt;&lt;/ol&gt;&lt;b&gt;What I learnt.&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I always thought that is not such important to learn deeply some technologies in advance. My principle was &quot;you want it - I&#39;ll learn it&quot;, and it is important to know only some basic things about technology so you just can start work with it and the deep knowledge will come in the practice, in the development process. Not I realized that most companies wants you to be the guru, so you will know all answers without extra time for investigating. The learning of something in advance without immediate need was for me as wasting of time, but I&#39;ll considering to pay more attention in self-learning not for some certificate but for real knowledge.&lt;/li&gt;&lt;li&gt; I have the dilemma now. Java or .NET?:) I always wanted to become good in both, but it seems that is not possible. You should concentrate on something one to be really good in it.&lt;/li&gt;&lt;li&gt;And last I realized that my speaking English is not bad but VERY bad :) Yeah, even much more worse than my written English:) I was so disappointed in the brief examination of my speaking that I canceled my phone interview for the internship in USA. And now I&#39;m considering in taking some additional English courses maybe focused in speaking. &lt;/li&gt;&lt;/ol&gt;&amp;nbsp;So what next? Now I should set my goals for some period of time and I should outline the plan how to achieve those goals. When you have the plan, you have the hope!:)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/915255541173849627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/job-interview-my-ambiguous-impressions.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/915255541173849627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/915255541173849627'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/job-interview-my-ambiguous-impressions.html' title='The job interview. My ambiguous impressions'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-8842867231777232</id><published>2010-08-09T23:28:00.002+03:00</published><updated>2010-08-11T13:03:13.294+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><title type='text'>Everything what you might want to know about the Disposable pattern</title><content type='html'>Thought thrives on conflict. Today I had a discussion with my technical leader who ashamed me that I don&#39;t know how to implement IDisposable correctly. It turned out it was true as I really lacked in knowledge of the Disposable pattern. On the other hand my implementation was actually almost right even with my knowledge:)&lt;br /&gt;&lt;br /&gt;So what we&#39;ve got? &lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;csharp&quot; style=&quot;background-color: #f0f0f0; border: 1px solid rgb(208, 208, 208); color: #000066; font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;class&lt;/span&gt; CustomWriter &lt;span style=&quot;color: green;&quot;&gt;:&lt;/span&gt; IDisposable&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;readonly&lt;/span&gt; Stream _stream&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; CustomWriter&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;Stream stream&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Helper&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;CheckNull&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&quot;stream&quot;&lt;/span&gt;, stream&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _stream &lt;span style=&quot;color: green;&quot;&gt;=&lt;/span&gt; stream&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// some methods that deal with _stream&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;My first implementation of Dispose method was the simplest that can be only:)&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;csharp&quot; style=&quot;background-color: #f0f0f0; border: 1px solid rgb(208, 208, 208); color: #000066; font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _stream&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;Dispose&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Is this code good?:) I think every experience .NET developer knows the right answer but question can be tricky for some junior developers.&lt;br /&gt;&lt;br /&gt;Let&#39;s get deep into the problem.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Disposable pattern.&lt;/b&gt; You can find it in MSDN, it is shown in example for the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.idisposable.aspx&quot;&gt;IDisposable&lt;/a&gt; interface. You should remember that you must throw &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.objectdisposedexception.aspx&quot;&gt;ObjectDisposedException&lt;/a&gt; in the beginning of every method if object is disposed already. So in general the skeleton of the class implemented IDisposable can be like following:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;csharp&quot; style=&quot;background-color: #f0f0f0; border: 1px solid rgb(208, 208, 208); color: #000066; font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;class&lt;/span&gt; DisposableClass &lt;span style=&quot;color: green;&quot;&gt;:&lt;/span&gt; IDisposable&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// the boolean flag whether the current object is disposed or not&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;bool&lt;/span&gt; _disposed&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// check if the current object is disposed&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; CheckDisposed&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;_disposed&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;a href=&quot;http://www.google.com/search?q=new+msdn.microsoft.com&quot; style=&quot;color: #000060;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;new&lt;/span&gt;&lt;/a&gt; ObjectDisposedException&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;GetType&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;FullName&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; SomeMethod&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// check if not disposed&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CheckDisposed&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// some logic here&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// dispose all managed and unmanaged resources&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// suppress calling of the object destructor&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; GC&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;SuppressFinalize&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;protected&lt;/span&gt; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;virtual&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;bool&lt;/span&gt; disposeManagedResources&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;!&lt;/span&gt;_disposed&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;disposeManagedResources&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// dispose managed resources here&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// dispose unmanaged resources here&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// turn on the &#39;disposed&#39; flag&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _disposed &lt;span style=&quot;color: green;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; ~DisposableClass&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// only unmanaged resources disposed here&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;false&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Pattern is pretty straightforward. If the user of the class wants to release resources explicitly than he can call Dispose method which does all work. Also you should suppress calling of the destructor by the garbage collector as it is no need in this already.&lt;br /&gt;&lt;br /&gt;The main point here that you should not try to release managed resources in destructor because they are in undefined state actually by this moment - the garbage collector might release some or all unmanaged resources already.&lt;br /&gt;&lt;br /&gt;How differs the code above from example code from MSDN?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The &lt;i&gt;CheckDisposed &lt;/i&gt;method is created  which should be called in the beginning of each other method.&lt;/li&gt;&lt;li&gt;The argument of the parametrized &lt;i&gt;Dispose &lt;/i&gt;method is renamed to &lt;i&gt;disposeManagedResources&lt;/i&gt;. As for me the variable name &lt;i&gt;disposing &lt;/i&gt;is not self-explanatory.&lt;/li&gt;&lt;li&gt;The Dispose method made protected virtual. In this way you can redefine it in derived classes for actual needs.&lt;/li&gt;&lt;/ol&gt;&lt;b&gt;The simplified pattern.&lt;/b&gt; What happens if our class will not have the unmanaged resources? Fine, the destructor will do nothing - kill it! &lt;i&gt;GC.SuppressFinalize(this)&lt;/i&gt; is not needed anymore as we don&#39;t have the destructor - kill it! &lt;i&gt;disposeManagedResources &lt;/i&gt;will be always &lt;i&gt;true &lt;/i&gt;- kill it! Why we should have another Dispose method without parameter? Kill it too!:) So what we&#39;ve got now:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;csharp&quot; style=&quot;background-color: #f0f0f0; border: 1px solid rgb(208, 208, 208); color: #000066; font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;class&lt;/span&gt; DisposableClass &lt;span style=&quot;color: green;&quot;&gt;:&lt;/span&gt; IDisposable&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// the boolean flag whether the current object is disposed or not&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;bool&lt;/span&gt; _disposed&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// check if the current object is disposed&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; CheckDisposed&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;_disposed&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;a href=&quot;http://www.google.com/search?q=new+msdn.microsoft.com&quot; style=&quot;color: #000060;&quot;&gt;&lt;span style=&quot;color: green;&quot;&gt;new&lt;/span&gt;&lt;/a&gt; ObjectDisposedException&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;GetType&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;FullName&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; SomeMethod&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// check if not disposed&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; CheckDisposed&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// some logic here&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;void&lt;/span&gt; Dispose&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;if&lt;/span&gt; &lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;!&lt;/span&gt;_disposed&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: teal; font-style: italic;&quot;&gt;// dispose managed resources here&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; _disposed &lt;span style=&quot;color: green;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Notice the important moment. When we are talking about unmanaged resources we mean those resources which we should release on our own as the garbage collector cannot deal with them. Feel the difference - even if the Stream object operates internally with some unmanaged resources we don&#39;t care about it. From our side the Stream object is the managed resource and it is enough to call its Dispose method to be sure that all is done there.&lt;br /&gt;&lt;br /&gt;So was my code so wrong in the beginning of this post?:) Apparently no. The only issue there that I could call &lt;i&gt;_stream.Dispose()&lt;/i&gt; more than once. Actually it shouldn&#39;t be the problem (actually &lt;i&gt;_stream.Dispose()&lt;/i&gt; will do nothing in further calls) but it is not good anyway. Adding the &lt;i&gt;_disposed&lt;/i&gt; field and checking it is all what I needed to add.&lt;br /&gt;&lt;br /&gt;Happy disposing for you!:)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/8842867231777232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/everything-what-you-might-want-to-know.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8842867231777232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/8842867231777232'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/everything-what-you-might-want-to-know.html' title='Everything what you might want to know about the Disposable pattern'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-5323403244579045521</id><published>2010-08-09T02:10:00.000+03:00</published><updated>2010-08-09T18:09:02.654+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term=".NET"/><category scheme="http://www.blogger.com/atom/ns#" term="NHibernate"/><title type='text'>NHibernate and MS Access - it&#39;s simple, but...</title><content type='html'>Recently I got the task to get some data from MS Access database using NHibernate. As for true it was my first coding experience with NHibernate and Fluent NHibernate, so I was very glad that I was present not too long time before on 4th meeting of &lt;a href=&quot;http://dotnetug-lviv.blogspot.com/&quot;&gt;Lviv .Net User Group&lt;/a&gt; where Andriy Buday made a quite good presentation about this ORM framework.&lt;br /&gt;&lt;br /&gt;The code had to be very simple, and you should to change just couple of lines in the configuration to make it work with MS Access. If you use Fluent NHibernate (like me) for writing configuration, then you can get something like the following piece of code.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;csharp&quot; style=&quot;background-color: #f0f0f0; border: 1px solid rgb(208, 208, 208); color: #000066; font-family: monospace;&quot;&gt;&lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;static&lt;/span&gt; ISessionFactory CreateSessionFactory&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #6666cc; font-weight: bold;&quot;&gt;string&lt;/span&gt; databaseFile&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;{&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0600ff; font-weight: bold;&quot;&gt;return&lt;/span&gt; Fluently&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;Configure&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;Database&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; JetDriverConfiguration&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;Standard&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;ConnectionString&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;c &lt;span style=&quot;color: green;&quot;&gt;=&amp;gt; &lt;/span&gt;c&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;DatabaseFile&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;databaseFile&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;Mappings&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;m &lt;span style=&quot;color: green;&quot;&gt;=&amp;gt;&lt;/span&gt; m&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;FluentMappings&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;AddFromAssemblyOf&amp;lt;&lt;/span&gt;Person&lt;span style=&quot;color: green;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: green;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;BuildSessionFactory&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: green;&quot;&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;So everything was fine, I was proud with myself (&quot;Yoo-hoo, I did!&quot;) , but when I tried to run tests...&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;Could not load file or assembly &#39;NHibernate.JetDriver&#39; or one of its dependencies. The system cannot find the file specified.&lt;/i&gt;&lt;/blockquote&gt;&amp;nbsp;The reason is simple - NHibernate.JetDriver.dll is not part of the NHibernate distribution. You can find it in the &lt;a href=&quot;http://sourceforge.net/projects/nhcontrib/&quot; onclick=&quot;javascript:pageTracker._trackPageview(&#39;outbound/articles/sourceforge.net&#39;);&quot; target=&quot;_blank&quot;&gt;NHibernate Contrib project&lt;/a&gt; on Source Forge. But don&#39;t try to find ready DLL - only source codes are available. Checkout out it with SVN here:&lt;a href=&quot;https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.JetDriver/&quot;&gt; https://nhcontrib.svn.sourceforge.net/svnroot/nhcontrib/trunk/src/NHibernate.JetDriver/&lt;/a&gt;. Build it in any way you wish. As for me I used included VS 2008 solution.&lt;br /&gt;&lt;br /&gt;Fine, I got NHibernate.JetDriver.dll, I was proud with myself even more than in previous time, I tried to run tests again... What I got? Here it is:&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp;&lt;i&gt;Could not load file or assembly &#39;NHibernate, Version=2.1.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4&#39; or one of its dependencies. The located assembly&#39;s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)&lt;/i&gt;&lt;/blockquote&gt;When you will build NHibernate.JetDriver.dll reference those DLLs from the NHibernate distribution that you are using in your project. The NHibernate version in NHibernate.JetDriver folder is 2.1.0.4000, and I used version 2.1.2.&lt;br /&gt;&lt;br /&gt;So at last I managed to make NHibernate to work with MS Access. Returning to the title of this post - it&#39;s simple but it is tricky:)&lt;br /&gt;&lt;br /&gt;P.S. If you are working under 64 bit Windows you can get additional exception &quot;The &#39;Microsoft.Jet.OLEDB.4.0&#39; provider is not registered on the local machine&quot; for dessert. Make sure that you selected the target cpu to x86 in the advanced compiler options. There is not a 64 bit version of Jet.</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/5323403244579045521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/nhibernate-and-ms-access-its-simple-but.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5323403244579045521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/5323403244579045521'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/nhibernate-and-ms-access-its-simple-but.html' title='NHibernate and MS Access - it&#39;s simple, but...'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2983243187321326120.post-768593559424851133</id><published>2010-08-07T15:40:00.000+03:00</published><updated>2010-08-07T15:40:09.468+03:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="General"/><title type='text'>Another one blog? What for?</title><content type='html'>Hi all!&lt;br /&gt;&lt;br /&gt;I decided to start my first blog. At long last!:) To be honest the idea of my own blog was nurtured by me quite a long time. Do you have a feeling sometimes that you know something that can be interested and useful not only for you? Yeah, that is exactly what I&#39;m talking about. &lt;br /&gt;&lt;br /&gt;But every time when I was considering on start blogging, I was afraid that I&#39;ll get bored with it too fast and that is why to loose time for nothing. I am still afraid, but anyway the decision is here!)&lt;br /&gt;&lt;br /&gt;And who am I actually?) My name is Dmytro Dzyuma, I&#39;m living, studying and working in my native country which name is Ukraine. I can point its location on the map if you have troubles with geography:)&lt;br /&gt;&lt;br /&gt;What will be this blog about? Anything that will be interesting for me and I&#39;ll think that it will be interesting to someone else. Something about .NET, something about Java, something about something else)&lt;br /&gt;&lt;br /&gt;This blog will be in English, even if this is not my first language as you may probably notice:). The reason is simple - this is the language that is one of the most common all over the world and this is the language of IT. I was considering of making Ukrainian versions for all posts, but... I&#39;m not sure if it really needed right now, maybe later will, I don&#39;t know.&lt;br /&gt;&lt;br /&gt;The last thing. Don&#39;t get accustomed to present blog design and layout, I&#39;m going to play with it some time)&lt;br /&gt;&lt;br /&gt;So let&#39;s start!:)</content><link rel='replies' type='application/atom+xml' href='http://dixond.blogspot.com/feeds/768593559424851133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dixond.blogspot.com/2010/08/another-one-blog-what-for.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/768593559424851133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2983243187321326120/posts/default/768593559424851133'/><link rel='alternate' type='text/html' href='http://dixond.blogspot.com/2010/08/another-one-blog-what-for.html' title='Another one blog? What for?'/><author><name>Dmytro Dziuma</name><uri>https://plus.google.com/101755874495443789454</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh4.googleusercontent.com/-3XK3Qhe7NNE/AAAAAAAAAAI/AAAAAAAAAAA/UFRshJGpd18/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry></feed>