<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10polishfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CU8DR309eip7ImA9WhRaE0U.&quot;"><id>tag:blogger.com,1999:blog-24497803</id><updated>2012-02-16T10:17:56.362+01:00</updated><category term="wroc.net" /><category term="Visual Studio" /><category term="udziały" /><category term="2009" /><category term="ironpython" /><category term="harmonogram" /><category term="DataTemplate" /><category term="bug" /><category term="DST" /><category term="conditional breakpoint" /><category term="events" /><category term="fullscreen" /><category term="upgrade" /><category term="VisualStateManager" /><category term="NumberFormatInfo" /><category term="debug history" /><category term="ASP.NET" /><category term="zagnieżdzone elementy" /><category term="mono develop" /><category term="zlecenia.przez.net" /><category term="TDD" /><category term="OWASP" /><category term="WMI" /><category term="70-502" /><category term="Wrocław" /><category term=".NET 4" /><category term="INotifyPropertyChanged" /><category term="Out of browser" /><category term="konferencja" /><category term="WinForms" /><category term="Carl Franklin" /><category term="Parallel.For" /><category term="CSS" /><category term="SqlStatistics" /><category term="codecamp.pl" /><category term="solar system" /><category term="książka" /><category term="aop" /><category term="dotPeek" /><category term="ilspy" /><category term="ContinueWith" /><category term="wiedza" /><category term="SDK" /><category term="FlowDirection" /><category term="przygotowania" /><category term="Xperia X1" /><category term="attached properties" /><category term="Freezable" /><category term="Expression" /><category term="SolidColorBrush" /><category term="TrueCrypt" /><category term="Drawings" /><category term="VS" /><category term="R#" /><category term="T-SQL" /><category term="channel9" /><category term="Label" /><category term=".NET" /><category term="GIODO" /><category term="ciekawostki" /><category term="Microsoft" /><category term="Transform3D" /><category term="debugger" /><category term="nUnit" /><category term="ASP.NET 4" /><category term="wydajność" /><category term="dzień programisty" /><category term="Content Controls" /><category term="ValueConterters" /><category term="dump" /><category term="Toolbar" /><category term="AddIn" /><category term="Statusbar" /><category term="triggers" /><category term="logo" /><category term="sysinternals" /><category term="SoundPlayerAction" /><category term="PriorityBinding" /><category term="sprzęt" /><category term="CONFidence" /><category term="klawiatura" /><category term="Resources" /><category term="plugin" /><category term="KGD.NET" /><category term="FxCop" /><category term="walidacja" /><category term="panele" /><category term="page-based navigation" /><category term="bezpieczeństwo" /><category term="Surface" /><category term="CultureInfo" /><category term="Clean Code" /><category term="Silverlight 3" /><category term="helpers" /><category term="Geometries" /><category term="ListView" /><category term="share" /><category term="Margin" /><category term="programista" /><category term="BUILD" /><category term="string.Format" /><category term="konkurs" /><category term=".net 4.5" /><category term="dźwięk" /><category term="komputer" /><category term="deployment" /><category term="ContentAligment" /><category term="skróty" /><category term="csUnit" /><category term="Training Kit" /><category term="speaker" /><category term="Fun" /><category term="Google" /><category term="Earth" /><category term="TreeView" /><category term="MbUnit" /><category term="MediaElement" /><category term="ANTS profiler" /><category term="RDC" /><category term="Tooltip" /><category term="Grid" /><category term="Ubuntu" /><category term="NetShareAPI" /><category term="Virtual TechDays" /><category term="WPF" /><category term="C2C" /><category term="TED" /><category term="mRemote" /><category term="Aligment" /><category term="Silverlight" /><category term="Resharper" /><category term="telefon" /><category term="obfuskacja" /><category term="SQL" /><category term="VS 2010" /><category term="postanowienia" /><category term="StyleSelector" /><category term="TPL" /><category term="devPytania" /><category term="CodeReflect" /><category term="wtf" /><category term="msbuild" /><category term="virtual study" /><category term="Speech" /><category term="syntax" /><category term="Ogólne" /><category term="GroupBox" /><category term="Application Settings" /><category term="stackoverflow" /><category term="Dependency Property" /><category term="CodeRush DevExpress" /><category term="Padding" /><category term="pomoc" /><category term="filmy" /><category term="DebuggerVisualizer" /><category term="tips" /><category term="techphoto" /><category term="rejestr" /><category term="ComboBox" /><category term="VS 2011" /><category term="UserControls" /><category term="connectionString" /><category term="mdbg" /><category term="narzędzia" /><category term="devday" /><category term="breakpoint" /><category term="web.config" /><category term="dailyWTF" /><category term="humor" /><category term="xml" /><category term="LINQ" /><category term="wideo" /><category term="XSLT" /><category term="64-bit" /><category term="nowości" /><category term="security" /><category term="NegativeSign" /><category term="JustDecompile" /><category term="Tim Huckaby" /><category term="PageFunctions" /><category term="VisualBrush" /><category term="BackgroundWorker" /><category term="dotnetomaniak" /><category term="przykład" /><category term="MTS" /><category term="SQLInjection" /><category term="Color" /><category term="podsumowanie" /><category term="C#5" /><category term="IE8" /><category term="speaker idol" /><category term="Dispatcher" /><category term="C2C'09" /><category term="BumpTop" /><category term="Foundation Silverlight 2 Animation" /><category term="NetShare API" /><category term="ide" /><category term="Visibility" /><category term="screencast" /><category term="Transformacje" /><category term="DebuggerCanvas" /><category term="statystyki" /><category term="Unit testy" /><category term="roslyn" /><category term="debugging" /><category term="Deep Zoom Composer" /><category term="documents" /><category term="produktywność" /><category term="Item controls" /><category term="IT" /><category term="AJAX" /><category term="MediaTimeline" /><category term="DataBinding" /><category term="Remote Desktop" /><category term="Visual Studio 2010" /><category term="crackme" /><category term="reflector" /><category term="sos" /><category term="commands" /><category term=".net 4.0" /><category term="General" /><category term="błedy" /><category term="Visuals" /><category term="32-bit" /><category term="LinearColorBrush" /><category term="TabControl" /><category term="egzamin" /><category term="Windows Azure" /><category term="Image metadata" /><category term="Expander" /><category term="Mono.Cecil" /><category term="Style" /><category term="memory leak" /><category term="Windows 7" /><category term="debug" /><category term="Menu" /><category term="animacje" /><category term="crash" /><category term="recenzja" /><category term="cnprog" /><category term="WebForms" /><category term="tabele" /><category term="PositiveSign" /><category term="MediaPlayer" /><category term="70-536" /><category term="prezentacja" /><category term="2010" /><category term="ListBox" /><category term="Lights" /><category term="Generics" /><category term="ChildWindow" /><category term="święto" /><category term="windbg" /><category term="symbols" /><category term="SoundPlayer" /><category term="RadialColorBrush" /><category term="Silverlight 2 in Action" /><category term="3D" /><category term="CustomControl" /><category term="ClientModeId" /><category term="podstawy" /><category term="Shapes" /><category term="MCTS" /><category term="mono" /><category term="LaTeX" /><category term="binding" /><title>.NET blog</title><subtitle type="html">Blog głównie o programowaniu(.NET, C#, WPF, WCF) i dziedzinach pokrewnych, które mnie interesują. Od czasu do czasu być może jakieś moje ciekawe przemyślenia :-)</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://pawlos.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>280</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/wBGD" /><feedburner:info uri="blogspot/wbgd" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.newsgator.com/images/ngsub1.gif">Zapisz w NewsGator Online</feedburner:feedFlare><feedburner:feedFlare href="http://client.pluck.com/pluckit/prompt.aspx?GCID=C12286x053&amp;a=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.pluck.com/images/rss-pluck.gif">Zapisz w czytniku Pluck RSS</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://o.aolcdn.com/myfeeds/html/vis/myaol_cta1.gif">Zapisz w My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/blogspot/wBGD" src="http://www.bloglines.com/images/sub_modern11.gif">Zapisz w Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.netvibes.com/img/add2netvibes.gif">Dodaj do netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://buttons.googlesyndication.com/fusion/add.gif">Dodaj do Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsalloy.com/?rss=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.newsalloy.com/subrss3.gif">Subscribe with NewsAlloy</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://hub.netomat.net/account/account.autoSubscribe.jspa?urls=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.netomat.net/blogger/images/icon_netomat_feedbutton.gif">Subscribe with netomat Hub</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Fblogspot%2FwBGD" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><entry gd:etag="W/&quot;A0ECR3k8cCp7ImA9WhRbFUk.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-7985303763419071612</id><published>2012-02-06T18:34:00.000+01:00</published><updated>2012-02-06T18:34:26.778+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-06T18:34:26.778+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dailyWTF" /><category scheme="http://www.blogger.com/atom/ns#" term="Fun" /><title>Daily WTF</title><content type="html">&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Dzisiejsze znalezisko w kodzie:&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-ivV47EOqyVo/Ty_iczb_bHI/AAAAAAAACTo/4iiW6enIdJA/s1600/bitch_and_slopes.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="86" src="http://4.bp.blogspot.com/-ivV47EOqyVo/Ty_iczb_bHI/AAAAAAAACTo/4iiW6enIdJA/s640/bitch_and_slopes.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
I kto powiedział, że praca programisty musi być nudna :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-7985303763419071612?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=169rZtjawQ8:3eCguIJPsLg:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=169rZtjawQ8:3eCguIJPsLg:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=169rZtjawQ8:3eCguIJPsLg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/169rZtjawQ8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/7985303763419071612/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=7985303763419071612" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7985303763419071612?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7985303763419071612?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/169rZtjawQ8/daily-wtf.html" title="Daily WTF" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-ivV47EOqyVo/Ty_iczb_bHI/AAAAAAAACTo/4iiW6enIdJA/s72-c/bitch_and_slopes.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2012/02/daily-wtf.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEMQ3w4fip7ImA9WhRUGUg.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-4843468008065191387</id><published>2012-01-30T21:18:00.000+01:00</published><updated>2012-01-30T21:18:02.236+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-30T21:18:02.236+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="debugger" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="rejestr" /><title>VS Debugger - ustawienia w rejestrze</title><content type="html">W &lt;a href="http://pawlos.blogspot.com/2012/01/vs-debugger-tips-tricks.html"&gt;ostatnim poście&lt;/a&gt; wspominałem, że napisze jeszcze o ustawieniach debuggera VS w rejestrze.&lt;br /&gt;
&lt;br /&gt;
Okazuje się, że nie wszystko da się ustawić w Visual Studio czy &lt;a href="http://pawlos.blogspot.com/2012/01/dzwiekowy-brekpoint.html"&gt;ustawieniach systemowych&lt;/a&gt;. Częścią funkcjonalności trzeba sterować za pomocą ustawień w rejestrze - na szczęście są to marginalne przypadki.&lt;br /&gt;
&lt;br /&gt;
Czasami jednak zdarza się, że dodając jakieś wyrażenie do okienka &lt;span style="font-family: consolas;"&gt;Watch&lt;/span&gt; dostajemy niemiły komunikat - Function evaluation timed out. Buu... :/&lt;br /&gt;
&lt;br /&gt;
Okazuje się, że możemy choć trochę wpłynąć na VS po jakim czasie pokaże nam ten komunikat - niestety musimy zrobić to w rejestrze. &lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: consolas;"&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Debugger&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-_84xPApU8sE/Tyb4HJtEueI/AAAAAAAACTg/n0ixJc5hLmM/s1600/registry.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="610" src="http://1.bp.blogspot.com/-_84xPApU8sE/Tyb4HJtEueI/AAAAAAAACTg/n0ixJc5hLmM/s640/registry.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Mamy tam wszelkie ustawienia, których dokonujemy za pomocą VS ale także kilka wartości, których nie odnajdziemy w okienku Settings - to te, których nazwy kończące się na Timeout.&lt;br /&gt;
&lt;br /&gt;
Jak może się domyśleć odpowiadają one za czas po jakim VS rzuci nam wspomnianym wcześniej komunikatem. Niestety nie da się ich zwiększyć do jakichś niebotycznych wartości - VS broni jakichś swoich (prawdopodobnie - wewnętrznych - maksimów), ale trochę możemy je ponaginać.&amp;nbsp;Wystarczy odnaleźć tylko interesującą nas zmienną Timeout :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-4843468008065191387?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=Mik5El1pdjI:ORrepmeeHos:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=Mik5El1pdjI:ORrepmeeHos:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Mik5El1pdjI:ORrepmeeHos:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/Mik5El1pdjI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/4843468008065191387/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=4843468008065191387" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/4843468008065191387?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/4843468008065191387?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/Mik5El1pdjI/vs-debugger-ustawienia-w-rejestrze.html" title="VS Debugger - ustawienia w rejestrze" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-_84xPApU8sE/Tyb4HJtEueI/AAAAAAAACTg/n0ixJc5hLmM/s72-c/registry.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2012/01/vs-debugger-ustawienia-w-rejestrze.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMNR3w6eCp7ImA9WhRUGE4.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-2225032616395490204</id><published>2012-01-29T12:44:00.001+01:00</published><updated>2012-01-29T12:44:56.210+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-29T12:44:56.210+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="debugger" /><category scheme="http://www.blogger.com/atom/ns#" term="breakpoint" /><category scheme="http://www.blogger.com/atom/ns#" term="conditional breakpoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="DebuggerVisualizer" /><category scheme="http://www.blogger.com/atom/ns#" term="DebuggerCanvas" /><title>VS Debugger - Tips &amp; Tricks</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-gVgeSrONrqY/TxrgnxupEpI/AAAAAAAACTY/kDQ4FTBIrG8/s1600/title_page.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-gVgeSrONrqY/TxrgnxupEpI/AAAAAAAACTY/kDQ4FTBIrG8/s640/title_page.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Kilka dni temu miałem okazję wygłosić kolejną prelekcję na &lt;a href="http://www.wrocnet.org/"&gt;Wrocławskiej Grupie .NET&lt;/a&gt;. Tym razem jako temat wybrałem debugger, który jest dostępny w Visual Studio. Jest to na prawdę kawałek narzędzia, który możemy wykorzystać dość sprawnie na naszą korzyść jeśli tylko wiemy gdzie szukać.&lt;br /&gt;
Prezentacja to tak na prawdę zbiór tego co publikowałem w ostatnich czasach na blogu jak również na devPytania &amp;nbsp;tak więc jeśli ktoś regularnie czyta bloga - zapewne nie znajdzie zbyt wiele nowości.&lt;br /&gt;
&lt;br /&gt;
Powiedziałem o:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;ustawieniach w VS, systemowych (&lt;a href="http://pawlos.blogspot.com/2012/01/dzwiekowy-brekpoint.html"&gt;Dźwiękowy breakpoint&lt;/a&gt;) oraz rejestrowych (o tym będzie jeszcze post)&lt;/li&gt;
&lt;li&gt;Atrybutach: &lt;a href="http://msdn.microsoft.com/en-us/library/x810d419.aspx"&gt;DebuggerDisplay&lt;/a&gt; oraz &lt;a href="http://pawlos.blogspot.com/2008/08/debuggerstepthrough.html"&gt;DebuggerStepThrough&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/232dxah7.aspx"&gt;breakpointach i tracepoint'ach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://devpytania.pl/questions/7116/debugger-wizualizacja-obiektow-na-liscie"&gt;DebuggerDisplay dla typów wbudowanych&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pawlos.blogspot.com/2009/04/debuggervisualizer.html"&gt;DebuggerVisualizers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/zainnab/archive/2010/03/04/make-objectid-vstipdebug0015.aspx"&gt;MakeObject ID&lt;/a&gt; w okienku Watch&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pawlos.blogspot.com/2011/06/sos-w-visualstudio.html"&gt;Sos&lt;/a&gt; (choć tu się nie udało w VS - VS odmówiło posłuszeństwa raportując dziwnym błędem)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/197c1fsc.aspx"&gt;Exception Assistant&lt;/a&gt; (jak możemy dodać obsługę naszych własnych wyjątków w nim)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pawlos.blogspot.com/2012/01/breakpoint-na-funkcji.html"&gt;Breakpoint na funkcji&lt;/a&gt;, aby podpiąć się do do auto property lub event handlerów.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pawlos.blogspot.com/2010/12/warunkowy-breakpoint-tips-tricks.html"&gt;Warunkowym breakpoint'ie&lt;/a&gt; i jego &lt;a href="http://pawlos.blogspot.com/2010/12/warunkowy-breakpoint-ciekawe.html"&gt;nieszablonowym zastosowaniu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Z ciekawostek wspomniałem o:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://pawlos.blogspot.com/2011/06/debugger-canvasdeeper-dive.html"&gt;Debugger Canvas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://lowleveldesign.wordpress.com/"&gt;własnym debugerze&lt;/a&gt; pisanym przez Sebastiana Solnicę&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
Przykłady i prezentacja (niewiele w niej jest) &lt;a href="http://wsscg.blob.core.windows.net/resources/grupy/49/files/VS.Debugger.zip"&gt;do pobrania&lt;/a&gt;. W razie pytań zachęcam do kontaktu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-2225032616395490204?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=GtAQpTwWrL0:VaqrSdOwSf4:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=GtAQpTwWrL0:VaqrSdOwSf4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=GtAQpTwWrL0:VaqrSdOwSf4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/GtAQpTwWrL0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/2225032616395490204/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=2225032616395490204" title="Komentarze (5)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2225032616395490204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2225032616395490204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/GtAQpTwWrL0/vs-debugger-tips-tricks.html" title="VS Debugger - Tips &amp; Tricks" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-gVgeSrONrqY/TxrgnxupEpI/AAAAAAAACTY/kDQ4FTBIrG8/s72-c/title_page.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2012/01/vs-debugger-tips-tricks.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MARX07fSp7ImA9WhRVFUU.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-2088706621233207685</id><published>2012-01-14T23:50:00.000+01:00</published><updated>2012-01-14T23:50:44.305+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-14T23:50:44.305+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="breakpoint" /><category scheme="http://www.blogger.com/atom/ns#" term="tips" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><title>Breakpoint na funkcji</title><content type="html">Dziś będzie o jeszcze jednym typie breakpointu. Kiedy może się on przydać zobaczmy na przykładzie.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;


