<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:yt="http://gdata.youtube.com/schemas/2007" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
   <channel>
      <title>Konkurs Procenta Daj Sie Poznac</title>
      <description>RSSy osób biorących udział w konkursie Procenta "Daj Sie Poznac": http://www.maciejaniserowicz.com/page/Konkurs-daj-sie-poznac.aspx</description>
      <link>http://pipes.yahoo.com/pipes/pipe.info?_id=ac01468b7c3433262667ff6e047cca03</link>
      <atom:link rel="next" href="http://pipes.yahoo.com/pipes/pipe.run?_id=ac01468b7c3433262667ff6e047cca03&amp;_render=rss" />
      <pubDate>Thu, 31 May 2012 10:55:23 +0000</pubDate>
      <generator>http://pipes.yahoo.com/pipes/</generator>
      <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dajsiepoznac-posts" /><feedburner:info uri="dajsiepoznac-posts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
         <title>StatLight i ClientAccessPolicy</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/p5U7sHMbHNM/</link>
         <description>Ostatnio bawię się TFSem i automatycznymi buildami. Jednym z kroków w procesie jest odpalenie unit testów pod Silverlighta. Na stronie pyxis-tech.com można znaleźć świetny poradnik, jak można to zrobić przy użyciu narzędzia o nazwie "StatLight". Ponieważ moja aplikacja łączy się z WCF'em, w jednym z kroków build'a robię sobie deploy'a na serwer IIS'a i restartuje [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/p5U7sHMbHNM" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=255</guid>
         <pubDate>Mon, 28 May 2012 20:35:00 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/05/28/statlight-client-access-policy/</feedburner:origLink></item>
      <item>
         <title>Silverlight &amp; async unit testing</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/zLm2G6XdGPw/</link>
         <description>W pracy mamy aplikacje, która jest pisana w Silverligtcie. Ostatnio trafiła do mnie potrzeba napisania unit testa do pokrycia command'a z ViewModela. Niestety, sam command wykorzystuje pewne dane słownikowe, które wcześniej aplikacja sobie zaczytuje asynchronicznie z WCF'a. W projektach, w których dotychczas uczestniczyłem asynchroniczność była wykorzystywana na niskim poziomie i w zasadzie, nigdy nie miałem [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/zLm2G6XdGPw" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=231</guid>
         <pubDate>Sat, 26 May 2012 17:55:36 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/05/26/silverlight-async-unit-testing/</feedburner:origLink></item>
      <item>
         <title>Balls Master - new game!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/leFC5o25ymw/balls-master-new-game.html</link>
         <description>&lt;div style="text-align:justify;"&gt;Hello there!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;For the last couple of days/weeks I was working on new game. I love popper games and I really like including something new in my games with every new release.&amp;nbsp;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;This time I changed game rules a little bit. Usually in my games you have to pop at least 2 same hmm.. "shapes" but now it is a little harder. You have to collect at least 3 same balls to break them out. And yes, there are a lot of other new things. You will have to download the app to check it out :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;The game title is.. &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.kasuroid.ballsmaster"&gt;Balls Master&lt;/a&gt;!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear:both;text-align:left;"&gt;&lt;a rel="nofollow" target="_blank" href="http://2.bp.blogspot.com/-zSLlEL2QVdw/T6rrPx0ydjI/AAAAAAAAAIg/lFPs21d0PlU/s1600/screen_3.png" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="200" src="http://2.bp.blogspot.com/-zSLlEL2QVdw/T6rrPx0ydjI/AAAAAAAAAIg/lFPs21d0PlU/s200/screen_3.png" width="133"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://1.bp.blogspot.com/-DcFTgrlsw6A/T6rrNCtofCI/AAAAAAAAAIY/7A5JPdAJDNA/s1600/screen_2.png" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-DcFTgrlsw6A/T6rrNCtofCI/AAAAAAAAAIY/7A5JPdAJDNA/s200/screen_2.png" width="133"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://4.bp.blogspot.com/-Kb1YVB9gaY8/T6rrRwMDnCI/AAAAAAAAAIo/LWeK4rIgxmE/s1600/screen_5.png" style="margin-left:1em;margin-right:1em;"&gt;&lt;img border="0" height="200" src="http://4.bp.blogspot.com/-Kb1YVB9gaY8/T6rrRwMDnCI/AAAAAAAAAIo/LWeK4rIgxmE/s200/screen_5.png" width="133"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;a rel="nofollow"&gt;Click here to download Balls Master directly from Android Market&lt;/a&gt; &lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;img alt="qwmev" border="0" height="200px" src="http://qr.ai/qwmev" style="border:0px;" width="200px"/&gt; &lt;/div&gt;&lt;div style="text-align:justify;"&gt;Yeaahh... this will be the "master" series :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;I will also prepare version for Bada, so please, stay tuned Bada users!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-6136505257249567964?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/leFC5o25ymw" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-6136505257249567964</guid>
         <pubDate>Sun, 06 May 2012 18:34:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-zSLlEL2QVdw/T6rrPx0ydjI/AAAAAAAAAIg/lFPs21d0PlU/s72-c/screen_3.png" width="72" />
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/05/balls-master-new-game.html</feedburner:origLink></item>
      <item>
         <title>New version of Aliens Popper for Android</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/p_-mDXhF3dI/new-version-of-aliens-popper-for.html</link>
         <description>&lt;div style="text-align:justify;"&gt;Hi everyone!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;I'm glad to announce that new version of Aliens Popper is available on &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.kasuroid.alienspopper"&gt;Android Market&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://slideme.org/application/aliens-popper"&gt;Slide Me&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;This update includes a lot of changes:&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;- new levels!&lt;br /&gt;- in-game menu changed to context menu&lt;br /&gt;- "jump to level" option&lt;br /&gt;- help update&lt;br /&gt;- difficulty modes: Easy, Medium, Hard, Extreme&lt;br /&gt;- settings update&lt;br /&gt;- restarting the board&lt;br /&gt;- top status fixes&lt;br /&gt;- double sound issue fixed&lt;br /&gt;- multiple dialogs issue fixed&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;I think that the most important features are 4 difficulty modes: Easy, Medium, Hard and Extreme. I also changed the logic of levels. I hope that now you won't stuck for too long at specific level.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Let me know if you enjoy new version of &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.kasuroid.alienspopper"&gt;Aliens Popper&lt;/a&gt;! Happy playing!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-8507530639301471575?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/p_-mDXhF3dI" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-8507530639301471575</guid>
         <pubDate>Sat, 05 May 2012 20:08:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/05/new-version-of-aliens-popper-for.html</feedburner:origLink></item>
      <item>
         <title>Jak pozwolić użytkownikowi na anulowanie edycji, czyli ‘dynamics’ przychodzą z pomocą</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/JcNrZvkNeco/</link>
         <description>Pisząc jedną z moich aplikacji(która nie ujrzała światła dziennego, ale jest w planach) natknąłem się na dość ciekawy problem. Mianowicie w WPF(nie pamiętam jak to dokładnie w WF jest, więc uwzględniam tutaj tylko WPF) zmuszenie bindingów do aktualizacji źródła tylko na życzenie(czytaj: przy zamknięciu okna) przy ciągłym walidowaniu danych wejściowych graniczy z niemożliwym(o ile w [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/JcNrZvkNeco" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=417</guid>
         <pubDate>Sat, 05 May 2012 17:23:27 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2012/05/jak-pozwolic-uzytkownikowi-na-anulowanie-edycji-czyli-dynamics-przychodza-z-pomoca/</feedburner:origLink></item>
      <item>
         <title>New .NET Rulez! Blog Site</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/12-S6A65704/</link>
         <description>P . Filed under: .NET, Bez kategorii, Career, Hobby, WebGames&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=piotrsowa.wordpress.com&amp;amp;blog=16152459&amp;amp;post=1035&amp;amp;subd=piotrsowa&amp;amp;ref=&amp;amp;feed=1" width="1" height="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/12-S6A65704" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://piotrsowa.wordpress.com/?p=1035</guid>
         <pubDate>Tue, 01 May 2012 12:51:43 +0000</pubDate>
         <media:content medium="image" url="http://1.gravatar.com/avatar/141903e2304afd558697eab985c5cf09?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">vicomote</media:title>
         </media:content>
         <media:content medium="image" url="https://encrypted-tbn1.google.com/images?q=tbn:ANd9GcS-3MTJaTD8I9feMejnHqvsD9Y_FE0sIcm6Tc3IzsrRiT-_WwId" />
      <feedburner:origLink>http://piotrsowa.wordpress.com/2012/05/01/new-net-rulez-blog-site/</feedburner:origLink></item>
      <item>
         <title>Aplikacja na komórkę z Windows Phone 7.5</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/198uU7Cc7bE/</link>
         <description>W wolnym czasie po godzinach bawię się pisząc program na komórkę z systemem Windows Phone 7.5. Sam jestem szczęśliwym posiadaczem Nokii Lumii 800 i całkiem naturalną konsekwencją tego, że jestem też programistą .NET, jest próba dostosowania jej do swoich potrzeb jak bardzo tylko się da&amp;#8230; Niniejszym przedstawiam Wam tutaj postępy moich poczynań na platformie mobilnej [...]</description>
         <guid isPermaLink="false">http://www.kamilhawdziejuk.pl/?p=987</guid>
         <pubDate>Sat, 28 Apr 2012 14:28:26 +0000</pubDate>
         <content:encoded><![CDATA[<p>W wolnym czasie po godzinach bawię się pisząc program na komórkę z systemem Windows Phone 7.5. Sam jestem szczęśliwym posiadaczem Nokii Lumii 800 i całkiem naturalną konsekwencją tego, że jestem też programistą .NET, jest próba dostosowania jej do swoich potrzeb jak bardzo tylko się da&#8230;</p>
<p>Niniejszym przedstawiam Wam tutaj postępy moich poczynań na platformie mobilnej z systemem WP7. Konkretnie, to rozpocząłem pisanie aplikacji do zarządzania wydatkami w języku polskim! Oficjalna strona projektu, którego szumna nazwa brzmi &#8222;Wydatkomierz&#8221; dostępna jest razem z opisem i pełnymi kodami źródłowymi tutaj:</p>
<p><a rel="nofollow" target="_blank" href="http://code.google.com/p/wydatkomierz/">http://code.google.com/p/wydatkomierz/</a></p>
<p><img src="http://www.kamilhawdziejuk.pl/projekty/wydatkomierz/swinka200na200.png" alt="Ikonka"/></p>
<p>Aplikacja wkrótce pojawi się w mobilnym sklepie Microsoftu i będzie dostępna do pobrania i używania dla wszystkich posiadaczy komórek z tym systemem za darmo;) I jeszcze długo będzie za darmo, bo wiele podstawowych rzeczy jest w niej do zrobienia w porównaniu z konkurencyjnymi rozdmuchanymi niekiedy aplikacjami w Marketplace w języku angielskim. </p>
<p>To co ma wyróżniać tę aplikację od innych, to przede wszystkim:<br />
- polski interfejs (nie zauważyłem jak dotąd zbyt wiele ciekawych aplikacji w języku polskim)<br />
- łatwość obsługi (na daną chwilę nie widzę potrzeby wykorzystywania przez większość użytkowników mechanizmów tak jak: cykliczne przelewy, przypomnienia o transakcjach, wybór różnego rodzaju kont itp. itd.)<br />
- prostota prezentacji i analizy zapisywanych wydatków głównie pod kątem kategorii, do których należą</p>
<p>Chciałbym jednocześnie zaprosić wszystkich chętnych programistów, którzy chcieliby rozwijać się w stronę programowania aplikacji mobilnych, do dołączenia do rozwijania wyżej przedstawionej aplikacji! Każdy z Was będzie mile widziany. Zarówno Ci, którzy posiadają komórki z systemem WP7, ale i Ci, którym wystarczy pisanie na emulatorze;) Na stronie projektu w zakładce &#8222;Issues&#8221;:<br />
<a rel="nofollow" target="_blank" href="http://code.google.com/p/wydatkomierz/issues/list">http://code.google.com/p/wydatkomierz/issues/list</a><br />
znajduje się już teraz szereg zadań i funkcjonalności, o które przydałoby się rozszerzyć obecną wersję aplikacji tak, aby jeszcze bardziej była przydatna zwykłym śmiertelnikom.</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/198uU7Cc7bE" height="1" width="1"/>]]></content:encoded>
         <category>Bez kategorii</category>
      <feedburner:origLink>http://www.kamilhawdziejuk.pl/2012/04/28/aplikacja-na-komorke-z-windows-phone-7-5/</feedburner:origLink></item>
      <item>
         <title>Blocks Breaker update!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/GfywySoPUv4/blocks-breaker-update.html</link>
         <description>New version of &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.kasuroid.blocksbreaker"&gt;Balls Breaker&lt;/a&gt; for Android is available. I added new levels, board transitions, some algorithm changes, fields acceleration and some other small fixes. I hope you will enjoy new version :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-7677090691395240712?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/GfywySoPUv4" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-7677090691395240712</guid>
         <pubDate>Thu, 26 Apr 2012 21:26:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/04/blocks-breaker-update.html</feedburner:origLink></item>
      <item>
         <title>Testing Serialization with NUnit and Continuous Tests</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/7wkp8DIjAsQ/</link>
         <description>In this post I want to present a solution that, I am using to test serialization in one of my projects. This project is a web application and a lot of communication is performed through JSON formatted messages. It is really important to be sure if it is working. With serialization we can only find...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/04/22/testing-serialization-with-nunit-and-continuous-tests/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/?p=961</guid>
         <pubDate>Sun, 22 Apr 2012 21:25:20 +0000</pubDate>
         <content:encoded><![CDATA[<p>In this post I want to present a solution that, I am using to test serialization in one of my projects. This project is a <strong>web application</strong> and a lot of communication is performed through <strong>JSON</strong> formatted messages. It is really important to be sure if it is working. With serialization we can only find potential mistakes and errors on the runtime. By finding problems early you can eliminate more complex and costly bugs in the future.<br />
<h4>Json Serialization</h4>
<p>For serialization, I am using <a rel="nofollow" target="_blank" href="http://nuget.org/packages/newtonsoft.json"><strong>Json.Net</strong></a><strong>&nbsp;</strong>it is quite popular and stable library. All my objects that are being serialized, implement <strong>IJsonable </strong>interface. This gives me easy way to find and check if particular class is serialized somewhere.&nbsp; It is very important information. At my company we had recently problem with some objects because someone wasn’t sure if one of the class is serialized or not. This caused some “unsupported” behavior on the server that was desterilizing data.
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image8.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb8.png" width="244" height="84"></a>&nbsp;
<p>This interface contains only one method returning just object. With this solution, I can return either <strong>anonymous type</strong> or another class, typically <strong>DTO ( Data Transfer Object )</strong> that contains only simple easily serialized data (eg. <strong>Value Types </strong>).<br />
<h5>Example:</h5>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image9.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb9.png" width="418" height="327"></a>
<p>This is quite simple model. It contains four simple types and <strong>DashBoardControlType, </strong>it<strong> </strong>is just an <strong>Enum</strong>. Method<strong> </strong><strong>ToJson() </strong>is used to create anonymous object. In this example I am creating anonymous type.
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image10.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb10.png" width="488" height="28"></a>
<p>This object is then used with <strong>Json.Net </strong>library to create <strong>JSON</strong> string.
<p>One of the problems with serialization is that errors are noticed on the runtime. If my program compiles it doesn’t mean that I won’t have any problems. One of the common mistakes in classes being serialized, is too complex logic. For instance one class can have some value dependent on some external dependency. Creator of this class assumed that it will be serialized only in context that has connection to this dependency. Someone without broad knowledge of the system could forget about this and use this class in another context that is lacking access to it.
<p>Good example of that kind of situation is accessing <strong>State</strong> of the application through the <strong>HttpContext. </strong>Our class has a property that on the get method is accessing <strong>HttpContext. </strong>I won’t see the problem if class will be used in my scenario, but later if someone will try to serialize this class in other environment that doesn’t have access to the <strong>HttpContext, </strong>a null reference exception will be thrown. It is really important to test if this kind of situation happens. To check it, I am using very simple test.<br />
<h4>Testing Serialization</h4>
<p>Let&#8217;s discuss this simple test procedure.</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image12.png"><img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image12_thumb.png" width="667" height="358"></a> </p>
<p>With <strong>IJsonable </strong>interface and reflection, I can easily obtain all the types of the classes to test. Simple <strong>Linq</strong> query filters out all the classes in specified assembly, within specified namespace with defined <strong>IJsonable </strong>interface. Then for each class <strong>Activator </strong>is used to create instance of the class. Newly created object is serialized and If there is an error, name of the type is added to the list.
<p>This test is using <strong>NUnit </strong>framework<strong>. </strong>Unit test runner provides perfect environment, that lacks all dependencies, so there will be errors if someone makes a class that will for example access <strong>HttpContext </strong>directly.
<p>With this simple check we can almost be sure that we won’t get any stupid errors and we can easily see that something is wrong with our model.<br />
<h4>Continuous Tests</h4>
<p>Running tests each time, I am making a change can become … pain in … <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://www.mfranc.com/wp-content/uploads/2012/04/wlEmoticon-smilewithtongueout.png"> With <strong>Resharper</strong> it is much easier, but still sometimes I will forget to do this and then beautiful message from our Jenkins server will notify me about some fail. It would be a lot better if this information would be instant. There is a solution to this called <strong>Continuous Tests. </strong>
<p>I started using <strong><a rel="nofollow" target="_blank" href="http://continuoustests.com/">Mighty Moose</a></strong> recently. It is a plugin to <strong>Visual Studio </strong>that creates a test runner in the background. This runner analyses all the changes made in the code and on simple <strong>CTRL+S (Save) ,</strong>if it detects that recent change in the code affects tests, lined test will be executed automatically.
<p>For example in serialization logic, discussed in this post, this kind of instant information can be critical. Each time I change something in the model ( some property for example ). Test is performed automatically and I will get information if this works or not. This is even better in situation when one of my colleagues is changing something inside my code. He won’t be always aware that this code is covered by unit tests, and Continuous Tests runner will notify him about this and also will inform him automatically if this change is failing tests.</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/7wkp8DIjAsQ" height="1" width="1"/>]]></content:encoded>
         <category>UnitTests</category>
      <feedburner:origLink>http://www.mfranc.com/2012/04/22/testing-serialization-with-nunit-and-continuous-tests/</feedburner:origLink></item>
      <item>
         <title>Jak dodać drukarkę bezprzewodową na Windows 8 Consumer Preview / How to Add Wi-Fi Printer in Windows 8 Consumer Preview</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/sxXj6ivJCqA/28</link>
         <description>Ten post dedykuję mojej dziewczynie, z kt&amp;#243;rą wczoraj strzeliło nam 2 lata związku ;) LAAAAAAAAAANCA :*&lt;br /&gt;&lt;br /&gt;Nie jest to takie proste, jakby się mogło wydawać, ponieważ kreator zawiesza się na szukaniu drukarki. &lt;br /&gt;Aby jednak korzystać z dobrodziejstwa bezprzewodowej drukarki należy wykonać następujące czynności:&lt;br /&gt;&lt;br /&gt;1. W panelu sterowania wchodzimy w &amp;quot;Printers and devices&amp;quot;, a następnie zaznaczamy, kt&amp;#243;rąkolwiek z dostępnych drukarek. Po wykonaniu tych czynności należy z g&amp;#243;rnego menu przycisnąc &amp;quot;Print server properties&amp;quot; jak na screenie poniżej:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step1.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Przechodzimy do zakładki &amp;quot;Ports&amp;quot; klikamy &amp;quot;Add Port&amp;quot; i z dostępnej listy wybieramy &amp;quot;Standard TCP/IP&amp;quot;. Naszym oczom powinien pokazać się kreator - w pierwszym kroku klikamy po prostu Next, w drugim:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step2.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;podajemy IP drukarki. Port name można zmienić na bardziej przyjazny dla użytkownika np. &amp;quot;Drukarka - Wifi&amp;quot;. Potem do końca kreatora &amp;quot;Next&amp;quot;, &amp;quot;Yes&amp;quot; i wszelkie potrzebne zatwierdzenia. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step3.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;3. Teraz przechodzimy do Device Manager (Computer -&amp;gt; PPM *click* -&amp;gt; Properties), klikamy na Root PPM i wybieramy &amp;quot;Add legacy hardware&amp;quot;. Powinniśmy dostać kreator dodawania sprzętu. W pierwszym kroku klikamy &amp;quot;Next&amp;quot; w drugim zaznaczamy &amp;quot;Install the hardware that I mannualy select from the list (Advanced)&amp;quot;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step4.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step5.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step6.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Z podanej listy znajdujemy &amp;quot;Printers&amp;quot;. Kolejnym krokiem jest wybranie portu. Z dostępnej listy wybieramy ten, kt&amp;#243;ry utworzyliśmy w krokach 1 i 2. Jak widać ja sw&amp;#243;j nazwałem Drukarka_Wifi&lt;br /&gt;&lt;br /&gt;&lt;img src="http://trn.studentlive.pl/uploads/win8_print/step7.png" alt="Obrazek"&gt;&lt;br /&gt;&lt;br /&gt;4. W kolejnym kroku należy wybrać sterownik. Jeśli klikamy &amp;quot;Have disk&amp;quot; i wybieramy plik sterownika. Jeśli mamy super pospolitą drukarkę to być może uda się ją odnaleźć na dostępnej liście. T&lt;br /&gt;&lt;br /&gt;To by było na tyle. Drukarki co prawda nie będzie widać w &amp;quot;Printer and devices&amp;quot; w panelu sterowania, ale będzie ją widać w device manager i będą ją widziały aplikacje. &lt;br /&gt;&lt;br /&gt;Pozdrawiam.&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/sxXj6ivJCqA" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 19 Apr 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/28</feedburner:origLink></item>
      <item>
         <title>Moje nowe dziecko – LibraryGuard</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/GuTX-558Pac/</link>
         <description>Od dłuższego czasu zbierałem się, by napisać programik, który pomoże mi utrzymywać moją bibliotekę muzyczną w stanie względnie poprawnym(mam małego bzika na tym punkcie). I tak oto w święta powstał programik, który wyręcza mnie z żmudnego procederu poprawiania tego ręcznie. Nie jest om może doskonały(i nie jest przetestowany do końca), ale swoje podstawowe zadanie spełnia. [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/GuTX-558Pac" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=408</guid>
         <pubDate>Sat, 14 Apr 2012 12:30:21 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2012/04/moje-nowe-dziecko-libraryguard/</feedburner:origLink></item>
      <item>
         <title>R# Gem–switch/case enum generation</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/P77doOUZpE4/</link>
         <description>I have been using R# for about one year. This is a very good addin to Visual Studio , I am not able to work without it anymore It provides a lot of cool stuff. Best features ? Simplified navigation with Ctr+T and Shift+Alt+T, code inspections and great code generation. One of the neat features...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/04/06/r-gemswitchcase-enum-generation/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/?p=947</guid>
         <pubDate>Fri, 06 Apr 2012 20:14:01 +0000</pubDate>
         <content:encoded><![CDATA[<p>I have been using <strong>R#</strong> for about one year. This is a very good addin to <strong>Visual Studio</strong> , I am not able to work without it anymore <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" src="http://www.mfranc.com/wp-content/uploads/2012/04/wlEmoticon-winkingsmile1.png" alt="Winking smile"/></p>
<p>It provides a lot of cool stuff. Best features ? Simplified navigation with <strong>Ctr+T </strong>and <strong>Shift+Alt+T, </strong>code inspections and great code generation.</p>
<p>One of the neat features I recently discovered, is <strong>switch / case</strong> generation from <strong>enum</strong> type.</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image6.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb6.png" alt="image" width="338" height="129" border="0"/></a></p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image7.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb7.png" alt="image" width="488" height="363" border="0"/></a></p>
<p>Writing this switch manually would take like five minutes to write <img class="wlEmoticon wlEmoticon-winkingsmile" style="border-style:none;" src="http://www.mfranc.com/wp-content/uploads/2012/04/wlEmoticon-winkingsmile1.png" alt="Winking smile"/>. With <strong>R# </strong>we can do this almost instantly just with <strong>Alt+Enter.</strong></p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/P77doOUZpE4" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2012/04/06/r-gemswitchcase-enum-generation/</feedburner:origLink></item>
      <item>
         <title>Pluralsight – hardcore developer training ;)</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/UCXYfEgF1uo/</link>
         <description>Jakiś czas temu, podczas sesji wroc.NET udało mi się zdobyć miesięczną wejściówkę na Pluralsighta ( taaak, warto przychodzić na spotkania grupy! ), choć nie była to niestety licencja na R#, na którą polowałem od dawien dawna ;&amp;#62; Pluralsight to strona, która oferuje całą masę podcastów na różne tematy związane z developmentem w .NET. Mając kupę [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/UCXYfEgF1uo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=207</guid>
         <pubDate>Thu, 05 Apr 2012 18:40:32 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/04/05/pluralsight/</feedburner:origLink></item>
      <item>
         <title>Jak zainstalować Windows Phone SDK na Windows 8 Consumer Preview / How to install Windows Phone SDK on Windows 8 Consumer Preview</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/nhUpbmzqPQQ/27</link>
         <description>M&amp;#243;głbym napisać cały artykuł o nowym systemie Windows, o jego niekompatybilności z SDK Windows Phone itd., ale takich artykuł&amp;#243;w w necie od groma. Tak więc skoro już zabłądziłeś w ten kawałek sieci wiedz, że zainstalować da się, w 3 krokach: &lt;br /&gt;&lt;br /&gt;1. Instalujemy SDK jak gdyby nigdy nic. Operacja zakończy się błędem: &lt;br /&gt;Installer could not install following Components:&lt;br /&gt;X XNA (...)&lt;br /&gt;X ...&lt;br /&gt;&lt;br /&gt;to nic, &lt;br /&gt;&lt;br /&gt;2. Instalujemy: &lt;a rel="nofollow" target="_blank" href="http://www.xbox.com/en-US/LIVE/PC/DownloadClient"&gt;http://www.xbox.com/en-US/LIVE/PC/DownloadClient&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Ostatnim krokiem jest instalacja specjalnego Update&amp;#39;u do SDK: &lt;br /&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.microsoft.com/download/en/details.aspx?id=29233"&gt;http://www.microsoft.com/download/en/details.aspx?id=29233&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;share if helps ;)&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/nhUpbmzqPQQ" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 04 Apr 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/27</feedburner:origLink></item>
      <item>
         <title>Irony, czyli własny DSL w .NET</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/1sNtPQVmZOI/</link>
         <description>Ostatnimi czasy miałem potrzebę pisania DSL na potrzeby aplikacji(aktualnie dwóch, obie będą kiedyś opublikowane). Jest dość duża liczba rozwiązań dostępnych dla .NET(Antlr, Coco/R, SableCC i masa innych) lecz żadnego z w/w nie potrafiłem ogarnąć w sensownym stopniu i czasie(a nie miałem wystarczającej motywacji). Całe szczęście istnieje jeszcze jeden projekt o wdzięcznej nazwie Irony, który to [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/1sNtPQVmZOI" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=400</guid>
         <pubDate>Tue, 03 Apr 2012 14:16:54 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2012/04/irony-czyli-wlasny-dsl-w-net/</feedburner:origLink></item>
      <item>
         <title>RegExp Fun–Match/Replace in lines without specific word</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/ok9Qzqlcrh0/</link>
         <description>Problem Today in work I got a nice task. For given  Make a RegExp to transform each line and Path value, In a way that not minified javascript files (without min.js extension) should point to /min/ folder. For Example: Should Transform to: Because I love experimenting with Regular Expressions. I happily dropped everything and started...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/04/02/regexp-funmatchreplace-in-lines-without-specific-word/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2012/04/02/regexp-funmatchreplace-in-lines-without-specific-word/</guid>
         <pubDate>Mon, 02 Apr 2012 18:31:56 +0000</pubDate>
         <content:encoded><![CDATA[<h2>Problem</h2>
<p>Today in work I got a nice task.</p>
<p>For given  <a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb.png" alt="image" width="629" height="72" border="0"/></a></p>
<p>Make a <strong>RegExp</strong> to transform each line and <strong>Path</strong> value, In a way that not minified <strong>javascript</strong> files (without <strong>min.js</strong> extension) should point to <strong>/min/</strong> folder.</p>
<h3>For Example:</h3>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image1.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb1.png" alt="image" width="597" height="41" border="0"/></a></p>
<h3>Should Transform to:</h3>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image2.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb2.png" alt="image" width="596" height="29" border="0"/></a></p>
<p>Because I love experimenting with Regular Expressions. I happily dropped everything and started looking for solution . This seemed pretty simple &#8230; but &#8230; i had to spent like 30 min to find it.</p>
<h2>Solution</h2>
<h3>Expression</h3>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image3.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb3.png" alt="image" width="482" height="26" border="0"/></a></p>
<p>Most important part of this solution is <strong>(?!.*min) . </strong>This expression will try to look for <strong>min</strong> word in matched data and if it wont find it there whole match is discarded.</p>
<p>For further replacement procedure, I m specifying two matched groups that will be used to construct new <strong>Path</strong>. <strong>(?&lt;path&gt;.*)/(?&lt;end&gt;.*) </strong>This will match everything to last possible<strong> “/”</strong> and make group named <strong>path,</strong> then every character after <strong>“/”</strong> is put into <strong>end </strong>group.</p>
<h3>Replace Expression</h3>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image4.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb4.png" alt="image" width="390" height="30" border="0"/></a></p>
<p>Replace expression uses matched groups like simple variables to construct new <strong>Path.</strong></p>
<h3>The end result is</h3>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/04/image5.png"><img style="background-image:none;padding-left:0px;padding-right:0px;display:block;float:none;margin-left:auto;margin-right:auto;padding-top:0px;border:0px;" title="image" src="http://www.mfranc.com/wp-content/uploads/2012/04/image_thumb5.png" alt="image" width="623" height="79" border="0"/></a></p>
<p>Making <strong>RegExp</strong> is like scientific discovery or complex mathematic problem. You have to really think a lot to find a nice solution.</p>
<p>For experiments I recommend</p>
<p><strong><a rel="nofollow" target="_blank" href="http://www.radsoftware.com.au/regexdesigner/"><span style="font-size:x-small;">Rad Software Regular Expression Designer</span></a></strong></p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/ok9Qzqlcrh0" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2012/04/02/regexp-funmatchreplace-in-lines-without-specific-word/</feedburner:origLink></item>
      <item>
         <title>Z wroc.NET do dotnet-zentral ;)</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/MIPZpGcdihI/</link>
         <description>Będąc ciałem i duchem we Wrocławiu bardzo lubiłem uczęszczać na spotkania Wrocławskiej Grupy .NET'owej. Tematyka raz była mniej interesująca, innym razem bardziej .. jednak to co mi się najbardziej podobało, to możliwość spotkania się i podyskutowania z innymi pasjonatami .NET'a, którzy często po spędzeniu 8 i więcej godzin w pracy byli w stanie i chcieli [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/MIPZpGcdihI" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=194</guid>
         <pubDate>Fri, 30 Mar 2012 18:13:52 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/03/30/z-wroc-net-do-dotnet-zentral/</feedburner:origLink></item>
      <item>
         <title>Wprowadzenie do Managed Add-in Framework (MAF, System.Addin) (spis treści) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/pR-27C2Fl7w/wprowadzenie-do-managed-add-in.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-6393189400170568337</guid>
         <pubDate>Sun, 25 Mar 2012 23:55:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-SlsOxq3fcN8/T0__ydtVCAI/AAAAAAAAFYE/iq_CBWKocz0/s72-c/maciej-progtech-maf-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/pR-27C2Fl7w" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/k6TIwIea_5s/wprowadzenie-do-managed-add-in.html</feedburner:origLink></item>
      <item>
         <title>Jewels Master - update</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/2ROXFUfDVaI/jewels-master-update.html</link>
         <description>&lt;div style="text-align:justify;"&gt;I have just released new version of &lt;a rel="nofollow" target="_blank" href="https://play.google.com/store/apps/details?id=com.kasuroid.jewelsmaster"&gt;Jewels Master&lt;/a&gt;. This update includes fixes for OOM (Out Of Memory) crashes. I think I have fixed most of the issues. Unfortunately OOM crashes are not easy to fix.&amp;nbsp; Please be patient. If you get a force close let me know what device do you have (I don't receive device type in the crash log).&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Thank you and enjoy the game! :) &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-5969794778382813238?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/2ROXFUfDVaI" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-5969794778382813238</guid>
         <pubDate>Sat, 24 Mar 2012 23:45:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/03/jewels-master-update.html</feedburner:origLink></item>
      <item>
         <title>[MAF 06]  MAF podsumowanie, czyli wady i zalety [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/y4XpjYiR9SY/maf-06-maf-podsumowanie-czyli-wady-i.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-1828262286526481683</guid>
         <pubDate>Fri, 23 Mar 2012 07:44:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-Z4SacDeLvq8/T2wbHx1LNrI/AAAAAAAAFiw/ahr6GTaKdos/s72-c/maciej-progtech-maf-system-addin-plus-minus-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/y4XpjYiR9SY" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/MZePsKDvKyI/maf-06-maf-podsumowanie-czyli-wady-i.html</feedburner:origLink></item>
      <item>
         <title>Reactive Extensions (Rx) v2.0 Beta już dostępna [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/qus1nC3Nnww/reactive-extensions-rx-v20-beta-juz.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-6857409242125111028</guid>
         <pubDate>Mon, 19 Mar 2012 23:23:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-Zn9VvxdUILA/TtQDFeF8K6I/AAAAAAAAE6g/zpc4UlWJk5E/s72-c/Rx_Logo_biale_tlo_120.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/qus1nC3Nnww" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/Hb1N8eutDE8/reactive-extensions-rx-v20-beta-juz.html</feedburner:origLink></item>
      <item>
         <title>Nowy nabytek – Kindle Touch</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/pr60TPQHKL8/</link>
         <description>Jakiś czas temu stałem się szczęśliwym posiadaczem e-book readera od Amazonu. Wybór padł na ten, a nie inny właśnie przez producenta(i świetny Kindle Store) i dość pochlebne opinie, które czytałem o rodzinie Kindle. Touch co prawda posiadał dość skrajne(szczególnie przez ekran dotykowy – jedni go chwalili, inni ganili), ale nie zrażałem się tym. Wybór okazał [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/pr60TPQHKL8" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=389</guid>
         <pubDate>Sun, 18 Mar 2012 16:05:35 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2012/03/nowy-nabytek-kindle-touch/</feedburner:origLink></item>
      <item>
         <title>[MAF 05] Managed Add-in Framework (System.AddIn), a bezpieczeństwo wywołania obcego assembly [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/Wiv_j6RG38w/maf-05-managed-add-in-framework.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-1509080853899212233</guid>
         <pubDate>Mon, 12 Mar 2012 07:00:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-SlsOxq3fcN8/T0__ydtVCAI/AAAAAAAAFYE/iq_CBWKocz0/s72-c/maciej-progtech-maf-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/Wiv_j6RG38w" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/o8-Pz4H0sWM/maf-05-managed-add-in-framework.html</feedburner:origLink></item>
      <item>
         <title>Bezbolesna reorganizacja projektu w Visual Studio 2010. Czyli jak bezpiecznie zmienić nazwy projektów, namespace i ich lokalizację.</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/5CDLA6E6zuI/bezbolesna-reorganizacja-projektu-w-visual-studio-2010-czyli-jak-bezpiecznie-zmienic-nazwy-projektow-namespace-i-ich-lokalizacje</link>
         <description>&lt;h2&gt;Problem&lt;/h2&gt;
&lt;p&gt;W Visual Studio 2010 MainSolution.sln posiadam projekty nazwane odpowiednio Foo.Bar1, Foo.Bar2.:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Bezbolesna-reorga.-Czyli-jak-w-4-krokach_12D0D/image_8.png"&gt;&lt;img height="125" width="244" src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Bezbolesna-reorga.-Czyli-jak-w-4-krokach_12D0D/image_thumb_3.png" alt="image" border="0" title="image" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px;"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Struktura katalog&amp;oacute;w projektu wygląda następująco:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Bezbolesna-reorga.-Czyli-jak-w-4-krokach_12D0D/image_6.png"&gt;&lt;img height="244" width="174" src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Bezbolesna-reorga.-Czyli-jak-w-4-krokach_12D0D/image_thumb_2.png" alt="image" border="0" title="image" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border-width:0px;"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Projekt jest pod kontrolą systemu kontroli wersji Mercurial. Co chcę zrobić? Chcę zmienić nazwę projekt&amp;oacute;w znajdujących się wewnątrz na odpowiednio Project1 i Project2, a co za tym idzie namespace w każdym pliku projektu i dodatkowo strukturę katalog&amp;oacute;w, tak żeby odpowiadała nowej nazwie projekt&amp;oacute;w (zamiast vs-rename/src/app/Foo.Bar1 ma być vs-rename/src/app/Project1 itd). Po tej zmianie kod musi się kompilować bez problemy i nie może być problem&amp;oacute;w z commitem/pushem do zdalnego repozytorium na serwerze.&lt;/p&gt;
&lt;h2&gt;Rozwiązanie&lt;/h2&gt;
&lt;p&gt;Wykonuję następujące kroki:&lt;/p&gt;
&lt;p&gt;1. Zmieniam nazwy poszczeg&amp;oacute;lnych projekt&amp;oacute;w (F2 na projekcie).&lt;/p&gt;
&lt;p&gt;2. Zmieniam nazwy namespace w Visual Studio 2010 (F2 na namespace) lub przy użyciu Resharpera (Ctrl+R+R na nazwie namespace). Jeżeli Resharper nie chce pokazać dialogu zmiany namespace spr&amp;oacute;buj przestawić kursor na kolejny człon namespace (po kropce, jeżeli namespace projektu posiada kropki).&amp;nbsp; Czyli zamiast ustawić kursor na Foo, ustawiam gdzieś w &amp;ldquo;Bar1&amp;rdquo;. U mnie czasami ten skr&amp;oacute;t nie działa na pierwszym członie projektu (R# 6.1). Nie wiem z jakiego powodu. Wystarczy wykonać tą operację w pojedynczym pliku w każdym projekcie, aby reszta plik&amp;oacute;w została automatycznie uaktualniona.&lt;/p&gt;
&lt;p&gt;3. Zmieniam nazwę standardowego namespace (i ewentualnie nazwy assembly) w każdym z projekt&amp;oacute;w (w opcjach projektu &amp;ldquo;&lt;em&gt;Default namespace&lt;/em&gt;&amp;rdquo; w zakładce &amp;ldquo;&lt;em&gt;Application&lt;/em&gt;&amp;rdquo;). &lt;strong&gt;Wyłączam Visual Studio 2010.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;4. Wywołuję komendę &lt;strong&gt;hg rename &amp;ndash;R &amp;ldquo;ścieżka do /vs-rename/src/app&amp;rdquo; &amp;ndash;v Foo.Bar1 Project1&lt;/strong&gt; i analogiczną dla Foo.Bar2/Project2 lub &lt;em&gt;&amp;ldquo;Rename File&amp;hellip;&amp;rdquo;&lt;/em&gt;&amp;nbsp; jeżeli korzystam z TortoiseHg.&lt;/p&gt;
&lt;p&gt;5. Otwieram w notatniku kolejno pliki MainSolution.sln, Project1.csproj i Project2.csproj i zmianiem wszystkie wystąpienia (Ctrl+H) Foo.Bar1/Foo.Bar2 na Project1/Project2. Zmiany w plikach *.csproj wprowadzam tylko wtedy, jeżeli projekty posiadają odwołania do innych projekt&amp;oacute;w, w kt&amp;oacute;rych zmieniana była nazwa.&lt;/p&gt;
&lt;p&gt;Po tych zabiegach otwieram projekt w Visual Studio 2010. Wszystkie projekty wewnątrz powinny załadować i skompilować się bez problemu. Zostaje juz tylko commit/push na serwer Mercuriala.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=yXa1mRkVar8:Xix-pQGu2A4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=yXa1mRkVar8:Xix-pQGu2A4:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?i=yXa1mRkVar8:Xix-pQGu2A4:-BTjWOF_DHI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodingblog/~4/yXa1mRkVar8" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/5CDLA6E6zuI" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://jdubrownik.com:80/bezbolesna-reorganizacja-projektu-w-visual-studio-2010-czyli-jak-bezpiecznie-zmienic-nazwy-projektow-namespace-i-ich-lokalizacje</guid>
         <pubDate>Sun, 11 Mar 2012 21:48:50 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/netcodingblog/~3/yXa1mRkVar8/bezbolesna-reorganizacja-projektu-w-visual-studio-2010-czyli-jak-bezpiecznie-zmienic-nazwy-projektow-namespace-i-ich-lokalizacje</feedburner:origLink></item>
      <item>
         <title>Prezentacja: „Rozszerzalne aplikacje w .NET (czyli MAF i MEF)” [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/_n3NBqNghEQ/prezentacja-rozszerzalne-aplikacje-w.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-5533836931647906381</guid>
         <pubDate>Sat, 10 Mar 2012 07:15:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-Qp73mVPrcx4/T0QUSbzy5sI/AAAAAAAAFX4/o6FwSsufj30/s72-c/liftarn_Plug_and_outlet.png" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/_n3NBqNghEQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/gqGnCYejxcQ/prezentacja-rozszerzalne-aplikacje-w.html</feedburner:origLink></item>
      <item>
         <title>[MAF 04] Managed Add-in Framework (System.AddIn) – przykład z kompatybilnością [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/wBH6Ubm37sw/maf-04-managed-add-in-framework.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-4584951852786460207</guid>
         <pubDate>Fri, 09 Mar 2012 07:03:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-SlsOxq3fcN8/T0__ydtVCAI/AAAAAAAAFYE/iq_CBWKocz0/s72-c/maciej-progtech-maf-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/wBH6Ubm37sw" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/9i9E0BipEb4/maf-04-managed-add-in-framework.html</feedburner:origLink></item>
      <item>
         <title>Balls Popper for BADA 2.0!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/DN6w7IZfJ2o/balls-popper-for-bada.html</link>
         <description>I would like to introduce new Balls Popper! New updated version is available in SamsungApps and is completely for &lt;b&gt;FREE&lt;/b&gt;. It includes some new features/fixes and there are &lt;b&gt;NO ADS&lt;/b&gt; during the game!&lt;br /&gt;&lt;br /&gt;Click link below to visit game on SamsungApps:&lt;br /&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00003522546"&gt;=&amp;gt;&amp;gt;&amp;gt; Balls Popper on SamsungApps website &amp;lt;&amp;lt;&amp;lt;=&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Thank you all for your great support :)&lt;br /&gt;More games are coming!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-8136769577007321926?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/DN6w7IZfJ2o" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-8136769577007321926</guid>
         <pubDate>Thu, 08 Mar 2012 19:19:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/03/balls-popper-for-bada.html</feedburner:origLink></item>
      <item>
         <title>[MAF 03] Managed Add-in Framework (System.AddIn) w pigułce (MAF in a nutshell) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/ykb1jPeBpZ8/maf-03-managed-add-in-framework.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-7625745691214504208</guid>
         <pubDate>Wed, 07 Mar 2012 21:51:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-SlsOxq3fcN8/T0__ydtVCAI/AAAAAAAAFYE/iq_CBWKocz0/s72-c/maciej-progtech-maf-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/ykb1jPeBpZ8" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/dS52AiInLjw/maf-03-managed-add-in-framework.html</feedburner:origLink></item>
      <item>
         <title>SharePoint – zmiana Display Name dla pola Title</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/vKYjDjAuGVE/</link>
         <description>&amp;#160; Jednym z podstawowych problemów jaki napotykają początkujący programiści SharePoint jest zmiana nazwy wyświetlania dla wbudowanego pola Title.&amp;#160; Pole to jest obowiązkowym polem typu Text, umożliwia zatem przechowywanie ciągów znakowych o długości do 255 znaków. Bez problemu może być wykorzystane zatem do przechowywania takich danych jak np. imię czy nazwisko pracownika bez potrzeby tworzenia kolejnego [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&amp;#038;blog=15097618&amp;#038;post=280&amp;#038;subd=michalurbanski&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">https://michalurbanski.wordpress.com/?p=280</guid>
         <pubDate>Mon, 05 Mar 2012 22:00:48 +0000</pubDate>
         <content:encoded><![CDATA[<p>&#160;</p>
<p>Jednym z podstawowych problemów jaki napotykają początkujący programiści <strong>SharePoint</strong> jest zmiana nazwy wyświetlania dla wbudowanego pola <strong>Title</strong>.&#160; Pole to jest obowiązkowym polem typu <strong>Text</strong>, umożliwia zatem przechowywanie ciągów znakowych o długości do 255 znaków. Bez problemu może być wykorzystane zatem do przechowywania takich danych jak np. imię czy nazwisko pracownika bez potrzeby tworzenia kolejnego dedykowanego pola. Ponadto, na liście, po najechaniu myszką na to pole uzyskujemy dostęp do menu kontekstowego pozwalającego m.in. edytować dany element listy. Przydałoby się więc, aby zawierało ono bardziej opisowy nagłówek niż “Title”, czy też “Tytuł”. </p>
<p>Dla pól utworzonych w Content Type’ie bez problemu można zmienić nazwę wyświetlania (<strong>Display Name</strong>) w stosunku do znajdującej się w zdefiniowanej kolumnie (Site Column) poprzez nadpisanie właściwości DisplayName. Sytuację te możemy zobaczyć na poniższych ekranach: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/content-type-def.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="content type def" border="0" alt="content type def" src="http://michalurbanski.files.wordpress.com/2012/03/content-type-def_thumb.png?w=620&h=248" width="620" height="248"/></a></p>
<p>W definicji kolumny widać, że dla pola PersonName jako Display Name ustawiony został tekst “Nazwisko”, natomiast w referencji użytej w Content Type nazwa ta została zmieniona na “Nazwisko content type”. </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/new-list-item.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="new list item" border="0" alt="new list item" src="http://michalurbanski.files.wordpress.com/2012/03/new-list-item_thumb.png?w=480&h=268" width="480" height="268"/></a></p>
<p>Przechodząc do utworzenia nowego elementu listy widzimy, że nazwa “Nazwisko content type” została wyświetlona zarówno w widoku wszystkich elementów listy oraz na formularzu dodawania nowego elementu. </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/site-column.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="site column" border="0" alt="site column" src="http://michalurbanski.files.wordpress.com/2012/03/site-column_thumb.png?w=244&h=123" width="244" height="123"/></a></p>
<p>Na liście kolumn witryny znajduje się natomiast zgodnie z oczekiwaniami nazwa “Nazwisko”. </p>
<p><strong>Nieco inne zasady</strong> obowiązują jednak jeśli chodzi o zmianę nazwy wyświetlania kolumny Title. Przede wszystkim, aby odwołać się do tej kolumny przy definiowaniu Content Type’a należy znać jej GUID. W tym celu polecam użycie narzędzia SharePoint Manager 2010 dostępnego pod adresem <a rel="nofollow" title="http://spm.codeplex.com/" target="_blank" href="http://spm.codeplex.com/">http://spm.codeplex.com/</a>&#160;</p>
<p>W celu zmiany nazwy wyświetlania musimy dysponować właściwie trzema GUID’ami – dla kolumn <strong>Title, LinkTitle</strong> oraz <strong>LinkTitleNoMenu</strong>. Po dodaniu referencji w Content Type dla tych pól jak na obrazku poniżej moglibyśmy oczekiwać zmiany nazwy pola: </p>
<p>&#160;<a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/content-type-no-change.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="content type no change" border="0" alt="content type no change" src="http://michalurbanski.files.wordpress.com/2012/03/content-type-no-change_thumb.png?w=630&h=113" width="630" height="113"/></a></p>
<p>Niestety jednak jeśli chodzi o Content Type nie przynosi to pożądanego skutku:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/content-type-view.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="content type view" border="0" alt="content type view" src="http://michalurbanski.files.wordpress.com/2012/03/content-type-view_thumb.png?w=330&h=235" width="330" height="235"/></a></p>
<p>Umieszczenie tych referencji w Content Type pozwoli natomiast na automatyczne wygenerowanie referencji do pól przy tworzeniu List Definition, dzięki czemu nie trzeba ich ręcznie kopiować. W samej definicji listy trzeba jeszcze, poza referencją do pól, dodać definicję tych pól (tak jak została ona automatycznie dodana dla utworzonego wcześniej pola PersonName):</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/list-definition-title-changed.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="list definition title changed" border="0" alt="list definition title changed" src="http://michalurbanski.files.wordpress.com/2012/03/list-definition-title-changed_thumb.png?w=630&h=222" width="630" height="222"/></a></p>
<p>Po takich zmianach widzimy, że nazwa pola uległa zmianie zarówno w widoku listy, jak i na formularzu dodawania nowego elementu (<strong>pamiętać należy jednak, że w Content Type nazwa ta bez zmian jest wyświetlana jako Title</strong>):</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/03/new-list-item-title-changed.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="new list item title changed" border="0" alt="new list item title changed" src="http://michalurbanski.files.wordpress.com/2012/03/new-list-item-title-changed_thumb.png?w=465&h=304" width="465" height="304"/></a></p>
<br />  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michalurbanski.wordpress.com/280/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/michalurbanski.wordpress.com/280/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michalurbanski.wordpress.com/280/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&#038;blog=15097618&#038;post=280&#038;subd=michalurbanski&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/vKYjDjAuGVE" height="1" width="1"/>]]></content:encoded>
         <media:content medium="image" url="http://1.gravatar.com/avatar/9a702a5222b92da35aa386469845b917?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">michalurbanski</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/content-type-def_thumb.png">
            <media:title type="html">content type def</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/new-list-item_thumb.png">
            <media:title type="html">new list item</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/site-column_thumb.png">
            <media:title type="html">site column</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/content-type-no-change_thumb.png">
            <media:title type="html">content type no change</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/content-type-view_thumb.png">
            <media:title type="html">content type view</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/list-definition-title-changed_thumb.png">
            <media:title type="html">list definition title changed</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/03/new-list-item-title-changed_thumb.png">
            <media:title type="html">new list item title changed</media:title>
         </media:content>
         <category>SharePoint</category>
      <feedburner:origLink>http://michalurbanski.wordpress.com/2012/03/05/sharepoint-zmiana-display-name-dla-pola-title/</feedburner:origLink></item>
      <item>
         <title>[MAF 02] Przykład prostej aplikacji z obsługą wtyczek z wykorzystaniem Managed Add-in Framework (System.AddIn) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/PIxItrVvoIg/maf-02-przykad-prostej-aplikacji-z.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-8222672615668961682</guid>
         <pubDate>Sun, 04 Mar 2012 00:07:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-w5TSix8AyKQ/T1KispDC_lI/AAAAAAAAFY0/iZSK6IoeM3o/s72-c/MAF-sample1-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/PIxItrVvoIg" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/77j9FzrTjHI/maf-02-przykad-prostej-aplikacji-z.html</feedburner:origLink></item>
      <item>
         <title>[MAF 01] Rzut okiem na Managed Add-in Framework (System.AddIn) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/Goivp3apzm4/maf-01-rzut-okiem-na-managed-aadd-in.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-5126133555994679993</guid>
         <pubDate>Fri, 02 Mar 2012 00:07:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-SlsOxq3fcN8/T0__ydtVCAI/AAAAAAAAFYE/iq_CBWKocz0/s72-c/maciej-progtech-maf-logo.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/Goivp3apzm4" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/nIgaVeC9Hro/maf-01-rzut-okiem-na-managed-aadd-in.html</feedburner:origLink></item>
      <item>
         <title>Fill up a WPF progress bar with a linear gradient</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/MJ-XFwEvsUw/fill-up-wpf-progress-bar-with-linear.html</link>
         <description>Not so long ago I was faced with a problem how to fill a rectangle with a gradient, which shows a progress, with the gradient stops depending on the current progress. I know I know, this probably tells you nothing. I believe a good visual example will save me a thousand words, so here it comes. This is what I wanted to say:&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-PGJo37Wb3dk/T0v8FQ6tKLI/AAAAAAAAB40/R1LrSVsILfc/s1600-h/image%25255B20%25255D.png"&gt;&lt;img alt="image" border="0" height="254" src="http://lh6.ggpht.com/-i5idmaqgxgs/T0v8GVz1lAI/AAAAAAAAB48/Lj8f8LBRayo/image_thumb%25255B12%25255D.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="359"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-MEP2sk1g5iU/T0v8Hb087QI/AAAAAAAAB5E/WwRuwkPkdYk/s1600-h/image%25255B19%25255D.png"&gt;&lt;img alt="image" border="0" height="254" src="http://lh6.ggpht.com/-vPSoTxDgCBE/T0v8ISKRf_I/AAAAAAAAB5M/M3Z6-GgBl0s/image_thumb%25255B11%25255D.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="359"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-XyVFHThZdpI/T0v8JbiOSdI/AAAAAAAAB5U/B7rdp1AQljw/s1600-h/image%25255B18%25255D.png"&gt;&lt;img alt="image" border="0" height="254" src="http://lh6.ggpht.com/-jH8pINWv8Ag/T0v8KMhCVJI/AAAAAAAAB5c/F-FRARKaDuk/image_thumb%25255B10%25255D.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="359"/&gt;&lt;/a&gt;&lt;br /&gt;So lets discuss what we see here. We have three styled progress bars, each filled with the same background. The middle one serves as a reference point only. The middle and the last text boxes are filled with a regular linear gradient brush. And I mean regular, absolutely no magic there. When we change the progress using the slider, you can see that the rectangle which is used to show current progress shrinks or expands, but the last gradient behaves in a weird way. &lt;strong&gt;This is actually the default bahavior here&lt;/strong&gt;. However, what I really expect is the behavior of the first progress bar – the fill gradient depends on the current progress. In other words, you can imagine 100% as the full gradient. Than, I want to crop it based on current progress.&lt;br /&gt;&lt;br /&gt;So how to write a custom brush which would do that ? Yes, yes, you’re right. It’s not possible. You cannot write custom brushes in WPF. That’s sad but it’s true. No luck ? No! Attached behavior comes to the rescue! Whenever progress changes the attached behavior will recreate LinearGradientBrush and recalculate gradient stops based on the original gradient. It’s actuall simple, let’s have a quick overview of the code itself. &lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;public class LinearGradientBrushBehavior : Behavior&amp;lt;RangeBase&amp;gt;&lt;br /&gt;{&lt;br /&gt;    protected override void OnAttached()&lt;br /&gt;    {            &lt;br /&gt;        AssociatedObject.Loaded += AssociatedObject_Loaded;&lt;br /&gt;        AssociatedObject.ValueChanged += AssociatedObject_ValueChanged;&lt;br /&gt;&lt;br /&gt;        var sourceBrush = AssociatedObject.Foreground as LinearGradientBrush;&lt;br /&gt;        if (sourceBrush != null)&lt;br /&gt;        {&lt;br /&gt;            SourceBrush = sourceBrush;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;        &lt;br /&gt;    protected override void OnDetaching()&lt;br /&gt;    {&lt;br /&gt;        AssociatedObject.Loaded -= AssociatedObject_Loaded;&lt;br /&gt;        AssociatedObject.ValueChanged -= AssociatedObject_ValueChanged;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void AssociatedObject_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        CalculateNewGradient(Progress);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void AssociatedObject_ValueChanged(object sender, RoutedPropertyChangedEventArgs&amp;lt;double&amp;gt; e)&lt;br /&gt;    {&lt;br /&gt;        CalculateNewGradient(Progress);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private double Progress&lt;br /&gt;    {&lt;br /&gt;        get { return AssociatedObject.Value / (AssociatedObject.Maximum - AssociatedObject.Minimum); }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    #region SourceBrush&lt;br /&gt;&lt;br /&gt;    public LinearGradientBrush SourceBrush&lt;br /&gt;    {&lt;br /&gt;        get { return (LinearGradientBrush)GetValue(SourceBrushProperty); }&lt;br /&gt;        set { SetValue(SourceBrushProperty, value); }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static readonly DependencyProperty SourceBrushProperty =&lt;br /&gt;        DependencyProperty.Register(&lt;br /&gt;            "SourceBrush", typeof(LinearGradientBrush), typeof(LinearGradientBrushBehavior), new UIPropertyMetadata(null));&lt;br /&gt;&lt;br /&gt;    #endregion&lt;br /&gt;        &lt;br /&gt;    private void CalculateNewGradient(double progress)&lt;br /&gt;    {&lt;br /&gt;        var brush = new LinearGradientBrush();&lt;br /&gt;        brush.StartPoint = SourceBrush.StartPoint;&lt;br /&gt;        brush.EndPoint = SourceBrush.EndPoint;&lt;br /&gt;&lt;br /&gt;        foreach (var gradientStop in SourceBrush.GradientStops)&lt;br /&gt;        {&lt;br /&gt;            var offset = (1 - gradientStop.Offset) / progress;&lt;br /&gt;            var newGradientStop = new GradientStop(gradientStop.Color, 1 - offset);&lt;br /&gt;            brush.GradientStops.Add(newGradientStop);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        ApplyNewGradient(brush);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void ApplyNewGradient(LinearGradientBrush brush)&lt;br /&gt;    {&lt;br /&gt;        AssociatedObject.Foreground = brush;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;The most important part is the &lt;em&gt;CalculateNewGradient&lt;/em&gt; method, which is called once when the control loads up and each time the progress changes. That method is responsible for calculating new offsets for all gradient stops. Recalculated gradient is than reapplied to the &lt;em&gt;Foreground&lt;/em&gt; property. I don’t have to add that rectangle’s Fill is bound to it :) It’s also worth pointing out that this behavior works with &lt;em&gt;RangeBase&lt;/em&gt; inherited controls, so you can utilize it to create nice looking &lt;em&gt;Slider&lt;/em&gt;!&lt;br /&gt;&lt;br /&gt;One thing to consider here is performance. I haven’t noticed any problems, even though each time progress changes, new instance of &lt;em&gt;LinearGradientBrush&lt;/em&gt; is created. Which is good :) You can find the sources on my &lt;a rel="nofollow" target="_blank" href="https://skydrive.live.com/redir.aspx?cid=bd15edd4d52f5329&amp;amp;resid=BD15EDD4D52F5329!239&amp;amp;parid=BD15EDD4D52F5329!115&amp;amp;authkey=!AMTzSY3pymU14Rg"&gt;SkyDrive&lt;/a&gt;. Hope you like it!&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/891889700878195825-3112160219388393409?l=pwlodek.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/MJ-XFwEvsUw" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (Piotr Włodek)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-891889700878195825.post-3112160219388393409</guid>
         <pubDate>Mon, 27 Feb 2012 21:56:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh6.ggpht.com/-i5idmaqgxgs/T0v8GVz1lAI/AAAAAAAAB48/Lj8f8LBRayo/s72-c/image_thumb%25255B12%25255D.png?imgmax=800" width="72" />
      <feedburner:origLink>http://pwlodek.blogspot.com/2012/02/fill-up-wpf-progress-bar-with-linear.html</feedburner:origLink></item>
      <item>
         <title>Emacs w wydaniu dla twardzieli</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/ALOeYEf1cpE/</link>
         <description>Na przestrzeni czasu zaprzyjaźniłem się ze świetnym edytorem jakim jest Emacs. Nasza długotrwała relacja spowodowała, że postanowiłem przenieść ten związek na wyższy poziom.. i udało się, jest jeszcze lepiej :). Teraz rozstajemy się jeszcze rzadziej. Jeśli Drogi Czytelniku też masz &amp;#8230;&lt;p class="read-more"&gt;&lt;a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2012/02/emacs-w-wydaniu-dla-twardzieli/"&gt;Read more &amp;#187;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://lukaszsowa.pl/?p=692</guid>
         <pubDate>Mon, 27 Feb 2012 17:03:10 +0000</pubDate>
         <content:encoded><![CDATA[<p><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2010/09/edytor-tekstu-zamiast-wypasionego-ide/">Na przestrzeni czasu</a> <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2010/10/emacs-dla-cc/">zaprzyjaźniłem się</a> ze świetnym edytorem jakim jest Emacs. Nasza długotrwała relacja spowodowała, że postanowiłem przenieść ten związek na wyższy poziom.. i udało się, jest jeszcze lepiej :). Teraz rozstajemy się jeszcze rzadziej. Jeśli Drogi Czytelniku też masz ochotę na głębszy romans, zapraszam do lektury tego wpisu.</p>
<h2>Destrukcja</h2>
<p>Podobno czasem bywa, że aby coś zbudować, trzeba coś zniszczyć. Tak zrobimy i tym razem i tworzenie  nowego, lepszego świata zaczniemy od&#8230; usunięcia Emacsa i wszystkiego co z nim związane z systemu. Większość osób instaluje edytor z dystrybucyjnego repozytorium. Takie rozwiązanie jest wygodne, ale ma kilka przykrych konsekwencji. Przede wszystkim repozytoria często zawierają nieaktualne wersje, a wbrew pozorom Emacs rozwija się całkiem szybko, więc łatwo pozostać w tyle. Drugą sprawą są zależności, które instalują się przy okazji &#8211; nie zawsze wiadomo co to jest. Różne dystrybucje wykorzystują różne rodzaje repozytoriów, a więc ewentualne przeniesienie naszego środowiska pomiędzy dystrybucjami może sprawić niepotrzebny kłopot. Odpowiedzią na te problemy jest kompilacja &#8211; proces sporo trudniejszy, no ale coś za coś. W każdym razie <em>pacman -R </em>(czy co tam kto używa) do rąk i do dzieła! Ważne, aby wszystko usunąć &#8211; nie tylko podstawowy edytor, ale również wszystkie pakiety wspomagające &#8211; dodatkowe mody itd.</p>
<h2>Budowanie</h2>
<p>Po słodkim zniszczeniu pora zacząć budowanie nowego świata. Pierwszym krokiem będzie sklonowanie najnowszej wersji z repozytorium:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">git clone git://git.savannah.gnu.org/emacs.git</pre></div></div>

<p>a następnie kompilacja i instalacja:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">./autogen.sh
./configure
make
sudo make install</pre></div></div>

<p>i gotowe! Nasz nowy, błyszczący Emacs jest gotowy. W przypadku gdybyśmy chcieli zaktualizować naszą kompilację należy wyczyścić stare efekty, pobrać zmiany i powtórzyć cały proces:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">make clean
git pull
./autogen.sh
./configure
make
sudo make install</pre></div></div>

<h2>Prace wykończeniowe</h2>
<p>Nie od dziś wiadomo, że to prace wykończeniowe zajmują najwięcej zasobów &#8211; tak też jest w tym wypadku.</p>
<h3>Dodatki</h3>
<p>&#8222;Goły&#8221; Emacs, mimo że bardzo rozbudowany, nie posiada wszystkiego, co potrzebne do szczęścia. Z tego powodu na pewno chcielibyśmy wyposażyć naszą kompilację w szereg dodatków. Wszystkie dodatkowe moduły warto trzymać uporządkowane, w jednym miejscu. W ten sposób przeniesienie ich na inny system będzie wymagało zaledwie skopiowania pojedynczego katalogu. Genialne w swej prostocie, prawda? Osobiście preferuję przechowywanie dodatków w katalogu ~/.emacs.d, w którym utworzyłem sobie dwa katalogi: <em>modules</em> i <em>themes, </em>które odpowiednio zawierają moduły i motywy graficzne.</p>
<h3>Konfiguracja</h3>
<p>Skonfigurowanie Emacsa, skrojone do indywidualnych potrzeb jest zadaniem dosyć skomplikowanym. Zajmę się tym w kolejnej notce z serii emacsowej. Na chwilę obecną proponuję obejrzeć <a rel="nofollow" target="_blank" href="https://github.com/luksow/dotfiles/blob/master/.emacs">mój plik konfiguracyjny</a>, który jest dosyć obszernie skomentowany.</p>
<h2>Uruchamianie</h2>
<p>Gdy mamy już wszystko elegancko skonfigurowane można swobodnie zacząć używać Emacsa, ale&#8230; wpisanie w konsoli &#8222;emacs&#8221; jest passe, demode i w ogóle bleee. Osobiście, w trakcie uruchamiania systemu odpalam Emacsa w trybie daemona:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">emacs --daemon</pre></div></div>

<p>Wtedy Emacs będzie pracował zawsze w tle, a jego uruchomienie za pomocą polecenia:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">emacsclient</pre></div></div>

<p>będzie się odbywało niemal natychmiastowo. Istotną zaletą takiego podejścia jest ciągłe przechowywanie sesji no i wysoka efektywność i wygoda. Wadą natomiast może być konieczność rozsądnego zarządzania buforami, które nie zamykają się same. W tym miejscu warto również stworzyć dla powyższego polecenia wygodny alias &#8211; w moim wypadku jest to po prostu <em>e</em>. <em>e nazwa_pliku </em>uruchamia mi ramkę Emacsa z plikiem gotowym do edycji i jest to co najmniej tak wygodne jak vim ;&gt;.</p>
<h2>Na zakończenie</h2>
<p>Używanie Emacsa w ten sposób jest bardzo wygodne i już wiem, że nie zamienię go na nic innego :). Serdecznie polecam wszystkim spróbowanie takiego podejścia. Niedoświadczonym proponuję sklonowanie sobie mojego repozytorium z dotfiles:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">git clone git://github.com/luksow/dotfiles.git</pre></div></div>

<p>Można tam znaleźć mój katalog <em>.emacs.d, </em>plik konfiguracyjny Emacsa <em>.emacs</em> oraz plik <em>.bash_rc</em> z ustawieniami aliasów.</p>
<p>Powodzenia!</p>
<div style="background-color:transparent;text-align:left;display:none;padding:0px !important;margin:0px !important;">
<div style="max-width:300px !important;color:#fafafa;border-color:#000000;border-width:0px !important;background-color:#363636;font-size:16px !important;padding:8px !important;overflow:visible;text-align:left;"></div>
<p><img style="cursor:pointer;padding:3px 5px 0 !important;margin:0 !important;" src="http://www.google.com/uds/css/small-logo.png" alt=""/></p>
</div><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/ALOeYEf1cpE" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://lukaszsowa.pl/2012/02/emacs-w-wydaniu-dla-twardzieli/</feedburner:origLink></item>
      <item>
         <title>Metody rozszerzające, Atrybuty i Refleksje w .NET [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/wuNew3W-954/metody-rozszerzajace-atrybuty-i.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-516457119644519057</guid>
         <pubDate>Wed, 22 Feb 2012 23:42:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-UuahhoUl-g8/TZtsZRWOtcI/AAAAAAAAECc/6VO0opTLQoo/s72-c/drobiazgi-czyli-male-a-cieszy.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/wuNew3W-954" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/ijbTxXC6e3c/metody-rozszerzajace-atrybuty-i.html</feedburner:origLink></item>
      <item>
         <title>Richtung Zürich</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/NM0qhtTfS3I/</link>
         <description>Pod koniec lutego po prawie 10 latach spędzonych we Wrocławiu opuściłem to miejsce by udać się na dobrowolną emigrację Powody były czysto prywatne, choć marzenie "zawsze chciałem pożyć parę lat za granicą" też tu dorzuciło swoje 5 groszy Decyzja nie była łatwa, bo ciężko jest bądź co bądź wyjechać z miejsca, w które się dość [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/NM0qhtTfS3I" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=181</guid>
         <pubDate>Wed, 22 Feb 2012 18:51:53 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/02/22/richtung-zurich/</feedburner:origLink></item>
      <item>
         <title>Praca inżynierska – epilog</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/AoFX7T8Lkbo/</link>
         <description>Blog nosi znamiona pamiętnika, zatem wpis ten powstaje ku pamięci, aby zachować historię powstawania moje pracy inżynierskiej. Tym samym skończę tematykę moich studiów inżynierskich, która pewnie dla niewielu osób jest interesująca. Część praktyczna&amp;#8230; O szczegółach trudnych początków można było przeczytać &amp;#8230;&lt;p class="read-more"&gt;&lt;a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2012/02/praca-inzynierska-epilog/"&gt;Read more &amp;#187;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://lukaszsowa.pl/?p=690</guid>
         <pubDate>Wed, 22 Feb 2012 15:00:13 +0000</pubDate>
         <content:encoded><![CDATA[<p>Blog nosi znamiona pamiętnika, zatem wpis ten powstaje ku pamięci, aby zachować historię powstawania moje pracy inżynierskiej. Tym samym skończę tematykę moich studiów inżynierskich, która pewnie dla niewielu osób jest interesująca.</p>
<h2>Część praktyczna&#8230;</h2>
<p>O szczegółach trudnych początków można było <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2011/07/moja-praca-inzynierska/">przeczytać wcześniej</a>. W czasie wakacji skoncentrowałem się na tworzeniu praktycznej części pracy. Podczas analizy systemu Google Chrome OS napotkałem na pewien nierozwiązany problem. W Linuksie brakuje mechanizmu, który pozwalałby na ograniczenie dostępnego zbioru wywołań systemowych. Tego typu narzędzie pozwala na działanie w myśl zasady najmniejszego uprzywilejowania i powstrzymywanie ataków ze wstrzykiwaniem kodu. Istniejące rozwiązania są niewystarczające &#8211; posiadają zbyt małe możliwości, są niewydajne lub niebezpieczne. Z tego powodu ochoczo zabrałem się za stworzenie rozwiązania, które może sprostać oczekiwaniom projektu Chrome OS i pozostałej części społeczności :).</p>
<p>W związku z powyższym <a rel="nofollow" target="_blank" href="https://github.com/luksow/syscalls-cgroup">stworzyłem moduł</a>, który pozwala pogrupować zadania w grupach kontrolnych, a następnie zdefiniować dostępny dla nich zbiór wywołań systemowych. Tym samym można zabronić procesom np. otwierania i tworzenia plików, zmieniania uprawnień, forkowania itd. Na uwagę zasługuje wydajność rozwiązania. Użycie modułu spowalnia zadania o nie więcej niż 5%, co jest zdecydowanie dobrym wynikiem na tle rozwiązań konkurencyjnych.</p>
<p>Sama implementacja nie była łatwa. Przy okazji tworzenia mechanizmu musiałem dogłębnie poznać działanie kilku elementów jądra, a także uważać na różne subtelności takie jak właściwa synchronizacja czy optymalizacja.</p>
<h2>&#8230;teoretyczna&#8230;</h2>
<p>Oprócz pierwszego rozdziału o mechanizmach bezpieczeństwa systemu Chrome OS, musiałem napisać jeszcze z 70 stron :). Dalsza część tekstu powstawała w minionym semestrze, a jej treść w zasadzie odzwierciedlała postępy w pracy. Drugi rozdział dotyczył zatem istniejących rozwiązań oferujących usługi ochrony dostępu do wywołań systemowych i dlaczego są złe ;&gt;. Dalej było standardowo &#8211; rozdział pt. &#8222;Projekt&#8221;, w którym rozważałem możliwe podejścia do tematu, &#8222;Implementacja&#8221;, w której skoncentrowałem się na specyfice programowania w przestrzeni jądra oraz &#8222;Testowanie&#8221;, w którym przeprowadzałem dosyć hardkorowe testy wydajnościowe. Na koniec pozostało napisanie wstępu i zakończenia i gotowe! Wygląda to jak spacerek, ale tak naprawdę to był maraton. Pisanie tekstów technicznych jest trudne, nawet bardzo trudne. Praktyka w pisaniu na blogu to niewiele, ponieważ styl języka jest całkowicie inny. Ostatecznie udało się jednak złożyć pracę na czas, 3 dni przed terminem.</p>
<h2>&#8230;i rezultaty</h2>
<p>Oprócz tytułu zawodowego, udało mi się zdobyć coś (ideologicznie) wartego znacznie więcej &#8211; wiedzę. Mogę śmiało powiedzieć, że udało mi się znacznie rozmnożyć moje zasoby wiedzowe, co uznaję za największy sukces całego procesu dyplomowania. Mówiąc krótko &#8211; jestem dumny z wykonanej przeze mnie pracy i chyba nie ma w tym nic złego. Mam też nadzieję, że równie przyjemnie będzie mi się pracowało nad pracą magisterską.</p>
<p>W tym miejscu zachęcam do przeczytania przynajmniej fragmentów <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/publikacje/">mojej pracy</a> (jak tylko zostanie ona opublikowana), a także śledzenia wszelkich &#8222;ubocznych&#8221; efektów dyplomowania :).</p>
<div style="background-color:transparent;text-align:left;display:none;background-position:!important;padding:0px !important;margin:0px !important;">
<div style="max-width:300px !important;color:#fafafa;border-color:#000000;border-width:0px !important;background-color:#363636;font-size:16px !important;padding:8px !important;overflow:visible;text-align:left;"></div>
<p><img style="cursor:pointer;padding:3px 5px 0 !important;margin:0 !important;" src="http://www.google.com/uds/css/small-logo.png" alt=""/></div><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/AoFX7T8Lkbo" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://lukaszsowa.pl/2012/02/praca-inzynierska-epilog/</feedburner:origLink></item>
      <item>
         <title>Rozszerzanie aplikacji .NET (czyli plugin'y, add-in'y, MAF, MEF, itp. ...) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/QufSHQXpwT0/rozszerzanie-aplikacji-net-czyli.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-3358307235632377230</guid>
         <pubDate>Tue, 21 Feb 2012 23:33:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-Qp73mVPrcx4/T0QUSbzy5sI/AAAAAAAAFX4/o6FwSsufj30/s72-c/liftarn_Plug_and_outlet.png" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/QufSHQXpwT0" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/8d7IKlzrbWg/rozszerzanie-aplikacji-net-czyli.html</feedburner:origLink></item>
      <item>
         <title>inż. Łukasz</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/nf3UmvgV194/</link>
         <description>Tak oto upłynął mi semestr siódmy, całkowicie inny od pozostałych. Można powiedzieć, że nawet przyjemny i interesujący. W końcu udało mi się otrzymać 3 nowe litery i kropkę przed nazwiskiem, a to dla mnie całkiem miłe osiągnięcie :). Semestr Na &amp;#8230;&lt;p class="read-more"&gt;&lt;a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2012/02/inz-lukasz/"&gt;Read more &amp;#187;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://lukaszsowa.pl/?p=686</guid>
         <pubDate>Mon, 20 Feb 2012 13:54:59 +0000</pubDate>
         <content:encoded><![CDATA[<p>Tak oto upłynął mi semestr siódmy, całkowicie inny od pozostałych. Można powiedzieć, że nawet przyjemny i interesujący. W końcu udało mi się otrzymać 3 nowe litery i kropkę przed nazwiskiem, a to dla mnie całkiem miłe osiągnięcie :).</p>
<h2>Semestr</h2>
<p>Na ten semestr został mi już tylko jeden przedmiot &#8211; algorytmy heurystyczne. Niewiele mogę jednak o nim napisać, gdyż (niestety?) nie bardzo się do niego przykładałem z powodu zaangażowania w pracę inżynierską. Ot przedstawienie, podsumowanie wiedzy o metoda metaheurystycznych i trochę obrzydliwej matematyki. Na plus można zaliczyć fakt, że udało mi się przy okazji poznać nowy język &#8211; R, potrzebny do realizacji projektu.</p>
<p>Na oddzielny akapit zasługuje seminarium dyplomowe, na którym każdy uczestnik miał okazję opowiedzieć o swojej pracy dyplomowej. Inicjatywa całkiem fajna, bo rozwijającą. Ogromna różnorodność tematów pozwala doszkolić się z innych, niż własna, dziedzin. Przyczepić można się tylko do dwóch rzeczy. Przede wszystkim każdy uczestnik miał tylko 20 minut na prezentację, co jest śmiesznie małą ilością czasu. Ciężko w 1/3 godziny przedstawić efekt wielu dni pracy, ale widocznie &#8222;tak musi być&#8221;. Druga sprawa to jakość przygotowanego przez uczestników materiału &#8211; często co najmniej &#8222;słaba&#8221;. Niemniej jednak, takich inicjatyw powinno być więcej. Niech nie tylko wykładowcy mają prawo głosu :).</p>
<h2>Praca inżynierska</h2>
<p>Zdecydowaną większość semestru spędziłem na pracy nad dyplomem. Poważny risercz, dużo pisania &#8211; zajmowało to kupę czasu i co ważniejsze chęci i siły. Z tego też powodu zaniedbałem całkowicie bloga. Po spędzeniu kilku godzin dziennie na pisaniu, perspektywa tworzenia (dobrowolnie) notki na bloga powodowała u mnie niemal odruch wymiotny. W każdym razie, efekt mojej pracy jest (przynajmniej dla mnie) więcej niż zadowalający. <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/projekty/">Kompletny, funkcjonalny moduł jądra</a> oraz <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/publikacje/">około 90 całkiem treściwych stron</a> pt. &#8222;Nowoczesne mechanizmy bezpieczeństwa w systemie Linux&#8221; są zwieńczeniem niemal roku pracy. Co jednak najważniejsze praca została oceniona na bardzo dobry z wyróżnieniem czyli nie tylko mi się podobała :).</p>
<h2>Studia, studia&#8230; i po studiach</h2>
<p>Udana obrona &#8211; studia ukończone na bardzo dobry z wyróżnieniem zakończyły inżynierski etap mojej edukacji. Nie mam ochoty ich podsumowywać, gdyż myślę, że byłoby to nierzetelne. Prawdziwy obraz moich studiów tworzą komentarze do poszczególnych semestrów, do których linki można znaleźć poniżej:</p>
<ul>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2009/02/pierwszy-semestr-za-mna/">Semestr 1</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2009/07/wakacje/">Semestr 2</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2010/02/4-miesiace/">Semestr 3</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2010/06/zwatpilem-w-edukacje/">Semestr 4</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2011/02/i-znowu-porazka/">Semestr 5</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2011/06/cudowna-odmiana/">Semestr 6</a></li>
<li><a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2012/02/inz-lukasz/">Semestr 7</a></li>
</ul>
<div><span style="line-height:18px;">Odpowiem jednak przy okazji na proste pytanie: czy żałuję? Nie, nie żałuję. Tych 7 semestrów poszerzyło moje horyzonty w wielu kwestiach i nauczyło wytrwałości. Mogło być jednak znacznie lepiej. Szkoda zmarnowanego potencjału.</span></div>
<div>Co teraz? Odpowiedź jest prosta &#8211; czas na studia magisterskie &#8211; znowu na kochanym Wydziale :). Myślałem oczywiście o zmianie miejsca, ale najnormalniej w świecie &#8211; nie chce mi się.</div>
<div></div>
<div>PS. Blog dorobił się dwóch nowych działów <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/projekty/">Projekty</a> i <a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/publikacje/">Publikacje</a>. Zobaczcie koniecznie!</div>
<div style="background-color:transparent;text-align:left;display:none;padding:0px !important;margin:0px !important;">
<div style="max-width:300px !important;color:#fafafa;border-color:#000000;border-width:0px !important;background-color:#363636;font-size:16px !important;padding:8px !important;overflow:visible;text-align:left;"></div>
<p><img style="cursor:pointer;padding:3px 5px 0 !important;margin:0 !important;" src="http://www.google.com/uds/css/small-logo.png" alt=""/></div><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/nf3UmvgV194" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://lukaszsowa.pl/2012/02/inz-lukasz/</feedburner:origLink></item>
      <item>
         <title>Toddler# (plugin) - dwa makra dla Resharpera 6</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/nLuCpo0-HBg/toddler-dwa-makra-dla-resharpera-6</link>
         <description>&lt;p&gt;Jakiś czas temu przeczytałem wpis Macieja Aniserowicza (&lt;a rel="nofollow" target="_blank" href="http://www.maciejaniserowicz.com/post/2011/12/22/UT-61-Jak-nazywam-testy.aspx"&gt;tutaj&lt;/a&gt;) dotyczący nazewnictwa metod w testach jednostkowych. Podzielam opinię Macieja odnośnie nie używania camel-case&amp;rsquo;a przy nazywaniu metod &amp;ndash; zwłaszcza tych długaśnych. Jednak z czysto pragmatycznych pobudek notorycznie się do tego nie stosuję. O wiele szybciej pisze mi się nazwy metod nie używając &amp;ldquo;underscore&amp;rsquo;a&amp;rdquo;. W mojej subiektywnej ocenie ten znak jest umieszczony w &amp;ldquo;mało uczęszczanym miejscu klawiatury&amp;rdquo; (nie żeby nie korzystał z Backspace). Każda podr&amp;oacute;ż palcami w te rejony skutecznie wybija mnie z &amp;ldquo;flow&amp;rdquo; i zmusza do opuszczenia bezpiecznej przystani klawiszy F/J. Istnieje r&amp;oacute;wnież możliwość, że nie potrafię w odpowiedni spos&amp;oacute;b korzystać z klawiatury wykorzystując wszystkie 10 palc&amp;oacute;w w podobnym stopniu. Możliwe.&lt;/p&gt;
&lt;p&gt;Zamiast zbadać swoje manualne możliwości przy pomocy &amp;ldquo;Mistrza klawiatury&amp;rdquo; postanowiłem zaoszczędzić trochę czasu i napisałem dwa makra (w formie pluginu) do Resharpera 6:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ReplaceSpacesWithUnderscoresMacro&lt;/strong&gt; -&amp;nbsp; makro zamienienia we wpisanym tekście spacje na znaki podkreślenia. Przykładowo, wpisując np.: &amp;ldquo;check for waiting messages in queue returns nothing&amp;rdquo; dostanę &amp;ldquo;check_for_waiting_messages_in_queue_returns_nothing&amp;rdquo;. &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RemoveSpacesAndCapitalizeFirstLettersMacro&lt;/strong&gt; &amp;ndash; makro usuwa spacje z wpisanego teksu i zamienia pierwsza literę każdego wyrazu na duża literę. Przykładowo, wpisując np.: &amp;ldquo;user notification service adapter&amp;rdquo; dostanę &amp;ldquo;UserNotificationServiceAdapter&amp;rdquo;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pierwszego z tych makr mogę używać, żeby w końcu ładnie nazywać swoje metody testowe, zaś drugie bardzo dobrze sprawdza się podczas tworzenia nazw klas, metod i właściwości. Wystarczy stworzyć własny Live Template w Resharperze aby skorzystać z tych makr.&lt;/p&gt;
&lt;p&gt;Binarki: &lt;a rel="nofollow" target="_blank" href="https://bitbucket.org/jdubrownik/toddler/downloads/Toddler100.zip"&gt;https://bitbucket.org/jdubrownik/toddler/downloads/Toddler100.zip&lt;/a&gt;&lt;br /&gt;Źr&amp;oacute;dła: &lt;a rel="nofollow" target="_blank" href="https://bitbucket.org/jdubrownik/toddler/overview"&gt;https://bitbucket.org/jdubrownik/toddler/overview&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=W6XqLwkt6CQ:cA5Soq1AXOo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=W6XqLwkt6CQ:cA5Soq1AXOo:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?i=W6XqLwkt6CQ:cA5Soq1AXOo:-BTjWOF_DHI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodingblog/~4/W6XqLwkt6CQ" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/nLuCpo0-HBg" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://jdubrownik.com:80/toddler-dwa-makra-dla-resharpera-6</guid>
         <pubDate>Thu, 16 Feb 2012 08:41:12 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/netcodingblog/~3/W6XqLwkt6CQ/toddler-dwa-makra-dla-resharpera-6</feedburner:origLink></item>
      <item>
         <title>[RX 12] Reactive Extensions, przykład kompozycji zdarzeń [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/X2a8vQMGWEY/rx-12-reactive-extensions-przykad.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-8489362784066511074</guid>
         <pubDate>Wed, 15 Feb 2012 07:27:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-sOi4mvZvV9w/Ttfvz1celcI/AAAAAAAAE8I/wZBSwA9FjSU/s72-c/maciej-progtech-reactive-extensions-rx-code-small.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/X2a8vQMGWEY" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/5lqsSgv9cN4/rx-12-reactive-extensions-przykad.html</feedburner:origLink></item>
      <item>
         <title>Jewels Master - new game!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/ol6JG7V74is/jewels-master-new-game.html</link>
         <description>&lt;div style="text-align:justify;"&gt;For the last couple of weeks I was thinking about improving &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.jewels"&gt;Jewels&lt;/a&gt; game. I wanted to change gameplay and add some new features. I wanted to create something different than what is already on the market (typical match 3 puzzles). &lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;So here it is: &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.jewelsmaster"&gt;Jewels Master&lt;/a&gt;! :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Game features:&lt;br /&gt;- beautiful custom graphics&lt;br /&gt;- smooth animations&lt;br /&gt;- sound fx and background music (done by &lt;b&gt;vrt&lt;/b&gt;)&lt;br /&gt;- moves prediction (tap first to mark jewels, tap again to remove them)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;- undo last move option&lt;br /&gt;- 3 game modes (Timed, One time, Infinite)&lt;br /&gt;- 5 board sizes (Tiny, Small, Average, Large, X-Large)&lt;br /&gt;- 4 game difficulties (Easy, Medium, Hard, Extreme)&lt;br /&gt;- highscoring (for every mode, difficulty and board sizes!)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;This is the first release. I really appreciate your feedback. I will be adding new features in the next releases.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;So, once again, go &lt;a rel="nofollow"&gt;here&lt;/a&gt; and download &lt;a rel="nofollow"&gt;Jewels Master&lt;/a&gt;! :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAACvCAIAAAAE8BkiAAAI80lEQVR4nO2YQY4kOQwD5/+fnj0NCvCilYgO0mkUzKskKqj0oVB//l5d/dOftwGuDtJ9DVcf3ddw9dF9DVcfra/hzy69kvb/CjIH84q7Mq17D+F4S0HmYF5xV6Z17yEcbynIHMwr7sq07j2E4y0FmYN5xV2Z1r2HcLylIHMwr7gr07p35kAZUMLeOXpWKFGvavSw9xCOuRmpZ4US9apGD3sP4ZibkXpWKFGvavSw9xCOuRmpZ4US9apGD3sP4ZibkXpWKFGvavSw11CiU6KE5hwGwyTqNSMr5XwIh2k2EVDAt5qRlXI+hMM0mwgo4FvNyEo5H8Jhmk0EFPCtZmSlnA/hMM0mAgr4VjOyUs6ncIxVhDHPmr0Io0dl9j5UT+EYqwhjnjV7EUaPyux9qJ7CMVYRxjxr9iKMHpXZ+1A9hWOsIox51uxFGD0qs/ehegrHWEUY86zZizB6VGbvQ/UQDrTINJu8s9W22TmvSXRfQ4x52+yc1yS6ryHGvG12zmsS3dcQY942O+c1ie5riDFvm53zmkTJ/MGEQWdj9Rbza1/hFI7aZY3VW8yvfYVTOGqXNVZvMb/2FU7hqF3WWL3F/NpXOIWjdllj9Rbza19h7u4peJ2vr/a07j2F41Z/rva07j2F41Z/rva07j2F41Z/rva07j2F41Z/rva07v17hhh0MP+uKqJ6S8dwiE9o7r6tiqje0jEc4hOau2+rIqq3dAyH+ITm7tuqiOotHcMhPqG5+7YqonpLDxzBDNvy9z6DsUKzphklWq2CGZCVYGaLehGQFZo1zSjRahXMgKwEM1vUi4Cs0KxpRolWq2AGZCWY2aJeBGSFZk0zSrRaBTMgK8HMFvUiICs0a5pRotUKZTDQvQxmkbl7cBYxF6+hhklC5BxU7yMFZxFz8RpqmCREzkH1PlJwFjEXr6GGSULkHFTvIwVnEXPxGmqYJETOQfU+UnAWMRevEeQInjJohSIEAwaZUSIFaRYbjuB10KwRogoyo0QK0iw2HMHroFkjRBVkRokUpFlsOILXQbNGiCrIjBIpSLPYcASvg2aNEFWQGSVSkAh65jAZghimubeot3eeZc1BytnKzJpjHbKot3eeZc1BytnKzJpjHbKot3eeZc1BytnKzJpjHbKot3eeZc1BytnKzJpjHbKot3eeZc0oYTDD3Iw0UxkFE5lmNKv2ouFtt0OaqYyCiUwzmlV70fC22yHNVEbBRKYZzaq9aHjb7ZBmKqNgItOMZtVeNLztdkgzlVEwkWlGs2ovskabelVDNTcjqqAMVfA49zWAu8/NRoYqeJz7GsDd52YjQxU8zn0N4O5zs5GhCh7nvgZw97nZyFAFj6MCG45gQoNhZlGibXkNxn0Nv59FibblNRj3Nfx+FiXaltdg3Nfw+1mUaFteg3Ffw+9nUaJteQ3GKT/mzSKkt/IGI/QC3tewKW8wQi/gfQ2b8gYj9ALe17ApbzBCL+B9DZvyBiP0Aqr/RFE1KHT3h/zE2WCYW7FIQvc1AGeDYW7FIgnd1wCcDYa5FYskdF8DcDYY5lYsktB9DcDZYJhbsUhCyfymObgo+M2CkMjKREBUa9UMB5uDi8wpZ6pgwF4ERLVWzXCwObjInHKmCgbsRUBUa9UMB5uDi8wpZ6pgwF4ERLVWzXCwObjInHKmCgbsRUBUa5V15xIGrVR+YWXymkVB57XKugVWMOFcNYmQlclrFgWd1yrrFljBhHPVJEJWJq9ZFHReq6xbYAUTzlWTCFmZvGZR0Hmtsm6BFUw4V00iZGXymkVB57Xau862/POiIAZy7lEVrYLWs4JWaFEQAzn3qIpWQetZQSu0KIiBnHtURaug9aygFVoUxEDOPaqiVdB6VtAKLQpiIOceVdEKDQf1WmBi1Zs1ClKtVtsymEgocNCqN2sUpFqttmUwkVDgoFVv1ihItVpty2AiocBBq96sUZBqtdqWwURCgYNWvVmjINVqZSIFsXqz5tDIKjhrFiGMtZr0EtC92fmyaO+2WbMIYazVpJeA7s3Ol0V7t82aRQhjrSa9BHRvdr4s2rtt1ixCGGs16SWge7PzZdHebbNmEcJYq9sCm3OYhMHZ3jV6AZHVfQ2tRSZ+MCCyuq+htcjEDwZEVvc1tBaZ+MGAyOq+htYiEz8YEFklrYPHMpEOmUUBe9dgVnMZcfSONc8a5t4sCti7BrOay4ijd6x51jD3ZlHA3jWY1VxGHL1jzbOGuTeLAvauwazmMuLoHWueNcy9WRSwdw1m1cNCCmIgBQMiZ3qfTdcwgYMJgxgsfy4gcqb32XQNEziYMIjB8ucCImd6n03XMIGDCYMYLH8uIHKm99l0DRM4mDCIwfLnAiJnep9N1wh6GQVvZxahWUMVxEhWEUdPKAO6O1qEZg1VECNZRRw9oQzo7mgRmjVUQYxkFXH0hDKgu6NFaNZQBTGSVcTRE8qA7o4WoVlDFcRIVoOBkUx+swhVg84GI7jowdmcw2jOEKQyhw46G4zgogdncw6jOUOQyhw66GwwgosenM05jOYMQSpz6KCzwQguenA25zCaMwSpzKGDzgYjuOjB2WxCCh7LNKPZoDP6KsbZRLivIXbKeXZW0NlEuK8hdsp5dlbQ2US4ryF2ynl2VtDZRLivIXbKeXZW0NlEOPQn9wN0TgbjLeZeovsaNinI3Et0X8MmBZl7ie5r2KQgcy/RfQ2bFGTuJTr0Nah75CCDzihv8Oxs0TYsA91Tb+8ccNvZ2aJtWAa6p97eOeC2s7NF27AMdE+9vXPAbWdni7ZhGeieenvngNvOzhZtwwpWg83BgEhByGCE+xpiAZGCkMEI9zXEAiIFIYMR7muIBUQKQgYj3NcQC4gUhAxGKP5/3MsQVC8+WnQKc88aOZvrGPXio0WnMPeskbO5jlEvPlp0CnPPGjmb6xj14qNFpzD3rJGzuY5RLz5adApzkNJEeqAUVr29X5BorSLKoEwGZNXb+wWJ1iqiDMpkQFa9vV+QaK0iyqBMBmTV2/sFidYqogzKZEBWvb1fkGitIq+r79Z9DVcf3ddw9dF9DVcf3ddw9dF/ECHdOpRnjawAAAAASUVORK5CYII="/&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-4253271277917184871?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/ol6JG7V74is" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-4253271277917184871</guid>
         <pubDate>Tue, 14 Feb 2012 23:14:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/02/jewels-master-new-game.html</feedburner:origLink></item>
      <item>
         <title>Magic Hearts - one year after :)</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/FoTbNLiG0m0/magic-hearts-one-year-after.html</link>
         <description>&lt;div style="text-align:justify;"&gt;It has been one (1!) year since I have released &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.magichearts"&gt;Magic Hearts&lt;/a&gt;. Probably I have some older games, but hey! today is &lt;a rel="nofollow" target="_blank" href="http://en.wikipedia.org/wiki/Valentine%27s_Day"&gt;Valentine's Day!&lt;/a&gt; I was supprised a little how positive feedback I got from you. Some game features are only there because of you. Thank you for playing this game and supporting me ;) &lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;If you wish to play it again game can be downloaded from the market &lt;a rel="nofollow"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Or just scan the QR image:&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAK8AAACvCAIAAAAE8BkiAAAJYUlEQVR4nO2YwW5kOQwD5/9/eva0aMBA5K4UJRsD8yqLLKrfJfnz9+npf/05DfB0kd7X8PTR+xqePnpfw9NH69fwZ0obrEO7tdWp3T6tuZdwIIy+3drq1G6f1txLOBBG325tdWq3T2vuJRwIo2+3tjq126c19xIOhNG3W1ud2u3TmhvsgBoGHxsMdTsB2eesci/hOIWBFITsc1a5l3CcwkAKQvY5q9xLOE5hIAUh+5xV7iUcpzCQgpB9zirXUPbdbiwIYSDI4OOx49zCcSoIYSDI4OOx49zCcSoIYSDI4OOx49zCcSoIYSDI4OOx49zCcSoIYSDI4OOx41zDkbMaYzYVkNVYo/c1DAXVuyi3r9H7GoaC6l2U29fofQ1DQfUuyu1r9L6GoaB6F+X2NbrlawgGmUan+l5Cdel1TJBpdKrvJVSXXscEmUan+l5Cdel1TJBpdKrvJVSXXscEmUan+l5C1fhv3b6GqH8QA1kFMZCzyr2FI6c+DGQVxEDOKvcWjpz6MJBVEAM5q9xbOHLqw0BWQQzkrHJv4cipDwNZBTGQs8qtX/cpeJ1/ftqnNfcWjjf9edqnNfcWjjf9edqnNfcWjjf9edqnNfcWjjf9edqnNffvHTIdgkHm8alGQV3DMXU75GwwxhoFdQ3H1O2Qs8EYaxTUNRxTt0POBmOsUVDXcEzdDjkbjLFGQalKLKntlAYySBXcNY9rjA1ksAOyMrlIY1TBXfO4xthABjsgK5OLNEYV3DWPa4wNZLADsjK5SGNUwV3zuMbYQAY7ICuTizRGFdw1j2uMDWSwsOJoyw06Gyu023f2Ta6B7qMM5gadjRXa7Tv7JtdA91EGc4POxgrt9p19k2ug+yiDuUFnY4V2+86+yTXQfZTB3KCzsUK7fWff5PZx9N3OXDaoUxVQLpuaYIRlKiEFrVDQWAWUy6YmGGGZSkhBKxQ0VgHlsqkJRlimElLQCgWNVUC5bGqCEZaphBS0QkFjFVAum9bWSOZ2xip4yqAzmiJIc5zN46+u8p1MQ2Nlpgijb4ogzXE2j7+6yncyDY2VmSKMvimCNMfZPP7qKt/JNDRWZoow+qYI0hxn8/irq3wn09BYmSnC6JsiSHOczeOvrtLPUe8aqqDQrU6drrbaPL6zknncJ3SrU6errTaP76xkHvcJ3erU6WqrzeM7K5nHfUK3OnW62mrz+M5K5nGf0K1Ona622jw2XsEpgxa5yNnI9EWPTcF1qpZzU1TY5CJnI9MXPTYF16lazk1RYZOLnI1MX/TYFFynajk3RYVNLnI2Mn3RY1Nwnarl3BQVNrnI2cj0RY9NwXVqrhPcDQbVj41qSFRwDJJNkbX5kRClCaofG9WQqOAYJJsia/MjIUoTVD82qiFRwTFINkXW5kdClCaofmxUQ6KCY5BsiqzNj4QoTVD92KiGRAXHINm00ZpM0bHQbv24ryASggxWWB8jyr4pgxbnMLtoioQggxXWx4iyb8qgxTnMLpoiIchghfUxouybMmhxDrOLpkgIMlhhfYwo+6YMWpzD7KIpEoIMVlgfB7FMYbRbP+7LDWL0BRm9r6FrF1UIBhm9r6FrF1UIBhm9r6FrF1UIBhm9r6FrF1UIBhk1/pmwCZ76VcaYa0hUAVEhbXJNYdPBPA4G9VkhGSqkTa4pbDqYx8GgPiskQ4W0yTWFTQfzOBjUZ4VkqJA2uaaw6WAeB4P6rJAMFdIm1yyjXWQVvF3wsjUVUl8Qcl6nZtlUCu6aabARUl8Qcl6nZtlUCu6aabARUl8Qcl6nZtlUCu6aabARUl8Qcl6nZtlUCu6aabARUl8Qcl6n6LWBVpRtVsjZUI01UlZBa3PoucIC0lCNNVJWQWtz6LnCAtJQjTVSVkFrc+i5wgLSUI01UlZBa3PoucIC0lCNNVJW9WtzWWOFKo1hIMhLmBkkgg42NJVMrsFAkJcwM0gEHWxoKplcg4EgL2FmkAg62NBUMrkGA0FewswgEXSwoalkcg0GgryEmUGq5VwHVMnkGqu+oOBxEMY6DVqPFTa5xqovKHgchLFOg9ZjhU2useoLCh4HYazToPVYYZNrrPqCgsdBGOs0aD1W2OQaq76g4HEQxjoNXid4DrOLnNGuweijShZEHUzDsV3kjHYNRh9VsiDqYBqO7SJntGsw+qiSBVEH03BsFzmjXYPRR5UsiDqYhmO7yBntGow+qmRB44WErMYwjDOyOhWE9L6G3zsjq1NBSO9r+L0zsjoVhPS+ht87I6tTQUjva/i9M7I6FYR0yz+MT02R+hoZmUYrlSlsGta7Y1OkvkZGptFKZQqbhvXu2BSpr5GRabRSmcKmYb07NkXqa2RkGq1UprBpWO+OTZH6GhmZRitV0MvoWP/S2VCZaZCZTRFHn8zdg7lBKjMNMrMp4uiTuXswN0hlpkFmNkUcfTJ3D+YGqcw0yMymiKNP5u7B3CCVmQaZ2dT0NzL9ays07XNGjcaCNs5oOai6g6pEpn3OqNFY0MYZLQdVd1CVyLTPGTUaC9o4o+Wg6g6qEpn2OaNGY0EbZ7QcVN1BVSLTPmfUaCxo42ySkIxzXQndrq9gkNk41483zmbZdDC75hx9BYPMxrl+vHE2y6aD2TXn6CsYZDbO9eONs1k2HcyuOUdfwSCzca4fb5zNsulgds05+goGmY1z/XjjjJZNQ4YljhVkDgphGCnIGtpUQs7mMbLqO2UQw0hB1tCmEnI2j5FV3ymDGEYKsoY2lZCzeYys+k4ZxDBSkDW0qYSczWNk1XfKIIaRgqyhTSXkbDDGII1zsK/J3QSNYSWhD0Ea52Bfk7sJGsNKQh+CNM7BviZ3EzSGlYQ+BGmcg31N7iZoDCsJfQjSOAf7mtxN0BiWca4bmv5ot48KOZtLbnbnkoRzfZ1axmqMCjmbS25255KEc32dWsZqjAo5m0tudueShHN9nVrGaowKOZtLbnbnkoRzfZ1axmqMCjmbS252UZIR6oCsjAxzsK9hNpCrVZ81cka55pQmqK+vYTaQq1WfNXJGueaUJqivr2E2kKtVnzVyRrnmlCaor69hNpCrVZ81cka55pQmqK+vYTaQq1WQ0lTqa4ic+xqhIFNB1UeUQfUVVudoa4SCTAVVH1EG1VdYnaOtEQoyFVR9RBlUX2F1jrZGKMhUUPURZVB9hdU52hqhIFNB1UdeT/+23tfw9NH7Gp4+el/D00fva3j66D9EEPH7Qw+BVgAAAABJRU5ErkJggg=="/&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;i&gt;  Ps. Generally I don't remember and don't want to celebrate such hmm..  "days", but my girlfriend keeps reminding me that, so that I couldn't  forget about it or ignore it.. :P&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-1423841217181975669?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/FoTbNLiG0m0" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-1423841217181975669</guid>
         <pubDate>Tue, 14 Feb 2012 00:16:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/02/magic-hearts-one-year-after.html</feedburner:origLink></item>
      <item>
         <title>My Personal Task (Life) Management</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/15q2FJajbDQ/</link>
         <description>Once upon a time there was a pure chaos in my life. Do whatever you want and whenever you have time. That was fun … for a while. When I was studying this worked fine, but&amp;#160; then I started working and suddenly everything changed. Time became very expensive. I realized that it’s time to try...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/02/09/my-personal-task-life-management/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2012/02/09/my-personal-task-life-management/</guid>
         <pubDate>Thu, 09 Feb 2012 20:54:32 +0000</pubDate>
         <content:encoded><![CDATA[<p>Once upon a time there was a pure chaos in my life. Do whatever you want and whenever you have time. That was fun … for a while. When I was studying this worked fine, but&nbsp; then I started working and suddenly everything changed. Time became very expensive. I realized that it’s time to try and manage this chaos by organizational changes. This would hopefully get me more valuable time or at least I would be able to use it wisely.</p>
<p>I started with <strong>GTD (Getting Things Done).</strong> Applied and tried it for about a year, but …. Well as usual I overcomplicated this simple solution with time estimations, time tracking. It started to feel like, I was spending most of the time maintaining <strong>GTD </strong>lists. It was getting more and more complicated. Something was wrong it shouldn’t supposed to work like that. My precious time was wasted on “management”.</p>
<p>Again I had to change my planning. <strong>GTD</strong> wasn’t for me. I stumbled upon one of the presentation in Krakow by <a rel="nofollow" target="_blank" href="http://blog.brodzinski.com/"><strong>Paweł Brodziński</strong></a> about <strong>Kanban. </strong>Presentation about project planning on cork board seemed cool and nice, I bought cork board some stickers and tried something new.</p>
<p>In this post, I will describe my current time/task management workflow which is at the moment working quite fine ( maybe because of the &#8220;new thing” hype <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-smilewithtongueout.png"> ).</p>
<h4>Long Term Planning</h4>
<p>First of all let’s start with something that everyone should do from time to time. <strong>Long Term Planning. </strong>Before doing anything else, I am thinking about what I m going to do this month, year and what kind of goals, I want to accomplish, in the long run. This is really important, because it lets me think about my life and where should I go next. </p>
<p>I divide stuff into <strong>four</strong> areas<strong>:</strong></p>
<ol>
<li>
<div><strong>Personal – </strong>friends, family, girlfriend etc.</div>
<li>
<div><strong>Physical – </strong>health, fitness, activities etc..</div>
<li>
<div><strong>Technical&nbsp; &#8211; </strong>programming, math, algorithms etc.</div>
<li>
<div><strong>Social</strong> – planning, speaking, teaching, managing etc..</div>
</li>
</ol>
<p>Of course I will change this list a bit in the course of the year. But those are always minor tweaks. Also those points will provide nice knowledge about myself in the future.</p>
<p>It is really important to have a game plan of your life <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-winkingsmile.png">. Life is very complicated and most of the time we can only adapt to the situations. Control can be easily lost. With long term plans, I feel more secure for such situations.</p>
<h4>Personal Kanban</h4>
<p>I mentioned <a rel="nofollow" target="_blank" href="http://blog.brodzinski.com/"><strong>Paweł Brodziński</strong></a>&nbsp; and <strong>Kanban </strong>with some try and errors, I managed to create my own workflow for tasks. Cork board and sticky notes are really awesome. </p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/02/image.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/02/image_thumb.png" width="523" height="331"></a></p>
<p>&nbsp;</p>
<p>This is my awesome board. I Divide it into <strong>four</strong> areas.</p>
<p>&nbsp;</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/02/image1.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/02/image_thumb1.png" width="521" height="336"></a></p>
<ol>
<li>
<div><strong>Waiting</strong> – tasks that are waiting to be done</div>
<li>
<div><strong>Doing</strong> – tasks that. I am currently working on</div>
<li>
<div><strong>Done</strong> – tasks that have been finished in the current week</div>
<li>
<div><strong>Week log</strong> – place for finished tasks from previous weeks, there are four stacks for each week, so I have log of what I did in this month</div>
</li>
</ol>
<p><strong></strong><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/02/image2.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/02/image_thumb2.png" width="245" height="304"></a></p>
<p>Between areas <strong>Doing</strong> and <strong>Done,</strong> I have two narrow openings that can contain only two tasks. Those are things that, I am working atm.</p>
<p>Sticky notes are in different <strong>color</strong> and of course this also has it’s purpose. Tasks are divided into six groups.</p>
<ul>
<li>
<div><strong>red</strong> – important</div>
<li>
<div><strong>green</strong> – learn</div>
<li>
<div><strong>blue</strong> – blog</div>
<li>
<div><strong>pink</strong> – events,speaker</div>
<li>
<div><strong>orange</strong>- projects</div>
<li>
<div><strong>yellow</strong> – personal</div>
</li>
</ul>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/02/image3.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/02/image_thumb3.png" width="189" height="244"></a></p>
<p>There are also tasks that have two colors like on this screen. That means that this task is in two groups and in this case, when I finish the project I will write a blog post about it <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-smilewithtongueout.png"></p>
<p>&nbsp;</p>
<h4>Cork Board vs Software</h4>
<p>At first I was a bit reluctant to use cork board and old fashioned sticky notes.</p>
<p>Now I only can only say that it is awesome <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-winkingsmile.png"></p>
<ul>
<li>
<div>Cork board is always visible. You don’t need to switch windows or buy new screen.</div>
<li>
<div>It has limited space. So I am not able to add hundreds of not important tasks <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-winkingsmile.png"></div>
<li>
<div>it forces you to do something physical, move your body. That’s quire engaging and brain loves it.</div>
</li>
</ul>
<p>There is only one problem with this. What to do with recursive tasks ? Tasks that are repeating all the time. For those tasks I m using an android app called Due Today. It is really awesome and handy. Maybe in the future, I will find way to incorporate this logic into board.A lot will change, and I will adapt some things but that’s the beauty of this. By try and error I m creating something that feels good at the moment and is quite motivating <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.mfranc.com/wp-content/uploads/2012/02/wlEmoticon-smile.png"> (because I feel the freshness in it)</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/15q2FJajbDQ" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2012/02/09/my-personal-task-life-management/</feedburner:origLink></item>
      <item>
         <title>Przepis: Pączki</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/JQM1mF6kERU/</link>
         <description>Zawsze w okresie około tłusto czwartkowych przychodzi człowiekowi ochota na faworka bądź na pączka. Jeżeli jeszcze się okaże, że znajduje się on w miejscu, gdzie o dobrego pączka naprawdę trudno, wyjściem okazuje się zrobienie ich samemu (pomijam tu kwestię czy własny pączek będzie lepszy od pączka sklepowego; akurat nie miałem żadnej alternatywy ) Moja wczorajsza [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/JQM1mF6kERU" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=170</guid>
         <pubDate>Thu, 09 Feb 2012 18:58:13 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/02/09/paczki/</feedburner:origLink></item>
      <item>
         <title>[RX 11] Reactive Extensions, więcej o zdarzeniach, czyli przykłady z myszką [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/cWG9pYbNAi0/rx-11-reactive-extensions-wiecej-o.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-219882577523980188</guid>
         <pubDate>Thu, 02 Feb 2012 21:54:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-sOi4mvZvV9w/Ttfvz1celcI/AAAAAAAAE8I/wZBSwA9FjSU/s72-c/maciej-progtech-reactive-extensions-rx-code-small.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/cWG9pYbNAi0" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/gxAvyJ9YLa8/rx-11-reactive-extensions-wiecej-o.html</feedburner:origLink></item>
      <item>
         <title>Zasadzka na wyjątka!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/DwGTWyPRXK8/</link>
         <description>Czasami zdarza sie, że aplikacja wraca z testów bo tester popsuł aplikację i gdzieś leci mu wyjątek. Czasami zdarza się, że sami popsujemy naszą aplikację i gdzieś nagle leci wyjątek. Czasami od razu wiemy, które miejsce "przecieka", kiedy indziej musimy chwilę poszukać. Niestety, również czasami zdarza się, że pomimo tego, że wiemy gdzie jest dziura, [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/DwGTWyPRXK8" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=164</guid>
         <pubDate>Fri, 27 Jan 2012 23:00:31 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/01/28/zasadzka-na-wyjatka/</feedburner:origLink></item>
      <item>
         <title>Wykrzaczajaca sie kontrolka w designerze.</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/HKWutMa_m5U/</link>
         <description>Przy okazji ostatniego spotkania Wroclawskiej Grupy .NET przypomnial mi się jeden myk, który swego czasu ułatwił mi znacząco życie. Czasami zdarza sie, ze projektując kontrolkę tudzież formularz wykorzystujący różne nasze kontrolki, ta z różnych tylko sobie znanych powodów się nam czasem wykrzacza gdy chcemy ją podejrzeć w designerze. W znalezieniu błędu może pomóc nam prosty [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/HKWutMa_m5U" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=152</guid>
         <pubDate>Fri, 27 Jan 2012 22:22:23 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/01/27/control-crash-designer/</feedburner:origLink></item>
      <item>
         <title>Replacing TinyMCE popup with FancyBox</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/JAKa_3JHcjY/</link>
         <description>While designing new layout for on of the features. Our designer had an idea to replace boring TinyMCE popups with awesome fancybox solution. Well easier said than done . From technical point of view it was quite a task. Before doing the changes we need : 1. fancybox script 2. inlinepopups plugin InlinePopups has to...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/01/27/replacing-tinymce-popup-with-fancybox/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2012/01/27/replacing-tinymce-popup-with-fancybox/</guid>
         <pubDate>Fri, 27 Jan 2012 17:29:35 +0000</pubDate>
         <content:encoded><![CDATA[<p>While designing new layout for on of the features. Our designer had an idea to replace boring <strong><a rel="nofollow" target="_blank" href="http://www.tinymce.com/">TinyMCE</a></strong> popups with awesome <strong><a rel="nofollow" target="_blank" href="http://fancybox.net/">fancybox</a></strong> solution. Well easier said than done <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.mfranc.com/wp-content/uploads/2012/01/wlEmoticon-smile1.png">. From technical point of view it was quite a task.</p>
<p>Before doing the changes we need :</p>
<p>1. <strong>fancybox </strong>script</p>
<p>2. <strong><a rel="nofollow" target="_blank" href="http://www.tinymce.com/wiki.php/Plugin:inlinepopups">inlinepopups</a></strong><strong></strong> plugin</p>
<p>InlinePopups has to be activated on editor init function. This plugin will force popups to show as a separate element on the page instead of new window, which is a default action</p>
<p>&nbsp;</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/01/image3.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/01/image_thumb3.png" width="556" height="165"></a></p>
<h3 align="center"><font style="font-weight:bold;">Changes to the inline popups editor_plugin.js</font></h3>
<p>&nbsp;</p>
<p>After this simple change default popup will be replaced with <strong>fancybox.</strong></p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/01/image4.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/01/image_thumb4.png" width="583" height="74"></a></p>
<h3 align="center"><font style="font-weight:bold;">TinyMCE Popup inside fancyBox</font></h3>
<p align="center">&nbsp;</p>
<p>There is one problem with this solution. Out of box if you have inline popups plugin you can run multiple popups ,like one popup for file browser and another for custom image browser. With changes inside inline popups that supports <strong>fancybox</strong> you are not able to open two popups because <strong>fancybox</strong> doesn’t support multiple instances running in the same time. One of the solutions would involve opening first fancy back after closing second fancy. </p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/JAKa_3JHcjY" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2012/01/27/replacing-tinymce-popup-with-fancybox/</feedburner:origLink></item>
      <item>
         <title>A new idea? – give it a try!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/tsrT58QY2Vs/</link>
         <description>Ostatnio znajomy podesłał mi link do ciekawego filmiku na serwisie TED. Idea filmiku? Poświećić 30 dni życia, na sprawdzenie pomysłów, rzeczy, ktorych zawsze chcieliśmy spróbować. 30 dni... niby tak niewiele, a podobno wystarczająco, aby przekonać samego siebie czy warto sie tym czymć zajmować, czy tez wywalić na amen. Muszę przyznać, że w pierwszej chwili podszedłem [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/tsrT58QY2Vs" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://www.niewolny.info/?p=145</guid>
         <pubDate>Wed, 25 Jan 2012 18:45:55 +0000</pubDate>
      <feedburner:origLink>http://www.niewolny.info/2012/01/25/give-it-a-try/</feedburner:origLink></item>
      <item>
         <title>[RX 10] Komponowanie strumieni w Reactive Extensions [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/-iuTXQ2kLvo/rx-10-komponowanie-strumieni-w-reactive.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-6061568504475552130</guid>
         <pubDate>Sun, 22 Jan 2012 20:36:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-08EB2ecqIZc/TxxbLiaew4I/AAAAAAAAFDA/O6s-iDb4JNY/s72-c/maciej-progtech-reactive-extensions-rx-zip-icon.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/-iuTXQ2kLvo" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/s1c7DIR-5S0/rx-10-komponowanie-strumieni-w-reactive.html</feedburner:origLink></item>
      <item>
         <title>DBViewEngine in Asp.Net Mvc</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/4CDzqZROFCM/</link>
         <description>I have been working on a simple side project. It is a idea of View Engine that uses Database in order to get Views. It is maybe not so useful scenario, but a good one to learn more about inner workings of Asp.Net MVC and also NoSql databases. There is a&amp;#160; big hype around NoSql....&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2012/01/22/dbviewengine-in-asp-net-mvc/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2012/01/22/dbviewengine-in-asp-net-mvc/</guid>
         <pubDate>Sun, 22 Jan 2012 15:36:30 +0000</pubDate>
         <content:encoded><![CDATA[<p>I have been working on a simple side project. It is a idea of View Engine that uses Database in order to get Views. It is maybe not so useful scenario, but a good one to learn more about inner workings of Asp.Net MVC and also <strong>NoSql</strong> databases. There is a&nbsp; big hype around <strong>NoSql</strong>. I will use <strong>RavenDB</strong> because this implementation is very close to .<strong>Net</strong> community. </p>
<p>First we will explore <strong>ViewEngines</strong> and <strong>HTML</strong> response generation,then we will move into the custom View Engine World. If you are interested dear reader then “Stay while and listen …” <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-openmouthedsmile" alt="Open-mouthed smile" src="http://www.mfranc.com/wp-content/uploads/2012/01/wlEmoticon-openmouthedsmile.png"></p>
<h2>ViewEngine</h2>
<p><strong>ViewEngine</strong> is responsible for <strong>HTML</strong> generation that is sent back to the client. Programmers with <strong>Asp.Net</strong> background should be familiar with <strong>WebForms</strong> Engine that uses <strong>&lt;% %&gt; syntax</strong> and <strong>WebControls</strong> . There are other <strong>ViewEngines</strong> like <strong>RazorEngine</strong>, which is quite popular right now, but we won’t discuss this here as it is not important for this post.</p>
<p>&nbsp;</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/01/image.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/01/image_thumb.png" width="574" height="240"></a></p>
<h3 align="center"><font style="font-weight:bold;">Pic 1. Simplified Request/Response cycle</font></h3>
<p>&nbsp;</p>
<p>Every&nbsp; <strong>ViewEngine</strong> implements <strong>IViewEngine</strong> interface</p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">interface</span> IViewEngine
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">  {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">    ViewEngineResult FindPartialView(ControllerContext controllerContext, <span style="color:#0000ff;">string</span> partialViewName, <span style="color:#0000ff;">bool</span> useCache);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;"></pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">    ViewEngineResult FindView(ControllerContext controllerContext, <span style="color:#0000ff;">string</span> viewName, <span style="color:#0000ff;">string</span> masterName, <span style="color:#0000ff;">bool</span> useCache);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;"></pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">    <span style="color:#0000ff;">void</span> ReleaseView(ControllerContext controllerContext, IView view);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:10px;">  }</pre>
</pre>
<p>This interface contains method responsible for <strong>ViewEngineResult</strong> generation, </p>
<p><strong>ViewEngineResult </strong>class is a simple data container<strong>&nbsp;</strong>holding information about <strong>ViewEngine</strong> we are using and instance of <strong>View</strong> class.</p>
<p><strong>View </strong>class is an implementation <strong>IView</strong> interface which is very simple and contains only one method.</p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">interface</span> IView
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">  {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    <span style="color:#0000ff;">void</span> Render(ViewContext viewContext, TextWriter writer);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">  }</pre>
</pre>
<p>This is a very simple interface&nbsp; that contains <strong>Render</strong> method which has access to <strong>TextWriter</strong> that should be used to write data that will be displayed in a response sent back to client. This is almost like <strong>Render </strong>method inside <strong>WebControls.</strong></p>
<p><strong>Ok lets go back to </strong>ViewEngine.<strong> </strong>Unfortunately, or to be honest that is a very good decision,<strong> WebFormViewEngine </strong>is not directly implementing <strong>IViewEngine. </strong></p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">  <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> WebFormViewEngine : VirtualPathProviderViewEngine</pre>
</pre>
<p>There is another layer in form of <strong>VirtualPathProviderViewEngine. </strong>This class is implementing <strong>IViewEngine </strong>and is responsible for adding “physical path” support, if you want to use files stored on your server’s file system you should create custom <strong>ViewEngine</strong> that extends this class.</p>
<h4>Summarising:</h4>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/01/image1.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/01/image_thumb1.png" width="466" height="252"></a></p>
<h3 align="center"><font style="font-weight:bold;">Pic 2. Simplified WebFormsViewEngine Request/Response</font></h3>
<h2>&nbsp;</h2>
<h2>Simple Custom ViewEngine</h2>
<p>Ok so we <strong>“hopefully” </strong>know how the whole <strong>ViewEngine</strong> stuff works, so lets do our own one. <strong>Yey &#92;o/</strong></p>
<p>Our first <strong>ViewEngine</strong> will be very simple and we will call it <strong>HelloWorldViewEngine</strong>. </p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> HelloWorldViewEngine : IViewEngine
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> ViewEngineResult FindPartialView(ControllerContext controllerContext,
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">             <span style="color:#0000ff;">string</span> partialViewName, <span style="color:#0000ff;">bool</span> useCache)
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        {
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> ViewEngineResult(<span style="color:#0000ff;">new</span> HelloWorldView(), <span style="color:#0000ff;">this</span>);
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;"></pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> ViewEngineResult FindView(ControllerContext controllerContext,
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">              <span style="color:#0000ff;">string</span> viewName, <span style="color:#0000ff;">string</span> masterName, <span style="color:#0000ff;">bool</span> useCache)
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        {
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> ViewEngineResult(<span style="color:#0000ff;">new</span> HelloWorldView(), <span style="color:#0000ff;">this</span>);
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;"></pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> ReleaseView(ControllerContext controllerContext, IView view)
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            IDisposable disposable = view <span style="color:#0000ff;">as</span> IDisposable;
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            <span style="color:#0000ff;">if</span> (disposable == <span style="color:#0000ff;">null</span>)
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">                <span style="color:#0000ff;">return</span>;
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            disposable.Dispose();
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    }</pre>
</pre>
<p><strong>ReleaseView </strong>method is a copy/paste code from Microsoft Code. As you can see this method should be used to dispose <strong>View</strong> instance. </p>
<p><strong>FindPartialView</strong> and <strong>FindView</strong> methods are only returning <strong>DummyViewEngineResult</strong>. Unfortunately we had to create our own implementation of <strong>IView </strong>interface called <strong>HelloWorldView</strong> because <strong>WebFormView </strong>uses physical files and I couldn’t get it&nbsp; to render something.</p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> HelloWorldView : IView
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">void</span> Render(ViewContext viewContext, TextWriter writer)
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            writer.WriteLine("<span style="color:#8b0000;">Hello World</span>");
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        }
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    }</pre>
</pre>
<p>This View is very simple and prints out only <strong>“Hello World”</strong> message. Cool<img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smilewithtongueout" alt="Smile with tongue out" src="http://www.mfranc.com/wp-content/uploads/2012/01/wlEmoticon-smilewithtongueout.png"></p>
<p>In order to use this <strong>“awesome” ViewEngine</strong> we have to register it inside<strong> Global.asax</strong> file.</p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">protected</span> <span style="color:#0000ff;">void</span> Application_Start()
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            AreaRegistration.RegisterAllAreas();
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            ViewEngines.Engines.Clear();
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            ViewEngines.Engines.Add(<span style="color:#0000ff;">new</span> HelloWorldViewEngine());
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">            RegisterRoutes(RouteTable.Routes);
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        }</pre>
</pre>
<p>First we are clearing all the Engines that are currently used and then we are adding our own custom one.</p>
<p>Hopefully on the start you will see beautiful <strong>“Hello World”</strong> message <img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://www.mfranc.com/wp-content/uploads/2012/01/wlEmoticon-smile.png">.</p>
<p>&nbsp;</p>
<h2>DBViewEngine </h2>
<p>I&nbsp; will make Database based on RavenDB just 4fun and in order to use it for the first time.</p>
<h4>RavenDB ?</h4>
<blockquote>
<p><a rel="nofollow" target="_blank" href="http://ravendb.net/documentation/docs-what-is-raven">Raven is a .NET Linq enabled Document Database, focused on providing high performance, schema-less, flexible and scalable NoSQL data store for the .NET and Windows platforms.</a></p>
</blockquote>
<p>In short <strong>NoSql</strong> :</p>
<h5>Pros</h5>
<ul>
<li>Good when your app is used for many Reads
<li>Scalability benefits&nbsp;
<li>No strict schema 
<li>Less problems with data mappings</li>
</ul>
<h5>Cons</h5>
<ul>
<li>Bad when your app is used for many Writes</li>
</ul>
<p>I won’t get into details about <strong>RavenDB </strong>so lets start implementing our first version of <strong>DBViewEngine.</strong></p>
<h4>RavenDB DAL</h4>
<p>In order to retrieve data we will make a simple <strong>DAL.</strong></p>
<h3></h3>
<h5>Page Entity</h5>
<p>For this simple scenario we are persisting objects only with <strong>ViewName</strong> and <strong>HTML </strong>data.</p>
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">class</span> Page
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> Html { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">        <span style="color:#0000ff;">public</span> <span style="color:#0000ff;">string</span> ViewName { <span style="color:#0000ff;">get</span>; <span style="color:#0000ff;">set</span>; }
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:14px;">    }</pre>
</pre>
<p>Html is an actual data that will be rendered by browser.</p>
<h5>GetPageByViewName</h5>
<pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">       <span style="color:#0000ff;">public</span> Page GetPageByViewName(<span style="color:#0000ff;">string</span> viewName)
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">        {
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">            <span style="color:#0000ff;">using</span> (var session = _store.OpenSession())
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">            {
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">                <span style="color:#0000ff;">return</span> session.Query&lt;Page&gt;().Where(x =&gt; x.ViewName == viewName).FirstOrDefault();
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">            }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">        }</pre>
</pre>
<p>A simple function to get page by viewname this one will be used by the engine to get the data about the page.</p>
<p>&nbsp;</p>
<p><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2012/01/image2.png"><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="image" border="0" alt="image" src="http://www.mfranc.com/wp-content/uploads/2012/01/image_thumb2.png" width="244" height="126"></a></p>
<p>In DB we gonna store two pages <strong>About </strong>and <strong>Home. </strong>They will only display simple message like “Welcome to the about page”.</p>
<h5>ViewEngine</h5>
<p>So now the best part. How to link <strong>ViewEngine</strong> with <strong>DB.</strong></p>
<p>IViewEngine interface has a definition of <strong>FindView</strong> method. This method has all the data we want right now including <strong>ViewName</strong> parameter. So let’s implement this method.</p>
<pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">        <span style="color:#0000ff;">public</span> ViewEngineResult FindView(ControllerContext controllerContext,
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">                <span style="color:#0000ff;">string</span> viewName, <span style="color:#0000ff;">string</span> masterName, <span style="color:#0000ff;">bool</span> useCache)
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">        {
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">            var page = <span style="color:#0000ff;">new</span> PageDal().GetPageByViewName(viewName);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">            <span style="color:#0000ff;">return</span> <span style="color:#0000ff;">new</span> ViewEngineResult(<span style="color:#0000ff;">new</span> DBView(page), <span style="color:#0000ff;">this</span>);
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">        }</pre>
</pre>
<p>Little test:</p>
<p><strong>Url</strong> &#8211; <strong>/Home/About </strong></p>
<p>And yuppi we have a message indicating that this is a correct site.</p>
<p><a rel="nofollow" target="_blank" href="https://github.com/LaMik/DBViewEngine">Source Code</a> </p>
<h2>Conclusion</h2>
<p>Asp.Net MVC architecture is quite easy to modyfi and extend. In this post we analysed how we can implement our different <strong>ViewEngine</strong> which is using <strong>RavenDB</strong> as a source<strong> </strong>of the files,</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/4CDzqZROFCM" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2012/01/22/dbviewengine-in-asp-net-mvc/</feedburner:origLink></item>
      <item>
         <title>SharePoint 2010 – w oczekiwaniu na Visual Studio 2011 cz. 2</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/KR0H8ZmR1lI/</link>
         <description>&amp;#160; Po zapoznaniu ze zmianami jakie na nas czekają przy budowie Content Type’ów przy pomocy Visual Studio 2011 zobaczmy jakich zmian możemy się spodziewać jeśli chodzi o tworzenie list. Zacznijmy zatem od dodania nowego elementu do projektu: Pierwszą zmianę widzimy już na tym etapie, a mianowicie nie dostajemy już wyboru, czy chcemy utworzyć List Definition [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&amp;#038;blog=15097618&amp;#038;post=263&amp;#038;subd=michalurbanski&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">https://michalurbanski.wordpress.com/?p=263</guid>
         <pubDate>Sat, 21 Jan 2012 14:39:01 +0000</pubDate>
         <content:encoded><![CDATA[<p>&#160;</p>
<p>Po zapoznaniu ze zmianami jakie na nas czekają przy budowie Content Type’ów przy pomocy <strong>Visual Studio 2011</strong> zobaczmy jakich zmian możemy się spodziewać jeśli chodzi o<strong> tworzenie list</strong>. Zacznijmy zatem od dodania nowego elementu do projektu:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 new list" border="0" alt="vs2011 new list" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list_thumb.png?w=433&h=267" width="433" height="267"/></a></p>
<p>Pierwszą zmianę widzimy już na tym etapie, a mianowicie nie dostajemy już wyboru, czy chcemy utworzyć List Definition czy List Instance. Miejsce tych dwóch elementów zastąpił jeden nowy<strong> o nazwie “List”.</strong> Po dodaniu tego elementu widzimy w Solution Explorerze, że w projekcie utworzona została struktura taka, jak byśmy dokonali w starym stylu dodania List Definition wraz z instancją listy: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-solution-explorer.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 solution explorer" border="0" alt="vs2011 solution explorer" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-solution-explorer_thumb.png?w=178&h=278" width="178" height="278"/></a></p>
<p>Po dodaniu nowej listy przechodzimy do nowego designera, który ma za zadanie pomóc nam przy tworzeniu list:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list-added.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 new list added" border="0" alt="vs2011 new list added" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list-added_thumb.png?w=374&h=249" width="374" height="249"/></a></p>
<p>Do dyspozycji otrzymujemy trzy zakładki:<strong> List, Views oraz CommonProperties</strong>. Ostatnia zakładka odpowiedzialna jest za ustawienie właściwości listy takich jak Nazwa listy, jej opis oraz url pod jakim lista znajdzie się na serwerze. Możemy również zdecydować, czy chcemy umieścić listę na Quick Launch’u oraz czy lista ma być ukryta czy też nie. </p>
<p>W pierwszej zakładce, której widok został przedstawiony na powyższym obrazku, mamy możliwość dodania istniejących kolumn, zarówno tych zainstalowanych na serwerze, jak i dopiero co utworzonych w projekcie VS. Mamy również możliwość dodania Content Type’a do listy:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-custom-content-type.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 custom content type" border="0" alt="vs2011 custom content type" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-custom-content-type_thumb.png?w=432&h=236" width="432" height="236"/></a></p>
<p>Do listy o nazwie PersonsList dodany został utworzony w poprzednim wpisie na blogu Content Type o nazwie ContentType1. Po tej czynności widok kolumn listy został uzupełniony o te, które zawarte zostały w dodanym Content Type’ie – w tym przypadku jedna kolumna o nazwie Person Name. </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 after adding content type" border="0" alt="vs2011 after adding content type" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type_thumb.png?w=375&h=282" width="375" height="282"/></a></p>
<p>Przechodząc do dobrze znanego nam pliku <strong>schema.xml</strong> widzimy, że zmiany zostały poprawnie odwzorowane w tym pliku, co zwalnia nas, przynajmniej w standardowych przypadkach, z konieczności ręcznej edycji wspomnianego pliku: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type-xml.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 after adding content type xml" border="0" alt="vs2011 after adding content type xml" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type-xml_thumb.png?w=474&h=227" width="474" height="227"/></a></p>
<p>W kolejnej zakładce designera dla list możemy zdefiniować nowe widoku dla listy lub zmodyfikować istniejące:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 list views" border="0" alt="vs2011 list views" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views_thumb.png?w=446&h=300" width="446" height="300"/></a></p>
<p>Również w tym przypadku zmiany poprawnie odwzorowywane są w pliku schema.xml:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views-xml.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 list views xml" border="0" alt="vs2011 list views xml" src="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views-xml_thumb.png?w=509&h=173" width="509" height="173"/></a></p>
<br />  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michalurbanski.wordpress.com/263/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/michalurbanski.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michalurbanski.wordpress.com/263/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&#038;blog=15097618&#038;post=263&#038;subd=michalurbanski&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/KR0H8ZmR1lI" height="1" width="1"/>]]></content:encoded>
         <media:content medium="image" url="http://1.gravatar.com/avatar/9a702a5222b92da35aa386469845b917?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">michalurbanski</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list_thumb.png">
            <media:title type="html">vs2011 new list</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-solution-explorer_thumb.png">
            <media:title type="html">vs2011 solution explorer</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-new-list-added_thumb.png">
            <media:title type="html">vs2011 new list added</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-custom-content-type_thumb.png">
            <media:title type="html">vs2011 custom content type</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type_thumb.png">
            <media:title type="html">vs2011 after adding content type</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-after-adding-content-type-xml_thumb.png">
            <media:title type="html">vs2011 after adding content type xml</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views_thumb.png">
            <media:title type="html">vs2011 list views</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2012/01/vs2011-list-views-xml_thumb.png">
            <media:title type="html">vs2011 list views xml</media:title>
         </media:content>
         <category>SharePoint</category>
      <feedburner:origLink>http://michalurbanski.wordpress.com/2012/01/21/sharepoint-2010-w-oczekiwaniu-na-visual-studio-2011-cz-2/</feedburner:origLink></item>
      <item>
         <title>WPF: o zasobach (resources) coś więcej [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/4rPcqvb3t8E/wpf-o-zasobach-resources-cos-wiecej-pl.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-2737378036048933271</guid>
         <pubDate>Wed, 18 Jan 2012 00:10:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-D9H-KjZpYMs/TfJzpzCdwGI/AAAAAAAAEKA/TEPQ-orIMGc/s72-c/WPF.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/4rPcqvb3t8E" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/RPCjOufoQd4/wpf-o-zasobach-resources-cos-wiecej-pl.html</feedburner:origLink></item>
      <item>
         <title>WPF: Lepiej umieścić obrazek w resources niż bawić się ścieżkami. [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/kxX1x0qZZzE/wpf-lepiej-umiescic-obrazek-w-resources.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-9094435031431731006</guid>
         <pubDate>Wed, 11 Jan 2012 22:30:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-UuahhoUl-g8/TZtsZRWOtcI/AAAAAAAAECc/6VO0opTLQoo/s72-c/drobiazgi-czyli-male-a-cieszy.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/kxX1x0qZZzE" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/YlYuJ0f3Z0Q/wpf-lepiej-umiescic-obrazek-w-resources.html</feedburner:origLink></item>
      <item>
         <title>"Programowanie i Technologie" blogiem roku 2011? [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/19ZNh6wGGvA/programowanie-i-technologie-blogiem.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-3354036517240648479</guid>
         <pubDate>Mon, 09 Jan 2012 19:51:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://3.bp.blogspot.com/-616UlgDkol4/Tws12pKjrqI/AAAAAAAAFCE/JCsVjRFNw28/s72-c/macie-progtech-blog-roku-2011.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/19ZNh6wGGvA" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/DtzJ28LUuSU/programowanie-i-technologie-blogiem.html</feedburner:origLink></item>
      <item>
         <title>Balls Breaker - update</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/kLgJXbAnGUk/balls-breaker-update.html</link>
         <description>I have just updated Balls Breaker. New update should fix random crashes (mentioned in previous post). I hope there won't be new ones. Thank you all for your patience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-1769688076166924530?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/kLgJXbAnGUk" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-1769688076166924530</guid>
         <pubDate>Sun, 08 Jan 2012 23:12:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/01/balls-breaker-update.html</feedburner:origLink></item>
      <item>
         <title>Balls Breaker crashes :/</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/G-L1EjjEWhE/balls-breaker-crashes.html</link>
         <description>I have just noticed that Balls Breaker is crashing for some of you. I'm working on this and it should be fixed in the next update (today or tomorrow). I'm really sorry for that. Please, be patient.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-3375578345073674322?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/G-L1EjjEWhE" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-3375578345073674322</guid>
         <pubDate>Sun, 08 Jan 2012 14:38:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2012/01/balls-breaker-crashes.html</feedburner:origLink></item>
      <item>
         <title>Dostęp do danych procesowych [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/J-glz1tCs1M/dostep-do-danych-procesowych-pl.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-7968958677873471502</guid>
         <pubDate>Sat, 07 Jan 2012 23:58:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-JRbGuDTsxdo/TwjNCW7CF0I/AAAAAAAAFB8/cW2BIYEPmOQ/s72-c/maciej-progtech-dostep-do-danych-procesowych.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/J-glz1tCs1M" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/lpY75pExjEA/dostep-do-danych-procesowych-pl.html</feedburner:origLink></item>
      <item>
         <title>[RX 9] Operacje LINQ na obserwowalnych kolekcjach w Reactive Extension [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/A0vQtr4GJF4/rx-9-operacje-linq-na-obserwowalnych.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-2551971869791817925</guid>
         <pubDate>Thu, 05 Jan 2012 12:19:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-jKLI_uQv3Ic/TwWGJ6HgwmI/AAAAAAAAFBs/T3CVnRxTVyY/s72-c/maciej-progtech-reactive-extensions-rx-linq-to-rx-icon.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/A0vQtr4GJF4" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/VUZBoOYo1u4/rx-9-operacje-linq-na-obserwowalnych.html</feedburner:origLink></item>
      <item>
         <title>[RX 8] Zdarzenia w .NET niby pożyteczne, łatwe, ale … obserwowanie w Reactive Extensions jest lepsze [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/F1tiAhnTOF8/rx-8-zdarzenia-w-net-niby-pozyteczne.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-5838437880953874624</guid>
         <pubDate>Tue, 03 Jan 2012 13:54:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-XWF9oYtWKzM/TwL348Ce62I/AAAAAAAAFBY/NVPNbbHT5GU/s72-c/maciej-progtech-reactive-extensions-rx-events-vs-observable_icon.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/F1tiAhnTOF8" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/NxiqyZKPPR8/rx-8-zdarzenia-w-net-niby-pozyteczne.html</feedburner:origLink></item>
      <item>
         <title>ADO.NET Entity Framework - ArgumentException</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/LXpk6drmlWo/26</link>
         <description>Podczas pracy z ADO.NET EF kilka razy zdarzyło mi się napotkać taki exception:&lt;br /&gt;&lt;br /&gt;The provided list of key-value pairs contains an incorrect number of entries. There are [...] key fields defined on type [...], but [...] were provided.&lt;br /&gt;Parameter name: key&lt;br /&gt;&lt;br /&gt;Problemem w tym wypadku jest baza danych, a konkretnie tabela, z kt&amp;#243;rej encja powoduje exception. Rozwiązaniem tego problemu jest upewnienie się, że ustawiliśmy &amp;quot;Primary Key&amp;quot; w tabeli w bazie danych. W przeciwnym wypadku, entity framework wszystkie kolumny traktuje jako klucz. Niby prosta i oczywista sprawa, ale jeśli tworzymy kilka tabel w bazie przy pomocy designera wizualnego w management studio można czasem niechcący o tym zapomnieć (przynajmniej mi się zdarzyło kilka razy).&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/LXpk6drmlWo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Tue, 03 Jan 2012 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/26</feedburner:origLink></item>
      <item>
         <title>[RX 7] Zabawa w „ciepło – zimno”, czyli zimne i ciepłe źródła w Reactive Extension [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/xFpM-x8g-JQ/rx-7-zabawa-w-ciepo-zimno-czyli-zimne-i.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-841678654007500727</guid>
         <pubDate>Mon, 02 Jan 2012 08:00:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-6kndKJX0qPo/TwDWkS3pAZI/AAAAAAAAFA4/yC58lo6tCSk/s72-c/maciej-progtech-reactive-extensions-rx-cold-hot.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/xFpM-x8g-JQ" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/L8ULk0Sdz7o/rx-7-zabawa-w-ciepo-zimno-czyli-zimne-i.html</feedburner:origLink></item>
      <item>
         <title>Rok 2011 – podsumowanie [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/eqD0Rmm-2LA/rok-2011-podsumowanie-pl.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-1912856491859533289</guid>
         <pubDate>Sat, 31 Dec 2011 14:22:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://4.bp.blogspot.com/-rOUPiTnHF5Y/Tv8LcABaOaI/AAAAAAAAFAs/6HtL40HWzx4/s72-c/2011-stats.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/eqD0Rmm-2LA" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/AwAF7h6GNHg/rok-2011-podsumowanie-pl.html</feedburner:origLink></item>
      <item>
         <title>[RX 6] Przykłady dot. obserwowalnych kolekcji w Reactive Extensions [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/0wWcPS5CANY/rx-6-przykady-dot-obserwowalnych.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-1850914142874110380</guid>
         <pubDate>Fri, 30 Dec 2011 12:18:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-sOi4mvZvV9w/Ttfvz1celcI/AAAAAAAAE8I/wZBSwA9FjSU/s72-c/maciej-progtech-reactive-extensions-rx-code-small.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/0wWcPS5CANY" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/r-vGT9QdwHU/rx-6-przykady-dot-obserwowalnych.html</feedburner:origLink></item>
      <item>
         <title>[RX 5] Tworzymy obserwowalne kolekcje w Reactive Extensions [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/AyZTFLqw6gc/rx-5-tworzymy-obserwowalne-kolekcje-w.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-2825281901112062473</guid>
         <pubDate>Wed, 28 Dec 2011 19:28:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://1.bp.blogspot.com/-dwbA3rs8914/TvtWumQMJiI/AAAAAAAAE9I/QWrwhfJIEzE/s72-c/maciej-progtech-reactive-extensions-rx-create.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/AyZTFLqw6gc" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/Y-a8cTME3Iw/rx-5-tworzymy-obserwowalne-kolekcje-w.html</feedburner:origLink></item>
      <item>
         <title>SharePoint 2010 – w oczekiwaniu na Visual Studio 2011 cz. 1</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/z4QTiTywEB4/</link>
         <description>&amp;#160; W pierwszej odsłonie swoich zmagań z SharePoint’em chciałbym przedstawić pokrótce zmiany, jakie czekają na programistów SharePoint w nowej wersji Visual Studio (na dzień dzisiejszy jest to Microsoft Visual Studio 11 Version 11.0.40825.2 PREREL). Omawiane przeze mnie zmiany dotyczyć będą udogodnień wprowadzonych przy tworzeniu Content Type’ow oraz list. Już na pierwszy rzut oka widać tutaj [...]&lt;img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&amp;#038;blog=15097618&amp;#038;post=244&amp;#038;subd=michalurbanski&amp;#038;ref=&amp;#038;feed=1" width="1" height="1"/&gt;</description>
         <guid isPermaLink="false">https://michalurbanski.wordpress.com/?p=244</guid>
         <pubDate>Sun, 25 Dec 2011 16:20:37 +0000</pubDate>
         <content:encoded><![CDATA[<p>&#160;</p>
<p>W pierwszej odsłonie swoich zmagań z SharePoint’em chciałbym przedstawić pokrótce zmiany, jakie czekają na programistów SharePoint w nowej wersji Visual Studio (na dzień dzisiejszy jest to Microsoft Visual Studio 11 Version 11.0.40825.2 PREREL). Omawiane przeze mnie zmiany dotyczyć będą udogodnień wprowadzonych przy tworzeniu Content Type’ow oraz list. Już na pierwszy rzut oka widać tutaj zmiany na które z pewnością wielu programistów od dłuższego czasu czekało, bowiem nowa wersja VS oferuje nam designera, który ma na celu ułatwienie definiowania wcześniej wymienionych elementów. Z koncepcją designera dla Feature’ów i paczek dane było nam już się zaznajomić wraz z wersja VS2010, szkoda, że w owym czasie nie został wprowadzony również designer dla Content Type’ów a także wspomnianych już przeze mnie list. </p>
<p>Zobaczmy zatem najpierw jakie możliwości daje nam Visual Studio 2010, zaczynając od utworzenia projektu: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-sharepoint-element.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2010 new sharepoint element" border="0" alt="vs2010 new sharepoint element" src="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-sharepoint-element_thumb.png?w=436&h=294" width="436" height="294"/></a></p>
<p>Po wybraniu opcji “New Project” możemy utworzyć poza pustym projektem również szereg elementów składowych jak np. Content Type, czy List Definition bez konieczności umieszczania ich w projekcie SharePoint’owym. Wybierzmy jednak pusty projekt (podświetlona na szaro opcja na powyższym obrazku). Po jego utworzeniu, chcąc przystąpić do budowy Content Type’a dodajemy do projektu nowy element wybierając opcję Content Type: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2010 new content type" border="0" alt="vs2010 new content type" src="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type_thumb.png?w=431&h=266" width="431" height="266"/></a></p>
<p>Jak można łatwo sprawdzić VS zajęło się dodanie nowego Content Type’a do istniejącego w projekcie Feature’a (o odpowiednim scope – web).&#160; Jako tym bazowy został wybrany Item – po dwukrotnym kliknięciu w projekcie na nasz Content Type edytor przenosi nas do edycji pliku Elements.xml:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type-xml.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2010 new content type xml" border="0" alt="vs2010 new content type xml" src="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type-xml_thumb.png?w=461&h=206" width="461" height="206"/></a></p>
<p>Przystępując do budowy Content Type’a musimy zdefiniować nową Site Column wypełniając odpowiednie pola oraz generując nowy GUID dla tej kolumny. Następnie należy dodać referencję do zdefiniowanej Site Column. Nie jest to zbytnio skomplikowana czynność, w momencie gdy mamy jednak wiele kolumn czynność ta potrafi zabrać trochę czasu, a jakakolwiek pomyłka przy przeklejaniu kodu uniemożliwi poprawne zainstalowanie Content Type’a: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2010-site-column.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2010 site column" border="0" alt="vs2010 site column" src="http://michalurbanski.files.wordpress.com/2011/12/vs2010-site-column_thumb.png?w=444&h=206" width="444" height="206"/></a></p>
<p>Zobaczmy teraz jak proces ten może usprawnić nowe VS. Zacznijmy ponownie od utworzenia nowego projektu. Już na tym etapie da się zauważyć zmiany, bowiem w nowej wersji liczba elementów które możemy utworzyć bez tworzenia najpierw pustego projektu jest bardzo ograniczona (widzimy jedynie możliwość utworzenia dwóch rodzajów Web Part’ów): </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-sharepoint-element.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 new sharepoint element" border="0" alt="vs2011 new sharepoint element" src="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-sharepoint-element_thumb.png?w=494&h=276" width="494" height="276"/></a></p>
<p>Z kolejnych elementów możemy skorzystać standardowo dodając nowy element do projektu. Tutaj warto zwrócić uwagę na pojawienie się nowego elementu jakim jest Site Column, od której to zaczniemy tworzenie Content Type’a:</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2011-site-column.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 site column" border="0" alt="vs2011 site column" src="http://michalurbanski.files.wordpress.com/2011/12/vs2011-site-column_thumb.png?w=386&h=235" width="386" height="235"/></a></p>
<p>Po dodaniu Site Column o nazwie PersonName otwierany jest automatycznie plik Elements.xml, warto jednak zauważyć, że wiele z pól zostało już wypełnionych przez Visual Studio. </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-site-column-filled.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 new site column filled" border="0" alt="vs2011 new site column filled" src="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-site-column-filled_thumb.png?w=426&h=190" width="426" height="190"/></a></p>
<p>Widzimy na powyższym obrazie m.in., że domyślnie założony został typ tekstowy, wygenerowany został GUID, a także słowa składowe nazwy zostały odpowiednio rozdzielone i wpisane do DisplayName. W dalszym ciągu definicja taka wymaga dalszej customizacji, jak np. zmiana typu itp. ale widać już postęp w porównaniu do poprzedniej wersji VS.</p>
<p>Przystąpmy dalej do budowy Content Type’a – po dodaniu tego elementu do projektu otwierany jest … no właśnie, w tym przypadku nie xml, ale nowy designer (warto zwrócić uwagę na to, że na etapie tworzenia domyślnie jako typ bazowy wybrany jest Item, dzięki czemu nie musimy za każdym razem przestawiać drop downa z domyślnego typu dla VS 2010 jakim było Announcements):</p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:block;float:none;margin-left:auto;border-top:0;margin-right:auto;border-right:0;padding-top:0;" title="vs2011 new content type" border="0" alt="vs2011 new content type" src="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type_thumb.png?w=394&h=296" width="394" height="296"/></a></p>
<p>W kolumnie DisplayName możemy wyszukiwać spośród dostępnych na serwerze Site Columns oraz jak widać także wśród tych stworzonych przez nas w projekcie. Po odnalezieniu odpowiedniej kolumny automatycznie wypełniany na podstawie definicji są kolumny Type oraz Required. Dzięki tej funkcjonalności, jeśli już posiadamy odpowiednie kolumny, to budowa Content Type’a&#160; sprowadza się do ich wyklikania w designerze. Nic nie stoi na przeszkodzie, żebyśmy sprawdzili kod jaki wygenerował designer przechodząc do pliku Elements.xml – nie ma tutaj jednak większego zaskoczenia – zbudowany został on tak jakbyśmy sami wprowadzili odpowiedni kod: </p>
<p><a rel="nofollow" target="_blank" href="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type-filled.png"><img style="background-image:none;border-bottom:0;border-left:0;padding-left:0;padding-right:0;display:inline;border-top:0;border-right:0;padding-top:0;" title="vs2011 new content type filled" border="0" alt="vs2011 new content type filled" src="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type-filled_thumb.png?w=600&h=113" width="600" height="113"/></a></p>
<p>Widać więc, że nowe Visual Studio stara się ułatwić nieco życie programistom SP i chociaż częściowo odciągnąć od konieczności ręcznej edycji plików xml. Nie jest to zapewne milowy krok (nadal brakuje np. wyboru typu dla Site Column) ale zmiana ta powinna zostać doceniona jako krok w dobrym kierunku. W kolejnej odsłonie przekonamy się jakie zmiany czekają na nas w związku z tworzeniem list. </p>
<br />  <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gocomments/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godelicious/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gofacebook/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gotwitter/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/gostumble/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/godigg/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/michalurbanski.wordpress.com/244/"/></a> <a rel="nofollow" target="_blank" href="http://feeds.wordpress.com/1.0/goreddit/michalurbanski.wordpress.com/244/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/michalurbanski.wordpress.com/244/"/></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=michalurbanski.wordpress.com&#038;blog=15097618&#038;post=244&#038;subd=michalurbanski&#038;ref=&#038;feed=1" width="1" height="1"/><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/z4QTiTywEB4" height="1" width="1"/>]]></content:encoded>
         <media:content medium="image" url="http://1.gravatar.com/avatar/9a702a5222b92da35aa386469845b917?s=96&amp;amp;d=identicon&amp;amp;r=G">
            <media:title type="html">michalurbanski</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-sharepoint-element_thumb.png">
            <media:title type="html">vs2010 new sharepoint element</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type_thumb.png">
            <media:title type="html">vs2010 new content type</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2010-new-content-type-xml_thumb.png">
            <media:title type="html">vs2010 new content type xml</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2010-site-column_thumb.png">
            <media:title type="html">vs2010 site column</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-sharepoint-element_thumb.png">
            <media:title type="html">vs2011 new sharepoint element</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2011-site-column_thumb.png">
            <media:title type="html">vs2011 site column</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-site-column-filled_thumb.png">
            <media:title type="html">vs2011 new site column filled</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type_thumb.png">
            <media:title type="html">vs2011 new content type</media:title>
         </media:content>
         <media:content medium="image" url="http://michalurbanski.files.wordpress.com/2011/12/vs2011-new-content-type-filled_thumb.png">
            <media:title type="html">vs2011 new content type filled</media:title>
         </media:content>
         <category>SharePoint</category>
      <feedburner:origLink>http://michalurbanski.wordpress.com/2011/12/25/sharepoint-2010-w-oczekiwaniu-na-visual-studio-2011-cz-1/</feedburner:origLink></item>
      <item>
         <title>[RX 4] Reactive.Concurrency i planiści (schedulers)(czyli artykułu o RX cz. 4) [PL]</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/FLOk2Lk9SYY/rx-4-reactiveconcurrency-i-planisci.html</link>
         <author>Maciek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-3888219001172425944.post-2976821469457342404</guid>
         <pubDate>Wed, 14 Dec 2011 23:26:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://2.bp.blogspot.com/-qTXn3Hm1yuM/Tukhq6wj8II/AAAAAAAAE84/gGXBwOy9f14/s72-c/maciej-progtech-reactive-extensions-rx-planista-scheduler.jpg" width="72" />
      <description>&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/FLOk2Lk9SYY" height="1" width="1"/&gt;</description><feedburner:origLink>http://feedproxy.google.com/~r/MaciejZbrzeznyProgramowanieITechnologie/~3/Zt6ZYWiisvU/rx-4-reactiveconcurrency-i-planisci.html</feedburner:origLink></item>
      <item>
         <title>Generator haseł z możliwością parametryzacji</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/nRtG5Ke0aWo/generator-hase%C5%82-z-mozliwoscia-parametryzacji</link>
         <description>&lt;p&gt;W końcu nadszedł ten dzień, kiedy metoda &lt;em&gt;Membership.GeneratePassword &lt;/em&gt;przestała mi wystarczać. Zawiedziony możliwościami tego generatora napisałem poniższy kawałek kodu:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;

namespace Common.Security
{
    public interface IPasswordGenerator
    {
        string Generate(int length);
        string Generate(int length, PasswordOption options);
    }

    public class PasswordGenerator : IPasswordGenerator
    {
        public static readonly char[] LowerCaseArr ="abcdefghijklmnopqrstuvwxyz".ToCharArray();
        public static readonly char[] UpperCaseArr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
        public static readonly char[] DigitsArr = "0123456789".ToCharArray();
        public static readonly char[] MinusArr = new[] { '-' };
        public static readonly char[] UnderlinArr = new[] { '_' };
        public static readonly char[] SpaceArr = new[] { ' ' };
        public static readonly char[] SpecialArr = "!&amp;#92;"#$%&amp;amp;'*+./:;=?@&amp;#92;&amp;#92;^".ToCharArray();
        public static readonly char[] BracketArr = "[]{}()&amp;lt;&amp;gt;".ToCharArray();

        private Dictionary&amp;lt;PasswordOption, char[]&amp;gt; _charDict = new Dictionary&amp;lt;PasswordOption, char[]&amp;gt;
                                                                   {
                                                                       {PasswordOption.LowerCase, LowerCaseArr},
                                                                       {PasswordOption.UpperCase, UpperCaseArr},
                                                                       {PasswordOption.Digits, DigitsArr},
                                                                       {PasswordOption.Minus, MinusArr},
                                                                       {PasswordOption.Underline, UnderlinArr},
                                                                       {PasswordOption.Space, SpaceArr},
                                                                       {PasswordOption.Special, SpecialArr},
                                                                       {PasswordOption.Brackets, BracketArr}
                                                                   };

        public string Generate(int length)
        {
            if (length &amp;lt; 1 || length &amp;gt; 128)
            {
                throw new ArgumentOutOfRangeException("length");
            }

            return GenerateImpl(length, PasswordOption.LowerCase | PasswordOption.UpperCase | PasswordOption.Digits | PasswordOption.Special);
        }

        public string Generate(int length, PasswordOption options)
        {
            if (length &amp;lt; 1 || length &amp;gt; 128)
            {
                throw new ArgumentOutOfRangeException("length");
            }

            return GenerateImpl(length, options);
        }

        private string GenerateImpl(int length, PasswordOption option)
        {
            var charset = PrepareCharset(option);

            var random = new RNGCryptoServiceProvider();
            var buffer = new byte[length * 2];
            random.GetBytes(buffer);

            var arr = Enumerable.Range(0, charset.Length).ToArray();
            arr.Shuffle();

            int j = 0;
            var password = new char[length];
            for (int i = 0; i &amp;lt; length; i++)
            {
                // na początku spełnij warunek "co najmniej jeden znak danego typu"
                if (i &amp;lt; arr.Length)
                {
                    var k = arr[i];
                    j++;
                    var l = buffer[j] % charset[k].Length;
                    password[i] = charset[k][l];
                    continue;
                }

                var charsetIndex = buffer[j] % charset.Length;
                j++;

                var charIndex = buffer[j] % charset[charsetIndex].Length;
                j++;

                password[i] = charset[charsetIndex][charIndex];
            }

            return new string(password);
        }

        private char[][] PrepareCharset(PasswordOption option)
        {
            return _charDict.Where(x =&amp;gt; option.IsSet(x.Key)).Select(x =&amp;gt; x.Value).ToArray();
        }
    }

    public static class EnumExtensions
    {
        public static bool IsSet(this Enum input, Enum matchTo)
        {
            return (Convert.ToUInt32(input) &amp;amp; Convert.ToUInt32(matchTo)) != 0;
        } 
    }

    public static class ArrayExtensions
    {
        public static void Shuffle&amp;lt;T&amp;gt;(this T[] array)
        {
            var rng = new Random();
            int n = array.Length;
            while (n &amp;gt; 1)
            {
                int k = rng.Next(n);
                n--;
                T temp = array[n];
                array[n] = array[k];
                array[k] = temp;
            }
        }
    }
}
&lt;/pre&gt;
&lt;p&gt;Ta prosta klasa pozwala na generowanie haseł o określonej długości i składających się z kombinacji znak&amp;oacute;w z określonych zbior&amp;oacute;w (małe litery, duże litery, cyfry, znaki specjalne, nawiasy, spacja, podkreślenie, znaki specjalne, minus). Zbiory, na podstawie kt&amp;oacute;rych generowane jest hasło określa parametr PasswordOption. Dozwolone jest łączenie zbior&amp;oacute;w znak&amp;oacute;w źr&amp;oacute;dłowych hasła (np. małe litery + duże litery + nawiasy + minus) przez kombinację odpowiadających im flag PasswordOption:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;passGen.Generate(length, PasswordOption.LowerCase | PasswordOption.UpperCase | PasswordOption.Digits | PasswordOption.Special);
&lt;/pre&gt;
&lt;p&gt;Hasło może mieć od 1 do 128 znak&amp;oacute;w. Dla fanatyk&amp;oacute;w bezpieczeństwa przewiduję wersję generującą hasła o długości do 2048 znak&amp;oacute;w &lt;img src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/6822b2aee57d_12794/wlEmoticon-smile_2.png" alt="U&amp;#x00015b;miech" class="wlEmoticon wlEmoticon-smile" style="border-style:none;"/&gt;&amp;nbsp; Na koniec kilka test&amp;oacute;w jednostkowych do tego generatora.&lt;/p&gt;
&lt;pre class="prettyprint"&gt;namespace Common.Tests.Security
{
    public class PasswordGeneratorTest
    {
        [Fact]
        public void Generate_CheckUniqueness()
        {
            var passGen = new PasswordGenerator();

            // lame
            var set = new HashSet&amp;lt;string&amp;gt;();
            for (int i = 0; i &amp;lt; 1000; i++)
            {
                set.Add(passGen.Generate(10));
            }

            Assert.Equal(1000, set.Count); // dzięki Marcin :)
        }

        [Fact]
        public void Generate_OnlyUpperCase()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(10, PasswordOption.UpperCase);
            Console.WriteLine(pass);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.UpperCaseArr));
        }

        [Fact]
        public void Geterate_OnlyLowerCase()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(10, PasswordOption.LowerCase);
            Console.WriteLine(pass);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.LowerCaseArr));
        }

        [Fact]
        public void Generate_OnlyDigits()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(10, PasswordOption.Digits);
            Console.WriteLine(pass);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.DigitsArr));
        }

        [Fact]
        public void Generate_OnlySpecial()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(10, PasswordOption.Special);
            Console.WriteLine(pass);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.SpecialArr));
        }


        [Fact]
        public void Generate_LowerAndUpperCase()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(20, PasswordOption.LowerCase | PasswordOption.UpperCase);
            Console.WriteLine(pass);
            Assert.Equal(20, pass.Length);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.LowerCaseArr, PasswordGenerator.UpperCaseArr));
        }

        [Fact]
        public void Generate_LowerUpperCaseAndSpecial()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(20, PasswordOption.LowerCase | PasswordOption.UpperCase | PasswordOption.Special);
            Console.WriteLine(pass);
            Assert.Equal(20, pass.Length);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.LowerCaseArr, PasswordGenerator.UpperCaseArr, PasswordGenerator.SpecialArr));
        }

        [Fact]
        public void Generate_LowerUpperCaseAndSpecialAndBrackets()
        {
            var passGen = new PasswordGenerator();
            var pass = passGen.Generate(20, PasswordOption.LowerCase | PasswordOption.UpperCase | PasswordOption.Special | PasswordOption.Brackets);
            Console.WriteLine(pass);
            Assert.Equal(20, pass.Length);
            Assert.True(CheckCharSubset(pass, PasswordGenerator.LowerCaseArr, PasswordGenerator.UpperCaseArr, PasswordGenerator.SpecialArr, PasswordGenerator.BracketArr));
        }

        public bool CheckCharSubset(IEnumerable&amp;lt;char&amp;gt; subSet, params IEnumerable&amp;lt;char&amp;gt;[] sets)
        {
            var set = sets.SelectMany(x =&amp;gt; x).ToArray();
            var enumerable = subSet.Except(set);
            return !enumerable.Any();
        }
    }
}
&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=-GRMR9RZwJU:PcANOSIXdto:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=-GRMR9RZwJU:PcANOSIXdto:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?i=-GRMR9RZwJU:PcANOSIXdto:-BTjWOF_DHI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodingblog/~4/-GRMR9RZwJU" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/nRtG5Ke0aWo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://jdubrownik.com:80/generator-hase%C5%82-z-mozliwoscia-parametryzacji</guid>
         <pubDate>Tue, 06 Dec 2011 12:20:32 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/netcodingblog/~3/-GRMR9RZwJU/generator-hase%C5%82-z-mozliwoscia-parametryzacji</feedburner:origLink></item>
      <item>
         <title>Earth Defence with Scoreloop!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/aO9DE1vhywU/earth-defence-with-scoreloop.html</link>
         <description>&lt;div style="text-align:justify;"&gt;New &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.earthdefence&amp;amp;feature=related_apps#?t=W251bGwsMSwxLDEwOSwiY29tLmthc3Vyb2lkLmVhcnRoZGVmZW5jZSJd"&gt;Earth Defence&lt;/a&gt; has just been released! Main feature is that now you can compete with other players online. I'm in the middle of developing my own online scoring system, but for now I decided to use Scoreloop. I hope it will bring more of you to play this game ;)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Any other ideas? ;) I really like to read the comments. Using Scoreloop was one of them.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Happy playing! Let's see who is the best in destroying aliens!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-4707811878519278228?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/aO9DE1vhywU" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-4707811878519278228</guid>
         <pubDate>Sun, 20 Nov 2011 21:18:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/11/earth-defence-with-scoreloop.html</feedburner:origLink></item>
      <item>
         <title>Balls Breaker for BADA released!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/T7uDPCnqXKE/balls-breaker-for-bada-released.html</link>
         <description>&lt;div style="text-align:justify;"&gt;I'm proud to announce that Balls Breaker has passed all the certification tests and is available in the Samsung Apps!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;There are two version of Balls Breaker. Paid one (&lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00002062327"&gt;QVGA&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00002062435"&gt;WVGA&lt;/a&gt;) and the free one (&lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00002064404"&gt;QVGA&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00002047191"&gt;WVGA&lt;/a&gt;).&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;All the game rules, graphics and features are the same as in Android version!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Hope you enjoy the game!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-703833506264970726?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/T7uDPCnqXKE" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-703833506264970726</guid>
         <pubDate>Wed, 16 Nov 2011 11:23:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/11/balls-breaker-for-bada-released.html</feedburner:origLink></item>
      <item>
         <title>Changing File Encoding in multiple Files</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/PgM2wHUJMbo/</link>
         <description>In one of the projects developed in my firm we had encoding set on almost all the files to Something like CodeBase 1252 which supports only the limited set of characters. There was a problem with Swedish characters “ö,ä,å” and also especially pound currency character which was used in one of the regular expression in...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2011/11/09/changing-file-encoding-in-multiple-files/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2011/11/09/changing-file-encoding-in-multiple-files/</guid>
         <pubDate>Wed, 09 Nov 2011 22:33:32 +0000</pubDate>
         <content:encoded><![CDATA[<p>In one of the projects developed in my firm we had encoding set on almost all the files to Something like <strong>CodeBase 1252</strong> which supports only the limited set of characters.
<p>There was a problem with Swedish characters <strong>“ö,ä,å”</strong> and also especially pound currency character which was used in one of the regular expression in the app. With my operating system, configured with the English culture settings using <strong>CodeBase 1250</strong>, those characters where changed and there were couple of runtime errors. We had to change the encoding to <strong>UTF8</strong> that’s one of the solutions. <strong>UTF8</strong> has a bigger character set.
<p>There is an option in <strong>Visual Studio File –&gt; Advanced Save Options </strong> that can be used to change <strong>encoding</strong> but it’s only usable for scenarios with one file. In this situation I had to change couple thousand of files. To fix this problem I have found a nice solution that uses <strong>PowerShell</strong> .
<p>Script:
<pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  1: <span style="color:#0000ff;">function</span> ChangeEncoding ($baseDirectory)
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  2: {
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  3:         $allFiles = Get-ChildItem $baseDirectory -include *.aspx,*.ascx -recurse
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  4:               | where-object { -not $_.PSIsContainer}
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  5:         foreach( $file in $allFiles){
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  6:             $fileContent = get-content $file.FullName -force
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  7:             $fileContent | set-content -encoding utf8  $file.FullName -force
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  8:         }
</pre>
<pre style="background-color:#fbfbfb;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">  9: }
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;"> 10: ChangeEncoding("<span style="color:#8b0000;">BaseDirectoryPath</span>") </pre>
</pre>
<p>This script iterates through all the files in directories and their directories and rewrites them with correct encoding. It’s not the best solution but it works.</p>
<p>Little Explanation: </p>
<p><font style="background-color:#ffff00;">Get-ChildItem $baseDirectory -include *.aspx,*.ascx –recurse</font>&nbsp;
<p>Gets all the files with specified extensions&nbsp; (aspx and ascx) , recurse option enables search through all the files in directories and subdirectories</p>
<p><font style="background-color:#ffff00;">where-object { -not $_.PSIsContainer}</font>&nbsp;
<p>Used to exclude directories from the files list.</p>
<p>This script loads the file to a temporary variable because we have to read and write the same file. Pipelined solution would be cleaner but it reads and writes the data one line at time. You can’t write and read on the same file at the same time.</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/PgM2wHUJMbo" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2011/11/09/changing-file-encoding-in-multiple-files/</feedburner:origLink></item>
      <item>
         <title>Jak stworzyć link na podstawie tytułu strony?</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/5LvU3UvdpMg/25</link>
         <description>Czasami podczas naszych programistycznych podr&amp;#243;ży trafiamy na moment, w kt&amp;#243;rym chcemy dynamicznie dodawać pozycje do naszego menu lub chcemy stworzyć poprawną nazwę pliku na podstawie jakiegoś stringa (np. tytułu strony). Poniżej zamieszczam gotową metodę usuwającą polskie znaki, zastępującą niedozwolone znaki myślnikami lub podkreślnikami. &lt;br /&gt;&lt;br /&gt;&lt;pre class='brush: c-sharp'&gt;&lt;br /&gt;        public static string UrlSafeName(this string name)&lt;br /&gt;        {&lt;br /&gt;            return name.Trim()&lt;br /&gt;                .Replace(&amp;#39; &amp;#39;, &amp;#39;_&amp;#39;)&lt;br /&gt;                .Replace(&amp;quot;&amp;#92;t&amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;&amp;#92;n&amp;quot;, &amp;quot;_&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;&amp;#92;&amp;#92;&amp;quot;, &amp;quot;-&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;/&amp;quot;, &amp;quot;-&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ą&amp;quot;, &amp;quot;a&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ą&amp;quot;, &amp;quot;A&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ć&amp;quot;, &amp;quot;c&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ć&amp;quot;, &amp;quot;C&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ę&amp;quot;, &amp;quot;e&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ę&amp;quot;, &amp;quot;E&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ł&amp;quot;, &amp;quot;l&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ł&amp;quot;, &amp;quot;L&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;&amp;#243;&amp;quot;, &amp;quot;o&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;&amp;#211;&amp;quot;, &amp;quot;O&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ś&amp;quot;, &amp;quot;s&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ś&amp;quot;, &amp;quot;S&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ź&amp;quot;, &amp;quot;z&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ź&amp;quot;, &amp;quot;Z&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;ż&amp;quot;, &amp;quot;z&amp;quot;)&lt;br /&gt;                .Replace(&amp;quot;Ż&amp;quot;, &amp;quot;Z&amp;quot;);&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/5LvU3UvdpMg" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Wed, 09 Nov 2011 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/25</feedburner:origLink></item>
      <item>
         <title>Zagłosujmy na ARNav - Polski Start-up Androidowy</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/3xWpm_oIW3M/zagosujmy-na-arnav-polski-start-up.html</link>
         <description>W związku z tym, że nasze rodzime rozwiązania Androidowe mają 
niebywałą szansę zaistnienia na scenie międzynarodowej chciałbym 
serdecznie zaprosić do zapoznania się z poniższym opisem dostarczonym 
przez jednego z twórców projektu ARNav. Szczególnie zachęcam do 
oddawania głosów na stronie zamieszczonej na końcu tego wpisu.

Listopad
 okazuje się miesiącem w którym polskie startupy walczą o 
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/uPIm9p7Iuqlr35yDq_D12Nauom4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uPIm9p7Iuqlr35yDq_D12Nauom4/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/uPIm9p7Iuqlr35yDq_D12Nauom4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uPIm9p7Iuqlr35yDq_D12Nauom4/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FrogersDevBlog/~4/VSu0P1XSyJg" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/3xWpm_oIW3M" height="1" width="1"/&gt;</description>
         <author>Mirek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-4013372024059971786.post-8996824227770979405</guid>
         <pubDate>Tue, 08 Nov 2011 22:34:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/FrogersDevBlog/~3/VSu0P1XSyJg/zagosujmy-na-arnav-polski-start-up.html</feedburner:origLink></item>
      <item>
         <title>WPF transitions using pixel shaders and Blend SDK</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/6rAkE1iG1GI/wpf-transitions-using-pixel-shaders-and.html</link>
         <description>WPF transitions are a very nice way to turn standard, boring application interactions into great user experiences, and show the author pays attention to details. There are basically two ways of implementing transitions in WPF. You can do a manual transition using &lt;em&gt;RenderTransform&lt;/em&gt; to modify the visuals’ position, scaling and rotation. Throwing in an opacity animation would improve the effect. This option is talked more in-depth &lt;a rel="nofollow" target="_blank" href="http://www.11011.net/wpf-transitions"&gt;here&lt;/a&gt;. However, there is a couple of problems with this approach. The biggest issue is that such transitions are CPU bound, since the transition is &lt;em&gt;calculated&lt;/em&gt; on the main processor. The other problem is more prosaic – they are relatively hard to implement. The other way is to utilize pixel shaders to blend between two visuals’ images making the illusion of transition. Transitions done this way are GFX bound, offloading the CPU which can perform other useful tasks. Besides, they look just awesome, as you shall see in a moment :) There is a small problem associated with this approach, though. To write custom pixel shader, some GFX knowledge accompanied by HLSL might be required. Crafting nice effect probably would also require a bit of math :) Thankfully, there are some nice libraries packed with effects ready to use! So no worries, we will not be talking math here!&lt;br /&gt;In this post I will discuss how to build a &lt;em&gt;TransitionControl&lt;/em&gt;, which beautifully animates transitions from one visual state into the other. To demonstrate the effect, I updated my wizard demo (discussed &lt;a rel="nofollow" target="_blank" href="http://pwlodek.blogspot.com/2008/11/wpf-wizard-control.html"&gt;here&lt;/a&gt; and &lt;a rel="nofollow" target="_blank" href="http://pwlodek.blogspot.com/2009/02/wpf-wizard-control-part-ii.html"&gt;here&lt;/a&gt;) so that transitions between consecutive steps are nicely animated. I will also show what it takes to add transition effect to regular &lt;em&gt;TabControl&lt;/em&gt;. The following screens show the &lt;u&gt;slide&lt;/u&gt; transition between two wizard steps.&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-BgcSElGNbMQ/TrCoaXtsALI/AAAAAAAAB20/Vg23cfXxYjA/s1600-h/image46.png"&gt;&lt;img alt="image" border="0" height="301" src="http://lh4.ggpht.com/-_cAg2GsQL2Y/TrCoawF4CHI/AAAAAAAAB28/q1qwQ7RnIWo/image_thumb28.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="361"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh6.ggpht.com/-cuDCGLBIaGA/TrCobEm526I/AAAAAAAAB3E/0t3VOJMMG3k/s1600-h/image48.png"&gt;&lt;img alt="image" border="0" height="301" src="http://lh6.ggpht.com/-BCu-adeUTQ8/TrCobhTbbUI/AAAAAAAAB3M/zRrTSzmfDk0/image_thumb30.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="361"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-IovqngfjBGI/TrCocMErbYI/AAAAAAAAB3U/K8mvgj1c1TQ/s1600-h/image47.png"&gt;&lt;img alt="image" border="0" height="301" src="http://lh6.ggpht.com/-MFn9SIaEBtQ/TrCocRhYFZI/AAAAAAAAB3c/E_Mh9XX7wVM/image_thumb29.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="361"/&gt;&lt;/a&gt;&lt;br /&gt;And the following shows a transition within TabControl.&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-1UatHgodPGA/TrCoclXA75I/AAAAAAAAB3k/8cmfhAZJUtw/s1600-h/image65.png"&gt;&lt;img alt="image" border="0" height="299" src="http://lh3.ggpht.com/-IuWhYSqpGdk/TrCoc-t378I/AAAAAAAAB3s/dtPi4cswq3g/image_thumb41.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="357"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-Tl3Q6YD9FD0/TrCod7llbJI/AAAAAAAAB30/prmBySHEM8M/s1600-h/image64.png"&gt;&lt;img alt="image" border="0" height="299" src="http://lh5.ggpht.com/-1BYYUgsRB_E/TrCoeefD2rI/AAAAAAAAB38/B7seBWV0PQA/image_thumb40.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="357"/&gt;&lt;/a&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-lzMBatLb-zk/TrCofdMZVQI/AAAAAAAAB4E/I-FQk57Aito/s1600-h/image63.png"&gt;&lt;img alt="image" border="0" height="299" src="http://lh3.ggpht.com/-DymVnDKozpE/TrCof6rf4pI/AAAAAAAAB4M/QnJ-Wz33bSA/image_thumb39.png?imgmax=800" style="background-image:none;border-bottom-width:0px;border-left-width:0px;border-right-width:0px;border-top-width:0px;display:inline;padding-left:0px;padding-right:0px;padding-top:0px;" title="image" width="357"/&gt;&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Pixel shader libraries&lt;/strong&gt;&lt;br /&gt;Pixel shaders were introduced in .NET Framework 3.5 SP1. By this time, Microsoft released really cool library called &lt;a rel="nofollow" target="_blank" href="http://wpffx.codeplex.com/"&gt;WPF Effects Library&lt;/a&gt;. The library is composed of two types of components: &lt;u&gt;effects&lt;/u&gt; and &lt;u&gt;transitions&lt;/u&gt;. Effects are successors to well known bitmap effects, and provide a way to alter how a visual is rendered on the screen (see this &lt;a rel="nofollow" target="_blank" href="http://channel9.msdn.com/shows/Continuum/WPFFXDemo/"&gt;video&lt;/a&gt;). Transitions, on the other hand, provide a means to.. transition from one visual state to the other. Easy, huh ? We will leverage them to build robust &lt;em&gt;TransitionControl&lt;/em&gt;.&lt;br /&gt;These days the project seems not to be much updated, the latest version is 2.0 beta which targets .NET 3.5, but works with .NET 4.0 and Visual Studio 2010. The good news is that although this project is not longer maintained, most of the effects and transitions made its way to &lt;u&gt;Blend 4.0 SDK&lt;/u&gt;! They are available in &lt;u&gt;Microsoft.Expression.Effects.dll&lt;/u&gt; assembly.&lt;br /&gt;Okay, so I introduced transitions, just show how to use them and probably we’re done here, right ? it turns out we’re not quite done here. Lets see what is the API for using a transition effect. The base &lt;em&gt;TransitionEffect&lt;/em&gt; class, from which all transitions derive, is located in &lt;em&gt;&lt;u&gt;Microsoft.Expression.Interactions.dll&lt;/u&gt;&lt;/em&gt; assembly, and its public API is defined as follows:&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;public abstract class TransitionEffect : ShaderEffect&lt;br /&gt;{&lt;br /&gt;    protected TransitionEffect();&lt;br /&gt;    public Brush Input { get; set; }&lt;br /&gt;    public Brush OldImage { get; set; }&lt;br /&gt;    public double Progress { get; set; }&lt;br /&gt;}&lt;/pre&gt;The class inherits &lt;em&gt;ShaderEffect&lt;/em&gt;, which makes it essentially a regular pixel shader effect. So it can be assigned to the &lt;em&gt;Effect&lt;/em&gt; property of any &lt;em&gt;UIElement&lt;/em&gt;. There are also two important properties: &lt;u&gt;OldImage&lt;/u&gt; and &lt;u&gt;Progress&lt;/u&gt;. The &lt;em&gt;OldImage&lt;/em&gt; brush defines the look of the old visual, and the &lt;em&gt;Progress&lt;/em&gt;, between 0.0 and 1.0, denotes where we are within the transition. So the flow when using any &lt;em&gt;TransitionEffect&lt;/em&gt; is as follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Choose any transition effect and apply it to any &lt;em&gt;UIElement&lt;/em&gt; which is the target visual we want to transition to&lt;/li&gt;&lt;li&gt;Get the &lt;em&gt;VisualBrush&lt;/em&gt; which depicts the visual we transition from, and assign it to the &lt;em&gt;OldImage&lt;/em&gt; property&lt;/li&gt;&lt;li&gt;Animate &lt;em&gt;Progress&lt;/em&gt; property from 0.0 to 1.0 to perform the actual transition&lt;/li&gt;&lt;/ol&gt;As you can see, this is not very complicated, but far from being convenient. And this is where &lt;em&gt;TransitionControl&lt;/em&gt; comes to play (I believe Telerik offers &lt;a rel="nofollow" target="_blank" href="http://www.telerik.com/products/wpf/transition.aspx"&gt;similar control&lt;/a&gt;).&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Meet the TransitionControl&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;TransitionControl&lt;/em&gt; encapsulates the above three steps and provides a nice API to consume by the client. Let’s think for a moment, what is the most convenient API for the TransitionControl ? Yes, you’re right, it’s a &lt;em&gt;ContentControl&lt;/em&gt;! &lt;em&gt;ContentControl&lt;/em&gt; provides a &lt;em&gt;Content&lt;/em&gt; property which is almost everything we care about. Whenever we change the &lt;em&gt;Content&lt;/em&gt; property to something else, we expect to get a nice transition which smoothly goes from one visual state to the other. Having said that, let’s see the API of the &lt;em&gt;TransitionControl&lt;/em&gt;.&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;public class TransitionControl : ContentControl&lt;br /&gt;{    &lt;br /&gt;    public TransitionSelector ContentTransitionSelector { get; set; }&lt;br /&gt;    &lt;br /&gt;    public TimeSpan Duration { get; set; }&lt;br /&gt;&lt;br /&gt;    public IEasingFunction EasingFunction { get; set; }&lt;br /&gt;&lt;br /&gt;    public bool EnableTransitions { get; set; }       &lt;br /&gt;}&lt;/pre&gt;You can see that the &lt;em&gt;TransitionControl&lt;/em&gt; is essentially a &lt;em&gt;ContentControl&lt;/em&gt;. This is good, because, whenever you use &lt;em&gt;ContentControl&lt;/em&gt;, you can swap it for &lt;em&gt;TransitionControl&lt;/em&gt; and get the transitions for free! The second important thing is how actually &lt;em&gt;TransitionControl&lt;/em&gt; knows about particular transition we want to use ? This is where TransitionSelector comes in. It is an abstract class which behaves similarly to DataTemplateSelector. It defines single method as show below.&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;public abstract class TransitionSelector&lt;br /&gt;{&lt;br /&gt;    public abstract TransitionEffect GetTransition(object oldContent, object newContent, DependencyObject container);&lt;br /&gt;}&lt;/pre&gt;You implement this class and hand over a new instance to &lt;em&gt;TransitionControl&lt;/em&gt;. You get both the old and new contents, so it is possible to write dynamic logic which selects transition based on a content. Nice, huh ? There are also two properties which drive the behavior of the transition. Duration determines the length of the transition, and EasingFunction allows to supply easing function :)&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;How does it work ?&lt;/strong&gt;&lt;br /&gt;The transition kicks of when the Content property changes. If the previous content was empty, of course no transition occurs. But if both old and new contents are presents, transition is triggered. The “magic” sits in the &lt;em&gt;AnimateContent&lt;/em&gt; method, which is responsible for going through the three steps outlined previously.&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;private void AnimateContent(object oldContent, object newContent)&lt;br /&gt;{&lt;br /&gt;    var oldContentVisual = GetVisualChild();&lt;br /&gt;    var tier = (RenderCapability.Tier &amp;gt;&amp;gt; 16);&lt;br /&gt;&lt;br /&gt;    // if we dont have a selector, or the visual content is not a FE, do not animate&lt;br /&gt;    if (EnableTransitions == false || ContentTransitionSelector == null || oldContentVisual == null || tier &amp;lt; 2)&lt;br /&gt;    {&lt;br /&gt;        SetNonVisualChild(newContent);&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    // create the transition&lt;br /&gt;    TransitionEffect transitionEffect = ContentTransitionSelector.GetTransition(oldContent, newContent, this);&lt;br /&gt;    if (transitionEffect == null)&lt;br /&gt;    {&lt;br /&gt;        throw new InvalidOperationException("Returned transition effect is null.");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // create the animation&lt;br /&gt;    DoubleAnimation da = new DoubleAnimation(0.0, 1.0, new Duration(Duration), FillBehavior.HoldEnd);&lt;br /&gt;    da.Completed += delegate&lt;br /&gt;    {&lt;br /&gt;        ApplyEffect(null);&lt;br /&gt;    };&lt;br /&gt;    if (EasingFunction != null)&lt;br /&gt;    {&lt;br /&gt;        da.EasingFunction = EasingFunction;&lt;br /&gt;    }&lt;br /&gt;    else&lt;br /&gt;    {&lt;br /&gt;        da.AccelerationRatio = 0.5;&lt;br /&gt;        da.DecelerationRatio = 0.5;&lt;br /&gt;    }&lt;br /&gt;    transitionEffect.BeginAnimation(TransitionEffect.ProgressProperty, da);&lt;br /&gt;&lt;br /&gt;    // create the visual brush which is the source of the "old content" image&lt;br /&gt;    VisualBrush oldVisualBrush = new VisualBrush(oldContentVisual);&lt;br /&gt;    transitionEffect.OldImage = oldVisualBrush;&lt;br /&gt;&lt;br /&gt;    SetNonVisualChild(newContent);&lt;br /&gt;    ApplyEffect(transitionEffect);&lt;br /&gt;}&lt;/pre&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;How to make transition aware TabControl&lt;/strong&gt;&lt;br /&gt;This task is super easy task! Just extract the default template for TabControl, and remove ContentPresenter with name &lt;em&gt;PART_SelectedContentHost and provide the following XAML&lt;/em&gt;.&lt;br /&gt;&lt;pre class="brush: xml"&gt;&amp;lt;Controls:TransitionControl &lt;br /&gt;  x:Name="PART_SelectedContentHost"&lt;br /&gt;  Duration="00:00:01"&lt;br /&gt;  Content="{TemplateBinding SelectedContent}"&lt;br /&gt;  ContentTransitionSelector="{StaticResource TabControlTransitionSelectorKey}"&lt;br /&gt;  Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/&amp;gt;&lt;/pre&gt;&lt;br /&gt;You will have to supply proper TransitionSelector. In the demo application, I used the following:&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;public class TabControlTransitionSelector : TransitionSelector&lt;br /&gt;{&lt;br /&gt;    private readonly Random _random = new Random();&lt;br /&gt;&lt;br /&gt;    private readonly TransitionEffect[] _transitions = new TransitionEffect[]&lt;br /&gt;    {&lt;br /&gt;        new SmoothSwirlGridTransitionEffect(),&lt;br /&gt;        new BlindsTransitionEffect(),&lt;br /&gt;        new CircleRevealTransitionEffect(),&lt;br /&gt;        new CloudRevealTransitionEffect(),&lt;br /&gt;        new FadeTransitionEffect(),&lt;br /&gt;        new PixelateTransitionEffect(),&lt;br /&gt;        new RadialBlurTransitionEffect(),&lt;br /&gt;        new RippleTransitionEffect(),&lt;br /&gt;        new WaveTransitionEffect(),&lt;br /&gt;        new WipeTransitionEffect(),&lt;br /&gt;        new SlideInTransitionEffect { SlideDirection = SlideDirection.TopToBottom }&lt;br /&gt;    };&lt;br /&gt;    public override TransitionEffect GetTransition(object oldContent, object newContent, DependencyObject container)&lt;br /&gt;    {&lt;br /&gt;        var index = _random.NextDouble() * _transitions.Length;&lt;br /&gt;        return _transitions[(int) index];&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;In this post I presented how using pixel shader effects create really cool looking, GFX bound transitions. Since the control responsible for wiring up everything is a ContentControl, you can use it wherever you use regular ContentControl, and you will get the transitions for free.&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Download&lt;/strong&gt;&lt;br /&gt;As always, you can download full sources from my Sky Drive.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/891889700878195825-8203554736612680836?l=pwlodek.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/6rAkE1iG1GI" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (Piotr Włodek)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-891889700878195825.post-8203554736612680836</guid>
         <pubDate>Wed, 02 Nov 2011 02:18:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/-_cAg2GsQL2Y/TrCoawF4CHI/AAAAAAAAB28/q1qwQ7RnIWo/s72-c/image_thumb28.png?imgmax=800" width="72" />
      <feedburner:origLink>http://pwlodek.blogspot.com/2011/11/wpf-transitions-using-pixel-shaders-and.html</feedburner:origLink></item>
      <item>
         <title>OOP - Manual.. troyan - pisarz  -_-' ?</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/DYui7kUwpu4/24</link>
         <description>Witam, do ostatnich materiał&amp;#243;w związanych podstawami programowania obiektowego chciałbym dorzucić wstępną wersję podręcznika mojego autorstwa (&lt;a rel="nofollow" target="_blank" href="http://troyan.exxl.pl/dlfile_pdf.php"&gt;http://troyan.exxl.pl/dlfile_pdf.php&lt;/a&gt;). Mam nadzieję, że jest napisana dość prostym językiem, a w połączeniu z poprzednimi dwoma zasobami: screencastem (&lt;a rel="nofollow" target="_blank" href="http://troyan.exxl.pl/dlfile_wmv.php"&gt;http://troyan.exxl.pl/dlfile_wmv.php&lt;/a&gt;) oraz solucją visual studio 2010 z projektami demonstrującymi cechy obiektowości (&lt;a rel="nofollow" target="_blank" href="http://troyan.exxl.pl/dlfile_zip.php"&gt;http://troyan.exxl.pl/dlfile_zip.php&lt;/a&gt;) stworzą pewną bazę do startu w świat .NET Framework ;)&lt;br /&gt;&lt;br /&gt;May the force be with you! :)&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/DYui7kUwpu4" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sun, 30 Oct 2011 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/24</feedburner:origLink></item>
      <item>
         <title>OOP Introduction - prelekecja na spotkaniu grupy .NET EKA</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/e71nYCf267w/23</link>
         <description>Cześć, wczoraj na spotkaniu grupy .NET EKA prowadziłem prelekcje dotyczącą podstaw programowania zorientowanego obiektowo wykorzystując język C# - jeżeli ktoś jest zainteresowany materiałami na ten temat:&lt;br /&gt;1.	Screencast z moich przygotowań – og&amp;#243;lnie na spotkaniu byłem już przygotowany, a wrzucony plik wideo był nagraniem mojej pierwszej pr&amp;#243;by, więc dużo jest wyrazistych przeciągnięć pełniących funkcję łącznik&amp;#243;w zdania w postaci „yyyyyy”, jednak treść merytoryczna jest mniej-więcej zachowana (&lt;a rel="nofollow" target="_blank" href="http://troyan.exxl.pl/dlfile_wmv.php"&gt;http://troyan.exxl.pl/dlfile_wmv.php&lt;/a&gt;)&lt;br /&gt;2.	Solucja ze wszystkimi projektami-demami wykorzystanymi w prezentacji (&lt;a rel="nofollow" target="_blank" href="http://troyan.exxl.pl/dlfile_zip.php"&gt;http://troyan.exxl.pl/dlfile_zip.php&lt;/a&gt;)&lt;br /&gt;3.	Służę pomocą poprzez kontakt mailowy (mateusz.sidorski@windowslive.com)&lt;br /&gt;&lt;br /&gt;Jak zawsze zapraszam na kolejne spotkanie grupy .NET EKA już w najbliższą środę o godzinie 19:00, sala nr 3 budynek C5.&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/e71nYCf267w" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Thu, 20 Oct 2011 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/23</feedburner:origLink></item>
      <item>
         <title>Debugging dynamic javascript in Chrome</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/aBsof_-gTPg/</link>
         <description>When developing web apps, I am using Chrome it has a great JS debugger unfortunately there is a small problem. Modern Web Applications contain a lot of dynamically loaded Javascript on the page. One common scenario is to load a modal with asynchronously loaded content. If this content would be a normal page with some...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2011/10/16/debugging-dynamic-javascript-in-chrome/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2011/10/16/debugging-dynamic-javascript-in-chrome/</guid>
         <pubDate>Sun, 16 Oct 2011 10:58:59 +0000</pubDate>
         <content:encoded><![CDATA[<p>When developing web apps, I am using <strong>Chrome </strong>it has a great <strong>JS</strong> debugger unfortunately there is a small problem. Modern Web Applications contain a lot of dynamically loaded <strong>Javascript</strong> on the page. One common scenario is to load a modal with asynchronously loaded content. If this content would be a normal page with some<strong> Javascript</strong>. Well we have a problem, we are not able to examine the scrpts and set breakpoints on this page. It wont work on default.
<p>Fortunately there is a solution. Chrome provides simple parser command which can tag dynamically loaded <strong>JS.</strong>&nbsp;
<p>&nbsp;
<pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">&lt;script type="<span style="color:#8b0000;">text/javascript</span>"&gt;
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">....
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;"><span style="color:#008000;">//@ sourceURL=createOrder.js </span>
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">&lt;/script&gt;</pre>
</pre>
<p>&nbsp;
<p>This line tells the chrome debugger that this whole script inside the script tag should be interpreted as a <strong>createOrder.js </strong>file. You can find the file on the debugger list and easily set up breakpoints or check the code.</p>
<p>If you are working with <strong>Asp.Net </strong><a rel="nofollow" target="_blank" href="http://www.asp.net/mvc"><strong>MVC</strong></a> and <strong>Razor Engine </strong>use <strong>Write</strong> function</p>
<p>&nbsp;
<pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">&lt;script type="<span style="color:#8b0000;">text/javascript</span>"&gt;
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">....
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;"></pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">@{Write("<span style="color:#8b0000;">//@ sourceURL=createOrder.js</span>");}
</pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;"></pre>
<pre style="background-color:#ffffff;margin:0em;width:100%;font-family:consolas, courier, monospace;font-size:12px;">&lt;/script&gt; </pre>
</pre><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/aBsof_-gTPg" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2011/10/16/debugging-dynamic-javascript-in-chrome/</feedburner:origLink></item>
      <item>
         <title>Flood Extreme released!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/8H6f4pwdnvk/flood-extreme-released.html</link>
         <description>&lt;div style="text-align:justify;"&gt;Me and vrt were preparing for quite a long time another amazing game for you :) This time it is &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.floodextreme"&gt;Flood Extreme&lt;/a&gt;! You can download it from &lt;a rel="nofollow"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;The idea of the game is similar to Flood or Flood Me games. You have to fill the board with a single color in less than allowed steps. Sounds easy? Just try it :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;a rel="nofollow"&gt;Flood Extreme&lt;/a&gt; is more complex than previous games (or any other similar game available on the market). It contains two game modes and five difficulty levels. It gives you 10 different gameplays! By default you will play Adventure in easy. You can change it anytime you want. Just go to settings in the main menu.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;/div&gt;&lt;a rel="nofollow" name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align:justify;"&gt;&lt;b&gt;Vrt&lt;/b&gt; added sound effects and background music (personally I love the music in the main menu :)).&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Not yet convinced? Just check the features list:&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align:justify;"&gt;- different skins, see settings in main menu&lt;br /&gt;- many board sizes&lt;br /&gt;- lot of levels, lot of fun!&lt;br /&gt;- two game modes: Adventure and Tactic&lt;br /&gt;- 5 difficulty modes: lame, easy, medium, hard, extreme&lt;br /&gt;- sound effects&lt;br /&gt;- background music for menu and gameplay&lt;br /&gt;- fast jumping to completed levels&lt;br /&gt;- moving to previous or next level&lt;br /&gt;- number of the last played level is stored on the phone&lt;br /&gt;- player statistics&lt;br /&gt;- support for tablets&lt;br /&gt;- and much more...&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;We hope you will enjoy the game!&amp;nbsp;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Don't forget to rate it 5! Thanks :)&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;If you have any suggestions about the game or you notice any bug just let us know. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-933127534444633543?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/8H6f4pwdnvk" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-933127534444633543</guid>
         <pubDate>Wed, 12 Oct 2011 08:20:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/10/flood-extreme-released.html</feedburner:origLink></item>
      <item>
         <title>Python decorators tamed</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/_G5Um3BuiRg/python-decorator-with-arguments-and.html</link>
         <description>In last week I was trying to write a decorator which will temporarily cache a method result in an object instance- the description probably isn&amp;#39;t very useful but the decorator itself is.&lt;br&gt;
&lt;br&gt;
&lt;a rel="nofollow" target="_blank" href="http://blog.paczkowski.eu/2011/10/python-decorator-with-arguments-and.html#more"&gt;Czytaj więcej »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7418174146446893704-1346275512063400246?l=blog.paczkowski.eu' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogJakubPaczkowski/~4/S2_m8TCZaFg" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/_G5Um3BuiRg" height="1" width="1"/&gt;</description>
         <author>Jakub Paczkowski</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7418174146446893704.post-1346275512063400246</guid>
         <pubDate>Wed, 12 Oct 2011 03:35:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/BlogJakubPaczkowski/~3/S2_m8TCZaFg/python-decorator-with-arguments-and.html</feedburner:origLink></item>
      <item>
         <title>Thesis–Overview</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/5NFuce_Ch5A/</link>
         <description>After couple of months spent on developing, my thesis is finally finished (yeah to be hones it&amp;#8217;s a beta version)! Happy happy day ;] Working and studying (which is was quite similar to work) is quite exhausting.I have created the e-learning platform. Its core functionality is content management + learning process management. Technologies and Tools...&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/2011/10/11/thesisoverview/"&gt;&amp;#187;&lt;/a&gt;</description>
         <guid isPermaLink="false">http://www.mfranc.com/2011/10/11/thesisoverview/</guid>
         <pubDate>Tue, 11 Oct 2011 22:16:17 +0000</pubDate>
         <content:encoded><![CDATA[<p align="left">After couple of months spent on developing, my thesis is finally finished (yeah to be hones it&#8217;s a beta version)! Happy happy day ;] Working and studying (which is was quite similar to work) is quite exhausting.I have created the e-learning platform. Its core functionality is content management + learning process management.<br />
<h3 align="left"><b>Technologies and Tools used in Project:</b></h3>
<h4 align="left"><b><a rel="nofollow" target="_blank" href="http://nlog-project.org/">NLog</a> + <a rel="nofollow" target="_blank" href="http://sentinel.codeplex.com/">Sentinel</a></b></h4>
<p align="left">NLog is awesome ! It&#8217;s easy and flexible. I will stick with it in my projects. Every app should implement logging mechanism because it simplifies development and cuts time spent on debugging code. Sentinel is a tool used to view generated logs. It supports for NLog and log4net. Sentinel is still in early development phase and needs improvements but it&#8217;s ok.
<p align="left">In my scenario i had a dual screen setup ( monitor + laptop screen). Laptop was used as a log windows with sentinel.<br />
<h4 align="left"><b><a rel="nofollow" target="_blank" href="http://nhforge.org/Default.aspx">NHibernate</a> + <a rel="nofollow" target="_blank" href="http://fluentnhibernate.org/">FluentNhibernate </a></b></h4>
<p align="left">NHibernate has step learning curve ( at least for someone like me with noob skills in ORM&#8217;s) but its great, flexible and greatly simplifies Data Abstraction Layer implementation. I had couple of situatioon when, I had to do massive changes in the DB. With DAL in NHibernate it was easy task. For NH mappings i have used FluentNhibernate. This lib has some flaws and problems like weak sql stored procedure support but i really don&#8217;t like the idea of xml files.<br />
<h4 align="left"><b><a rel="nofollow" target="_blank" href="http://www.nunit.org/">NUnit</a> + <a rel="nofollow" target="_blank" href="http://hibernatingrhinos.com/open-source/rhino-mocks">RhinoMock</a></b></h4>
<p align="left">Whole DAL is covered by unit tests (all the repository methods and service methods). I m using NUnit because this was my first test framework and i got used to it. In this project i have used for the first time Mocking Framework. Why RhinoMock well, I am reading <a rel="nofollow" target="_blank" href="http://ayende.com/blog">Ayende&#8217;s Blog </a>and thought that&#8217;s this one will be good at the beginning. There are currently more than 120 tests.<br />
<h4 align="left"><b><a rel="nofollow" target="_blank" href="http://automapper.codeplex.com/">Automapper </a></b></h4>
<p align="left">I m using Automapper to convert between different classes. My DAL is behind WCF services and, I&#8217;m using DTO&#8217;s as a transfer class. With Automapper conversion from NH entity to DTO is really simple.<br />
<h4 align="left"><b><a rel="nofollow" target="_blank" href="http://ninject.org/">Ninject</a></b></h4>
<p align="left">This was my first time experience with DI frameworks. It works really well and is quite simple but recently i found a performance comparison and Ninject is very slow compared to other solutions. I was using Unity at work and, I m gonna try it with other projects.
<p align="left">&nbsp;<br />
<h3 align="left"><b>Architecture</b></h3>
<p align="center"><strong><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2011/10/architektura.jpg"><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="architektura" border="0" alt="architektura" src="http://www.mfranc.com/wp-content/uploads/2011/10/architektura_thumb.jpg" width="662" height="307"></a></strong></p>
<p align="center">This is a simple architecture of my app.</p>
<h4 align="left">Graphical Design</h4>
<p align="left"><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2011/10/Logowanie.jpg"><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="Logowanie" border="0" alt="Logowanie" src="http://www.mfranc.com/wp-content/uploads/2011/10/Logowanie_thumb.jpg" width="405" height="311"></a></p>
<p align="left">Log in Screen</p>
<p align="left"><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2011/10/mainpage.jpg"><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="mainpage" border="0" alt="mainpage" src="http://www.mfranc.com/wp-content/uploads/2011/10/mainpage_thumb.jpg" width="407" height="249"></a></p>
<p align="left">Main Page</p>
<p align="left"><a rel="nofollow" target="_blank" href="http://www.mfranc.com/wp-content/uploads/2011/10/course.jpg"><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="course" border="0" alt="course" src="http://www.mfranc.com/wp-content/uploads/2011/10/course_thumb.jpg" width="406" height="270"></a></p>
<p align="left">Course Page</p>
<p align="left">I am using <a rel="nofollow" target="_blank" href="http://themeforest.net/item/adminica-the-professional-admin-template/160638">Adminica Template.</a> Great Stuff !</p>
<p align="left"><b>&nbsp;</p>
<p></b>
<p align="left">It was quite a big project for me. I learned a lot and tried different solutions. After my graduation i will work <i>maybe</i> on it as a open source project.</p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/5NFuce_Ch5A" height="1" width="1"/>]]></content:encoded>
         <category>Uncategorized</category>
      <feedburner:origLink>http://www.mfranc.com/2011/10/11/thesisoverview/</feedburner:origLink></item>
      <item>
         <title>Come back</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/CuY4EU43bCI/come-back.html</link>
         <description>Jak widać, postanowiłem nieco odświeżyć bloga- stało się to nieco z przymusu(hostingodawca wziął i mi zablokował konto)- więc zanim wkleję tutaj choć część starszych postów, to chwila minie. Jednak, bloga czeka kilka zmian- &lt;a rel="nofollow" target="_blank" href="http://blog.paczkowski.eu/2011/10/come-back.html#more"&gt;Czytaj więcej »&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7418174146446893704-6930548727512733587?l=blog.paczkowski.eu' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/BlogJakubPaczkowski/~4/ZKOBWnrCByo" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/CuY4EU43bCI" height="1" width="1"/&gt;</description>
         <author>Jakub Paczkowski</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-7418174146446893704.post-6930548727512733587</guid>
         <pubDate>Thu, 06 Oct 2011 10:23:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/BlogJakubPaczkowski/~3/ZKOBWnrCByo/come-back.html</feedburner:origLink></item>
      <item>
         <title>Zgłaszanie błędów w Androidzie</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/PxBFfEbTR2A/</link>
         <description>Z racji tego, że moja aplikacja jest już w fazie testów nie-u-mnie, byłem zmuszony napisać jakiś sposób do zgłaszania błędów – próba odtworzenia błędu u siebie(czy to na emulatorze, czy też telefonie) była bardzo trudna, albo wręcz niemożliwa. Nie sposób było powielić każde warunki(wersję oprogramowania, specyfikację urządzania, konfigurację samej aplikacji, o której zapominałem albo nie [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/PxBFfEbTR2A" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=382</guid>
         <pubDate>Wed, 05 Oct 2011 18:34:31 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2011/10/zglaszanie-bledow-w-androidzie-2/</feedburner:origLink></item>
      <item>
         <title>Build your first WinRT component</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/02UY5Howjj8/build-your-first-winrt-component.html</link>
         <description>&lt;p&gt;I think that the dust has cleared after the Build Windows conference which took place two weeks ago. Since then blog posts started to show up talking about Metro style apps, WinRT, its impact on current skills, etc. Also, Microsoft released public preview of Windows 8, so it is about a good time to give it a try. So I installed Win8 on the latest Virtual Box, and it seems to work fine, apart from a few systems crashes per hour ;) So in this post, &lt;u&gt;I want to show you what it takes to build simple yet functional &lt;strong&gt;WinRT&lt;/strong&gt; component in native C++&lt;/u&gt;, and also will talk why you would do that. But before we jump right to the code, I would like to provide a brief overview of Windows 8 developer platform, and &lt;strong&gt;WinRT&lt;/strong&gt; itself.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Runtime&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Microsoft says that WinRT is “a solid, efficient foundation for the new Windows 8 developer platform”. I love such marketing slang! So what &lt;strong&gt;WinRT&lt;/strong&gt; really is? It is a framework (calling it a framework is a bit unfair, since &lt;strong&gt;WinRT&lt;/strong&gt; is a part of the core of Windows OS, and is compiled each time Windows is built) for building &lt;strong&gt;Metro style apps&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-8BRyhfBwP1k/ToIlKesMgAI/AAAAAAAAB18/Py3HbIDXYQA/s1600-h/Metro-style-apps6.jpg"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="Metro style apps" alt="Metro style apps" src="http://lh4.ggpht.com/-22nr0gfe-es/ToIlLXkEYDI/AAAAAAAAB2A/nbYm3StzlSQ/Metro-style-apps_thumb4.jpg?imgmax=800" width="569" height="333"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is important information. It means WinRT can &lt;u&gt;only&lt;/u&gt; be used for developing metro style apps. Metro style apps, although perfectly legal on a desktop system, are especially meant for tablets. This is the environment where they truly shine! And tablets are the most important reason Microsoft has actually created it. Why ? How else would they provided fast and fluid user experience on an ARM based tabled cloacked at 1.6 GHz ? Would you run fully blown WPF apps there ? I doubt. Silverlight ? Better, but you can’t code it with C++. To compete with Apple iPad, they had to provide really fast solution. This is how MS come up with WinRT =)&lt;/p&gt;  &lt;p&gt;Let’s have a quick look over the architecture. Oh, don’t be fooled by metro style apps being three times bigger than desktop apps. Microsoft tries very hard to emphasis Metro style Apps, though, as I said, they are mostly meant for tablets, so still most of the LOB applications will be delivered as a standard smart client desktop apps.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-AjZOLWV7JgU/ToIlOxAShRI/AAAAAAAAB2E/riNakBaHhb8/s1600-h/WinRT5.png"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="WinRT" alt="WinRT" src="http://lh3.ggpht.com/-mXQ9Rko8gLA/ToIlRdL3JMI/AAAAAAAAB2I/Dg_zXU-3MAc/WinRT_thumb3.png?imgmax=800" width="680" height="397"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From the slide above we clearly see that &lt;strong&gt;WinRT&lt;/strong&gt; is only about Metro style apps. There is also one more thing. &lt;u&gt;For regular Desktop Apps, nothing really changes&lt;/u&gt;. So let’s put an end to statements saying that WPF and Silverlight are dead. They’re not! Silverlight 5 is coming out soon, with the RC version already available, and we have WPF 4.5 preview available as well, with cool new feature coming (be sure to check &lt;a rel="nofollow" target="_blank" href="http://bit.ly/nbFWGu"&gt;Jonathan Antoine’s blog&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;So as I said, it turned out that Silverlight and WPF are still there, they’re all good, and they are XAML based. As you see, the brand new WinRT is also XAML based, so another way of looking at it is that it is yet another manifestation of XAML framework. We have WPF, we have Silverlight, and now we have &lt;strong&gt;WinRT&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;WinRT has been entirely written in native C++. The did that because they wanted performance, and give the opportunity to C++ devs to build vNext apps for Windows. Besides, Microsoft is constantly saying that the performance is the top priority for them =) What is super important is that WinRT components can be consumed from a variety of languages, including C++, C#, VB, and JavaScript. To enable this scenario, MS baked in a support for metadata, which describes the WinRT objects. As a side note, the metadata uses standard CLR metadata format (ECMA 335), so it can be ILDASMed for instance ;) So each native WinRT component is packed up in a standard native dll, and is accompanied with *.winmd file, which carries all the metadata information for that dll. In the Win8 Developer Preview, all metadata files for standard WinRT dlls are located on C:&amp;#92;Windows&amp;#92;System32&amp;#92;WinMetadata.&lt;/p&gt;  &lt;p&gt;As far as the Graphics &amp;amp; Media part is concerned, the framework is a bit similar to Silverligh. UIElement, FrameworkElement, it’s all there. What is different though is the default namespace. We were used to System.Windows.*, now everything is in Windows.*, with the UI part being located in Windows.UI.XAML.* namespace.&lt;/p&gt;  &lt;p&gt;That is pretty much it when it comes to WinRT overview, at the end of this post are link to good articles discussing WinRT in more depth.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why bother writing WinRT components&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It comes without surprise that MS allows us to create custom &lt;strong&gt;WinRT&lt;/strong&gt; objects. What’s great about it, is that we can leverage the same metadata system MS is using in the “standard” WinRT, which means we can code our WinRT object in any supported languages (currently C++, C#, VB) and consume it from other languages without any effort. This means we can write performance critical code in C++ and consume it in C#, without resorting to COM interop or P/Invoke. Awesome!&lt;/p&gt;  &lt;p&gt;So answering the question, building WinRT components allows developers to share their codebase with other projects, written in any language, targeting any platform. Say you want to develop custom control. If you develop it in C# as a regular CLR dll, you will be able to consume it only in C#. But if you make it a WinRT object, you can leverage it from any Metro app. Okay, so why bother writing such component in C++ then? Because of performance! Do you know why Silverlight is faster than WPF ? Because it’s C++ under the hoods! Don’t believe ? Try reflecting Grid in SL ;)&lt;/p&gt;  &lt;p&gt;Summing up this short paragraph, you definitely want to write WinRT component if you want to share you code with other WinRT objects, running on different platforms. And you want to do it in C++ because of the performance.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Writing custom panel in native C++&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So finally, we reached to the most interesting part, which is the code. So here I will demonstrate how to develop custom, native WinRT object. To do so, I will use custom panel as an example. Let’s say we want to develop &lt;em&gt;CircularPanel&lt;/em&gt;, which layouts all its children in a circle. Let’s begin, shall we ?&lt;/p&gt;  &lt;p&gt;Go to Visual Studio 2011 For Windows 8 Developer Preview, and add new C# empty project. Here we will consume our C++ WinRT object. Now go again and add new project, this time use C++ and &lt;em&gt;WinRT Component&lt;/em&gt; template. Delete the WinRTComponent1 source and header files, and add &lt;em&gt;CircularPanel.cpp&lt;/em&gt; and &lt;em&gt;CircularPanel.h&lt;/em&gt; files. You should have something similar in Solution Explorer.&lt;/p&gt;  &lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh3.ggpht.com/-WF9NBzGabYw/ToIlTHNYWMI/AAAAAAAAB2M/K933kLArVtM/s1600-h/image21.png"&gt;&lt;img style="display:inline;" title="image" alt="image" src="http://lh4.ggpht.com/-URADiYOntc4/ToIlUHclIFI/AAAAAAAAB2Q/mXtf9C1LOpw/image_thumb13.png?imgmax=800" width="207" height="301"/&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Time to fill in some code! Open up &lt;em&gt;CircularPanel.h&lt;/em&gt; file and paste in this code.&lt;/p&gt;  &lt;pre class="brush: c-sharp"&gt;#pragma once&lt;br /&gt;&lt;br /&gt;using namespace Windows::Foundation;&lt;br /&gt;&lt;br /&gt;namespace WinRT&lt;br /&gt;{&lt;br /&gt;	namespace Controls&lt;br /&gt;	{&lt;br /&gt;		public ref class CircularPanel sealed : public Windows::UI::Xaml::Controls::Panel&lt;br /&gt;		{&lt;br /&gt;		private:&lt;br /&gt;			float _maxChildHeight;&lt;br /&gt;			float _maxChildWidth;&lt;br /&gt;&lt;br /&gt;		public:&lt;br /&gt;			CircularPanel ();&lt;br /&gt;			~CircularPanel ();&lt;br /&gt;&lt;br /&gt;		protected:&lt;br /&gt;			virtual Size ArrangeOverride(Size finalSize) override;&lt;br /&gt;&lt;br /&gt;			virtual Size MeasureOverride(Size availableSize) override; &lt;br /&gt;		};&lt;br /&gt;	}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;As you can see no rocket science there. We define our &lt;em&gt;CircularPanel&lt;/em&gt; class as &lt;strong&gt;ref&lt;/strong&gt; so that it will act as a reference type, and we derive it from &lt;em&gt;Windows.UI.Xaml.Controls.Panel&lt;/em&gt; class. Please note we declare &lt;em&gt;MeasureOverride&lt;/em&gt; and &lt;em&gt;ArrangeOverride&lt;/em&gt; methods that we will override to provide panel’s functionality. Now let’s go to the pane source.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;// CircularPanel.cpp&lt;br /&gt;&lt;br /&gt;#include &amp;quot;pch.h&amp;quot;&lt;br /&gt;#include &amp;quot;CircularPanel.h&amp;quot;&lt;br /&gt;#include &amp;quot;math.h&amp;quot;&lt;br /&gt;&lt;br /&gt;#define PI 3.1415926&lt;br /&gt;&lt;br /&gt;using namespace WinRT::Controls;&lt;br /&gt;using namespace Windows::UI::Xaml;&lt;br /&gt;using namespace Windows::UI::Xaml::Controls;&lt;br /&gt;&lt;br /&gt;float Max(float x, float y)&lt;br /&gt;{&lt;br /&gt;	if (x &amp;gt; y) return x;&lt;br /&gt;&lt;br /&gt;	return y;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;float Min(float x, float y)&lt;br /&gt;{&lt;br /&gt;	if (x &amp;gt; y) return y;&lt;br /&gt;&lt;br /&gt;	return x;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CircularPanel::CircularPanel ()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CircularPanel::~CircularPanel ()&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Size CircularPanel::ArrangeOverride(Size finalSize)&lt;br /&gt;{&lt;br /&gt;	Point centerPoint = Point();&lt;br /&gt;	centerPoint.X = finalSize.Width / 2;&lt;br /&gt;	centerPoint.Y = finalSize.Height / 2;&lt;br /&gt;&lt;br /&gt;	float radius = Min(centerPoint.X, centerPoint.Y) - (_maxChildWidth + _maxChildHeight) / 4;&lt;br /&gt;	float degreesPerChild = 360.0 / Children-&amp;gt;Size;&lt;br /&gt;	float currentDegree = 0;&lt;br /&gt;	&lt;br /&gt;	for (int i = 0; i &amp;lt; Children-&amp;gt;Size; i++)&lt;br /&gt;	{&lt;br /&gt;		UIElement^ element = Children-&amp;gt;GetAt(i);&lt;br /&gt;		float x = centerPoint.X + radius * cos(currentDegree * PI / 180);&lt;br /&gt;		float y = centerPoint.Y + radius * sin(currentDegree * PI / 180);&lt;br /&gt;				&lt;br /&gt;		Rect rect = Rect();&lt;br /&gt;		rect.X = x - element-&amp;gt;DesiredSize.Width / 2;&lt;br /&gt;		rect.Y = y - element-&amp;gt;DesiredSize.Height / 2;&lt;br /&gt;		rect.Width = element-&amp;gt;DesiredSize.Width;&lt;br /&gt;		rect.Height = element-&amp;gt;DesiredSize.Height;&lt;br /&gt;&lt;br /&gt;		// Arrange child element&lt;br /&gt;        element-&amp;gt;Arrange(rect);&lt;br /&gt;&lt;br /&gt;        currentDegree += degreesPerChild;&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	return finalSize;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Size CircularPanel::MeasureOverride(Size availableSize)&lt;br /&gt;{&lt;br /&gt;	for (int i = 0; i &amp;lt; Children-&amp;gt;Size; i++)&lt;br /&gt;	{&lt;br /&gt;		UIElement^ element = Children-&amp;gt;GetAt(i);&lt;br /&gt;		element-&amp;gt;Measure(availableSize);&lt;br /&gt;&lt;br /&gt;		_maxChildWidth = Max(_maxChildWidth, element-&amp;gt;DesiredSize.Width);&lt;br /&gt;		_maxChildHeight = Max(_maxChildHeight, element-&amp;gt;DesiredSize.Height);&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	return availableSize;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;There is a little bit of math involved, but rather easy stuff. I don't want to discuss the code itself, just note the syntax. For example, we reference &lt;em&gt;reference types&lt;/em&gt; with ^ (like UIElement^). Children collection doesn’t have Count property but Size field instead. Yeah, we’re in C++ world! &lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now its time to tell our C# app about our native WinRT project. And this is were troubles start ;) Normally, we would go to &lt;em&gt;Add Reference&lt;/em&gt; dialog and add it from Solution projects (no need to manually pick up the assembly), but this feature seems not working right now, although some say it is possible to add C++ WinRT project from &lt;em&gt;Add Reference&lt;/em&gt; dialog, just clean the native project before. Didn’t work for me, but who knows, maybe will work for you! So instead go to Add Reference dialog and hit the Browse button. Navigate to the root folder of your solution, go to Debug and select the &lt;em&gt;YourNativeProjectName.winmd &lt;/em&gt;file. This is quite interesting step – we reference a native dll using its Windows metadata file. So when you go ahead and compile the solution, you will see… a build error! At least on x64 bit machine.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-qhHEZBTma0E/ToIlWaZNoEI/AAAAAAAAB2U/lD2DtFEswlY/s1600-h/image5.png"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://lh5.ggpht.com/-ZkJgomiiuEw/ToIlYbOJUdI/AAAAAAAAB2Y/ceaW1exVMOk/image_thumb3.png?imgmax=800" width="658" height="249"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I’m not sure if you get exactly the same error, although you should. So the problem is that our native component is targeting Win32 platform, which is x86, but we reference it from Any CPU C# project. This won’t work. Go to &lt;em&gt;Configuration Manager&lt;/em&gt; and change C# project to target x86.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh5.ggpht.com/-bghhkJnU2XI/ToIlaKkOdhI/AAAAAAAAB2c/5aoLp5i4KAA/s1600-h/image10.png"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://lh6.ggpht.com/-U8qcN2c39NI/ToIlbStK9JI/AAAAAAAAB2g/Hh98lOj1ox4/image_thumb6.png?imgmax=800" width="458" height="296"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So now if you go ahead and compile, you will get another error.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://lh4.ggpht.com/-Ic5JikWZX_k/ToIlcY3Im0I/AAAAAAAAB2k/TjuOY9a4p9o/s1600-h/image16.png"&gt;&lt;img style="display:block;float:none;margin-left:auto;margin-right:auto;" title="image" alt="image" src="http://lh3.ggpht.com/-G-d53QMumoM/ToIld-tdMLI/AAAAAAAAB2o/g8ZVd68IBH4/image_thumb10.png?imgmax=800" width="672" height="110"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This one is also easy to fix. So our component uses Platform.IDisposable, which needs to be referenced. So go back to Add Reference dialog and add Microsoft.VCLib dependency. Now the compilation should succeed.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So since the compilation succeeded, let’s actually make use of our WinRT object. But there is yet another gotcha! For unknown reason, I couldn’t get this panel to work in XAML. I got compile error saying this component is unknown. Referencing it from code worked, however.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c-sharp"&gt;partial class MainPage&lt;br /&gt;{&lt;br /&gt;    public MainPage()&lt;br /&gt;    {&lt;br /&gt;        InitializeComponent();&lt;br /&gt;&lt;br /&gt;        Loaded += new RoutedEventHandler(MainPage_Loaded);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void MainPage_Loaded(object sender, RoutedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        CircularPanel panel = new CircularPanel();&lt;br /&gt;&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;1&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;2&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;3&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;4&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;5&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;6&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;7&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;8&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;        panel.Children.Add(new Button() { Content = &amp;quot;9&amp;quot;, Width = 100, Height = 100 });&lt;br /&gt;&lt;br /&gt;        LayoutRoot.Children.Add(panel);&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;When you run the app, you should see a couple of buttons arranged in a circle :)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Microsoft did pretty good job with latest Win8. The new metro style apps, though meant for tablets, are truly great. When it comes to development, the Developer Preview is still pretty rough on the edges, but its about a good time to start playing with it, and upgrading skills. When it comes to WinRT development, it feels like WPF/SL.The base concepts like dependency properties, routed events, XAML, it’s all the same! This is a big strength of this platform. Well done MS! &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Posts worth reading&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://dougseven.com/2011/09/15/a-bad-picture-is-worth-a-thousand-long-discussions/"&gt;A bad picture is worth a thousand long discussions&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://blog.galasoft.ch/archive/2011/09/17/my-thoughts-about-build-windows-8-winrt-xaml-and-silverlight.aspx"&gt;My thoughts about Build, Windows 8, WinRT, XAML and Silverlight&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://kodierer.blogspot.com/2011/09/welcome-to-zombieland-metro-style-land.html"&gt;Welcome to Zombieland, the Metro Style Land of WinRT and the Undead&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://wildermuth.com/2011/9/20/Win8_Metro_Apps_and_Silverlight"&gt;Win8, Metro Apps and Silverlight&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/891889700878195825-36906518584096243?l=pwlodek.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/02UY5Howjj8" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (Piotr Włodek)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-891889700878195825.post-36906518584096243</guid>
         <pubDate>Tue, 27 Sep 2011 19:35:00 +0000</pubDate>
         <media:thumbnail height="72" url="http://lh4.ggpht.com/-22nr0gfe-es/ToIlLXkEYDI/AAAAAAAAB2A/nbYm3StzlSQ/s72-c/Metro-style-apps_thumb4.jpg?imgmax=800" width="72" />
      <feedburner:origLink>http://pwlodek.blogspot.com/2011/09/build-your-first-winrt-component.html</feedburner:origLink></item>
      <item>
         <title>Jak (wg mnie) uczyć się na studiach?</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/GE-pv5ZL8B8/</link>
         <description>Sześć semestrów studiowania już za mną &amp;#8211; to znaczy, że jestem już za połową. Dużo kolokwiów i egzaminów udało mi się już zaliczyć, zarywając przy tym jeszcze więcej nocy. To wszystko znaczy, że pewne doświadczenie w studiowaniu już mam i &amp;#8230;&lt;p class="read-more"&gt;&lt;a rel="nofollow" target="_blank" href="http://lukaszsowa.pl/2011/09/jak-wg-mnie-uczyc-sie-na-studiach/"&gt;Read more &amp;#187;&lt;/a&gt;&lt;/p&gt;</description>
         <guid isPermaLink="false">http://lukaszsowa.pl/?p=645</guid>
         <pubDate>Tue, 27 Sep 2011 14:56:34 +0000</pubDate>
         <content:encoded><![CDATA[<p>Sześć semestrów studiowania już za mną &#8211; to znaczy, że jestem już za połową. Dużo kolokwiów i egzaminów udało mi się już zaliczyć, zarywając przy tym jeszcze więcej nocy. To wszystko znaczy, że pewne doświadczenie w studiowaniu już mam i wydaje mi się, że już niewiele rzeczy jest w stanie mnie na studiach zaskoczyć ;). Wiem, że zagląda tu sporo studenckiej braci, dlatego postanowiłem dać kilka porad młodszym rangą od siebie :).</p>
<h2>Semestry początkowe, czyli kurowa wszystkich nauk</h2>
<p>Na chyba każdej uczelni technicznej pierwsze semestry składają się głównie z matematyki. Algebra, analiza, logika, statystyka &#8211; to standard. Semestry te są też podobno najtrudniejsze i na nich odpada najwięcej osób. Na mojej kochanej Uczelni z matematyki dawano nieobowiązkowe zestawy zadań, które później robione były na ćwiczeniach. Jak się okazało, najskuteczniejszym podejściem do sprawy było po prostu robienie ich samodzielnie wcześniej. Owszem, zabierało to dużo czasu: dzień przed ćwiczeniami widywałem wschody słońca, przy piwku i zeszycie z całeczkami; owszem było to nudne, a czasem wręcz niesamowicie irytowało; ale owszem &#8211; dawało to wybitne wyniki: dzień przed kolokwium wystarczyło przejrzeć wykonaną wcześniej pracę, a samo kolokwium wydawało się dziecinnie proste. Do matematyki podejście jest więc proste: ćwiczyć, ćwiczyć i jeszcze raz klepać schematy &#8211; a zaliczenie przyjdzie bez problemu.</p>
<p>Warto jeszcze wspomnieć dwa słowa o wykładach i ćwiczeniach. Na wykładach bardzo często dyktowana jest książka (z dokładnością do takich samych przykładów). Można więc pokusić się o absencje, jednak wtedy trzeba taką książkę załatwić, albo wziąć od kogoś notatki. Ja mimo wszystko uczęszczałem na wykłady, głównie dlatego że najmilej czyta mi się swoje własne pismo i żartobliwe rysunki :P. Co do ćwiczeń, to warto chodzić &#8211; głównie po to, żeby zweryfikować swoje rozwiązania i załapać punkty za aktywność.</p>
<h2>Semestry dalsze, czyli pozostałe dobrodziejstwa inwentarza</h2>
<p>Pozostałe przedmioty na studiach (pamiętajmy, że ciągle mówimy o informatyce) można podzielić na takie, które wymagają wiedzy (np. architektura komputerów, systemy operacyjne, grafika komputerowa) i takie które wymagają klepania schematów (np. teoria obwodów, teoria informacji, automatyka, optymalizacja). Co do drugiej (gorszej, nota bene) kategorii strategia jest taka sama jak dla matematyki &#8211; trzeba się po prostu tych schematów nauczyć, a później na kolokwium/egzaminie wyklepać. Tutaj niebywale przydaje się bank kolokwiów i egzaminów z ostatnich lat do poćwiczenia. Poza tym, nie trzeba chyba wspominać, że wiele zadań się po prostu powtarza :). Nauka schematów jest żmudna, ale nie jest trudna, dlatego też chodzenie na wykłady z przedmiotów &#8222;schematycznych&#8221; jest raczej zbędne &#8211; chyba że ktoś naprawdę lubi patrzeć jak się oblicza kolejną całkę na tablicy.</p>
<p>Dosyć już jednak narzekania, przejdźmy do przedmiotów wymagających wiedzy, czyli bardziej złożonej materii. W trakcie 6 semestrów nauki udało mi się wypróbować dwie strategie &#8211; opiszę więc każdą z nich.</p>
<h3>Noc przed, zasada indukcji, od zera do bohatera</h3>
<p>Strategia ta jest bardzo prosta. Zakłada ona, że da się wszystkiego nauczyć na egzamin/kolokwium w nocy przed takowym. Zwykle nie ma wtedy mowy o spaniu, trzeba mieć dużo samozaparcia i wytrwale siedzieć i czytać. Strategia ta działa i jest praktykowana przez wiele osób &#8211; z sukcesami. Ma ona jeden szkopuł &#8211; niestety trzeba mieć pewną, podstawową wiedzę wyniesioną z wykładów (albo z książek, tudzież doświadczenia). Dla przykładu uczenie się algorytmów &#8222;od zera&#8221; w 8 godzin jest zbyt męczące psychicznie = niemożliwe. Z drugiej strony, mi z podstawami sztucznej inteligencji się udało &#8211; z zerową wiedzą wyniesioną z wykładu ;). Skuteczność tej metody zależy więc od materii i osobistych predyspozycji.</p>
<p>Zastanówmy się teraz nad czymś takim: &#8222;a co jeśli jednego dnia mam n kolokwiów?&#8221; (n &gt; 1). Słynna zasada indukcji studenta mówi, że jeśli student jest w stanie nauczyć się do n kolokwiów w nocy przed, to jest też w stanie nauczyć się do n+1 kolokwiów. Dlatego jeśli jesteś w stanie przygotować się do kolosa na noc przed, to z dwoma, trzema&#8230; też nie będziesz miał problemów :). Tutaj jednak warto wiedzieć o <a rel="nofollow" target="_blank" href="http://pl.wikipedia.org/wiki/Zasada_Pareto">zasadzie Pareto</a>. Noc może nie starczyć, aby nauczyć się na 100%, jednak pewien (poniekąd 20%) wkład w każdy z n podproblemów da nam wysoki (poniekad 80%) wynik.</p>
<p>Co natomiast robić, jeśli na wykładach nie pojawialiśmy się w ogóle, a kolokwium/egzamin zbliża się nieubłaganie? Cóż, innego wyjścia nie ma, jak tylko kuć wytrwale nie przez jedną, a np. przez trzy kolejne noce. &#8222;Od zera do bohatera&#8221; w 3 dni wydaje się być osiągalne, niezależnie od poziomu skomplikowania materii. Może to być jednak wyjątkowo wyczerpujące i niemiłe. Spróbowałem raz &#8211; udało się, ale rzeczywiście było niemiło.</p>
<h3>Systematyczność</h3>
<p>Systematyczność &#8211; tego słowa nienawidzą wszyscy uczniowe. Nauczyciele nieustannie, od lat powtarzają &#8211; ucz się systematycznie, a wyniki przyjdą same. Po 5 semestrach wykorzystywania zasady &#8222;noc przed&#8221;, na 6 semestrze postanowiłem spróbować (eksperymentalnie) uczyć się systematycznie <strong>każdego</strong> przedmiotu. Nie ze wszystkimi się udało, bo niektóre były zbyt ohydne, ale jednak z większością tak :). Efekty? Znakomite. Wyniki oscylujące w okolicy 100% były normą. Koszt? Ogromny. Wymagało to wytrwałego chodzenia na wykłady i codziennej powtórki (około dwugodzinnej) tego, co udało mi się tam nauczyć. Dostrzegłem też pewien pozytywny efekt uboczny: w końcu czułem, że do przedmiotów, które lubie przykładam się w stopniu zadawalającym.</p>
<h2>Aurea mediocritas</h2>
<p>&#8222;Jak więc żyć, drogi Łukaszu?&#8221; słyszę pytania z tłumu. Już stoicy znali na nie odpowiedź: <strong>złoty środek</strong>. Dla przedmiotów ze schematami należy uczyć się schematów &#8211; najlepiej tak, aby mechanicznie je odtwarzać, gdy ktoś o nie pyta. Dla nudnych, nieciekawych przedmiotów wymagających wiedzy warto stosować taktykę &#8222;olewczą&#8221;, czyli uczyć się na noc przed. Do przedmiotów interesujących i lubianych najlepiej uczyć się systematycznie.</p>
<p>W ten sposób pielęgnujemy swoje pasje i zainteresowania i zaliczamy kolejne przedmioty, utrzymując przy tym stan frustracji na rozsądnym poziomie.</p>
<h2>Disclaimer</h2>
<p>Przedstawione powyżej metody działały dla mnie znakomicie. Nie tylko pozwalały gładko zaliczać kolejne przedmioty, ale również dawały dobre wyniki (jeśli mierzyć je wysokością oceny). Warto jednak pamiętać, że nie każdy ma taki sam styl nauki. Niektórzy nie są wstanie przesiedzieć nocy nad książką, innym wystarczy tylko chwilowe spojrzenie na coś i już to potrafią. Do tego, moje doświadczenia opieram wyłącznie na moich studiach, które mogą być specyficzne, ze względu na kierunek czy wydział/uczelnię. Należy więc wypracować indywidualny tryb pracy, a powyższe metody potraktować jako pewną możliwość. Sukcesu więc nie gwarantuję, jednak z całego serca życzę :).</p>
<div style="background-color:transparent;text-align:left;display:none;background-position:!important;padding:0px !important;margin:0px !important;">
<div style="max-width:300px !important;color:#fafafa;border-color:#000000;border-width:0px !important;background-color:#363636;font-size:16px !important;padding:8px !important;overflow:visible;text-align:left;"></div>
<p><img style="cursor:pointer;padding:3px 5px 0 !important;margin:0 !important;" src="http://www.google.com/uds/css/small-logo.png" alt=""/></div><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/GE-pv5ZL8B8" height="1" width="1"/>]]></content:encoded>
      <feedburner:origLink>http://lukaszsowa.pl/2011/09/jak-wg-mnie-uczyc-sie-na-studiach/</feedburner:origLink></item>
      <item>
         <title>Zagadka</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/WzfcfWVSDYQ/</link>
         <description>Pisząc kolejny projekt, miałem sobie oto taki kod: Nie wydaje mi się bardzo skomplikowany. Powinno wystarczyć, gdy zaznaczę, że wysyła on jedną &amp;#8222;wiadomość&amp;#8221; przez sieć – ot, 5 pierwszych bajtów to nagłówek(MessageSizeType – unsigned, MessageCatLengthType – unsigned char) a reszta dane. Oczywiście MUSZĄ być one dostarczone wszystkie, w takiej kolejności w jakiej są, więc wszystko [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/WzfcfWVSDYQ" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=369</guid>
         <pubDate>Fri, 23 Sep 2011 22:07:12 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2011/09/zagadka/</feedburner:origLink></item>
      <item>
         <title>Silver badge for Magic Hearts!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/r46JzNHHQUo/silver-badge-for-magic-hearts.html</link>
         <description>&lt;div style="text-align:justify;"&gt;As you already know Magic Hearts was reviewed some time ago by AndroidPit team. And now I was informed that game got silver badge (click badge to see the review)!&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear:both;text-align:center;"&gt;&lt;a rel="nofollow" target="_blank" href="http://www.androidpit.com/en/android/tests/test/392408/Magic-Hearts-Break-a-few-hearts-why-dontcha" style="margin-left:1em;margin-right:1em;"&gt;&lt;img alt="AndroidPIT Android Market" height="137" src="http://st03.androidpit.info/img/common/report_silver.png" width="123"/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-2137751208305888519?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/r46JzNHHQUo" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-2137751208305888519</guid>
         <pubDate>Wed, 21 Sep 2011 15:43:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/09/silver-badge-for-magic-hearts.html</feedburner:origLink></item>
      <item>
         <title>Przyszłość Silverlight i Microsoft BUILD</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/-8X81MybR8w/przyszosc-silverlight-i-microsoft-build.html</link>
         <description>Przez ostatnie kilka tygodni (miesięcy), społeczność wrzała z powodu pogłosek na temat mizernej przyszłości technologii Silverlight.&lt;br /&gt;&lt;br /&gt;Przyznam szczerze, że sam się lekko przestraszyłem ponieważ Silverlight okazał się dla mnie tym czymś w czym czuję się naprawdę dobrze, a perspektywa nie trafionej inwestycji w tą technologię była dla mnie co najmniej deprymująca.&lt;br /&gt;&lt;br /&gt;Z lekkim przerażeniem czekałem na konferencję Microsoft BUILD na której miało okazać się czy firma z Redmond idzie w kierunku HTML5, CSS3 zapominając o starszych technologiach, czy też w całym ekosystemie Windows 8 znajdzie się miejsce dla Silverlight lub też bardziej ogólnie - technologii XAML-o podobnych. &lt;br /&gt;&lt;br /&gt;Pierwszy dzień konferencji Microsoft BUILD na szczęście rozwiał moją niepewność dzięki czemu nadal będę mógł zgłębiać kolejne obszary Silverlight'a, które zapewne poszerzą się o dodatkowe funkcjonalności wraz z wyjściem wersji 5, jak również samego Windows 8.&lt;br /&gt;&lt;br /&gt;Chętnych zapraszam do przeczytania artykułu:&lt;br /&gt;&lt;br /&gt;"Microsoft to developers: Metro is your future" autorstwa Mary Jo Foley&lt;br /&gt;(&lt;a rel="nofollow" target="_blank" href="http://www.zdnet.com/blog/microsoft/microsoft-to-developers-metro-is-your-future/10611?tag=content;feature-roto"&gt;http://www.zdnet.com/blog/microsoft/microsoft-to-developers-metro-is-your-future/10611?tag=content;feature-roto&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Pod poniższym linkiem znajdziecie wykaz prezentacji, których wspólnym mianownikiem jest XAML&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://timheuer.com/blog/archive/2011/09/13/xaml-sessions-at-build.aspx"&gt;http://timheuer.com/blog/archive/2011/09/13/xaml-sessions-at-build.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Samą konferencję Microsoft BUILD możecie śledzić pod adresem:&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://www.buildwindows.com/"&gt;http://www.buildwindows.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1951143656287245393-8939323865542278561?l=devspark.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/-8X81MybR8w" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (Lukas)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-1951143656287245393.post-8939323865542278561</guid>
         <pubDate>Wed, 14 Sep 2011 06:34:00 +0000</pubDate>
      <feedburner:origLink>http://devspark.blogspot.com/2011/09/przyszosc-silverlight-i-microsoft-build.html</feedburner:origLink></item>
      <item>
         <title>Szybsze pisanie Debug.Assert() dzięki Expression</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/v7PCJvVx72o/szybsze-pisanie-debug-assert-dzieki-expression</link>
         <description>&lt;p&gt;W projekcie nad kt&amp;oacute;rym aktualnie pracuję pojawia się bardzo dużo asercji w postaci:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;internal class Foo
{
    public void Bar(int number)
    {
        Debug.Assert(number &amp;lt; 0, "number &amp;gt;= 0");

        //...
    }
}
&lt;/pre&gt;
&lt;p&gt;W przypadku kiedy warunek nie jest spełniony na ekranie wyświetlany jest komunikat:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Szybsze-pisanie.Assert-dziki-ExpressionT_144DF/image_thumb11_2.png"&gt;&lt;img height="332" width="304" src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Szybsze-pisanie.Assert-dziki-ExpressionT_144DF/image_thumb11_thumb.png" alt="image_thumb11" border="0" title="image_thumb11" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sprawa jasna. O ile samo wywołanie metody &lt;em&gt;Debug.Assert()&lt;/em&gt; nie jest problematyczne. (przecież istnieje coś takiego jak Intellisense!), to problemem staje się wypełnianie argumentu &lt;em&gt;message &lt;/em&gt;(&amp;ldquo;number &amp;gt;= 0&amp;rdquo;), zwłaszcza gdy robi się to kilkakrotnie dla każdej oprogramowywanej metody. Istnieje wersja metody &lt;em&gt;Assert&lt;/em&gt; bez parametru &lt;em&gt;message &lt;/em&gt;jednak budowanie asercji bez &lt;em&gt;wiadomości&lt;/em&gt; powoduje, że ten sam komunikat jest mniej czytelny (nie ma tekstu number &amp;gt;= 0).&lt;/p&gt;
&lt;p&gt;Rozwiązaniem mojego problemu okazał się mechanizm &lt;em&gt;expression trees,&lt;/em&gt; czyli zamiana kodu na dane. Po lekturze MSDN doszedłem do wniosku, że moja, lepsza wersja Debug.Assert() będzie miała postać:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;Check.For(() =&amp;gt; number &amp;lt; 0);
&lt;/pre&gt;
&lt;p&gt;Jeżeli warunek nie zostanie spełniony na ekranie wyświetli się komunikat:&lt;/p&gt;
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Szybsze-pisanie.Assert-dziki-ExpressionT_144DF/image_thumb12_2.png"&gt;&lt;img height="380" width="308" src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Szybsze-pisanie.Assert-dziki-ExpressionT_144DF/image_thumb12_thumb.png" alt="image_thumb12" border="0" title="image_thumb12" style="background-image:none;margin:0px;padding-left:0px;padding-right:0px;display:inline;padding-top:0px;border:0px;"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dzięki takiemu rozwiązaniu możliwe jest korzystanie z dobrodziejstw Intellisense. Jednocześnie nie trzeba martwić się o nazwy parametr&amp;oacute;w po refaktoryzacji kodu/interfejsu metody. Minusem jest to, że komunikat nie jest identyczny z tym z pierwszego przykładu. Wymagałoby to dłuższej zabawy z &lt;em&gt;expression trees&lt;/em&gt; , na kt&amp;oacute;rą w tym momencie nie miałem czasu i wiedzy. Daje on jednak wystarczającą ilość informacji (tekst!) do szybkiego zidentyfikowania, kt&amp;oacute;ra linia kodu spowodowała wyświetlenie się błędu.&lt;/p&gt;
&lt;p&gt;Kod klasy &lt;em&gt;Check&lt;/em&gt;:&lt;/p&gt;
&lt;pre class="prettyprint"&gt;public static class Check
{
    [System.Diagnostics.Conditional("DEBUG")]
    public static void For(Expression&amp;lt;Func&amp;lt;bool&amp;gt;&amp;gt; exp)
    {
        var result = exp.Compile().Invoke();
        if (!result)
        {
            var stringExpr = ExtractStringExpression(exp.Body.ToString());
            System.Diagnostics.Debug.Assert(false, string.Format("{0} not satisfied.", stringExpr));
        }
    }

    [System.Diagnostics.Conditional("DEBUG")]
    public static void For(Expression&amp;lt;Func&amp;lt;bool&amp;gt;&amp;gt; exp, string message)
    {
        var result = exp.Compile().Invoke();
        if (!result)
        {
            System.Diagnostics.Debug.Assert(false, message);
        }
    }

    private static string ExtractStringExpression(string stringExpr)
    {
        var s = Regex.Replace(stringExpr, @"value&amp;#92;(.+&amp;#92;)&amp;#92;.", string.Empty, RegexOptions.Compiled);
        s = s.Trim('(', ')');
        return s;
    }
}&lt;/pre&gt;
&lt;p&gt;Jako dodatek dorzuciłem przeciążenie metody &lt;em&gt;For&lt;/em&gt; przyjmującą parametr &lt;em&gt;message&lt;/em&gt; jak w starym rozwiązaniu. Tak na wszelki wypadek &lt;img src="http://jdubrownik.com/Media/Default/Windows-Live-Writer/Szybsze-pisanie.Assert-dziki-ExpressionT_144DF/wlEmoticon-smile_2.png" alt="U&amp;#x00015b;miech" class="wlEmoticon wlEmoticon-smile" style="border-style:none;"/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=YlC86zXQY8s:d9c8Xh2O0XY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/a&gt; &lt;a rel="nofollow" target="_blank" href="http://feeds.feedburner.com/~ff/netcodingblog?a=YlC86zXQY8s:d9c8Xh2O0XY:-BTjWOF_DHI"&gt;&lt;img src="http://feeds.feedburner.com/~ff/netcodingblog?i=YlC86zXQY8s:d9c8Xh2O0XY:-BTjWOF_DHI" border="0"&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/netcodingblog/~4/YlC86zXQY8s" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/v7PCJvVx72o" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://jdubrownik.com:80/szybsze-pisanie-debug-assert-dzieki-expression</guid>
         <pubDate>Sun, 11 Sep 2011 21:10:52 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/netcodingblog/~3/YlC86zXQY8s/szybsze-pisanie-debug-assert-dzieki-expression</feedburner:origLink></item>
      <item>
         <title>New FLOOD - a lot of changes</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/AfkRHBeKxos/new-flood-lot-of-changes.html</link>
         <description>&lt;div style="text-align:justify;"&gt;I have just released new &lt;a rel="nofollow" target="_blank" href="http://kasurdev.blogspot.com/2011/03/flood.html"&gt;FLOOD&lt;/a&gt; game (&lt;a rel="nofollow"&gt;click here to download FLOOD from Android Market&lt;/a&gt;). This release is the special one. I have changed main game logic. New flood algorithms are much more flexible. What does it mean for you, gamer? It means more and more levels. Previously it was only 47 levels (not too much, I know). But now it is.. no, I won't tell you that. You will have to discover it by yourself :) Some levels are still very easy, some are medium, but some may be extremely difficult.&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;There are still a lot of things to do, but I decided that it will be very helpful to get some feedback from you (thanks in advance :)).&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;So, happy playing and I hope that you will enjoy new FLOOD gameplay :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-3695250295563056070?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/AfkRHBeKxos" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-3695250295563056070</guid>
         <pubDate>Fri, 09 Sep 2011 22:41:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/09/new-flood-lot-of-changes.html</feedburner:origLink></item>
      <item>
         <title>Non-blocking sockets w Javie</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/E8TlltPm2bo/</link>
         <description>Ostatnimi czasy dość dużo siedzę w Javie, programując na Androida(Kingdoms Clash.NET zostało niestety porzucone, ale o tym kiedy indziej (może)). Rozwijam swój stary projekt(w końcu!), który od początku miał być dość mocno związany z platformami mobilnymi. Mam tylko telefon z Androidem, więc na nim się skupiłem. Java nie jest moim ulubionym językiem, ale niestety zostałem [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/E8TlltPm2bo" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=361</guid>
         <pubDate>Fri, 09 Sep 2011 21:47:13 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2011/09/non-blocking-sockets-w-javie/</feedburner:origLink></item>
      <item>
         <title>I'm back :)</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/rxijxoB5guA/im-back.html</link>
         <description>&lt;div&gt;I haven't been here for a longer time... :) Mountains were great - I'm fresh, rested and I'm finally back (who knows, maybe I will post some pictures :P). But now it is the highest time to finish my current projects and start working on new ideas. So, stay tuned :)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-6122532984720162606?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/rxijxoB5guA" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-6122532984720162606</guid>
         <pubDate>Fri, 09 Sep 2011 21:14:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/09/im-back.html</feedburner:origLink></item>
      <item>
         <title>Content Providers – dostęp do danych przy pomocy dostawców treści</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/4oyNbRTyT34/content-providers-dostep-do-danych-przy.html</link>
         <description>Dostawcy treści w Androidzie to abstrakcyjna warstwa ułatwiająca dostęp 
do danych zapisanych w urządzeniu. Content Providers (ang.) dostarczają 
nam interfejsu zarządzania danymi opartego o adresy URI (które 
wykorzystują schemat content://). Dzięki nim w łatwy sposób możemy 
oddzielić warstwę aplikacji od warstwy dostępu do danych. Co więcej, 
mechanizm ten pozwala nam na dzielenie się 
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/GJm6U_c2SvfyjTMkJ06nGE64OGg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJm6U_c2SvfyjTMkJ06nGE64OGg/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/GJm6U_c2SvfyjTMkJ06nGE64OGg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GJm6U_c2SvfyjTMkJ06nGE64OGg/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FrogersDevBlog/~4/t0MdtAiwTiI" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/4oyNbRTyT34" height="1" width="1"/&gt;</description>
         <author>Mirek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-4013372024059971786.post-3619129877711047231</guid>
         <pubDate>Tue, 30 Aug 2011 07:04:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/FrogersDevBlog/~3/t0MdtAiwTiI/content-providers-dostep-do-danych-przy.html</feedburner:origLink></item>
      <item>
         <title>AsyncTask - asynchroniczne wykonywanie czasochłonnych zadań</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/SR168SkTlOI/asynctask-asynchroniczne-wykonywanie.html</link>
         <description>Android, jak większość dzisiejszych systemów operacyjnych wspiera 
wielowątkowość. Nie każdy jednak zdaje sobie sprawę z tego, że aby z 
niej skorzystać, musimy jawnie określić jakie zadania naszej aplikacji 
mają być wykonywane asynchronicznie, tj. poza głównym wątkiem aplikacji.
 Należy bowiem pamiętać, że wszystkie komponenty naszej aplikacji - 
zarówno te widoczne (Aktywności), jak i te,
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/RWFn9nrWn5Pi0YzVYUBznRx3CB8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RWFn9nrWn5Pi0YzVYUBznRx3CB8/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/RWFn9nrWn5Pi0YzVYUBznRx3CB8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/RWFn9nrWn5Pi0YzVYUBznRx3CB8/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FrogersDevBlog/~4/_GUW767HqLI" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/SR168SkTlOI" height="1" width="1"/&gt;</description>
         <author>Mirek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-4013372024059971786.post-5018094102039099657</guid>
         <pubDate>Fri, 19 Aug 2011 13:47:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/FrogersDevBlog/~3/_GUW767HqLI/asynctask-asynchroniczne-wykonywanie.html</feedburner:origLink></item>
      <item>
         <title>Start serwisu android4devs.pl</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/NJmXtpnIqUs/start-serwisu-android4devspl.html</link>
         <description>Jak ostatnio zapowiadałem, tak też się stało. :) W właśnie wystartował serwis android4devs.pl, który z założenia ma być serwisem przeznaczonym dla wszystkich programistów systemu Android. Co jakiś czas będą pojawiały się na nim artykuły związane z programowaniem w Androidzie. Na bieżącą będą również aktualizowane oferty pracy znalezione w sieci lub podesłane przez użytkowników lub pracodawców.

&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/_UnAbrXVC_G3tkqPS_TSJIzbNNw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UnAbrXVC_G3tkqPS_TSJIzbNNw/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/_UnAbrXVC_G3tkqPS_TSJIzbNNw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UnAbrXVC_G3tkqPS_TSJIzbNNw/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FrogersDevBlog/~4/5bK5a0EL5oA" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/NJmXtpnIqUs" height="1" width="1"/&gt;</description>
         <author>Mirek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-4013372024059971786.post-5897405896430987232</guid>
         <pubDate>Tue, 16 Aug 2011 18:59:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/FrogersDevBlog/~3/5bK5a0EL5oA/start-serwisu-android4devspl.html</feedburner:origLink></item>
      <item>
         <title>Chain Theory for BADA published!</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/rsnVcxiyEYQ/chain-theory-for-bada-published.html</link>
         <description>&lt;div style="text-align:justify;"&gt;Yupi! Chain Theory was yesterday accepted by samsung and published to the market. You can find it &lt;a rel="nofollow" target="_blank" href="http://www.samsungapps.com/topApps/topAppsDetail.as?productId=G00001268447&amp;amp;listYN=Y"&gt;here&lt;/a&gt; :) Rules are the same as in the android version. I hope you enjoy it!&lt;/div&gt;&lt;div style="text-align:justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align:justify;"&gt;Now let's port some other games ;)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-5445230764560729161?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/rsnVcxiyEYQ" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-5445230764560729161</guid>
         <pubDate>Thu, 11 Aug 2011 21:53:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/08/chain-theory-for-bada-published.html</feedburner:origLink></item>
      <item>
         <title>Kilka słów o nowym serwisie - android4devs.pl</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/KFVUY0vY9nA/kilka-sow-o-nowym-serwisie.html</link>
         <description>Minęło sporo czasu od ostatniego wpisu na tym blogu. Powodów takiego stanu było kilka, mniej lub bardziej istotnych. Od tego czasu też bardzo dużo się zmieniło. Zarówno w moim życiu prywatnym jak i programistyczno-zawodowym. Ostatecznie po próbach w kilku różnych dziedzinach (projekt w Javie EE, którą przez ostatnie pół roku poznałem na całkiem przyzwoitym poziomie, czy staż w Dreamlab Onet.pl, 
&lt;p&gt;&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/A3etaxqdkZbutGSAlLZ4lV8bwhM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A3etaxqdkZbutGSAlLZ4lV8bwhM/0/di" border="0" ismap&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a rel="nofollow" target="_blank" href="http://feedads.g.doubleclick.net/~a/A3etaxqdkZbutGSAlLZ4lV8bwhM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/A3etaxqdkZbutGSAlLZ4lV8bwhM/1/di" border="0" ismap&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/FrogersDevBlog/~4/ZCxhzYx-1xI" height="1" width="1"/&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/KFVUY0vY9nA" height="1" width="1"/&gt;</description>
         <author>Mirek</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-4013372024059971786.post-1231875948260277898</guid>
         <pubDate>Wed, 10 Aug 2011 16:38:00 +0000</pubDate>
      <feedburner:origLink>http://feedproxy.google.com/~r/FrogersDevBlog/~3/ZCxhzYx-1xI/kilka-sow-o-nowym-serwisie.html</feedburner:origLink></item>
      <item>
         <title>Zamiennik dla emulatora Androida</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/LlasrR5pmV8/</link>
         <description>Każdy, kto zetknął się z pisaniem aplikacji na Androida miał pewnie styczność z jego emulatorem. Przypuszczam, że nie było/jest to miłe doświadczenie – jest on koszmarnie wolny. Ja nauczony doświadczeniem(nikłym, bo nikłym, ale jednak) przy aktualnym moim starciu z nim(dość owocnym swoją drogą) postanowiłem nie używać go. Mam telefon z tym systemem(Hero, o którym wspominałem), [...]&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/LlasrR5pmV8" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false">http://blog.fiolek.org/?p=359</guid>
         <pubDate>Sat, 06 Aug 2011 17:08:34 +0000</pubDate>
      <feedburner:origLink>http://blog.fiolek.org/2011/08/zamiennik-dla-emulatora-androida/</feedburner:origLink></item>
      <item>
         <title>Bezrobotni absolwenci, nieumiejętni specjaliści - co będę robił po studiach?</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/i9c3ZxkIJLs/22</link>
         <description>Zainspirowany artykułem, kt&amp;#243;ry polecam:&lt;br /&gt;&lt;br /&gt;&lt;a rel="nofollow" target="_blank" href="http://forsal.pl/artykuly/525602,bezrobocie_po_studiach_uczelnie_zalewaja_rynek_niedouczonymi_absolwentami.html"&gt;http://forsal.pl/artykuly/525602,bezrobocie_po_studiach_uczelnie_zalewaja_rynek_niedouczonymi_absolwentami.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Napisałem komentarz do przedstawionej tam sytuacji:&lt;br /&gt;&lt;br /&gt;W mojej skromnej opinii za tę sytuację na pierwszym miejscu są odpowiedzialne uczelnie. Nauczany materiał jest po prostu bzdurny wobec wymagań pracodawc&amp;#243;w (wiem z włanego doświadczenia zawodowego jak i moich znajomych programist&amp;#243;w). Nie ma więc co się dziwić studentom, że są niekompetentni, że nie robią nic poza szkołą skoro są zalewani dużą ilością zajęć, kt&amp;#243;rymi rzygają, a kt&amp;#243;re zdać trzeba. Nie wystarcza po prostu czasu i siły na &amp;quot;zainteresowania&amp;quot;, jeżeli nie jest się dość upartym (lub raczej silnym).&lt;br /&gt;Drugie miejsce na liście odpowiedzialnych za ten stan rzeczy przyznałbym przedsiębiorcom. Sam miałem to szczęście, że moi pracodawcy nie bali się poświęcić czasu i pieniędzy we wprowadzenie mnie w temat, a nawet uzupełnieniu moich brak&amp;#243;w w wiedzy, kt&amp;#243;rą de facto powinienem zdobyć na uczelni. Jednak wydaje mi się, że to po prostu m&amp;#243;j fart, a nie jakaś popularna wśr&amp;#243;d pracodawc&amp;#243;w praktyka. &lt;br /&gt;Brązowy medal wg mnie zdobyli studenci. Nie można pozostawić ich bez winy, bo jak m&amp;#243;wi znane przysłowie &amp;quot;dla chcącego nic trudnego&amp;quot;. Sam jakoś potrafię łączyć studia (kt&amp;#243;rymi naprawdę gardzę, a mimo to się na nich utrzymuję), pracę i zainteresowania (chociaż na moje szczęście praca i zainteresowania bardzo się pokrywają). Uważam, że gdyby wielmożni państwo wielcy szlachcianie studenci zainteresowali się trochę jak w tej chwili wygląda rynek pracy to połowa z nich rzuciłaby studia i wzięła się do roboty, a druga połowa starałaby się to łączyć tak jak ja do momentu, w kt&amp;#243;rym uczelnie zmodernizują system nauczania. Jeżeli na studiach miałbym dostatecznie dużo zajęć parktycznych typu projekty grupowe, wykonanie realnych zadań (np. studenci politechniki wrocławskiej tak jak ja na pewno nie raz użyli niecenzuralnych sł&amp;#243;w wykorzystując portal edukacjaCL - jestem przekonany, że za nim uczelnia zdecydowała się wydać grube miliony na ten projekt, ogłosiłaby konkurs dla grup student&amp;#243;w na stworzenie takiego systemu, a w nagrodę zaliczałaby im kilka niewygodnych przedmiot&amp;#243;w prawdopodobnie system ten umożliwiałby podr&amp;#243;że międzygalaktyczne:)). Tego mi właśnie jako studentowi informatyki, kt&amp;#243;ry jest pasjonatem programowania brakuje - realnych zadań, kt&amp;#243;re mogą nas faktycznie przygotować do &amp;quot;życia&amp;quot;. Boję się jednak, że gdyby, ktoś faktycznie zorganizował akcje &amp;quot;przygotujcie nas do pracy&amp;quot; to odpowiedzialni za to ludzie zamiast zastąpić wiele rzygogennych przedmiot&amp;#243;w przydatnymi zajęciami po prostu dorzuciłoby nam większy balast... No nic to... czas czekać aż pokolenie starego systemu przestanie siedzieć na stołkach.&lt;br /&gt;&lt;br /&gt;EDIT: chciałbym jeszcze dokleić dialog, kt&amp;#243;ry wywiązał się z moim kolegą z grupy (&lt;a rel="nofollow" target="_blank" href="http://www.mfranc.com/"&gt;http://www.mfranc.com/&lt;/a&gt;), a mną na temat tego posta:&lt;br /&gt;&lt;br /&gt;&amp;lt;LaM&amp;gt; ale wg mnie mlodziez ma to w d***e[edit: poważaniu] i nawet gdyby byly studia lepsze to i tak byloby to samo ;].&lt;br /&gt;&amp;lt;TrN&amp;gt; no ale stary, to nie jest normalne żeby ludzie studiowali i pracowali jednocześniew sensie chodzi mi o to, że jak już się zmusza kogoś do poświęcenia czasu (a studia niewątpliwie go zabierają) to niech coś z tego ma poza papieremi m&amp;#243;wiąc &amp;quot;zmusza&amp;quot; nie chodzi mi, że &amp;quot;nie ma obowiązku studiowania&amp;quot;. Dzisiaj w Polsce taki niepisany obowiązek jesti generealnie też tak naprawdę nie chodzi mi o student&amp;#243;w, bo tych mało ambitnych mam w d**ie[edit:poważaniu], ale o ile bardziej przedsiębiorcy by się cieszyli, gdyby po studiach przychodzili ludzie już coś umiejący.&lt;br /&gt;&lt;br /&gt;Tak więc jeszcze słowo końcowe: Tak naprawdę średnio mnie interesuje dobro student&amp;#243;w, raczej martwię się, że kiedyś będę przedsiębiorcą i będę musiał za swoje pieniądze uzupełniać braki uczelniane. Co wcale nie przeczy temu, że o wiele bardziej cieszyłoby mnie edukowanie się gdyby polegało na robieniu ciekawych rzeczy czego i sobie, i całej rzeszy student&amp;#243;w szczerze życzę ;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/i9c3ZxkIJLs" height="1" width="1"/&gt;</description>
         <guid isPermaLink="false" />
         <pubDate>Sat, 06 Aug 2011 00:00:00 +0000</pubDate>
      <feedburner:origLink>http://trn.studentlive.pl/BlogMaker/Home/ShowComments/22</feedburner:origLink></item>
      <item>
         <title>Levels above 80 fixed</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/5D6cMs2xs_Q/levels-above-80-fixed.html</link>
         <description>&lt;div style="text-align:justify;"&gt;Today I have released new &lt;a rel="nofollow" target="_blank" href="https://market.android.com/details?id=com.kasuroid.NuclearBalls"&gt;Nuclear Balls&lt;/a&gt;. This release contains fixes (I hope so ;&amp;gt;) for levels above 80. Balls should animate now. Thank you for posting comments in the market about this issue (especially the one with the screen resolution ;)). &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8737432855819021490-9191958171142880261?l=kasurdev.blogspot.com' alt=''/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/5D6cMs2xs_Q" height="1" width="1"/&gt;</description>
         <author>noreply@blogger.com (kasur)</author>
         <guid isPermaLink="false">tag:blogger.com,1999:blog-8737432855819021490.post-9191958171142880261</guid>
         <pubDate>Fri, 05 Aug 2011 21:53:00 +0000</pubDate>
      <feedburner:origLink>http://kasurdev.blogspot.com/2011/08/levels-above-80-fixed.html</feedburner:origLink></item>
      <item>
         <title>Wzorce projektowe – Abstract Factory</title>
         <link>http://feedproxy.google.com/~r/dajsiepoznac-posts/~3/pPNyWyEyvwI/</link>
         <description>Dzisiejszym tematem będzie&amp;#8230; ABSTRACT FACTORY, czyli Metoda fabrykująca Cel: Określenie interfejsu dla tworzenia obiektu z pozostawieniem podklasom decyzji o wyborze klasy tworzonego obiektu Stosowalność: Używamy go, gdy: - Klasa nie jest w stanie przewidzieć klas obiektów, które musi tworzyć. - Klasa chce, aby jej podklasy określały obiekty, które tworzy. - Klasy delegują odpowiedzialność do jednej [...]</description>
         <guid isPermaLink="false">http://www.kamilhawdziejuk.pl/?p=974</guid>
         <pubDate>Mon, 01 Aug 2011 19:55:46 +0000</pubDate>
         <content:encoded><![CDATA[<p>Dzisiejszym tematem będzie&#8230;</p>
<p><strong>ABSTRACT FACTORY, czyli Metoda fabrykująca</strong></p>
<p><strong>Cel:</strong><br />
Określenie interfejsu dla tworzenia obiektu z pozostawieniem podklasom decyzji o wyborze klasy tworzonego obiektu</p>
<p><strong>Stosowalność:</strong><br />
Używamy go, gdy:<br />
- Klasa nie jest w stanie przewidzieć klas obiektów, które musi tworzyć.<br />
- Klasa chce, aby jej podklasy określały obiekty, które tworzy.<br />
- Klasy delegują odpowiedzialność do jednej z kilku pomocniczych podklas i chcemy zlokalizować wiedzę o tym, która z tych podklas jest aktualnym delegatem.</p>
<p><strong>Konsekwencje używania:</strong><br />
- Metody fabrykujące eliminują potrzebę umieszczania w kodzie klas specyficznych dla aplikacji.<br />
- Potencjalna wada FM – klienci mogą być zmuszeni do specjalizowania klasy Twórcy tylko po to, żeby stworzyć szczególny Konkretny Produkt.<br />
- Dostarczenie „wskazówek” podklasom<br />
- Połączenie równoległych hierarchii klas</p>
<p><strong>Diagram:</strong><br />
<img src="http://www.dofactory.com/Patterns/Diagrams/factory.gif"/></p><img src="http://feeds.feedburner.com/~r/dajsiepoznac-posts/~4/pPNyWyEyvwI" height="1" width="1"/>]]></content:encoded>
         <category>Bez kategorii</category>
      <feedburner:origLink>http://www.kamilhawdziejuk.pl/2011/08/01/wzorce-projektowe-abstract-factory/</feedburner:origLink></item>
   </channel>
</rss><!-- fe4.yql.bf1.yahoo.com compressed/chunked Thu May 31 10:55:02 UTC 2012 -->