Automatycznie właściwości&lt;/h2&gt;
&lt;br /&gt;
Wszyscy kochamy automatyczne właściwości, oszczędzają one nam czas i redukują ilość kodu jaki musimy napisać. Jedyną (?) ich wadą jest niemożliwość ich debuggowania. Często, tego nie potrzebujemy, ale czasem przydaje się możliwość ustawienia breakpoint'a na &lt;span style="font-family: consolas;"&gt;set&lt;/span&gt; lub &lt;span style="font-family: consolas;"&gt;get&lt;/span&gt; i np. podejrzenie &lt;span style="font-family: consolas;"&gt;call stack'a&lt;/span&gt;. Zwykłe postawienie w tym miejscu pułapki skutkuje następującym stanem. W Visual Studio widzimy breakpoint jednakże gdy tylko uruchomimy aplikację nasza pułapka znika.&lt;br /&gt;
&lt;br /&gt;
Miejmy poniższy kod:&lt;br /&gt;
&lt;div style="border: #000080 1px solid; color: black; font-family: 'Courier New', Courier, Monospace; font-size: 10pt;"&gt;
&lt;div style="background: #000080; color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px;"&gt;
Code Snippet&lt;/div&gt;
&lt;div style="background: #ddd; max-height: 300px; overflow: auto;"&gt;
&lt;ol start="7" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color: blue;"&gt;namespace&lt;/span&gt; ConsoleApplication2&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;static&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Main(&lt;span style="color: blue;"&gt;string&lt;/span&gt;[] args)&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;Program&lt;/span&gt;().SetMe = &lt;span style="color: #a31515;"&gt;"I'm setting u"&lt;/span&gt;;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;string&lt;/span&gt; SetMe { &lt;span style="color: blue;"&gt;get&lt;/span&gt;; &lt;span style="color: blue;"&gt;set&lt;/span&gt;; }&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
Aby postawić pułapkę na takiej właściwości skorzystajmy z okna &lt;span style="font-family: consolas;"&gt;New Breakpoint (CTRL+B)&lt;/span&gt;. To co nam się ukaże to okno tworzenia pułapki.
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-VrTl6FKoOIM/TxIC2zdq28I/AAAAAAAACTM/N_lGq2g9qbg/s1600/newBrk.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-VrTl6FKoOIM/TxIC2zdq28I/AAAAAAAACTM/N_lGq2g9qbg/s1600/newBrk.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Dodawanie breakpointa&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
W polu &lt;span style="font-family: consolas;"&gt;Function&lt;/span&gt; skasujmy to co jest wpisane i zamiast tego dajmy: &lt;span style="font-family: consolas;"&gt;ConsoleApplication2.Program.set_SetMe&lt;/span&gt; (pełna nazwa nie jest wymagana jeśli nazwa identyfikuje nam obiekt jednoznacznie - inaczej podepniemy się do wszystkich takich właściwości). Upewnijmy się, że mamy odznaczone pole &lt;span style="font-family: consolas;"&gt;'Use IntelliSense...'&lt;/span&gt; - inaczej dostaniemy komunikat o braku potwierdzenia. &lt;br /&gt;
&lt;br /&gt;
Teraz jak uruchomimy naszą aplikację - zatrzyma się ona w momencie wywołania &lt;span style="font-family: consolas;"&gt;settera&lt;/span&gt;. Na pasku bocznym nie zobaczymy jednak oznaczenia ustawionej pułapki (tu może się przydać info z poprzedniego posta - &lt;a href="http://pawlos.blogspot.com/2012/01/dzwiekowy-brekpoint.html"&gt;Dźwiękowy breakpoint&lt;/a&gt;) jednakże będziemy mogli podejrzeć &lt;span style="font-family: consolas;"&gt;call stack&lt;/span&gt;, czy w oknie &lt;span style="font-family: consolas;"&gt;Watch&lt;/span&gt; podejrzeć wartość obiektu &lt;span style="font-family: consolas;"&gt;value&lt;/span&gt;. Oczywiście taka pułapka jest wylistowana w oknie &lt;span style="font-family: consolas;"&gt;Breakpoints&lt;/span&gt; i możemy robić z nią standardowe modyfikacje typu: &lt;a href="http://pawlos.blogspot.com/2010/12/warunkowy-breakpoint-ciekawe.html"&gt;warunkowy breakpoint&lt;/a&gt;, hit count, etc.&lt;br /&gt;
&lt;br /&gt;
Podobne zabawy można robić z podpinaniem się pod event'y z tym wyjątkiem, że tam będą metody zaczynające się od &lt;span style="font-family: consolas;"&gt;add&lt;/span&gt; i &lt;span style="font-family: consolas;"&gt;remove&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-2088706621233207685?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=b9ahu0R8meI:m40H7UuVTXU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=b9ahu0R8meI:m40H7UuVTXU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=b9ahu0R8meI:m40H7UuVTXU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/b9ahu0R8meI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/2088706621233207685/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=2088706621233207685" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2088706621233207685?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2088706621233207685?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/b9ahu0R8meI/breakpoint-na-funkcji.html" title="Breakpoint na funkcji" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-VrTl6FKoOIM/TxIC2zdq28I/AAAAAAAACTM/N_lGq2g9qbg/s72-c/newBrk.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2012/01/breakpoint-na-funkcji.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYHQ3k4eSp7ImA9WhRVE08.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-7378093606091507344</id><published>2012-01-11T23:15:00.002+01:00</published><updated>2012-01-11T23:15:32.731+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-11T23:15:32.731+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dźwięk" /><category scheme="http://www.blogger.com/atom/ns#" term="debugger" /><category scheme="http://www.blogger.com/atom/ns#" term="breakpoint" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><title>Dźwiękowy brekpoint</title><content type="html">Macie czasem tak, że podczas długiej sesji z debuggerem, wiedząc, że jakiś breakpoint nie wskoczy prędko przełączacie się z VS aby później zorientować się, że breakpoint już dawno czekan na waszą reakcję a wy po prostu nie zauważyliście tego małego migoczącego znaku VS w pasku?&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ic16ncTAyY8/Tw4CG8A6WHI/AAAAAAAACS8/JaXZ5F2jFng/s1600/vs-brk.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Ic16ncTAyY8/Tw4CG8A6WHI/AAAAAAAACS8/JaXZ5F2jFng/s1600/vs-brk.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;O właśnie o ten mrygacz chodzi :)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Jeśli tak to ten post jest dla was - jeśli nie poczytajcie jak wkurzyć kolegów :)&lt;br /&gt;
&lt;br /&gt;
Okazuje się, że VS prócz standardowych opcji, które możemy ustawić w &lt;span style="font-family: consolas;"&gt;Tools-&amp;gt;Options&lt;/span&gt; posiada kilka dodatkowych trochę ukrytych (no dobra nie ukrytych, ale trzeba wiedzieć gdzie szukać :)). Okazuje się, że jak pójdziemy do Panelu sterowania i odpalimy okienko dźwięków to zobaczymy tam coś takiego:&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-p0PxeNEnLxY/Tw4HLkf9krI/AAAAAAAACTE/TflNnYhUVow/s1600/sounds.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-p0PxeNEnLxY/Tw4HLkf9krI/AAAAAAAACTE/TflNnYhUVow/s400/sounds.png" width="358" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Panel Sterowania -&amp;gt; Dźwięki&lt;br /&gt;
Zapomniane okno od czasów Win98 :)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Jak widać, możemy sobie skonfigurować kilka dźwięków na pewne zdarzenia zachodzące w VS. Jest &lt;span style="font-family: consolas;"&gt;Breakpoint Hit&lt;/span&gt;, są zdarzenia z buildem więc można &lt;a href="http://darthno.ytmnd.com/"&gt;taki dźwięk&lt;/a&gt;&amp;nbsp;ustawić jak nam się projekt nie zbuduje. &lt;br /&gt;
&lt;br /&gt;
Tak więc od dziś jeśli potrzebujecie możecie zmusić VS do odegrania waszego ulubionego pliku wav jak zaskoczy breakpoint. A jak zdenerwować tym kolegę? Wystarczy ustawić... mało kto wie gdzie to się zmienia :)&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-7378093606091507344?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=cWqbkkwWP28:YCmpf1zOadM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=cWqbkkwWP28:YCmpf1zOadM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=cWqbkkwWP28:YCmpf1zOadM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/cWqbkkwWP28" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/7378093606091507344/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=7378093606091507344" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7378093606091507344?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7378093606091507344?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/cWqbkkwWP28/dzwiekowy-brekpoint.html" title="Dźwiękowy brekpoint" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-Ic16ncTAyY8/Tw4CG8A6WHI/AAAAAAAACS8/JaXZ5F2jFng/s72-c/vs-brk.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2012/01/dzwiekowy-brekpoint.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEUFR386fyp7ImA9WhRWE0k.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-7748916812387367242</id><published>2011-12-31T15:36:00.000+01:00</published><updated>2011-12-31T15:36:56.117+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T15:36:56.117+01:00</app:edited><title>Podsumowanie 2011</title><content type="html">Kolejny rok, kolejne podsumowanie.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-iuEe0rdeIOw/Tv736xUYhII/AAAAAAAACSQ/LcT_sJ0vat8/s1600/stats.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="112" src="http://2.bp.blogspot.com/-iuEe0rdeIOw/Tv736xUYhII/AAAAAAAACSQ/LcT_sJ0vat8/s640/stats.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
30 postów (znów mało - coś się nie mogę przełamać tej granicy).&amp;nbsp;21 tys. odsłon, 37 tys. wizyt - trochę mniej niż w poprzednim roku. Tendencja spadkowa, którą trzeba będzie odwrócić.&lt;br /&gt;
&lt;br /&gt;
Najpopularniejsze posty:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pawlos.blogspot.com/2009/07/wpf-podsumowanie.html"&gt;WPF Podsumowanie&lt;/a&gt;&amp;nbsp;- 2111 wyświetleń - Post z 2009 roku zbierający wszystkie moje wpisy odnośnie WPF'a więc nic dziwnego, że ma trochę odwiedzin.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pawlos.blogspot.com/2008/10/visual-studio-2010-net-40-pierwsze.html"&gt;Visual Studio 2010 &amp;amp; .NET 4.0 - Pierwsze wrażenie&lt;/a&gt;&amp;nbsp;- 1166 - Post z 2008! roku. Dziwne, że jeszcze popularny biorąc pod uwagę, że już niedługo przyjdzie nam działać na VS 11 :). No, ale widać jeszcze są osoby, które interesuje temat. VS 2010 sporo zmienił w stosunku do poprzedników, więc może stąd takie zainteresowanie wśród odwiedzających.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://pawlos.blogspot.com/2010/06/tajniki-dependencyproperty.html"&gt;Tajniki DependencyProperty&lt;/a&gt;&amp;nbsp;- 886 - Dependency Property to jedna z fundamentalnych rzeczy jeśli chodzi o programowanie z użyciem WPFa. Widać zainteresowanie tematem WPFa jest.&lt;br /&gt;
&lt;br /&gt;
Niestety żaden z 30 postów z tego roku nie wszedł na pudło. Trzeba bardziej się postarać. Lepiej pisać i promować!&lt;br /&gt;
&lt;br /&gt;
Do plusów minionego roku należy zaliczyć moje dwie prezentacje na &lt;a href="http://wrocnet.org/"&gt;Wroc.NET&lt;/a&gt;&amp;nbsp;czyli &lt;a href="http://pawlos.blogspot.com/2011/09/monocecil-prezentacja.html"&gt;Mono.Cecil&lt;/a&gt;&amp;nbsp;oraz &lt;a href="http://pawlos.blogspot.com/2011/10/vs11-i-net-framework-45.html"&gt;VS 11 oraz .NET 4.5&lt;/a&gt;. Liczę, że w nadchodzącym roku uda mi się także dać jakieś ciekawe prelekcje. Kilka pomysłów w głowie - zobaczymy jak wyjdzie z ich realizacją.&lt;br /&gt;
&lt;br /&gt;
Plany zawodowe na nadchodzący rok także są. Może trochę zmienić kierunek nauki? Liznąć trochę czegoś innego niż .NET. Może Objective-C? Może Haskella (lub czegoś innego funkcyjnego). Zdecydowanie - pobawić się RavenDB, którą to ostatnio prezentował &lt;a href="http://mnajder.blogspot.com/"&gt;Marcin Najder&lt;/a&gt;. Ważne, aby wymyślić jakieś projekty na to, aby nauka miała jakiś cel a nie była sama sobie tylko nauką. Oczywiście postaram się wszystko zaprezentować z punktu widzenia programisty .NET, tak więc nie będzie powodów do rezygnacji z czytania bloga :).&amp;nbsp;Zobaczymy tylko na ile córka pozwoli plany zrealizować :)&lt;br /&gt;
&lt;br /&gt;
Wszystkiego najlepszego w 2012 i dzięki za odwiedziny. Stay tuned.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-7748916812387367242?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=ADZg4zOydBE:D9PK98T-twk:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=ADZg4zOydBE:D9PK98T-twk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ADZg4zOydBE:D9PK98T-twk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/ADZg4zOydBE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/7748916812387367242/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=7748916812387367242" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7748916812387367242?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7748916812387367242?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/ADZg4zOydBE/podsumowanie-2011.html" title="Podsumowanie 2011" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iuEe0rdeIOw/Tv736xUYhII/AAAAAAAACSQ/LcT_sJ0vat8/s72-c/stats.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/12/podsumowanie-2011.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMCQX46eyp7ImA9WhRRGEs.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-6543066838155141011</id><published>2011-12-02T23:45:00.001+01:00</published><updated>2011-12-03T00:11:00.013+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-03T00:11:00.013+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="filmy" /><category scheme="http://www.blogger.com/atom/ns#" term="wiedza" /><category scheme="http://www.blogger.com/atom/ns#" term="Google" /><title>Wiedza od Google</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-lrYL9jLFJnc/TtlaVwUae-I/AAAAAAAACRc/_soBwd-DCGE/s1600/www_small.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="143" src="http://4.bp.blogspot.com/-lrYL9jLFJnc/TtlaVwUae-I/AAAAAAAACRc/_soBwd-DCGE/s200/www_small.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;© phecsone - Fotolia.com&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Z dzisiejszej &lt;a href="http://www.facebook.com/questions/10150434556463555/?qa_ref=qd"&gt;ankiety&lt;/a&gt; na &lt;a href="http://www.facebook.com/dotnetomaniakpl"&gt;FanPage'u&lt;/a&gt; dotnetomaniaka wynika, że sporo z nas na co dzień tworzy aplikacje ASP.NET (czy to WebForms czy też MVC). Zapewne zatem przyda nam się trochę darmowej wiedzy od Googla, co i jak wpływa na wyniki wyszukiwania i PR.&lt;br /&gt;
&lt;br /&gt;
Czy wiesz np. jak robot Google &amp;nbsp;traktuje adresy z '-' a adresy z '_'? Jest jakaś różnica a może nie ma? Czy adresy z '/' na końcu są lepsze od tych bez? Czy dodawanie www do domeny ma jakieś znaczenie?&lt;br /&gt;
&lt;br /&gt;
Na te i inne pytania odpowiedzą na kanale wideo&amp;nbsp;&lt;a href="http://www.youtube.com/user/googleWebmasterHelp"&gt;GoogleWebmasterHelp&lt;/a&gt;.&amp;nbsp;Zobacz i przekonaj się sam jakie są prawidłowe odpowiedzi na te pytania.&lt;br /&gt;
&lt;br /&gt;
Miłego oglądania :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-6543066838155141011?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=jBp0u-WxGN0:AdsO-YwPjwM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=jBp0u-WxGN0:AdsO-YwPjwM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jBp0u-WxGN0:AdsO-YwPjwM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/jBp0u-WxGN0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/6543066838155141011/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=6543066838155141011" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6543066838155141011?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6543066838155141011?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/jBp0u-WxGN0/wiedza-od-google.html" title="Wiedza od Google" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-lrYL9jLFJnc/TtlaVwUae-I/AAAAAAAACRc/_soBwd-DCGE/s72-c/www_small.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/12/wiedza-od-google.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQCRHY4eyp7ImA9WhRSEEQ.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-547223959961234142</id><published>2011-11-12T11:19:00.000+01:00</published><updated>2011-11-12T11:22:45.833+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T11:22:45.833+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="komputer" /><category scheme="http://www.blogger.com/atom/ns#" term="sprzęt" /><category scheme="http://www.blogger.com/atom/ns#" term="upgrade" /><title>devPC 2012</title><content type="html">&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-p8beSjZrHog/Tr5HLLTB9sI/AAAAAAAACQU/9RwTweeRYJg/s1600/oldPC_resized.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-p8beSjZrHog/Tr5HLLTB9sI/AAAAAAAACQU/9RwTweeRYJg/s320/oldPC_resized.jpg" width="249" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Rauer © Więcej zdjęć na &lt;a href="http://bit.ly/ufRUG4"&gt;Fotolia.pl&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;br /&gt;
Ostatnio dumając nad kielichem wina okazało się, że mój obecny PC, na którym pracuję zbliża się do swoich 4 urodzin. Lata świetlne jeśli chodzi o naszą branżę, a wiadomo, że prędkość jest ważna i jeśli spędzamy, nawet sekundy, czekając na jakąś akcję a powtarzamy ją wielokrotnie to sporo na tym tracimy.&lt;br /&gt;
Tak więc wyszedłem z wnioskiem formalnym do odpowiednich władz (;-)), że trzeba maszynę zaktualizować do czegoś szybszego.Wniosek został zaakceptowany tak więc działamy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jako, że nie mam wiedzy sprzętowej - bo od dawna nie śledzę już tego świata - wychodzę z zapytaniem o pomoc w wyborze do czytelników. Razem zapewne uda nam się skompletować coś wydajnego a jednocześnie w przystępnej cenie.&lt;br /&gt;
&lt;br /&gt;
Przed wyborem komponentów jednak warto ustalić do czego dany komputer będzie nam potrzebny. Dzięki temu będzie można się skupić na wyborze odpowiednich elementów.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zastosowania:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;programowanie&lt;/b&gt;. Tu zaskoczenia nie ma (a przynajmniej nie powinno :)) - jako, że to moje główne zajęcie to zapewne przez 80%-85% czasu do tego będzie przeznaczony sprzęt. Sporo działam na wirtualkach (choć nie tyle pewnie co &lt;a href="http://maciejaniserowicz.com/"&gt;Procent&lt;/a&gt;), tak więc dobrze jakby sprzęt sprawdzał się na tym polu :). Poza tym nic nadzwyczajnego VS 2010 + R# w kilku instancjach na raz nawet :)&lt;br /&gt; &lt;/li&gt;
&lt;li&gt;&lt;b&gt;gry&lt;/b&gt; - tak, tak - od czasu do czasu zdarzy mi się pograć na tym sprzęcie i poza moimi ulubionymi TD czasem nawet w jakieś nowości (FPSy) - dobrze zatem jakby grafika dawała radę z nowymi, nadchodzącymi tytułami. Sądzę, że do 10% czasu wykorzystania na gry będzie :)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;obróbka wideo&lt;/b&gt; - mam w planach trochę ponakręcać moją przyszłą kamerą video jakiś materiał no i trzeba będzie go zapewne jakoś obrobić. Dobrze jakby i tu trochę siły było :)&lt;/li&gt;
&lt;/ul&gt;
Jakieś dodatkowe wymagania? Karta grafiki musi obsłużyć 2+ wyjścia DVI :]. Aktualnie dwa monitory a w przyszłości być może +1, więc dobrze jakby nie trzeba było wymieniać karty za jakiś niedługo czas.&lt;br /&gt;
&lt;br /&gt;
A jaki jest mój obecny sprzęt?&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Procesor - &lt;span style="font-family: consolas;"&gt;Intel Quad Q6600 @ 2.4GHz&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Płyta - &lt;span style="font-family: consolas;"&gt;Gigabyte GA-P-35-DS3P&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Pamięć - &lt;span style="font-family: consolas;"&gt;8GB (nie pamiętam/znalazłem info jaka)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Grafika - &lt;span style="font-family: consolas;"&gt;NVIDIA GeForce 8600 GTS 256 MB&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Dysk - &lt;span style="font-family: consolas;"&gt;OCZ Vertex2 - 120 GB + WDC WD 320 GB&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
Co daje &lt;a href="http://windows.microsoft.com/en-US/windows7/products/features/windows-experience-index"&gt;WEI&lt;/a&gt; na poziomie 6.5 - mało :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-fN56HRhjhpo/Tr0YyBq3AOI/AAAAAAAACQE/u5nNQLW2qpU/s1600/assesment-2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="164" src="http://3.bp.blogspot.com/-fN56HRhjhpo/Tr0YyBq3AOI/AAAAAAAACQE/u5nNQLW2qpU/s640/assesment-2.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
Co warto umieścić w obecnej maszynie devPC? Jakie komponenty są najbardziej opłacalne jeśli chodzi o wydajność do ceny? Jaka kwota jest odpowiednia na główne narzędzie naszej pracy?&lt;br /&gt;
&lt;br /&gt;
A na czym wy pracujecie? Co siedzi pod maską waszych maszyn do pracy?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-547223959961234142?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BNK9zXVHR3E:6yIp9ulr-18:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BNK9zXVHR3E:6yIp9ulr-18:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BNK9zXVHR3E:6yIp9ulr-18:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/BNK9zXVHR3E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/547223959961234142/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=547223959961234142" title="Komentarze (11)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/547223959961234142?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/547223959961234142?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/BNK9zXVHR3E/devpc-2012.html" title="devPC 2012" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-p8beSjZrHog/Tr5HLLTB9sI/AAAAAAAACQU/9RwTweeRYJg/s72-c/oldPC_resized.jpg" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/11/devpc-2012.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUHRXk5cSp7ImA9WhRTFEU.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-5167114705339346249</id><published>2011-11-05T11:17:00.000+01:00</published><updated>2011-11-05T11:17:14.729+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-05T11:17:14.729+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="błedy" /><category scheme="http://www.blogger.com/atom/ns#" term="DST" /><title>Podróże w czasie - DST</title><content type="html">Kilka dni temu, w zgodzie z tym co wykazała ankieta - &lt;a href="http://www.facebook.com/questions/10150376574463555/?qa_ref=qd"&gt;Programiści to stworzenia nocne&lt;/a&gt; - kodowałem sobie jakieś mało znaczące rzeczy pomiędzy 2 a 3 nad ranem. Jako, że niewiele się o tej porze dzieje, można spokojnie skupić się na programowaniu :). &lt;br /&gt;
&lt;br /&gt;
Jakież było moje zdziwienie, gdy o godzinie 2:28 nagle zaczęły spływać raporty błędów z &lt;a href="http://dotnetomaniaka/"&gt;dotnetomaniaka&lt;/a&gt;. Sam fakt pojawienia się błędów nie jest jeszcze jakiś niezwykły - wiadomo, od czasu do czasu może pójść coś nie tak. Bardziej interesujący był komunikat który pojawił się w mailu. A brzmiał on: &lt;span style="font-family: consolas;"&gt;Absolute time cannot be less than current time.&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
WTF - pomyślałem? Jaki czas i czemu nie może być mniejszy od obecnego? Dopiero po chwili dotarło do mnie co się dzieje. No tak - idiotyczna zmiana czasu (akurat ta jest mniej idiotyczna bo wracamy do naturalnego dla nas czasu ze sztucznego letniego). &lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: #000080 1px solid; color: black; font-family: 'Courier New', Courier, Monospace; font-size: 10pt;"&gt;
&lt;div style="background: #000080; color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px;"&gt;
Code Snippet&lt;/div&gt;
&lt;div style="background: #ddd; max-height: 300px; overflow: auto;"&gt;
&lt;ol start="19" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;override&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;ITag&lt;/span&gt;&amp;gt; FindByUsage(&lt;span style="color: blue;"&gt;int&lt;/span&gt; top)&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Check&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;Argument&lt;/span&gt;.IsNotNegativeOrZero(top, &lt;span style="color: #a31515;"&gt;"top"&lt;/span&gt;);&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;string&lt;/span&gt; cacheKey = &lt;span style="color: #a31515;"&gt;"tagsByUsage:{0}"&lt;/span&gt;.FormatWith(top);&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;ICollection&lt;/span&gt;&amp;lt;&lt;span style="color: #2b91af;"&gt;ITag&lt;/span&gt;&amp;gt; result;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Cache&lt;/span&gt;.TryGet(cacheKey, &lt;span style="color: blue;"&gt;out&lt;/span&gt; result);&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;if&lt;/span&gt; (result == &lt;span style="color: blue;"&gt;null&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result = &lt;span style="color: blue;"&gt;base&lt;/span&gt;.FindByUsage(top);&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;if&lt;/span&gt; ((!result.IsNullOrEmpty()) &amp;amp;&amp;amp; (!&lt;span style="color: #2b91af;"&gt;Cache&lt;/span&gt;.Contains(cacheKey)))&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Cache&lt;/span&gt;.Set(cacheKey, result, &lt;span style="color: #2b91af;"&gt;SystemTime&lt;/span&gt;.Now().AddMinutes(_cacheDurationInMinutes));&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;return&lt;/span&gt; result;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Powyższy kod powodował problem, a dokładniej wnętrzności metody &lt;span style="font-family: consolas;"&gt;Cache.Set&lt;/span&gt;. A jak ona wygląda?&lt;br /&gt;
&lt;br /&gt;
&lt;div style="border: #000080 1px solid; color: black; font-family: 'Courier New', Courier, Monospace; font-size: 10pt;"&gt;
&lt;div style="background: #000080; color: white; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px;"&gt;
Code Snippet&lt;/div&gt;
&lt;div style="background: #ddd; max-height: 300px; overflow: auto;"&gt;
&lt;ol start="81" style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color: blue;"&gt;public&lt;/span&gt; &lt;span style="color: blue;"&gt;void&lt;/span&gt; Set&amp;lt;T&amp;gt;(&lt;span style="color: blue;"&gt;string&lt;/span&gt; key, T value, &lt;span style="color: #2b91af;"&gt;DateTime&lt;/span&gt; absoluteExpiration)&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Check&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;Argument&lt;/span&gt;.IsNotEmpty(key, &lt;span style="color: #a31515;"&gt;"key"&lt;/span&gt;);&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #2b91af;"&gt;Check&lt;/span&gt;.&lt;span style="color: #2b91af;"&gt;Argument&lt;/span&gt;.IsNotInPast(absoluteExpiration, &lt;span style="color: #a31515;"&gt;"absoluteExpiration"&lt;/span&gt;);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RemoveIfExists(key);&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li style="background: #f3f3f3;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_manager.Add(key, value, &lt;span style="color: #2b91af;"&gt;CacheItemPriority&lt;/span&gt;.Normal, &lt;span style="color: blue;"&gt;null&lt;/span&gt;, &lt;span style="color: blue;"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af;"&gt;AbsoluteTime&lt;/span&gt;(absoluteExpiration.ToLocalTime()));&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
Na początku sądziłem, że problem leży w EnterpriseLibrary Caching Block, z którego korzysta portal, ale okazało się, że w nim wszystko jest w porządku. Co prawda wyjątek leci od nich, ale dostają czas w przeszłości - co mogą zrobić? W przypadku użycia drugiej metody (z parametrem &lt;span style="font-family: consolas;"&gt;TimeSpan&lt;/span&gt;), kod zachowuje się poprawnie. &lt;br /&gt;
&lt;br /&gt;
Zmiana czasu z 3:00 na 2:00 spowodowała, że fragment próbujący ustawić czas wygaśnięcia obiektu w cache będzie wcześniejszy niż czas dodania tegoż obiektu. I stąd komunikat. Problemem jest użycie czasu UTC i zmiana go do LocalTime przy generowaniu obiektu &lt;span style="font-family: consolas;"&gt;AbsoluteTime&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Czyj to tak na prawdę jest problem? KiGGa czy EntLib'a? Wydaje mi się, że bardziej KiGG'a bo używa metody z parametrem AbsoluteTime, który ustawia nieprawidłowo. Robi to jednak nieświadomie, bo błędne działanie jest tylko raz w roku.&lt;br /&gt;
&lt;br /&gt;
Pytanie tylko jak pamiętać o takich przypadkach i co ciekawsze jak je testować i zabezpieczać się aby nie występowały? Czy lepiej olać to i nie przejmować się tak rzadko występującymi problemami?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-5167114705339346249?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=qtiha81AtRQ:epvyrr5V3aE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=qtiha81AtRQ:epvyrr5V3aE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=qtiha81AtRQ:epvyrr5V3aE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/qtiha81AtRQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/5167114705339346249/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=5167114705339346249" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/5167114705339346249?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/5167114705339346249?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/qtiha81AtRQ/podroze-w-czasie-dst.html" title="Podróże w czasie - DST" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><thr:total>4</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/11/podroze-w-czasie-dst.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIDQ3Y5fip7ImA9WhdaEU0.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-6740992529736454263</id><published>2011-10-20T10:49:00.000+02:00</published><updated>2011-10-20T10:49:32.826+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-20T10:49:32.826+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VS 2011" /><category scheme="http://www.blogger.com/atom/ns#" term=".net 4.5" /><title>VS11 i .NET Framework 4.5</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;img border="0" height="478" src="http://3.bp.blogspot.com/-GvkvxmVDQRk/Tp_ZbVx5A4I/AAAAAAAACPo/6CqLk0m4_qE/s640/vs11.png" width="640" /&gt;&lt;/div&gt;
Wczoraj miałem przyjemność wygłosić kolejną prelekcję na spotkaniu Wroc.NET. Tym razem jako temat padło Visual Studio 11 oraz .NET Framework 4.5&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Widziałeś tę sesję na 38. spotkaniu Wroc.NET? &lt;a href="http://www.surveymonkey.com/s/56PW7KD"&gt;Ocenią ją&lt;/a&gt;! Możesz także &lt;a href="http://speakerrate.com/talks/8736"&gt;ocenić ją&lt;/a&gt; na portalu speakerrate.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Materiały z tej prelekcji dostępne są na portalu grupy - Materiały 38. spotkanie Wroc.NET.&lt;br /&gt;
&lt;br /&gt;
Co omówiłem podczas prelekcji? Pokazałem co nowego lub ulepszonego będzie nam oferować VS 11. Zademonstrowałem narzędzia: Code Clones (nowe), Concurrency Visualizer (stare), SQL Schema Comapre (stare) oraz TFS w najnowszej wersji. Z tego ostatniego pokazałem, jaki przepływ pracy będzie dostępny dla programistów. Visual Studio wesprze możliwość wysyłania próśb o review kodu innym programistom oraz możliwość podglądu zmian bezpośrednio w edytorze. Wygląda i działa to całkiem przyjemnie. Po zakończeniu review uwagi są przesyłane do programisty a on może je przejrzeć i uwzględnić. &lt;br /&gt;
&lt;br /&gt;
Trochę dłużej zatrzymałem się także przy Concurrency Visualizer. To narzędzie jest dość niedoceniane z racji, że w VS201 było dostępne tylko i wyłącznie w wersjach Ultimate oraz Team Systems. Dzięki udostępnieniu jej od wersji Professional więcej osób będzie mogło skorzystać z jego działania.&lt;br /&gt;
&lt;br /&gt;
Następnie przeszedłem do prezentacji nowości Frameworka. Jako, że była to sesja wprowadzająca w temat to pokrótce przedstawiłem te, które pojawią się w tej wersji bez wnikania we wszystkie szczegóły. Trochę dłużej zatrzymałem się przy WPFie, gdyż zmian wprowadzonych do tej części frameworka jest sporo.&lt;br /&gt;
&lt;br /&gt;
Główną uwagę w tej części poświęciłem jednak WinRT oraz MetroUI. Pokazałem, jak będą wyglądały aplikacje pisane z użyciem WinRT oraz jak w naszych aplikacjach w prosty sposób można się zintegrować z Windows8. Visual Studio wspiera nas w tym dość mocno - aby nasza aplikacja zachowywała się naturalnie w systemie i dawała pełnie możliwości nie trzeba pisać bardzo dużo kodu.&lt;br /&gt;
&lt;br /&gt;
Na koniec podsumowałem całość mówiąc, że od tej wersji zwolennicy pisania sterowników będą mogli skorzystać z dobrodziejstw IDE. Dodatkowo także Visual Studio umożliwia podgląd plików modeli używanych przy pisaniu gier z użyciem DirectX.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-6740992529736454263?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=ZLOU3LoZR1g:QhMZvkJatqQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=ZLOU3LoZR1g:QhMZvkJatqQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=ZLOU3LoZR1g:QhMZvkJatqQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/ZLOU3LoZR1g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/6740992529736454263/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=6740992529736454263" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6740992529736454263?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6740992529736454263?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/ZLOU3LoZR1g/vs11-i-net-framework-45.html" title="VS11 i .NET Framework 4.5" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-GvkvxmVDQRk/Tp_ZbVx5A4I/AAAAAAAACPo/6CqLk0m4_qE/s72-c/vs11.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/10/vs11-i-net-framework-45.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YGRnk7eyp7ImA9WhRSFUk.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-7212015200015645278</id><published>2011-10-02T15:43:00.000+02:00</published><updated>2011-11-17T17:58:47.703+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T17:58:47.703+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dotPeek" /><category scheme="http://www.blogger.com/atom/ns#" term="Mono.Cecil" /><category scheme="http://www.blogger.com/atom/ns#" term="JustDecompile" /><category scheme="http://www.blogger.com/atom/ns#" term="CodeReflect" /><category scheme="http://www.blogger.com/atom/ns#" term="ilspy" /><category scheme="http://www.blogger.com/atom/ns#" term="reflector" /><title>Show me your code–przegląd narzędzi do podglądania</title><content type="html">&lt;b&gt;Update - 17.11.2011&lt;/b&gt;: Dodano &lt;a href="#powiazane"&gt;powiązane&lt;/a&gt; posty z innych blogów.&lt;br /&gt;
&lt;br /&gt;
Dawno dawno temu było…Reflector i długo długo nic (de facto na początku był jest ildasm ale nie o nim dziś). &lt;br /&gt;
&lt;br /&gt;
Na szczęście pewnego lutowego dnia pojawiła się informacja, że 
już niedługo nie będzie on dostępny za darmo i się zaczęło. Flame’y, 
groźby i krzyki :). Stało się też sporo dobrego bo o to na rynku 
pojawiły się alternatywy. Ilspy, dotPeek oraz JustDecompile. Przyjrzyjmy
 się im z bliska i zobaczmy co mają do zaoferowania.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;


















Reflector - umarł król...&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-3VzlO2Euzcs/TohXIRg1YGI/AAAAAAAACPQ/dx0Ryb_RZGc/s1600/reflector-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="101" src="http://4.bp.blogspot.com/-3VzlO2Euzcs/TohXIRg1YGI/AAAAAAAACPQ/dx0Ryb_RZGc/s320/reflector-logo.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.reflector.net/"&gt;Reflector&lt;/a&gt; to zdecydowanie najlepszy, z racji
 swojej "dorosłości" decompiler na rynku. Rozwijany na początku przez 
Lutz'a Roeder'a a następnie przejęty przez firmę Red-Gate. Posiadacze 
darmowej wersji muszą się zadowolić wydaniem 6.0 bez widoków na 
aktualizacje, co sprawi, że, w przypadku rozwoju .NET, Reflector straci na 
używalności a zastąpią go alternatywy. Płatna wersja narzędzia jest i 
(miejmy nadzieję) będzie rozwijana dalej. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Siła Reflector'a nie tkwi (narzędzie jest super to fakt) w nim samym, 
ale w ogromie dodatków, które powstały przez cały ten czas kiedy miał 
monopol wśród tego typu narzędzi. Jakiekolwiek czynności, które 
chcielibyśmy zrobić na podglądanym kodzie można szybko wykonać bo na na 99% istnieje dodatek który nam w tym pomoże. Np. modyfikacja kodu? Jest &lt;a href="http://reflexil.net/"&gt;Reflexil&lt;/a&gt;.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fQzBYidkIt8/ToIi7poMd2I/AAAAAAAACO0/ae_MRxbzHNk/s1600/reflector.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="492" src="http://4.bp.blogspot.com/-fQzBYidkIt8/ToIi7poMd2I/AAAAAAAACO0/ae_MRxbzHNk/s640/reflector.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Reflector podczas pracy&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Obsługuje możliwość wyświetlania kodu zarówno w C#, VB.NET oraz F# (w zasadzie pokazuje jeszcze Delphi, MC++ oraz Oxygene, ale nie wiem czy ktoś z tego w ogóle korzysta?). Można także pokazać ILa jeśli ktoś ma taką potrzebę.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;

















ILSpy - dobra alternatywa...&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-11ylHhCIUw8/TohXM0WUg2I/AAAAAAAACPU/WRUK6aiJfrw/s1600/ILSpy_med-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-11ylHhCIUw8/TohXM0WUg2I/AAAAAAAACPU/WRUK6aiJfrw/s1600/ILSpy_med-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://wiki.sharpdevelop.net/ilspy.ashx"&gt;&lt;br /&gt;ilSpy&lt;/a&gt; - Pełni OpenSource'owe narzędzie oparte na bibliotece &lt;a href="http://pawlos.blogspot.com/2011/09/monocecil-prezentacja.html"&gt;Mono.Cecil&lt;/a&gt;. Dzięki 
dostępności kodu możemy je sobie rozwijać według potrzeb. Startuje długo
 jakby był napisany w Java (joke :]), ale potem oferuje pełnię swoich 
możliwości. Umożliwia wyświetlenie kodu w C# jak też IL (maniacy jak ja, którzy czytają gołego ILa to docenią).&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-C5M0DTex3Kk/ToIjm_9jqVI/AAAAAAAACO4/GK7iWmavHNk/s1600/IlSpy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="368" src="http://4.bp.blogspot.com/-C5M0DTex3Kk/ToIjm_9jqVI/AAAAAAAACO4/GK7iWmavHNk/s640/IlSpy.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;ILSpy&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Do plusów można zaliczyć przejście do dokumentacji MSDN po kliknięciu w daną instrukcję ILa, jak również przeskakiwanie pomiędzy etykietami w tymże widoku. Zdecydowanie ułatwia nawigację w kodzie i pozwala łatwiej śledzić flow programu.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;












dotPeek&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-rlsMjsXTY84/TohXRJTxn6I/AAAAAAAACPY/i4hEbXLcXxU/s1600/dotPeek-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-rlsMjsXTY84/TohXRJTxn6I/AAAAAAAACPY/i4hEbXLcXxU/s1600/dotPeek-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.jetbrains.com/decompiler/"&gt;&lt;br /&gt;dotPeek&lt;/a&gt; - Narzędzie ze stajni panów z JetBrains. Wspiera jedynie C#. Jako duży 
plus należy zaliczyć tu możliwość otwierania podglądu jako zakładki. Bardzo 
ułatwia to nawigowanie się podczas przeglądania kodu. Posiada multum (jak na tego typu narzędzia) opcji i konfiguracji, co na początku utrudnia rozeznanie się w nim.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-HpAkGYJpJbw/TohTKnWoN1I/AAAAAAAACPI/rAEJTzQr0OQ/s1600/dotPeek.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="408" src="http://1.bp.blogspot.com/-HpAkGYJpJbw/TohTKnWoN1I/AAAAAAAACPI/rAEJTzQr0OQ/s640/dotPeek.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;dotPeek&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Umożliwia drukowanie wygenerowanego kodu, co choć na pierwszy rzut oka może wydawać się niepotrzebną opcją, czasem się przydaje. Umożliwia dość rozbudowaną nawigację po kodzie znaną z innego narzędzia JetBrains'a - R#. Możemy zatem przejść do konkretnego typu czy pliku, przenawigować się po właściwościach czy metodach danej klasy za pomocą ALT+strzałka w dół, a nawet zobaczyć hierarchię typów jeśli zajdzie taka potrzeba.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-RnDY5If0Exc/TohVxqZ0LJI/AAAAAAAACPM/6nUDmxRJtsY/s1600/hierarchy.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-RnDY5If0Exc/TohVxqZ0LJI/AAAAAAAACPM/6nUDmxRJtsY/s1600/hierarchy.png" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Hierarchia typów w dotPeeku&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Jako jedyne narzędzie, nie jest oparte na bibliotece &lt;span style="font-family: consolas;"&gt;Mono.Cecil&lt;/span&gt; (czy to plus czy minus).&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;











JustDecompile&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-pzDxVHR0fZs/TohdLNptMnI/AAAAAAAACPc/LhsZwk123YY/s1600/justdecompile-logo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-pzDxVHR0fZs/TohdLNptMnI/AAAAAAAACPc/LhsZwk123YY/s1600/justdecompile-logo.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.telerik.com/products/decompiling.aspx"&gt;&lt;br /&gt;JustDecompile&lt;/a&gt; -
Tutaj Telerik zwietrzył okazję i wypuścił swoje narzędzie do podglądu. Jako jedyny posiada instalator - co trochę denerwuje. Zwykle przy tego typu narzędziach chcemy je ściągnąć i zacząć używać bez konieczności instalacji. Na szczęście da się go wrzucić na usb'a i uruchamiać z niego. Inaczej potrzeba instalacji wykluczałaby to narzędzie praktycznie. na pierwszy rzut oka narzędzie to wyróżnia się całkiem przyjemnym UI ewidentnie napisanym w WPFie.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-huLbwwT42SY/TohdXpU7z6I/AAAAAAAACPg/JYK5a8fEleM/s1600/justdecompile.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="390" src="http://4.bp.blogspot.com/-huLbwwT42SY/TohdXpU7z6I/AAAAAAAACPg/JYK5a8fEleM/s640/justdecompile.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;JustDecompile&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Z dostępnych języków docelowych mamy: IL, C# oraz VB. Edytor podobnie jak IlSpy umożliwia, po kliknięciu w daną instrukcję, przekierowanie na strony MSDN do dokumentacji danego OpCode'u. Dodatkowo każdy typ jest "klikalny" i możemy nawigować po kodzie klikając na odpowiednie typy parametrów czy też zawracanych wartości. Narzędzie to jako jedyne (albo u innych tego nie znalazłem) umożliwia konfigurację kolorów, tak więc możemy sobie wynikowy kod dostosować do naszych ulubionych kolorów.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;








CodeReflect&lt;/h2&gt;
&lt;br /&gt;
&lt;a href="http://www.devextras.com/decompiler/"&gt;CodeReflect&lt;/a&gt; - mało znane (chyba) narzędzie od firmy DevExtras. Wyglądem dość 
znacznie przypomina .NET Reflector'a, co można uznać za plus jeśli ktoś był przyzwyczajony do tego 
układu i działania.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-2kab5E_PAWY/Tohfxl1RpKI/AAAAAAAACPk/PLDusktqZ78/s1600/CodeReflect.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="448" src="http://3.bp.blogspot.com/-2kab5E_PAWY/Tohfxl1RpKI/AAAAAAAACPk/PLDusktqZ78/s640/CodeReflect.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;CodeReflect&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Podobnie jak powyżej umożliwia przechodzenie po dll'kach dzięki kliknięciom w odpowiednią nazwę typu. Dzięki temu możemy w dość prosty sposób nawigować po kodzie i przechodzić od jednej metody do drugiej za pomocą myszki. W IL'u brakuje jednak możliwości przejścia do dokumentacji w MSDN aby dowiedzieć się czegoś więcej o konkretnej instrukcji. Brakuje podstawowych opcji konfiguracji, ale gdyby nie było pod ręką nic innego to oczywiście narzędzie zda egzamin i pokaże nam co siedzi pod spodem naszego kodu...&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;







... niech żyje król?&lt;/h2&gt;
&lt;br /&gt;
Czy  jest jednogłośny zwycięzca tegoż rankingu? Nie wiem - ja nadal mam 
zainstalowanego Reflectora ale coraz częściej sięgam po ilSpy'a (tak w 
ogóle to mam wszystkie zainstalowane :]). Każdy chyba powinien sam 
wybrać, ale warto wiedzieć o ich mocnych i słabych stronach aby wybór 
był świadomy i celowy. Pomijając Reflector'a, pozostałe narzędzia są w fazie Beta lub Pre-Release więc jeszcze sporo może się w nich zmienić. Oby na lepsze...&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a name="powiazane"&gt;Powiązane wpisy&lt;/a&gt;&lt;/h2&gt;
&lt;a href="http://www.secnews.pl/2011/11/17/narzedzia-do-analizy-aplikacji-net/"&gt;Narzędzia do analizy aplikacji .NET&lt;/a&gt; - Security News&lt;br /&gt;
&lt;a href="http://trybulski.net/2011/10/darmowe-dekompilatory-net/"&gt;Darmowe dekompilatory .NET&lt;/a&gt; - Grzegorz Trybulski&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-7212015200015645278?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=onejMxezf2U:vxnU0AIHlaw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=onejMxezf2U:vxnU0AIHlaw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=onejMxezf2U:vxnU0AIHlaw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/onejMxezf2U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/7212015200015645278/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=7212015200015645278" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7212015200015645278?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/7212015200015645278?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/onejMxezf2U/show-me-your-codeprzeglad-narzedzi-do.html" title="Show me your code–przegląd narzędzi do podglądania" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-3VzlO2Euzcs/TohXIRg1YGI/AAAAAAAACPQ/dx0Ryb_RZGc/s72-c/reflector-logo.png" height="72" width="72" /><thr:total>4</thr:total><georss:featurename>Wrocław, Polska</georss:featurename><georss:point>51.089722918116344 17.05078125</georss:point><georss:box>50.93015091811635 16.73492425 51.24929491811634 17.36663825</georss:box><feedburner:origLink>http://pawlos.blogspot.com/2011/10/show-me-your-codeprzeglad-narzedzi-do.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYMQHg-eyp7ImA9WhdUEE4.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-15135000133765778</id><published>2011-09-26T00:38:00.000+02:00</published><updated>2011-09-26T12:16:21.653+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T12:16:21.653+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".net 4.5" /><category scheme="http://www.blogger.com/atom/ns#" term="BUILD" /><title>BUILD - What's next in .NET Framework 4.5</title><content type="html">Kolejne omówienie, kolejnej sesji z konferencji BUILD - tym razem temat to: &lt;br /&gt;
&lt;h2&gt;


What's next in .NET Framework 4.5&lt;/h2&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe frameborder="0" scrolling="no" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-834T/player?w=400&amp;amp;h=300" style="height: 300px; width: 400px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br /&gt;
Chyba każdy programista .NET, nawet taki, który traktuje to tylko jako zawód (są tacy? :)) z zainteresowaniem śledzi wydarzenia w .NET Frameworku. W końcu zmiany w nim będą rzutować na to w jaki sposób będzie kodował w przyszłości (chyba, że jest uwięziony w jakimś legacy code z .NET 2.0). Sesja zaprezentuje nam jakie oręże będzie dostępne już w niedalekiej przyszłości na potrzeby pisania aplikacji w .NET.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


Wersje&lt;/h3&gt;
Sesja rozpoczyna się od zaprezentowania czym jest .NET Framework 4.5. W przeciwieństwie do wersji 4.0, 4.5 nie jest wersją side-by-side a nadbudową (choć ja bym nazwał to hybrydą). Po części rozszerzającą dostępne rzeczy, które znajdują się w 4.0 ale także zastępuje część funkcjonalności z poprzedniej wersji.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-kMZsBJ-Vt_E/Tn-hT1v5EaI/AAAAAAAACOo/ChrVTqBDbhI/s1600/versions.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="358" src="http://3.bp.blogspot.com/-kMZsBJ-Vt_E/Tn-hT1v5EaI/AAAAAAAACOo/ChrVTqBDbhI/s640/versions.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Wersje .NET&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Zmiany, które zostały wprowadzone do wersji .NET to głównie poprawki błędów, poprawa wydajności czy też zmiany we wnętrznościach.&lt;br /&gt;
&lt;h3&gt;


WinRT &amp;amp; Metro&lt;/h3&gt;
Kolejnym elementem zaprezentowanym podczas sesji jest WinRT. WinRT czyli nowy framework pisania aplikacji, który &lt;b&gt;nie zastępuje .NET framework'a&lt;/b&gt;. Umożliwia pisanie aplikacji Metro, bez konieczności odwoływania się do p/invoke'a. Jest to oczyszczone (z metod, które wyszły z użycia) oraz uporządkowane API, które w naturalny sposób przypomina pisania aplikacji przy użyciu .NET.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yDeSHu7g8IQ/Tn-lE9WT05I/AAAAAAAACOs/AMCCpqkgdoI/s1600/metro.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="358" src="http://3.bp.blogspot.com/-yDeSHu7g8IQ/Tn-lE9WT05I/AAAAAAAACOs/AMCCpqkgdoI/s640/metro.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Umiejscowienie WinRT oraz Metro&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;h3&gt;


&lt;/h3&gt;
Metro - to zaprezentowany na konferencji nowy wygląd aplikacji dla Windows 8. Podobny do aplikacji tworzonych na Windows Phone 7.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


Ulepszenia&lt;/h3&gt;
Oczywiście nie mogło zabraknąć &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt; oraz &lt;span style="font-family: consolas;"&gt;await&lt;/span&gt;. Jeśli ktoś ma już dość tego tematu, może spokojnie przewinąć gdzieś pomiędzy 17 a 20 minutą.&lt;br /&gt;
Następnie pojawia się informacja o ciekawym usprawnieniu &lt;span style="font-family: consolas;"&gt;TPL&lt;/span&gt; czyli &lt;span style="font-family: consolas;"&gt;Task Parallel Library&lt;/span&gt;. Dostaniemy możliwość tworzenia przepływów zadań (&lt;span style="font-family: consolas;"&gt;TPL Dataflow&lt;/span&gt;). Będziemy mogli stworzyć bloki zadań i z nich stworzyć przepływ a następnie zasilić je danymi.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-C9QVS-lKx0U/Tn-nI4XzcmI/AAAAAAAACOw/jjaPrwv01Ew/s1600/dataflow.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/-C9QVS-lKx0U/Tn-nI4XzcmI/AAAAAAAACOw/jjaPrwv01Ew/s640/dataflow.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;TPL Dataflow&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Poza tym, Task.WhenAll, Task.WhenAny oraz oczywiście przyśpieszenie działania.&lt;br /&gt;
&lt;br /&gt;
&lt;h4&gt;


Szybszy start ASP.NET&lt;/h4&gt;
Dużo mniejsze zużyci pamięci oraz szybszy start aplikacji (ponoć o 35%). Przyśpieszenie zostało osiągnięte przez JIT-owanie na wielu rdzeniach w tym samym czasie. Dodatkowo można włączyć opcję 'pre-fetch' w Windows 8, która to dodatkowo poprawia wydajność aplikacji ASP.NET (multi-core JIT + pre-fetch daje w sumie 35% przyśpieszenia).&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


Lepszy dostęp do danych - EF, ADO.NET, WCF, Websockets&lt;/h3&gt;
Omówienie schematu tworzenia dostępu do danych. W EF do dotychczas dostępnego &lt;span style="font-family: consolas;"&gt;Model-First&lt;/span&gt; oraz &lt;span style="font-family: consolas;"&gt;DataBase-First&lt;/span&gt; zostało dodane &lt;span style="font-family: consolas;"&gt;Code-First&lt;/span&gt;. Czyli na podstawie kodu tworzony jest model danych. Usprawnienia do EntityFramework wspierające &lt;span style="font-family: consolas;"&gt;Enum&lt;/span&gt;, wspracie dla Azure'a oraz automatycznie kompilowane zapytania LINQ.&lt;br /&gt;
&lt;br /&gt;
Stare dobre ADO.NET dostało wsparcie dla typów przestrzennych (spatial) oraz oczywiście wsparcie dla &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
WCF wzbogacone o &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt; (a jak!) oraz uproszczenia jeśli chodzi o konieczną konfiguracje usług. &lt;br /&gt;
&lt;br /&gt;
Omówienia Websockets dostępnych w IE10, .NET oraz w aplikacjach typu Metro.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


&lt;/h3&gt;
&lt;h3&gt;


WPF, Workflow, BCL, MEF, ASP.NET &lt;/h3&gt;
Omówienie usprawnień w powyższych technologiach. Szczególnie interesująco wyglądają usprawniania dla &lt;span style="font-family: consolas;"&gt;ItemsControl&lt;/span&gt;. Według zapewnień 200000 elementów będzie możliwe do załadowania w 2.3 sekundy. Wygląda imponująco. Zobaczymy. &lt;br /&gt;
&lt;br /&gt;
Workflow w najnowszej wersji udostępnia wprowadzanie wyrażeń w C#. Dostępne będzie wersjonowanie, dzięki któremu będziemy mogli mieć kilka wersji danego flow dostępne.&lt;br /&gt;
&lt;br /&gt;
BCL - usprawnienia w &lt;span style="font-family: consolas;"&gt;WeakReferences&lt;/span&gt;, które zabezpiecza przed pisaniem nieprawidłowego kodu związane z 'race condition'. &lt;br /&gt;
Strumienie zostały wzbogacone o opcję umożliwiającą niezamykanie strumienia po skończonym odczycie z niego. Pojawił się nowy typ &lt;span style="font-family: consolas;"&gt;ReadOnlyDictionary&lt;/span&gt; :)&lt;br /&gt;
&lt;br /&gt;
Co nowego w MEF? Łatwiejsze diagnozowanie błędów oraz obsługa typów POCO oraz typów generycznych.&lt;br /&gt;
&lt;br /&gt;
ASP.NET? - Obsługa chmury oraz HTML5. Pojawiły się &lt;span style="font-family: consolas;"&gt;Model Binder'y&lt;/span&gt; znane z MVC. Dodatkowo encoder'y zabezpieczające przed XSS'em.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


Podsumowując&lt;/h3&gt;
&lt;br /&gt;
Sesja interesująca, ale jako wstęp do oglądania kolejnych. Zawiera informacje odnośnie nowości z .NET Framework 4.5 'z lotu ptaka'. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-15135000133765778?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BLTHxtY0YKA:MdD1y-5MqOE:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BLTHxtY0YKA:MdD1y-5MqOE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BLTHxtY0YKA:MdD1y-5MqOE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/BLTHxtY0YKA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/15135000133765778/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=15135000133765778" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/15135000133765778?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/15135000133765778?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/BLTHxtY0YKA/build-whats-next-in-net-framework-45.html" title="BUILD - What's next in .NET Framework 4.5" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-kMZsBJ-Vt_E/Tn-hT1v5EaI/AAAAAAAACOo/ChrVTqBDbhI/s72-c/versions.png" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/09/build-whats-next-in-net-framework-45.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYFSXg6fSp7ImA9WhdbF0U.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-1356395308830939003</id><published>2011-09-22T00:23:00.000+02:00</published><updated>2011-10-16T18:38:38.615+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-16T18:38:38.615+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Mono.Cecil" /><category scheme="http://www.blogger.com/atom/ns#" term="wroc.net" /><category scheme="http://www.blogger.com/atom/ns#" term="INotifyPropertyChanged" /><category scheme="http://www.blogger.com/atom/ns#" term="obfuskacja" /><category scheme="http://www.blogger.com/atom/ns#" term="aop" /><title>Mono.Cecil - prezentacja</title><content type="html">We wtorek miałem przyjemność wygłosić prelekcję prelekcję na temat Mono.Cecil na Wrocławskiej Grupie .NET.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://wsscg.blob.core.windows.net/resources/grupy/49/files/Mono-Cecil.zip"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-yRfL5CgSrM4/TnpfWkEQXgI/AAAAAAAACOk/PFeJMlsPI7E/s640/title_slide.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;br /&gt;
-- Byłeś na tej prezentacji? - &lt;a href="http://speakerrate.com/talks/8737-mono-cecil"&gt;Oceń ją&lt;/a&gt; --&lt;/div&gt;
&lt;br /&gt;
W sesji starałem się zaprezentować czym jest Mono.Cecil oraz jakie daje nam możliwości jeśli chodzi o przeglądanie, modyfikację plików assembly. Mam nadzieję, że za pomocą przykładów: generatora statystyk, automatyczną implementację INotifyPropertyChnaged wraz z użyciem MSBuild task pokazałem jak możemy wykorzystać Mono.Cecil, aby ułatwić naszą pracę. Dodatkowo poprzez zaprezentowanie prostego AOP (logowanie WE/WY do metody) oraz napisanie prostego obfuskatora kodu mam nadzieję pokazałem jak możemy wykorzystać tę bibliotekę do ciekawych rozwiązań wzbogacając nasz kod.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Jak bawić się ze źródłami? Solucja podzielona jest na 5 folderów: AOP, INotifyPropertyChanged, MsBuild.Task, Obfuscate oraz Statistics.&lt;br /&gt;
&lt;br /&gt;
Zabawę polecam od Statistics. Prosty projekt, który pokazuje jak można przejrzeć assembly i zliczyć wystąpienia typów, metod, właściwości itd.&lt;br /&gt;
&lt;br /&gt;
Następnie można zapoznać się z INotifyPropertyChanged. Jest tam pokazane rozwiązanie naiwne z jawnym wołaniem OnNotifyPropertyChnaged w setterze oraz trochę ładniejsze z wykorzystaniem Expression. 3 przykład w tym projekcie wykorzystuje mono Cecil. Wystarczy do bindowania użyć właściwości Header3 i zbudować aplikacje. Następnie uruchomić Mono.Cecil.INotifyPropertyChanged a po jego zakończeniu uruchomić (nie z VS) projekt WPF.INotifyPropertyChanged. Binding powinien działać wyśmienicie. Po tym warto zagłębić się w kod źródłowy projektu, aby zobaczyć jak za pomocą Mono.Cecil możemy dodać niezbędny kod.&lt;br /&gt;
&lt;br /&gt;
Jak już rozpracujemy ten przykład warto zerknąć do MSBuild.Task jest to ulepszenie poprzedniego tak aby cała "magia" Mono.Cecil działa się przy każdym budowaniu projektu w VS. Dzięki temu nie będziemy musieli odpalać zewnętrznych aplikacji.&lt;br /&gt;
&lt;br /&gt;
Dalej warto zapoznać się z folderem AOP. Jest tam pokazane jak za pomocą Cecil wygenerować dodatkowe instrukcje logowania na konsole każdego WE/WY do/z metody wraz z aktualnym czasem. Jest to swojego rodzaju Aspect-Oriented Programming.&lt;br /&gt;
&lt;br /&gt;
Na sam koniec polecam zerknąć na projekt Obfuscate. Pokazuję tam jak możemy choć trochę zaciemnić nasz kod i co niektóre łańcuchy znaków w nim występujące, aby nie były tak łatwo dostępne dla osoby przeglądającej zdekompilowany nasz kod.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Uwaga&lt;/b&gt;: Przykłady zawierają dość spore ilości ILa - Nie odpowiadam za uszkodzenia wynikające z nadmiernego napromieniowania się tymi niskopoziomowymi instrukcjami :)&lt;br /&gt;
&lt;br /&gt;
Do przeglądania skompilowanych źródeł polecam &lt;a href="http://wiki.sharpdevelop.net/ilspy.ashx"&gt;IlSpy'a&lt;/a&gt;, &lt;a href="http://www.jetbrains.com/decompiler/"&gt;dotPeek'a&lt;/a&gt;, &lt;a href="http://www.telerik.com/products/decompiler.aspx"&gt;JustDecompile'a&lt;/a&gt; czy &lt;a href="http://www.reflector.net/"&gt;Reflector'a&lt;/a&gt; (ehh wisi mi jeszcze post porównujący te narzędzia...) &lt;br /&gt;
&lt;br /&gt;
Link do prezentacji i przykładów i slajdów &lt;a href="http://wsscg.blob.core.windows.net/resources/grupy/49/files/Mono-Cecil.zip"&gt;znajduje się&lt;/a&gt; na stronie grupy na portalu Wss/Codeguru. &lt;br /&gt;
&lt;br /&gt;
Mile widziane uwagi i sugestie - sam już widzę, że chyba warto też przygotować, choćby krótką prezentację pt. Wstęp do IL, bo część osób nie jest w temacie.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-1356395308830939003?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=WNJ02KGBbzc:UqVr8ldRK-I:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=WNJ02KGBbzc:UqVr8ldRK-I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=WNJ02KGBbzc:UqVr8ldRK-I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/WNJ02KGBbzc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/1356395308830939003/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=1356395308830939003" title="Komentarze (4)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/1356395308830939003?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/1356395308830939003?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/WNJ02KGBbzc/monocecil-prezentacja.html" title="Mono.Cecil - prezentacja" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-yRfL5CgSrM4/TnpfWkEQXgI/AAAAAAAACOk/PFeJMlsPI7E/s72-c/title_slide.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/09/monocecil-prezentacja.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEQFQHs_cSp7ImA9WhdVE0o.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-9177405641460745639</id><published>2011-09-17T17:07:00.002+02:00</published><updated>2011-09-18T22:05:11.549+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T22:05:11.549+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="VS 2011" /><category scheme="http://www.blogger.com/atom/ns#" term="BUILD" /><category scheme="http://www.blogger.com/atom/ns#" term="VS" /><category scheme="http://www.blogger.com/atom/ns#" term="konferencja" /><title>BUILD - What's new in Visual Studio 11</title><content type="html">Kolejny z serii postów odnośnie sesji pojawiających się na konferencji BUILD. Dziś sesja pod tytułem: &lt;br /&gt;
&lt;h2&gt;











What's new in Visual Studio 11&lt;/h2&gt;
&lt;div style="text-align: center;"&gt;
&lt;iframe frameborder="0" scrolling="no" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-820F/player?w=400&amp;amp;h=300" style="height: 300px; width: 400px;"&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h3&gt;

VS &amp;amp; MetroUI &lt;/h3&gt;
&lt;br /&gt;
&lt;br /&gt;
Z sesji dowiadujemy się, co ciekawego przygotował dla nas Microsoft w najnowszej wersji narzędzia. Na początek prezentacja nowego UI - MetroUI, którego będziemy mogli użyć w wersji 11 Visual Studio. Dostępne będą szablony, które w prosty sposób pozwolą utworzyć nam wspomniane wyżej aplikacje. Nie będzie znaczenia, który język wybierzemy. Dostępne będą one zarówno w VB, C#, C++ oraz HTML5/JS. Dodatkowo będzie można tworzyć oprogramowanie niskopoziomowe - driver'y.&lt;br /&gt;
&lt;br /&gt;
Nowy Solution Explorer, który przypomina trochę Solution Navigator obecnie dostępny w Productivity Tools. Szybka wyszukiwarka, za pomocą której będzie można odnajdywać rzeczy zarówno w kodzie, jaki i wśród poleceń Visual Studio.&lt;br /&gt;
&lt;br /&gt;
IntelliSense dostał zakładki, dzięki którym będziemy mogli segregować podpowiedzi na grupy - te najczęściej używane oraz pozostałe. &lt;br /&gt;
&lt;br /&gt;
Z poziomu VisualStudio będziemy mogli dodawać deklaracje, które nasza aplikacja wspiera. Dla przykładu jeśli wybierzemy Search, użytkownik systemu wyszukując elementy będzie także korzystał z szukania dostępnego w naszej aplikacji.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;







Programowanie aplikacji DirectX&lt;/h3&gt;
&lt;br /&gt;
Będzie wsparcie dla języka HLSL (&lt;a href="http://en.wikipedia.org/wiki/High_Level_Shader_Language"&gt;High Level Shared Language&lt;/a&gt;) dające możliwość debugowania oraz funkcję podpowiedzi w Visual Studio.&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rEkC-yx_MPg/TnScKpU3ZBI/AAAAAAAACOc/Nrfi7kUc4fQ/s1600/model-vs.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="354" src="http://4.bp.blogspot.com/-rEkC-yx_MPg/TnScKpU3ZBI/AAAAAAAACOc/Nrfi7kUc4fQ/s640/model-vs.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Model czołgu renderowany przy pomocy VS.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Ogólnie możliwość otwierania modeli i śledzenia, jakie transformacje i tekstury są nakładane aby uzyskać końcowy efekt. Zapowiada się interesująco szczególnie dla wszystkich, którzy dotychczas w inny sposób musieli radzić sobie ze zrozumieniem, dlaczego jakaś część modelu 3D nie renderuje/działa prawidłowo. Będzie również możliwość testowania kodu DirectX'a.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



Programowanie sterowników w VisualStudio&lt;/h3&gt;
To zapowiada się niezwykle interesująco.Od najnowszej wersji VS umożliwi również pisanie sterowników. Po zainstalowaniu SDK będziemy mieli dostępny nowy typ projektu - Driver. Dodatkowo będzie możliwość uruchamiania &lt;span style="font-family: consolas;"&gt;kd&lt;/span&gt; z poziomu VisualStudio oraz debuggowanie jądra/sterowników z jego poziomu.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;



Programowanie Azure &amp;amp; HTML5 &amp;amp; ASP.NET &lt;/h3&gt;
Oczywiście Microsoft nie zapomina o swoim chmurowym rozwiązaniu i najnowsze Visual Studio będzie wspierać tworzenie takowych rozwiązań.&lt;br /&gt;
&lt;br /&gt;
HTML 5 jak i JS stają się pełnoprawnymi obywatelami w VisualStudio. Dostępne będą snippety, które usprawnią pracę z tą technologią. Oczywiście IntelliSense oraz kilka nowych funkcji np. Go To Definition. W VisualStudio dostaniemy jeszcze znane z IE Developers Tools (F12), za pomocą których będziemy mogli odkryć dlaczego nasz kod nie działa tak jak powinien. &lt;br /&gt;
&lt;br /&gt;
ASP.NET będzie zawierać w MVC4 z wykrywaniem uruchamiana strony na telefonie (i zapewne renderowaniem w trybie kompaktowym). Oczywiście nadal będzie wsparcie jQuery. Za pomocą Page Inspector'a będzie można na podstawie kodu HTML/CSS/JS odnaleźć pliki po stronie serwera odpowiedzialne za wygenerowaną treść.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;


ALM&lt;/h3&gt;
Cykl życia aplikacji w VisualStudio dzięki współpracy pomiędzy developerem, testerem oraz menadżerem za pomocą jednego narzędzia pozwoli na szybsze tworzenie oprogramowania. Planowanie Sprintu, tworzenie makiet, testy - to wszystko będzie się zawierać w nowym VisualStudio.&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-APp7Lj4flHU/TnS1CZf2kOI/AAAAAAAACOg/8Aeh905-LYU/s1600/alm.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="352" src="http://3.bp.blogspot.com/-APp7Lj4flHU/TnS1CZf2kOI/AAAAAAAACOg/8Aeh905-LYU/s640/alm.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Cykl życia aplikacji&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
VS 11 będzie wspierać narzędzia takie jak review kodu przez innego programistę wraz z notatkami "na kodzie" wewnątrz Visual Studio (ale to chyba dostępne będzie tylko z TFS'em), uruchamianie aplikacji z funkcją IntelliTrace na produkcji oraz zarządzanie projektem za pomocą strony internetowej. Będzie dostępne także sprawdzanie ilości kodu napisanego za pomocą metody Copy'iego &amp;amp; Paste'a :).&lt;br /&gt;
&lt;br /&gt;
Z ciekawostek dowiadujemy się, że jest około 4000 poleceń w Visual Studio :].&lt;br /&gt;
Sesja wymagana. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Miłego oglądania. &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-9177405641460745639?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=Z32UcDq-tRU:8zeWHZMi7mw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=Z32UcDq-tRU:8zeWHZMi7mw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=Z32UcDq-tRU:8zeWHZMi7mw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/Z32UcDq-tRU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/9177405641460745639/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=9177405641460745639" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/9177405641460745639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/9177405641460745639?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/Z32UcDq-tRU/build-whats-new-in-visual-studio-11.html" title="BUILD - What's new in Visual Studio 11" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-rEkC-yx_MPg/TnScKpU3ZBI/AAAAAAAACOc/Nrfi7kUc4fQ/s72-c/model-vs.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/09/build-whats-new-in-visual-studio-11.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkEGQn44fip7ImA9WhdVE0o.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-8872356856892832396</id><published>2011-09-17T02:01:00.000+02:00</published><updated>2011-09-18T22:43:43.036+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-18T22:43:43.036+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="roslyn" /><category scheme="http://www.blogger.com/atom/ns#" term="C#5" /><title>BUILD - Future directions for C# and VB</title><content type="html">Jak pewnie wszyscy wiedzą niedawno skończyła się konferencja BUILD, na której zaprezentowano przede wszystkim najnowszego Windows'a 8. Jednak nie tylko. W kilku nadchodzących postach postaram się pokazać filmy warte obejrzenia.&amp;nbsp; Dziś na pierwszy ogień: &lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;




Future directions for C# and Visual&amp;nbsp;Basic&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin: 0 auto; text-align: center;"&gt;
&lt;iframe frameborder="0" scrolling="no" src="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-816T/player?w=400&amp;amp;h=300" style="height: 300px; width: 400px;"&gt;&lt;/iframe&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Anders Hejlsberg prezentuje, co czeka nas w przyszłości w C# i VB. Nazwisko, którego nie trzeba przedstawiać nikomu - twórca języka. &lt;br /&gt;
&lt;br /&gt;
Pierwsza część prezentacji skupia się na przedstawieniu &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt; (znanego od jakiegoś już czasu), potem pojawiają się nowości. Hejlsberg używa tego nowego słowa kluczowego w aplikacji pobierającej informacje z NetFlix'a. Trzeba przyznać, że &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt; oraz &lt;span style="font-family: consolas;"&gt;await&lt;/span&gt; dość znacznie poprawią czytelność kodu. Gdyby ktoś chciał już w chwili obecnej pobawić się tą technologią to jest ona &lt;a href="http://msdn.microsoft.com/en-us/vstudio/gg316360"&gt;dostępna&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Kolejną zaprezentowaną nowością będą CallerInfo attributes. Umożliwią one pobranie w runtime'ie informacji o kodzie, który wywołuje naszą metodę. Coś jak makra z C++. &lt;br /&gt;
&lt;br /&gt;
Zostaną wprowadzone trzy nowe atrybuty &lt;span style="font-family: consolas;"&gt;[CallerFilePath]&lt;/span&gt;, &lt;span style="font-family: consolas;"&gt;[CallerLineNumber]&lt;/span&gt; oraz &lt;span style="font-family: consolas;"&gt;[CallerMemberName],&lt;/span&gt; które możemy nadać dla parametrów metody. Jeśli metoda taka zostanie wywołana bez któregoś z parametrów oznaczonego nowymi atrybutami, zostanie on automatycznie wypełniony odpowiednią informacją.&lt;br /&gt;
&lt;br /&gt;
Kolejną zaprezentowaną nowością jest Roslyn - "upublicznienie" kompilatora C#. Kompilator jako usługa - jak to jest reklamowane. Kompilator nie będzie już czarną skrzynką a zestawem API, który będziemy mogli wykorzystać do jego rozszerzania. Konwersja kodu z VB do C# w Visual Studio? Będzie to możliwe już niedługo za pomocą "skryptu", który sami sobie napiszemy. Interaktywna konsola w VisualStudio z podpowiadaniem i wprowadzaniem zmian na bieżąco? Proszę bardzo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-AfYTCRCQRRU/TnPiMdM2MZI/AAAAAAAACOU/OnKpxAwtdaI/s1600/roslyn.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="360" src="http://2.bp.blogspot.com/-AfYTCRCQRRU/TnPiMdM2MZI/AAAAAAAACOU/OnKpxAwtdaI/s640/roslyn.png" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Struktura kompilatora w Roslyn&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Zobaczymy co z tego wyjdzie, bo pierwsze CTP ma być za około 4 tygodnie. Zapowiada się ciekawie.&lt;br /&gt;
&lt;br /&gt;
Sesja zdecydowanie warta obejrzenia dla wszystkich programistów .NET, choć jeśli ktoś ma dość dobre obycie z  &lt;span style="font-family: consolas;"&gt;async&lt;/span&gt; może przewinąć film do mniej więcej 35 minuty.&lt;br /&gt;
&lt;br /&gt;
Miłego poznawania nadchodzących nowości.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-8872356856892832396?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=jZa5t7qljwI:1omp1KiSl30:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=jZa5t7qljwI:1omp1KiSl30:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=jZa5t7qljwI:1omp1KiSl30:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/jZa5t7qljwI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/8872356856892832396/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=8872356856892832396" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8872356856892832396?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8872356856892832396?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/jZa5t7qljwI/build-future-directions-for-c-and-vb.html" title="BUILD - Future directions for C# and VB" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-AfYTCRCQRRU/TnPiMdM2MZI/AAAAAAAACOU/OnKpxAwtdaI/s72-c/roslyn.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/09/build-future-directions-for-c-and-vb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcNQX45eCp7ImA9WhdWGEo.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-9120445608827375281</id><published>2011-09-13T02:18:00.000+02:00</published><updated>2011-09-13T02:18:10.020+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-13T02:18:10.020+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dzień programisty" /><category scheme="http://www.blogger.com/atom/ns#" term="devday" /><category scheme="http://www.blogger.com/atom/ns#" term="święto" /><title>256. day of the year - Programmer's day</title><content type="html">For English...scroll down :).&lt;br /&gt;
&lt;br /&gt;
Dziś 13. września - 256. (2^8, 0x100h, 100000000b) dzień roku :)&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gsY78UDwpQI/Tm5ZZEs7EeI/AAAAAAAACOI/qcP6OhV_ZGU/s1600/256.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-gsY78UDwpQI/Tm5ZZEs7EeI/AAAAAAAACOI/qcP6OhV_ZGU/s1600/256.png" /&gt;&lt;/a&gt;&lt;/div&gt;
Wszystkim programistom tym na co dzień kodującym w C#, VB, C++ czy Fortranie - wszystkiego najlepszego. Oby nasza praca za rok nadal była (o ile jest?) dla nas przyjemnością.&lt;br /&gt;
&lt;br /&gt;
Miłego programowania w nasze święto! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
English version&lt;br /&gt;
&lt;br /&gt;
Today is 13th of September - 256th (2^8, 0x100h, 100000000b) day of the year :)&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gsY78UDwpQI/Tm5ZZEs7EeI/AAAAAAAACOI/qcP6OhV_ZGU/s1600/256.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-gsY78UDwpQI/Tm5ZZEs7EeI/AAAAAAAACOI/qcP6OhV_ZGU/s1600/256.png" /&gt;&amp;nbsp;&lt;/a&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
To all programmers - whatever your language of choice is. C#, VB, C++ or Fortran - happy dev's day :] Let's hope, in one year's time, it will still be our passion not only our job!&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
Happy programming during Programmer's day! &lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-9120445608827375281?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=e39Y0n4fyGw:Z9IwafMmTeA:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=e39Y0n4fyGw:Z9IwafMmTeA:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=e39Y0n4fyGw:Z9IwafMmTeA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/e39Y0n4fyGw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/9120445608827375281/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=9120445608827375281" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/9120445608827375281?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/9120445608827375281?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/e39Y0n4fyGw/256-day-of-year-programmers-day.html" title="256. day of the year - Programmer's day" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-gsY78UDwpQI/Tm5ZZEs7EeI/AAAAAAAACOI/qcP6OhV_ZGU/s72-c/256.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/09/256-day-of-year-programmers-day.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUDRHw7cSp7ImA9WhdRFEo.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-1580207641878109265</id><published>2011-08-04T19:01:00.001+02:00</published><updated>2011-08-04T19:01:15.209+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-04T19:01:15.209+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programista" /><category scheme="http://www.blogger.com/atom/ns#" term="sysinternals" /><title>Narzędzia SysInternals dla programisty</title><content type="html">&lt;p&gt;SysInternals to pakiet znakomitych narzędzi wychodzących spod ręki Marka Russinovicha oraz Bryce’a Cogswella . Choć w nazwie mają Sys - co sugerowałoby ich przeznaczenie administratorskie, to my, skromni programiści także możemy skorzystać z ich funkcjonalności i użyć ich do swoich celów. Dziś pokażę, jak 3 z nich mogą wspomóc pracę developera-poszukiwacza błędów.&lt;/p&gt;  &lt;p&gt;Produkcja    &lt;br /&gt;Jak wszyscy wiemy jest to takie specyficzne środowisko, że nie zawsze mamy dostęp do swoich ulubionych narzędzi (patrz Visual Studio). Oczywiście nie jesteśmy pozbawieni metod sprawdzenia się co się stało (Debugging na produkcji – &lt;a href="http://pawlos.blogspot.com/2011/01/debugging-na-produkcji-narzedzia.html"&gt;VSRD&lt;/a&gt;, &lt;a href="http://pawlos.blogspot.com/2011/01/debugging-na-produkcjinarzedziamdbg.html"&gt;MDbg&lt;/a&gt;, &lt;a href="http://pawlos.blogspot.com/2011/02/debugging-na-produkcjiwindbg.html"&gt;WinDbg&lt;/a&gt;). Jednakże podpięcie się debuggerem do naszej aplikacji spowoduje jej zatrzymanie, co niestety nie jest czasem możliwe (czasem nawet wadliwie działająca aplikacja jest lepsza niż nic).&lt;/p&gt;  &lt;h3&gt;Process Explorer&lt;/h3&gt;  &lt;p&gt;Czyli Menadżer zadań na sterydach :). Umożliwia przejrzenie procesów i wszystkiego co z nimi związane.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-3sGE1IpPIMA/TjrQTpaHaMI/AAAAAAAACM8/3YiYlWm9_vI/s1600-h/ProcessExplorer%25255B12%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="ProcessExplorer" border="0" alt="ProcessExplorer" src="http://lh5.ggpht.com/-1oP-T_bozDE/TjrQUmhw5TI/AAAAAAAACNA/fYhPC6a2F6E/ProcessExplorer_thumb%25255B10%25255D.png?imgmax=800" width="586" height="448" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Do czego go zatem możemy wykorzystać? Przede wszystkim w dolnym panelu (jeśli jest niewidoczny trzeba go włączyć View-&amp;gt;Show Lower Pane) możemy zobaczyć wszystkie powiązania jakie ma nasza aplikacja. Pliki, klucze rejestru, mutex’y, wątki – etc. Takie szybkie podsumowanie tego, z czego korzysta nasza aplikacja. Prawdziwe jednak morze informacji znajduje się po wyświetleniu właściwości procesu. Naszym oczom ukażą się zakładki eksponujące informacje o procesie aż do bielizny :). Od podstawowych informacji o pliku, przez wydajność procesu (pamięć, CPU, operacje I/O) do listy wątków; a w przypadku .NETowych pokaże nam jeszcze .NETowe mierniki wydajności (jak np. kolekcje GC i inne). Lista wątków dokładnie pokaże nam co w danej chwili robi nasza aplikacja i co zajmuje jej dużo cykli procesora.&lt;/p&gt;  &lt;p&gt;Do pobrania ze stron Technet’u – &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653"&gt;Process Explorer&lt;/a&gt;.&lt;/p&gt;  &lt;h3&gt;Process Monitor&lt;/h3&gt;  &lt;p&gt;To zastępnik takich narzędzi jak FileMon oraz RegMon. Łączy on w sobie funkcjonalności obu i dodaje multum dodatkowych (obserwowanie ruchu sieciowego czy wątków).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-p-aLd2-PY7k/TjrQVnsI24I/AAAAAAAACNE/64--gymjDBg/s1600-h/ProcMon%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="ProcMon" border="0" alt="ProcMon" src="http://lh4.ggpht.com/-mNaOF36t5bk/TjrQWm0Ty1I/AAAAAAAACNI/eqjYgAGfq2Q/ProcMon_thumb%25255B8%25255D.png?imgmax=800" width="595" height="375" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Do czego się przydaje? Pozwala w prosty sposób, po wcześniejszym skonfigurowaniu (bez tego przeglądanie set-tysięcy zdarzeń jest bezcelowe) zobaczyć, co dzieje się w naszej aplikacji podczas jej działania. Tj. jakie pliki są szukane, odczytywane i zapisywane przez nią. Jakie klucze rejestru są przeszukiwane i jakie dane są z nich odczytywane. Dość przydatne aby zdiagnozować powód niedziałania aplikacji. &lt;/p&gt;  &lt;p&gt;Ostatnio miałem taką sytuację, że aplikacja na pewnej maszynie nie uruchamiała się wyrzucając tajemniczy wyjątek &lt;span style="font-family: consolas"&gt;‘File Not Found’&lt;/span&gt; w bibliotece zewnętrznej. Brak informacji o tym, jakiego pliku brakowało nie przeszkadzał w jego odnalezieniu. Uruchomienie Process Monitora wraz z jego konfiguracją, tak aby zwracał nam tylko zdarzenia związane z naszą aplikacją oraz tylko te dotyczące plików zajęło mniej niż minutę. Po zebraniu materiału dowodowego został on pogrupowany po rezultacie a następnie wyświetlone zostały tylko te zdarzenia, które miały status &lt;span style="font-family: consolas"&gt;‘Name Not Found’&lt;/span&gt;. Bardzo szybko okazało się, że brakującym winowajcą był winusb.dll. Solved!&lt;/p&gt;  &lt;p&gt;Do pobrania ze stron TechNet’u – &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645"&gt;Process Monitor&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Miłego używania i debuggowania!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-1580207641878109265?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=vv1hQY4gt3g:ZIZ8XKQLFsw:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=vv1hQY4gt3g:ZIZ8XKQLFsw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vv1hQY4gt3g:ZIZ8XKQLFsw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/vv1hQY4gt3g" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/1580207641878109265/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=1580207641878109265" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/1580207641878109265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/1580207641878109265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/vv1hQY4gt3g/narzedzia-sysinternals-dla-programisty.html" title="Narzędzia SysInternals dla programisty" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-1oP-T_bozDE/TjrQUmhw5TI/AAAAAAAACNA/fYhPC6a2F6E/s72-c/ProcessExplorer_thumb%25255B10%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/08/narzedzia-sysinternals-dla-programisty.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A04DRXo4eSp7ImA9WhdTFUU.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-8623152775116564881</id><published>2011-07-13T22:46:00.001+02:00</published><updated>2011-07-13T22:46:14.431+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T22:46:14.431+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="devPytania" /><category scheme="http://www.blogger.com/atom/ns#" term="statystyki" /><title>Statystyki devPytań</title><content type="html">&lt;p&gt;Wszystko zaczęło się od posta na &lt;a href="http://meta.devmedia.pl"&gt;meta.devmedia.pl&lt;/a&gt; (&lt;a href="http://meta.devmedia.pl/questions/321/pytania-z-devpytan-publiczne"&gt;Pytania z devPytań publiczne&lt;/a&gt;),     &lt;br /&gt;w którym zapytałem o możliwość uzyskania danych, które cała społeczność devPytań stworzyła przez cały czas istnienia portalu. Prośba została dość szybko spełniona (&lt;a href="http://www.devblogi.pl/2011/06/o-pewnym-sukcesie.html"&gt;O pewnym sukcesie&lt;/a&gt;) i dzięki temu można było usiąść i zobaczyć co też te dane skrywają. Format, w jakim zostały one udostępnione to xml (dzięki temu, można z nich skorzystać, bez względu na bazę danych). Ja jednak zaimportowałem je sobie do MS SQL'a (jak to robiłem pokazane jest w poście - &lt;a href="http://pawlos.blogspot.com/2011/06/ku-pamieci-jak-zaimportowac-xml-do-bazy.html"&gt;Ku pamięci - Jak zaimportować dane XML&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;Aby nie przeciągać – zamieszczam poniżej statystyki, które obliczyłem na dzień dzisiejszy. Być może w przyszłości pojawią się kolejne.&lt;/p&gt;  &lt;h3&gt;Aktywni użytkownicy portalu (zdobyli choć 1 punkt):&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="6"&gt;&lt;font size="3"&gt;839&lt;/font&gt;         &lt;br /&gt;&lt;/font&gt;&lt;/strong&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Suma reputacji wszystkich użytkowników:&lt;/h3&gt;  &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;119429&lt;/font&gt;&lt;/strong&gt; – i niestety jest to mniej niż ma sam jeden &lt;a href="http://stackoverflow.com/users/22656/jon-skeet"&gt;Jon Skeet&lt;/a&gt; ze StackOverflow :)&lt;/p&gt;  &lt;h3&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;Aktywność użytkowników (godzinowa):&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-eZMzKQIGqdA/Th4D9ooaA2I/AAAAAAAACLc/anh9CkDOR70/s1600-h/godzinki%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="godzinki" border="0" alt="godzinki" src="http://lh6.ggpht.com/-_4b4FQ2BieQ/Th4D-2cAeGI/AAAAAAAACLg/bLeg0t7-y-0/godzinki_thumb%25255B9%25255D.png?imgmax=800" width="827" height="405" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Widać, że większość preferuje godziny pracy na przesiadywanie na devPytania. Oczywiście w celu poszukiwania informacji na potrzeby pojawiających się problemów.&lt;/p&gt;  &lt;h3&gt;Odznaki, które nie zostały jeszcze wykorzystane&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-cSTtcRZCShE/Th4D_jRC8HI/AAAAAAAACLk/zEvJSjUXva0/s1600-h/badges%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="badges" border="0" alt="badges" src="http://lh3.ggpht.com/-lreaG9Uqvgk/Th4EAZmfXWI/AAAAAAAACLo/YXlzFQzJiuI/badges_thumb%25255B1%25255D.png?imgmax=800" width="791" height="588" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Generalist - Active in many different tags &lt;/li&gt;    &lt;li&gt;Guru - Accepted answer and voted up 40 times &lt;/li&gt;    &lt;li&gt;Good Question - Question voted up 25 times &lt;/li&gt;    &lt;li&gt;Great Question - Question voted up 100 times &lt;/li&gt;    &lt;li&gt;Good Answer - Answer voted up 25 times &lt;/li&gt;    &lt;li&gt;Great Answer - Answer voted up 100 times &lt;/li&gt;    &lt;li&gt;Famous Question - Asked a question with 10,000 views &lt;/li&gt;    &lt;li&gt;Hacker - Conctributed to Stack Overflow in an unusual way &lt;/li&gt;    &lt;li&gt;Favorite Question - Question favorited by 25 users &lt;/li&gt;    &lt;li&gt;Stellar Question - Question favorited by 100 users &lt;/li&gt;    &lt;li&gt;Populist - Provided an answer that outscored an accepted answer with 10 votes by 2x &lt;/li&gt;    &lt;li&gt;Pundit - Left 10 comments with score of 10 or more &lt;/li&gt;    &lt;li&gt;Reversal - Provided answer of +20 score to a question of -5 score &lt;/li&gt;    &lt;li&gt;Mortarboard - Hit the daily reputation cap for the first time &lt;/li&gt;    &lt;li&gt;Epic - Hit the daily reputation cap on 50 days &lt;/li&gt;    &lt;li&gt;Legendary - Hit the daily reputation cap on 150 days &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Coś czuję, że z aktywnością naszych użytkowników ciężko będzie osiągnąć te odznaki. Ciekawe, za co można dostać odznakę Hacker? Może za takie posty? :)&lt;/p&gt;  &lt;h3&gt;Procentowy udział użytkowników w całkowitej reputacji portalu&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-UM-cqAerN1k/Th4EA--UsbI/AAAAAAAACLs/XiMqVFS1Vr8/s1600-h/procent%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="procent" border="0" alt="procent" src="http://lh3.ggpht.com/-ZvZTn3JKsXE/Th4ECpVyyKI/AAAAAAAACLw/HsUz0i1xw9o/procent_thumb%25255B8%25255D.png?imgmax=800" width="682" height="445" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Koziołek&amp;#160;&amp;#160;&amp;#160; 3,99 % &lt;/li&gt;    &lt;li&gt;Paweł Łukasik&amp;#160;&amp;#160;&amp;#160; 3,91 % &lt;/li&gt;    &lt;li&gt;Gutek&amp;#160;&amp;#160;&amp;#160; 3,66 % &lt;/li&gt;    &lt;li&gt;dario-g&amp;#160;&amp;#160;&amp;#160; 3,12 % &lt;/li&gt;    &lt;li&gt;Robert Olechowski&amp;#160;&amp;#160;&amp;#160; 2,61 % &lt;/li&gt;    &lt;li&gt;Marcin&amp;#160;&amp;#160;&amp;#160; 2,33 % &lt;/li&gt;    &lt;li&gt;Procent&amp;#160;&amp;#160;&amp;#160; 2,26 % &lt;/li&gt;    &lt;li&gt;Jurek Kozyra&amp;#160;&amp;#160;&amp;#160; 2,04 % &lt;/li&gt;    &lt;li&gt;uirapuru&amp;#160;&amp;#160;&amp;#160; 2,02 % &lt;/li&gt;    &lt;li&gt;noisy&amp;#160;&amp;#160;&amp;#160; 1,78 % &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Widać, że pierwsza dziesiątka użytkowników odpowiada za trochę ponad 27% całości.&lt;/p&gt;  &lt;h3&gt;Średnia liczba punktów na dzień (w stosunku do czasu na portalu)&lt;/h3&gt;  &lt;br /&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-lOKmK96Oidk/Th4EDCq_t2I/AAAAAAAACL0/NI4-2XUiTV4/s1600-h/pktday%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="pktday" border="0" alt="pktday" src="http://lh3.ggpht.com/-7Im1uEALv8E/Th4ED4dd-SI/AAAAAAAACL4/QrJiV37zehY/pktday_thumb%25255B7%25255D.png?imgmax=800" width="776" height="403" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Gutek&amp;#160;&amp;#160;&amp;#160; 8,86 &lt;/li&gt;    &lt;li&gt;Koziołek&amp;#160;&amp;#160;&amp;#160; 8,78 &lt;/li&gt;    &lt;li&gt;Paweł Łukasik&amp;#160;&amp;#160;&amp;#160; 8,6 &lt;/li&gt;    &lt;li&gt;Robert Olechowski&amp;#160;&amp;#160;&amp;#160; 8,00 &lt;/li&gt;    &lt;li&gt;Jurek Kozyra&amp;#160;&amp;#160;&amp;#160; 7,22 &lt;/li&gt;    &lt;li&gt;dario-g&amp;#160;&amp;#160;&amp;#160; 6,98 &lt;/li&gt;    &lt;li&gt;mykhaylo&amp;#160;&amp;#160;&amp;#160; 6,68 &lt;/li&gt;    &lt;li&gt;Marcin&amp;#160;&amp;#160;&amp;#160; 5,76 &lt;/li&gt;    &lt;li&gt;Procent&amp;#160;&amp;#160;&amp;#160; 5,07 &lt;/li&gt;    &lt;li&gt;noisy&amp;#160;&amp;#160;&amp;#160; 5,05 &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Wbrew pozorom nie zawsze dłuższy staż == więcej punktów na dzień.&lt;/p&gt;  &lt;h3&gt;Średnia punktów na użytkownika&lt;/h3&gt;  &lt;p&gt;&lt;font size="4"&gt;89,90&lt;/font&gt;&lt;/p&gt;  &lt;h3&gt;Top 10 ilości odznak&lt;/h3&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-n2ZnLT43yEQ/Th4EEen-PyI/AAAAAAAACL8/h7co6QCbJ30/s1600-h/top-user-badges%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="top-user-badges" border="0" alt="top-user-badges" src="http://lh4.ggpht.com/-fFZNqLNEbxc/Th4EFd5Y4tI/AAAAAAAACMA/rQ0OfOLJCpQ/top-user-badges_thumb%25255B6%25255D.png?imgmax=800" width="813" height="415" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Robert Olechowski&amp;#160; 26 &lt;/li&gt;    &lt;li&gt;Gutek&amp;#160;&amp;#160;&amp;#160; 22 &lt;/li&gt;    &lt;li&gt;Jurek Kozyra&amp;#160;&amp;#160;&amp;#160; 22 &lt;/li&gt;    &lt;li&gt;Marcin&amp;#160;&amp;#160;&amp;#160; 22 &lt;/li&gt;    &lt;li&gt;Eagle&amp;#160;&amp;#160;&amp;#160; 21 &lt;/li&gt;    &lt;li&gt;andrzejp&amp;#160;&amp;#160;&amp;#160; 20 &lt;/li&gt;    &lt;li&gt;Koziołek&amp;#160;&amp;#160;&amp;#160; 19 &lt;/li&gt;    &lt;li&gt;bodziec&amp;#160;&amp;#160;&amp;#160; 18 &lt;/li&gt;    &lt;li&gt;rafek&amp;#160;&amp;#160;&amp;#160; 18 &lt;/li&gt;    &lt;li&gt;Paweł Łukasik&amp;#160;&amp;#160;&amp;#160; 18 &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Top 5 up-vote'ów&lt;/h3&gt;  &lt;p&gt;21&amp;#160;&amp;#160;&amp;#160; Procent - &lt;a href="http://devpytania.pl/questions/1614/po-co-to-wszystko/1620#1620"&gt;Po co to wszystko&lt;/a&gt;     &lt;br /&gt;20&amp;#160;&amp;#160;&amp;#160; Koziołek - &lt;a href="http://devpytania.pl/questions/3904/lepiej-zwracac-bool-czy-rzucac-wyjatek/3905#3905"&gt;Lepiej zwracać bool czy rzucać wyjątek&lt;/a&gt;     &lt;br /&gt;20&amp;#160;&amp;#160;&amp;#160; wit – &lt;a href="http://devpytania.pl/questions/1614/po-co-to-wszystko"&gt;Po co to wszystko&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;19&amp;#160;&amp;#160;&amp;#160; vigrid – &lt;a href="http://devpytania.pl/questions/2092/ile-zarabiacie-na-freelanceringu/2094#2094"&gt;Ile zarabiacie na freelancingu&lt;/a&gt;&amp;#160; &lt;br /&gt;18&amp;#160;&amp;#160;&amp;#160; Procent – &lt;a href="http://devpytania.pl/questions/1759/jakie-jest-twoje-wymarzone-miejsce-pracy-jako-programista/1779#1779"&gt;Jakie jest twoje wymarzone miejsce pracy jako programista&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Procent z dwoma wiadomościami na czele.... :)&lt;/p&gt;  &lt;h3&gt;Top 5 postów down-vote'ów&lt;/h3&gt;  &lt;p&gt;-20&amp;#160;&amp;#160;&amp;#160; MakabrycznyBoo – &lt;a href="http://devpytania.pl/questions/1217/ksiazki-do-nauki-programowania-na-zywych-programach/1230#1230"&gt;Książki do nauki programowania na żywych programach&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;-11&amp;#160;&amp;#160;&amp;#160; EWA – &lt;a href="http://devpytania.pl/questions/2617/tablica-decyzyjna"&gt;Tablica decyzyjna&lt;/a&gt;     &lt;br /&gt;-9&amp;#160;&amp;#160;&amp;#160; Inga PITT Bordeaux – &lt;a href="http://devpytania.pl/questions/2972/choroby-zawodowe-programistow-jak-sobie-z-nimi-radzic-jaka-profilaktyka/3054#3054"&gt;Choroby zawodowe programistów? Jak sobie z nimi radzić, jaka profilaktyka?&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;-9&amp;#160;&amp;#160;&amp;#160; Roo – &lt;a href="http://devpytania.pl/questions/2747/czy-znacie-skrypty-podobne-do-stron-jak-mmwarszawa-pl-naszemiasto-pl-lub-wiado"&gt;Czy znacie skrypty podobne do stron jak mmwarszawa.pl, naszemiasto.pl/ lub wiadomosci24.pl&lt;/a&gt;&amp;#160;&amp;#160; &lt;br /&gt;-9&amp;#160;&amp;#160;&amp;#160; funandmobile – &lt;a href="http://devpytania.pl/questions/5039/szukam-programistow-net-closed"&gt;Szukam programistów .NET [zamknięte]&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;Interesują cię takie statystyki? Chcesz wiedzieć więcej? Zostaw komentarz pod postem.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-8623152775116564881?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=vKiaOvxY-Ck:jptn2OGaJrU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=vKiaOvxY-Ck:jptn2OGaJrU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=vKiaOvxY-Ck:jptn2OGaJrU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/vKiaOvxY-Ck" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/8623152775116564881/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=8623152775116564881" title="Komentarze (10)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8623152775116564881?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8623152775116564881?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/vKiaOvxY-Ck/statystyki-devpytan.html" title="Statystyki devPytań" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-_4b4FQ2BieQ/Th4D-2cAeGI/AAAAAAAACLg/bLeg0t7-y-0/s72-c/godzinki_thumb%25255B9%25255D.png?imgmax=800" height="72" width="72" /><thr:total>10</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/07/statystyki-devpytan.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEYBQ306cSp7ImA9WhZaFUg.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-6442088360354390812</id><published>2011-07-01T22:29:00.001+02:00</published><updated>2011-07-01T22:29:12.319+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-01T22:29:12.319+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="debugger" /><category scheme="http://www.blogger.com/atom/ns#" term="debug" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="crash" /><title>Automatyczny Dump przy crash’u aplikacji</title><content type="html">&lt;p&gt;Ostatnio w komentarzu do posta o &lt;a href="http://pawlos.blogspot.com/2010/09/ie8-crash.html"&gt;IE8 crash&lt;/a&gt; pojawił się komentarz o tym, czy możliwe jest takie skonfigurowanie systemu, aby automatycznie wykonywał się dump procesu, który przedwcześnie zakończył swój żywot w systemie. Oczywiście da się coś takiego osiągnąć i w tym poście pokaże jak.&lt;/p&gt;  &lt;h4&gt;Gdy proces umiera…&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-MoKhcLwP4NU/Tg4uFKRNn0I/AAAAAAAACKg/usx5s5LT214/s1600-h/Crash9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Crash" border="0" alt="Crash" src="http://lh4.ggpht.com/-ytwDvvKsAg8/Tg4uF2LSL9I/AAAAAAAACKk/igrS_KDrono/Crash_thumb7.png?imgmax=800" width="626" height="382" /&gt;&lt;/a&gt;     &lt;br /&gt;To, co dzieje się w systemie po tym jak aplikacja umiera nie jest na sztywno zaszyte - wręcz przeciwnie bardzo konfigurowalne. Za to, co nam się uruchomi gdy aplikacja przestanie działać odpowiada klucz w rejestrze a dokładniej:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;64 bit&lt;/strong&gt;:     &lt;br /&gt;&lt;span style="font-family: consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;32 bit&lt;/strong&gt;:     &lt;br /&gt;&lt;span style="font-family: consolas"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug&lt;/span&gt;&lt;/p&gt;  &lt;p align="left"&gt;W polu &lt;span style="font-family: consolas"&gt;Debugger&lt;/span&gt;, możemy wpisać nasz debugger, który może zostać uruchomiony w przypadku wystąpienia crashu aplikacji. Jeśli chcemy, aby były wykonywane zrzuty aplikacji w momencie, gdy przestanie ona działać, wystarczy w polu tym wpisać:&lt;/p&gt;  &lt;p style="font-family: consolas" align="center"&gt;&amp;quot;&lt;em&gt;Path&lt;/em&gt;\WinDbg.exe&amp;quot; -p %ld –c &amp;quot;.dump /ma /u &amp;lt;PATH_To_DUMPS&amp;gt;\CrashDump.dmp;q&amp;quot; -e %ld –g &lt;/p&gt;  &lt;p&gt;Dzięki takiemu ustawieniu dump procesu zostanie zrzucony do pliku, a dodanie ;q spowoduje, że WinDbg zakończy działanie. Więcej informacji odnośnie Postmortem debugging można znaleźć w &lt;a href="http://msdn.microsoft.com/en-us/library/ff542967%28v=vs.85%29.aspx"&gt;Enabling Postomortem Debugging&lt;/a&gt;. Jak prezentuje się całość:&lt;/p&gt;  &lt;div style="text-align: center"&gt;&lt;object id="scPlayer"  width="720" height="450" type="application/x-shockwave-flash" data="http://content.screencast.com/users/pawlos/folders/Jing/media/694a1dc1-0ed0-4354-affd-25f87ad0f491/jingswfplayer.swf" &gt; &lt;param name="movie" value="http://content.screencast.com/users/pawlos/folders/Jing/media/694a1dc1-0ed0-4354-affd-25f87ad0f491/jingswfplayer.swf" /&gt; &lt;param name="quality" value="high" /&gt; &lt;param name="bgcolor" value="#FFFFFF" /&gt; &lt;param name="flashVars" value="thumb=http://content.screencast.com/users/pawlos/folders/Jing/media/694a1dc1-0ed0-4354-affd-25f87ad0f491/FirstFrame.jpg&amp;amp;containerwidth=1440&amp;amp;containerheight=900&amp;amp;content=http://content.screencast.com/users/pawlos/folders/Jing/media/694a1dc1-0ed0-4354-affd-25f87ad0f491/AutoDump.swf&amp;amp;blurover=false" /&gt; &lt;param name="allowFullScreen" value="true" /&gt; &lt;param name="scale" value="showall" /&gt; &lt;param name="allowScriptAccess" value="always" /&gt; &lt;param name="base" value="http://content.screencast.com/users/pawlos/folders/Jing/media/694a1dc1-0ed0-4354-affd-25f87ad0f491/" /&gt; Unable to display content. Adobe Flash is required.&lt;/object&gt;&lt;/div&gt;  &lt;p&gt;Miłego crashowania!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-6442088360354390812?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=wrfAxYn5gXc:-7_T-8ee9pQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=wrfAxYn5gXc:-7_T-8ee9pQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=wrfAxYn5gXc:-7_T-8ee9pQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/wrfAxYn5gXc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/6442088360354390812/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=6442088360354390812" title="Komentarze (1)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6442088360354390812?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6442088360354390812?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/wrfAxYn5gXc/automatyczny-dump-przy-crashu-aplikacji.html" title="Automatyczny Dump przy crash’u aplikacji" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-ytwDvvKsAg8/Tg4uF2LSL9I/AAAAAAAACKk/igrS_KDrono/s72-c/Crash_thumb7.png?imgmax=800" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/07/automatyczny-dump-przy-crashu-aplikacji.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEADRHc9cCp7ImA9WhZaE04.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-2364577782969279416</id><published>2011-06-29T09:15:00.002+02:00</published><updated>2011-06-29T09:32:55.968+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T09:32:55.968+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="xml" /><category scheme="http://www.blogger.com/atom/ns#" term="T-SQL" /><category scheme="http://www.blogger.com/atom/ns#" term="SQL" /><title>Ku pamięci – Jak zaimportować XML do bazy danych</title><content type="html">&lt;p&gt;Bawię się ostatnio publicznymi danymi udostępnionymi z serwisu devPytania (info tutaj &lt;a href="http://www.devblogi.pl/2011/06/o-pewnym-sukcesie.html"&gt;O pewnym sukcesie&lt;/a&gt;) i już zanim przystąpiłem do próby analizy tych danych pojawił się problem. &lt;/p&gt;&lt;p&gt;Dane zostały udostępnione w formacie XML, który oczywiście mimo wszystkich swoich zalet o przenoszalności i dowolnego jego wykorzystania jest średnio zrozumiały przez MS SQL, które to chciałem zaprząc do tejże analizy. Tak więc pierwszą trudnością było to, jak wczytać takie dane do tabel.&lt;/p&gt;&lt;p&gt;Na sieci można znaleźć sporo postów mówiących, jak rozwiązać ten problem ale większość mówi jak XML’a wczytać po prostu do jednej kolumny bez analizy zawartości i stworzenia tylu wierszy w tabeli, ile głównych node’ów mamy w XMLu.    &lt;br /&gt;
W końcu po prawie godzinie zmarnowanej na próbowaniu tego czy innego rozwiązania udało się znaleźć działający sposób (&lt;a href="http://msdn.microsoft.com/en-us/library/ms186918.aspx"&gt;OPENXML&lt;/a&gt;). Prawie idealny.&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;DECLARE &lt;/span&gt;@idoc &lt;span style="color: blue"&gt;int
DECLARE &lt;/span&gt;@doc &lt;span style="color: blue"&gt;varchar&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;&lt;span style="color: magenta"&gt;max&lt;/span&gt;&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;SET &lt;/span&gt;@doc &lt;span style="color: gray"&gt;=&lt;/span&gt;&lt;span style="color: red"&gt;'&amp;lt;xml&amp;gt;'
&lt;/span&gt;&lt;span style="color: green"&gt;--Create an internal representation of the XML document.
&lt;/span&gt;&lt;span style="color: blue"&gt;EXEC &lt;/span&gt;&lt;span style="color: maroon"&gt;sp_xml_preparedocument &lt;/span&gt;@idoc &lt;span style="color: blue"&gt;OUTPUT&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;@doc
&lt;span style="color: green"&gt;-- Execute a SELECT statement that uses the OPENXML rowset provider.
&lt;/span&gt;&lt;span style="color: blue"&gt;INSERT &lt;/span&gt;Posts &lt;span style="color: blue"&gt;SELECT    &lt;/span&gt;&lt;span style="color: gray"&gt;*
&lt;/span&gt;&lt;span style="color: blue"&gt;FROM   OPENXML &lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;@idoc&lt;span style="color: gray"&gt;, &lt;/span&gt;&lt;span style="color: red"&gt;'/Posts/row'&lt;/span&gt;&lt;span style="color: gray"&gt;,&lt;/span&gt;1&lt;span style="color: gray"&gt;)
&lt;/span&gt;&lt;span style="color: blue"&gt;WITH &lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;Id &lt;span style="color: blue"&gt;int&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;PostTypeId &lt;span style="color: blue"&gt;int&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;CreationDate &lt;span style="color: blue"&gt;datetime2&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;7&lt;span style="color: gray"&gt;), 
&lt;/span&gt;Score &lt;span style="color: blue"&gt;int&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;ViewCount&lt;span style="color: gray"&gt;, &lt;/span&gt;Body &lt;span style="color: blue"&gt;ntext&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;OwnerUserId &lt;span style="color: blue"&gt;int&lt;/span&gt;&lt;span style="color: gray"&gt;, &lt;/span&gt;DeletionDate &lt;span style="color: blue"&gt;datetime2&lt;/span&gt;&lt;span style="color: gray"&gt;(&lt;/span&gt;7&lt;span style="color: gray"&gt;))&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;Co tu robimy? Na podstawie zmiennej &lt;span style="font-family: consolas"&gt;@doc&lt;/span&gt; tworzymy dokument XML a następnie za pomocą OPENXML wybieramy odpowiednie elementy. Parametrami tego polecenia są: dokument XML, XPATH do wzorca wiersza jaki będziemy importować oraz flaga mapowania. Ten ostatni parametr zasługuje na krótkie przyjrzenie się mu. Odpowiada on za ustawienie tego, w jaki sposób będą mapowane dane z XMLa na kolumny w bazie.&lt;/p&gt;&lt;p align="left"&gt;0 – domyślnie; takie samo jak 1 &lt;br /&gt;
1 - dane odczytywane z atrybutów &lt;br /&gt;
2 – dane odczytywane z elementów &lt;br /&gt;
8 – dane nie będą kopiowane do pola &lt;span style="font-family: consolas"&gt;@mp:xmltext&lt;/span&gt;, które jest wykorzystywane w celach parsowania&lt;/p&gt;&lt;p&gt;Wartości można łączyć logiczną alternatywą. Czyli wg dokumentacji dozwolone są zarówno wartości 1,2 jak i 3,9 oraz 10. &lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Po wykonaniu takiego zapytania wiersze z pliku znajdą się w tabeli w bazie danych.&lt;/p&gt;&lt;p&gt;A czemu to prawie idealne rozwiązanie? Z dwóch powodów. Po pierwsze zawartość XML’a trzeba wkleić i podstawić do zmiennej &lt;span style="font-family: consolas"&gt;@doc&lt;/span&gt;. Nie dałem rady zmusić T-SQL’a do zaczytania pliku i podstawiania wartości do tej zmiennej. &lt;br /&gt;
Drugi problem to wielkość danych. varchar to w T-SQL 8000 bajtów, tak więc przy większych plikach (a takowym był plik pytań i odpowiedzi) dane należało podzielić na mniejsze paczki ręcznie. Zmiennej typu text nie da rady utworzyć oczywiście.&lt;/p&gt;&lt;p&gt;Ktoś wie jak można to zrobić lepiej/ładniej/szybciej i ominąć te dwa powody?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-2364577782969279416?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BwaKYupKy50:mCob0HkaSqM:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=BwaKYupKy50:mCob0HkaSqM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=BwaKYupKy50:mCob0HkaSqM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/BwaKYupKy50" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/2364577782969279416/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=2364577782969279416" title="Komentarze (18)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2364577782969279416?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/2364577782969279416?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/BwaKYupKy50/ku-pamieci-jak-zaimportowac-xml-do-bazy.html" title="Ku pamięci – Jak zaimportować XML do bazy danych" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><thr:total>18</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/ku-pamieci-jak-zaimportowac-xml-do-bazy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IGRHcyfCp7ImA9WhZaEkQ.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-3494649660249631042</id><published>2011-06-28T23:12:00.001+02:00</published><updated>2011-06-28T23:12:05.994+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-28T23:12:05.994+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="narzędzia" /><category scheme="http://www.blogger.com/atom/ns#" term="mRemote" /><title>mRemote–narzędzie do zarządzania połączeniami zdalnymi</title><content type="html">&lt;p&gt;W pracy często spotykamy się z koniecznością logowania się do wielu serwerów zlokalizowanych w różnych miejscach. A to jakiś sewer buildów w jednej lokacji, a to produkcyjny w drugiej. Do dziś w tym celu miałem odpowiednio skonfigurowane i zapisane skróty do zdalnych pulpitów, ale takie rozwiązanie nie było zbyt wygodne. Ciężko też zarządzać grupą kilkunastu skrótów.&lt;/p&gt;  &lt;p&gt;Od dziś przerzuciłem się na narzędzie &lt;a href="http://www.mremote.org/wiki/MainPage.ashx"&gt;mRemote&lt;/a&gt;. Pozwala ono zebrać w jedno miejsce wszystkie nasze zdalne pulpity, połączenie VNC, SSH i inne (lista obsługiwanych protokołów na stronie). Dzięki niemu, będziemy mogli zdefiniować wszystkie nasze połączenia w jednym miejscu i z niego nimi zarządzać.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-UsR4n87GR7M/TgpDopbPADI/AAAAAAAACKQ/Of6ITmeC004/s1600-h/mRemote%252520-%252520praca%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="mRemote - praca" border="0" alt="mRemote - praca" src="http://lh4.ggpht.com/-CM69CsaGYhA/TgpDpGgd6kI/AAAAAAAACKU/07TI6-fHA3Y/mRemote%252520-%252520praca_thumb%25255B22%25255D.png?imgmax=800" width="778" height="555" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Aplikacja także umożliwia zrobienie screenshotu ze zdalnego pulpitu (normalnie trzeba się &lt;strong&gt;trochę&lt;/strong&gt; nagimnastykować) a dość często z tego korzystam.&lt;/p&gt;  &lt;p&gt;Oczywiście nic nie stoi na przeszkodzie, aby mieć otwarte na raz kilka połączeń i w wygodny sposób przełączać się miedzy nimi za pomocą tabów. Aktualnie siedzę sobie z otwartymi dwoma zdalnymi pulpitami, zakładką pokazującą mi konfigurację mojego NAS’a oraz rutera. Oczywiście narzędzie darmowe. Sweet :).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-3494649660249631042?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=d2GblDoh4Q4:v0VapdgpIiU:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=d2GblDoh4Q4:v0VapdgpIiU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=d2GblDoh4Q4:v0VapdgpIiU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/d2GblDoh4Q4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/3494649660249631042/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=3494649660249631042" title="Komentarze (6)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/3494649660249631042?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/3494649660249631042?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/d2GblDoh4Q4/mremotenarzedzie-do-zarzadzania.html" title="mRemote–narzędzie do zarządzania połączeniami zdalnymi" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-CM69CsaGYhA/TgpDpGgd6kI/AAAAAAAACKU/07TI6-fHA3Y/s72-c/mRemote%252520-%252520praca_thumb%25255B22%25255D.png?imgmax=800" height="72" width="72" /><thr:total>6</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/mremotenarzedzie-do-zarzadzania.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8HSX48cCp7ImA9WhZaEk0.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-5984834605702261300</id><published>2011-06-27T22:49:00.002+02:00</published><updated>2011-06-27T22:50:38.078+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-27T22:50:38.078+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="sos" /><title>SOS w VisualStudio</title><content type="html">&lt;p&gt;Kolejny wpis z kategorii ‘nieznanych’. Dziś będzie o okienku &lt;span style="font-family: consolas"&gt;Immediate Window&lt;/span&gt;. Wszyscy wiemy (?), że można w nim wykonywać wszelkie polecenia, jakie można by napisać w kodzie czyli np. &lt;span style="font-family: consolas"&gt;var builder = new System.Text.StringBuilder() &lt;/span&gt;i będziemy mogli na tej zmiennej działać.&lt;/p&gt;&lt;p&gt;Ale za pomocą tego okna można napisać także .&lt;span style="font-family: consolas"&gt;load sos&lt;/span&gt; (było to także możliwe w VS 2008). Co to nam da?     &lt;br /&gt;
W większości przypadków wyświetli nam komunikat taki jak poniżej. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh4.ggpht.com/-O0iKwL8fUNA/TgjsxTDGOJI/AAAAAAAACJg/NpqZzQyTYZw/s1600-h/enable_unmanaged8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="enable_unmanaged" border="0" alt="enable_unmanaged" src="http://lh3.ggpht.com/-3qQiH0dGUik/Tgjsx-rjBFI/AAAAAAAACJk/C9YBIQ-_Kg0/enable_unmanaged_thumb6.png?imgmax=800" width="736" height="71" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Aby załadować SOS musimy włączyć unmanaged debugging w ustawieniach projektu.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-7eWfgy4BPRk/TgjsyZUphOI/AAAAAAAACJo/BxEccuTwtjE/s1600-h/managed-debugging9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="managed-debugging" border="0" alt="managed-debugging" src="http://lh4.ggpht.com/-SY9xvQEtM3Y/Tgjsy7ag9DI/AAAAAAAACJs/ndiZAm5IE64/managed-debugging_thumb7.png?imgmax=800" width="488" height="434" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A to już da nam więcej. Będziemy mieli dostęp do wszystkich poleceń SOS!    &lt;br /&gt;
Wtedy będziemy mogli wyświetlić stertę naszej aplikacji. Wystarczy wykonać polecenie &lt;span style="font-family: consolas"&gt;!dumpheap –stat&lt;/span&gt; i gotowe. Czyli tak naprawdę wyświetlić informacje o wszystkich obiektach w naszym programie.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-3XMzUYcvsI0/TgjszncoaQI/AAAAAAAACJw/kNpDT6xSipc/s1600-h/dumpheap_thumb72.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="dumpheap_thumb7" border="0" alt="dumpheap_thumb7" src="http://lh5.ggpht.com/-8rrUvzwHpHs/Tgjs0biDOJI/AAAAAAAACJ0/kHOZFQiHYP8/dumpheap_thumb7_thumb.png?imgmax=800" width="727" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Potem już z górki. Możemy wyświetlić informacje o konkretnej klasie, czyli &lt;span style="font-family: consolas"&gt;!dumpheap –mt &amp;lt;adres&amp;gt;&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-OrCBLeHTEhI/Tgjs1Sd0plI/AAAAAAAACJ4/7X2kEDzm8JQ/s1600-h/dumpheap28.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="dumpheap2" border="0" alt="dumpheap2" src="http://lh4.ggpht.com/-bcSzMKgi0xY/Tgjs1ygU_FI/AAAAAAAACJ8/WcrbaCyW_U4/dumpheap2_thumb6.png?imgmax=800" width="673" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Schodząc jeszcze niżej konkretnego obiektu: &lt;span style="font-family: consolas"&gt;!do 02a0cbbc&lt;/span&gt;. &lt;/p&gt;&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-jofYviNX-2A/Tgjs2cikzMI/AAAAAAAACKA/UK4rrXTdAeI/s1600-h/do9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="do" border="0" alt="do" src="http://lh5.ggpht.com/-L5-HLHElBxk/Tgjs3CpMrCI/AAAAAAAACKE/BjqscCo8M4I/do_thumb7.png?imgmax=800" width="724" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Lista poleceń nie ogranicza się tylko do tych wymienionych wyżej i daje dostęp do wszystkich poleceń modułu. Możemy analizować obiekty, kod i stos, struktury runtime’u oraz kilkanaście poleceń diagnostycznych. Pełna lista na zrzucie poniżej lub pod &lt;a href="http://msdn.microsoft.com/en-us/library/bb190764.aspx"&gt;tym&lt;/a&gt; linkiem na MSDN.&lt;/p&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-yfDJcfR0m4E/Tgjs33a92pI/AAAAAAAACKI/aRK32Mjk3Ng/s1600-h/help%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="help" border="0" alt="help" src="http://lh3.ggpht.com/-MBqmd1SLh1g/Tgjs4blNHDI/AAAAAAAACKM/NDJqFzQ9XwU/help_thumb%25255B8%25255D.png?imgmax=800" width="454" height="628" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Nice. Miłego SOS’owania.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-5984834605702261300?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=IriPJg89qzE:NcNuoGdsw6g:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=IriPJg89qzE:NcNuoGdsw6g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=IriPJg89qzE:NcNuoGdsw6g:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/IriPJg89qzE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/5984834605702261300/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=5984834605702261300" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/5984834605702261300?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/5984834605702261300?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/IriPJg89qzE/sos-w-visualstudio.html" title="SOS w VisualStudio" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-3qQiH0dGUik/Tgjsx-rjBFI/AAAAAAAACJk/C9YBIQ-_Kg0/s72-c/enable_unmanaged_thumb6.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/sos-w-visualstudio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIMRHk_eip7ImA9WhZbGE4.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-8978707660479621793</id><published>2011-06-23T15:43:00.001+02:00</published><updated>2011-06-23T15:43:05.742+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T15:43:05.742+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="dump" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio 2010" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="crash" /><title>Analiza dumpów w VisualStudio</title><content type="html">&lt;p&gt;Postanowiłem napisać kilka postów, które odkrywają “nieznane” funkcje Visual Studio. Dziś jeden z nich.    &lt;br /&gt;Czasem widzę, że największą furorę robią posty opisujące rzeczy (dla mnie) oczywiste. Okazuje się, jednak, że to co jest znane mnie, niekoniecznie jest wiedzą dość dobrze rozpowszechnioną. Zaczynamy zatem.&lt;/p&gt;  &lt;h4&gt;Analiza dumpów&lt;/h4&gt;  &lt;p&gt;Jeszcze do wersji 2008 ta funkcjonalność zarezerwowana była tylko dla świetnego narzędzia jakimi jest WinDbg. Jednakże od wersji 2010 VisualStudio potrafi odczytać i przeanalizować pliki *.dmp czyli zrzuty pamięci.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-1rwvJp1ymGI/TgNC1mRYCaI/AAAAAAAACI4/Tl655XuiFcs/s1600-h/dump8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="dump" border="0" alt="dump" src="http://lh5.ggpht.com/-0IhIuS1rsEw/TgNC2Oz5VAI/AAAAAAAACI8/NrNzg7zpenk/dump_thumb6.png?imgmax=800" width="710" height="286" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Za pomocą polecenia Open możemy wczytać taki plik i wyświetlić jego zawartość. Co więcej VisualStudio w ładny sposób potrafi pokazać nam, gdzie nasz program znajdował się w momencie wykonania zrzutu pamięci. Wystarczy, po załadowaniu pliku dumpa, wybrać opcję &lt;span style="font-family: consolas"&gt;'Debug with managed’&lt;/span&gt; (bądź native – w zależności od potrzeb) a następnie skorzystać z opcji Parallel Stacks. Dzięki temu naszym oczom ukaże się ładny stan aplikacji w momencie zrzutu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-NiPlCxAW9dI/TgNC2gw-HNI/AAAAAAAACJA/5NHJR7qTlfs/s1600-h/stacks10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="stacks" border="0" alt="stacks" src="http://lh6.ggpht.com/-0Vw0kaeNSGw/TgNC3Cm2PrI/AAAAAAAACJE/oQQU8ipKPuo/stacks_thumb8.png?imgmax=800" width="657" height="399" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Teraz już bez problemu będziemy mogli znaleźć wątki naszej aplikacji i zobaczyć, że tak na prawdę dwa z nich próbują wstawiać elementy do tego samego słownika powodując wyjątek.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-ZcwU-3v4B0Y/TgNC3uZ7T4I/AAAAAAAACJI/Rj6heOy0hC8/s1600-h/threads9.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="threads" border="0" alt="threads" src="http://lh4.ggpht.com/-vIOtW5qUhkA/TgNC4JXMYqI/AAAAAAAACJM/YnUsbXj-ahQ/threads_thumb7.png?imgmax=800" width="432" height="485" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;p&gt;Wcześniej, aby osiągnąć te rezultaty trzeba było analizować zrzut pamięci w WinDbg, co dla niektórych stanowiło barierę przed tego typu analizami. Co prawda WinDbg wspiera nas poleceniami typu &lt;span style="font-family: consolas"&gt;!analyze –v –hang ale mimo&lt;/span&gt; to niewiele osób to robiło w jakikolwiek sposób.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ipNaSBh9EqA/TgNC4_oVDwI/AAAAAAAACJQ/99WYtY9j5bo/s1600-h/analyze14.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="analyze" border="0" alt="analyze" src="http://lh6.ggpht.com/-HQCsCaD46N8/TgNC5UDBYjI/AAAAAAAACJU/OQHlLHFizBs/analyze_thumb12.png?imgmax=800" width="746" height="513" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dodatkowo po załadowaniu SOS (&lt;span style="font-family: consolas"&gt;.loadby sos clr&lt;/span&gt;) a potem po !DumpStack –short możemy zauważyć, że wątki 32 oraz 34 siedzą w tej samej metodzie a mianowicie &lt;span style="font-family: consolas"&gt;Dictionary.Insert&lt;/span&gt; wywołanej w tym samym miejscu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-ziTfxTF4KSM/TgNC576s4SI/AAAAAAAACJY/NV0AyohIh1I/s1600-h/dict_insert16.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="dict_insert" border="0" alt="dict_insert" src="http://lh6.ggpht.com/-uJQNt5yZOPg/TgNC6Oqu93I/AAAAAAAACJc/0UAwc2AIlkM/dict_insert_thumb12.png?imgmax=800" width="845" height="88" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;No więc mamy to samo co udostępnia teraz VisualStudio. Miłego analizowania zrzutów.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-8978707660479621793?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=PXozTuvGnLI:YOuXBt0KKKQ:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=PXozTuvGnLI:YOuXBt0KKKQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=PXozTuvGnLI:YOuXBt0KKKQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/PXozTuvGnLI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/8978707660479621793/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=8978707660479621793" title="Komentarze (2)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8978707660479621793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/8978707660479621793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/PXozTuvGnLI/analiza-dumpow-w-visualstudio.html" title="Analiza dumpów w VisualStudio" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-0IhIuS1rsEw/TgNC2Oz5VAI/AAAAAAAACI8/NrNzg7zpenk/s72-c/dump_thumb6.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/analiza-dumpow-w-visualstudio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUYHSHY-fyp7ImA9WhZbFUw.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-3766547820644439973</id><published>2011-06-19T21:52:00.001+02:00</published><updated>2011-06-19T21:52:19.857+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-19T21:52:19.857+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="debugger" /><category scheme="http://www.blogger.com/atom/ns#" term="debug" /><category scheme="http://www.blogger.com/atom/ns#" term="debugging" /><category scheme="http://www.blogger.com/atom/ns#" term="DebuggerCanvas" /><title>Debugger Canvas–deep(er) dive</title><content type="html">&lt;p&gt;Jakiś czas temu &lt;a href="http://tomaszwisniewski.com/"&gt;Tomek Wiśniewski&lt;/a&gt; na swoim blogu opisał (&lt;a href="http://tomaszwisniewski.com/debugger-canvas-nowe-spojrzenie-na-odrobaczanie/"&gt;Debugger Canvas – nowe spojrzenie na ”odrobaczanie”&lt;/a&gt;) ciekawy dodatek do Visual Studio a mianowicie &lt;a href="http://msdn.microsoft.com/en-us/devlabs/debuggercanvas"&gt;Debugger Canvas&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ponieważ lubię wszelkie rzeczy związane z “ odrobaczaniem” postanowiłem się trochę przyjrzeć mu bliżej. W tym wpisie chciałbym pokazać trochę dodatkowych “smaczków”, które są udostępnione za pomocą Debugger Canvas.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-LwSxOr0-oew/Tf5TRdsofFI/AAAAAAAACH4/2SmdtK-xADw/s1600-h/dc%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="dc" border="0" alt="dc" src="http://lh4.ggpht.com/-pc1qv51RqbQ/Tf5TSQHsezI/AAAAAAAACH8/jHdZwtf2Av8/dc_thumb%25255B11%25255D.png?imgmax=800" width="847" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Tak więc co dodatkowego posiada Debugger Canvas prócz tego co opisał Tomek? Na każdym z “bąbli” (wolę to określenie od chmurek) w prawym górnym rogu widoczna jest mała niebieska ikonka (to samo można uzyskać za pomocą opcji &lt;span style="font-family: consolas"&gt;Locals Bubble&lt;/span&gt;). Po jej przyciśnięciu mamy dostęp do locals’ów czyli zmiennych widocznych w bieżącej ramce.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-yfs-qNP7S40/Tf5TS6wsqUI/AAAAAAAACIA/Y1ZPXajE9p0/s1600-h/locals%25255B7%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="locals" border="0" alt="locals" src="http://lh4.ggpht.com/-IeS92rdvAkc/Tf5TTRwE4wI/AAAAAAAACIE/bSIe_CmMV_4/locals_thumb%25255B5%25255D.png?imgmax=800" width="529" height="229" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Ale to nie wszystko, klikając ikonę aparatu możemy zrobić “snapshot” bieżących wartości i w kolejnym przebiegu programu możemy je porównywać z aktualnymi.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-8G9q0AHtVe8/Tf5TT_Lt3vI/AAAAAAAACII/rtCuzEdqjUE/s1600-h/locals_cmp%25255B11%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="locals_cmp" border="0" alt="locals_cmp" src="http://lh6.ggpht.com/-Z89QWIdikvY/Tf5TU6ZoQQI/AAAAAAAACIM/SCOtthfoqI4/locals_cmp_thumb%25255B7%25255D.png?imgmax=800" width="540" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dzięki temu w prosty sposób możemy zaobserwować jakie zmiany zachodzą w programie i dlaczego w poprzednim przebiegu nasz program zachował się inaczej niż obecnie.&lt;/p&gt;  &lt;p&gt;W domyślnym (i jedynym :)) swoim widoku, Debugger Canvas, wyświetla ciało jednej metody bądź właściwości. Z jednej strony ogranicza nasze pole widzenia tylko do tego co aktualnie istotne (wykonywany kod) z drugiej strony czasem pojawia się potrzeba zobaczenia czegoś więcej. Możemy wtedy skorzystać z małej czarnej strzałki w nagłówku każdego z bąbli.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-degUzybXFaA/Tf5TVuM3HnI/AAAAAAAACIQ/OuAJJck9My4/s1600-h/other_stuff%25255B25%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="other_stuff" border="0" alt="other_stuff" src="http://lh4.ggpht.com/-a3REQ9FeLXc/Tf5TWnlDd5I/AAAAAAAACIU/-8P7rrU7kuk/other_stuff_thumb%25255B23%25255D.png?imgmax=800" width="557" height="154" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Z listy, która się rozwinie możemy otworzyć w dodatkowych “bąblach” pozostałe fragmenty kodu dostępne na danym obiekcie.&lt;/p&gt;  &lt;p&gt;Możemy również podkreślić całą ścieżkę wykonania programu klikając na strzałki pomiędzy bąblami. Ścieżka wykonania będzie oznaczona się wtedy na czerwono.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Wg9XnmC6goA/Tf5TXbNZ2nI/AAAAAAAACIY/dYwUmKBT6WM/s1600-h/path%25255B12%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="path" border="0" alt="path" src="http://lh4.ggpht.com/-QCfNpYkGXKM/Tf5TYp-zGnI/AAAAAAAACIc/ag2_3GUqL18/path_thumb%25255B10%25255D.png?imgmax=800" width="982" height="489" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Dodatkowo pod prawym przyciskiem myszy mamy możliwość utworzenia notatki, czy też wyszukania fragmentu kodu. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-d_FnqMC59bo/Tf5TZC0kGJI/AAAAAAAACIg/8X2iEI4f4Ts/s1600-h/stickynote%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="stickynote" border="0" alt="stickynote" src="http://lh4.ggpht.com/-ObfladvLKgo/Tf5TZwt6M1I/AAAAAAAACIk/AxDyQdphf2s/stickynote_thumb%25255B6%25255D.png?imgmax=800" width="244" height="199" /&gt;&lt;/a&gt;&lt;a href="http://lh5.ggpht.com/-ysQNJXOta0A/Tf5TaRHVX4I/AAAAAAAACIo/F5Va7Lj51v0/s1600-h/FindCode%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="FindCode" border="0" alt="FindCode" src="http://lh3.ggpht.com/-w362EF0Kkko/Tf5TajbmqbI/AAAAAAAACIs/FQvijT2rHvA/FindCode_thumb%25255B7%25255D.png?imgmax=800" width="244" height="83" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;W opcjach jak na razie jest niewiele ustawień. Mamy możliwość włączenia edycji kodu w “bąblach”, ale w chwili obecnej jest to opcja eksperymentalna i może spowodować, iż nasze Visual Studio przestanie działać.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ySPZVfhlDvY/Tf5TbN-lozI/AAAAAAAACIw/w9lTYtwq5uI/s1600-h/options%25255B10%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="options" border="0" alt="options" src="http://lh5.ggpht.com/-dDGEWccv80Q/Tf5Tcm_oCSI/AAAAAAAACI0/Xe8E6wj_-pQ/options_thumb%25255B8%25255D.png?imgmax=800" width="528" height="314" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Na koniec cały efekt naszej pracy, o czym wspominał Tomek, możemy zapisać do XPS’a i podesłać koledze aby zapoznał się z naszymi obserwacjami.&lt;/p&gt;  &lt;p&gt;Podsumowując - Debug Canvas to interesujący dodatek. Przedstawienie kodu w postaci grafu przejścia może pomóc w łatwiejszym zrozumieniu co dzieje się z naszym programem i szybszym wyśledzeniu błędu.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-3766547820644439973?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=6OF1JwWIKls:eOFw_gvJV-0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=6OF1JwWIKls:eOFw_gvJV-0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=6OF1JwWIKls:eOFw_gvJV-0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/6OF1JwWIKls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/3766547820644439973/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=3766547820644439973" title="Komentarze (3)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/3766547820644439973?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/3766547820644439973?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/6OF1JwWIKls/debugger-canvasdeeper-dive.html" title="Debugger Canvas–deep(er) dive" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-pc1qv51RqbQ/Tf5TSQHsezI/AAAAAAAACH8/jHdZwtf2Av8/s72-c/dc_thumb%25255B11%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/debugger-canvasdeeper-dive.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUARnkyfSp7ImA9WhdTGE4.&quot;"><id>tag:blogger.com,1999:blog-24497803.post-6332827289565598</id><published>2011-06-13T20:44:00.003+02:00</published><updated>2011-07-16T18:37:27.795+02:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-16T18:37:27.795+02:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="virtual study" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title>VirtualStudy – Moje sesje</title><content type="html">Poniżej linki do moich sesji na portalu VirtualStudy z cyklu kurs C#. Przeznaczone główne dla osób początkujących, choć z sesji o reflection i atrybutach być może i ktoś z większą wiedzą także skorzysta :).&lt;br /&gt;
16. &lt;a href="http://virtualstudy.pl/component/content/article/1059-kurs-programowania-w-csharp-16-czym-sa-wyrazenia-regularne"&gt;Czym są wyrażenia regularne&lt;/a&gt; - &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja16.pptx"&gt;prezentacja&lt;/a&gt;, &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja16.zip"&gt;przykłady&lt;/a&gt;.     &lt;br /&gt;
18. &lt;a href="http://virtualstudy.pl/component/content/article/1089-kurs-programowania-w-csharp-18-odczyt-danych-z-i-do-pliku-"&gt;Odczyt danych z i do pliku&lt;/a&gt; - &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja18.pdf"&gt;prezentacja&lt;/a&gt;, &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja18.zip"&gt;przykłady&lt;/a&gt;.   &lt;br /&gt;
19. &lt;a href="http://virtualstudy.pl/component/content/article/1112-kurs-programowania-w-csharp-19-poznajmy-atrybuty-i-mechanizm-refleksji"&gt;Poznajmy atrybuty i mechanizm refleksji&lt;/a&gt; - &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja19.pptx"&gt;prezentacja&lt;/a&gt;, &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja19.zip"&gt;przykłady&lt;/a&gt;&lt;br /&gt;
20. &lt;a href="http://virtualstudy.pl/component/content/article/1121-kurs-programowania-w-csharp-20-dostep-do-danych-to-podstawowa-funkcjonalnosc-programow-zobaczmy-jak-to-sie-robi"&gt;Dostęp do danych to podstawowa funkcjonalność programów, zobaczmy, jak to się robi&lt;/a&gt; - &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja20.pptx"&gt;prezentacja&lt;/a&gt;, &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja20.zip"&gt;przykłady&lt;/a&gt;&lt;br /&gt;
24. &lt;a href="http://virtualstudy.pl/component/content/article/1168-kurs-programowania-w-csharp-24-wzorce-projektowe"&gt;Wzorce projektowe&lt;/a&gt; - &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja24.pptx"&gt;prezentacja&lt;/a&gt;, &lt;a href="http://virtualstudy.pl/images/presentation/csharp/sesja24.zip"&gt;przykłady&lt;/a&gt;&lt;br /&gt;
Oczywiście dla zainteresowanych polecam pozostałe filmy z kursu C# jak też inne sesje z portalu &lt;a href="http://virtualstudy.pl/"&gt;VirtualStudy.pl&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/24497803-6332827289565598?l=pawlos.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:4cEx4HpKnUU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=a04hqwIoc4Y:LnQWoJv2nj0:4cEx4HpKnUU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?i=a04hqwIoc4Y:LnQWoJv2nj0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:0VBWazUhMmc"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=0VBWazUhMmc" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/blogspot/wBGD?a=a04hqwIoc4Y:LnQWoJv2nj0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/blogspot/wBGD?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/wBGD/~4/a04hqwIoc4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pawlos.blogspot.com/feeds/6332827289565598/comments/default" title="Komentarze do posta" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=24497803&amp;postID=6332827289565598" title="Komentarze (0)" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6332827289565598?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/24497803/posts/default/6332827289565598?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/wBGD/~3/a04hqwIoc4Y/virtualstudy-moje-sesje.html" title="VirtualStudy – Moje sesje" /><author><name>Paweł Łukasik</name><uri>http://www.blogger.com/profile/11968639822986691342</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="21" height="32" src="http://bp2.blogger.com/_7zb848L1Mq4/R0_5-DqxzEI/AAAAAAAAAAo/n5tz4OxkFLE/S220/ja.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://pawlos.blogspot.com/2011/06/virtualstudy-moje-sesje.html</feedburner:origLink></entry></feed>

