<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>xlab &#187; Mateusz Kubiczek</title>
	<atom:link href="http://xlab.pl/author/madmatt/feed/" rel="self" type="application/rss+xml" />
	<link>http://xlab.pl</link>
	<description>XSolve laboratory - dzielimy się tym co wiemy...</description>
	<lastBuildDate>Mon, 09 Jan 2012 15:29:06 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Lego + 8bit</title>
		<link>http://xlab.pl/lego-8bit/</link>
		<comments>http://xlab.pl/lego-8bit/#comments</comments>
		<pubDate>Tue, 04 May 2010 17:35:40 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[8bit]]></category>
		<category><![CDATA[amazing]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[computer games]]></category>
		<category><![CDATA[Lego]]></category>

		<guid isPermaLink="false">http://xlab.pl/?p=1028</guid>
		<description><![CDATA[Lego + 8bitowe gry komputerowe = 1500 godzin układania klocków = niesamowita animacja.
]]></description>
			<content:encoded><![CDATA[<p>Lego + 8bitowe gry komputerowe = 1500 godzin układania klocków = niesamowita animacja.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/4qsWFFuYZYI&#038;hl=pl_PL&#038;fs=1&#038;rel=0&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/4qsWFFuYZYI&#038;hl=pl_PL&#038;fs=1&#038;rel=0&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/lego-8bit/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Jira: jak zrobić, żeby gadget &#8222;Watched issues&#8221; pokazywał tylko nierozwiązane zadania?</title>
		<link>http://xlab.pl/jira-jak-zrobic-zeby-gadget-watched-issues-pokazywal-tylko-nierozwiazane-zadania/</link>
		<comments>http://xlab.pl/jira-jak-zrobic-zeby-gadget-watched-issues-pokazywal-tylko-nierozwiazane-zadania/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 07:28:11 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[jira]]></category>

		<guid isPermaLink="false">http://xlab.pl/?p=935</guid>
		<description><![CDATA[W Jirze dashboardowy gadget &#8222;Watched issues&#8221; pokazuje wszystkie zadania, które obserwujemy. Powoduje to, że mamy w tym widoku także zadania rozwiązane, których przeważnie nie chcemy już obserwować. Niestety nie da się tego gadgetu skonfigurować, żeby pokazywał tylko zadania nierozwiązane. ;-) Rozwiązaniem jest zrobienie własnego filtru oraz użycie gadgetu &#8222;Filter results&#8221;. Żeby to zrobić, najpierw definiujemy [...]]]></description>
			<content:encoded><![CDATA[<p>W Jirze dashboardowy gadget &#8222;Watched issues&#8221; pokazuje wszystkie zadania, które obserwujemy.<br />
Powoduje to, że mamy w tym widoku także zadania rozwiązane, których przeważnie nie chcemy już obserwować.<br />
Niestety nie da się tego gadgetu skonfigurować, żeby pokazywał tylko zadania nierozwiązane. ;-) </p>
<p>Rozwiązaniem jest zrobienie własnego filtru oraz użycie gadgetu &#8222;Filter results&#8221;.</p>
<p>Żeby to zrobić, najpierw definiujemy filtr. Wybieramy zakładkę &#8222;Issues&#8221;, a potem tryb wyszukiwania &#8222;Advanced&#8221;. Do okienka wpisujemy:<br />
<strong></p>
<blockquote><p>issue in watchedIssues() and resolution = unresolved</p></blockquote>
<p></strong></p>
<p>Zapisujemy filtr jako &#8222;Watched and unresolved&#8221;.</p>
<p>Na dashboardzie możemy teraz dodać gadget &#8222;Filter results&#8221;, gdzie jako źródło zadań wybierzemy nasz nowy filtr.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/jira-jak-zrobic-zeby-gadget-watched-issues-pokazywal-tylko-nierozwiazane-zadania/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fabiański top trendem na twitterze</title>
		<link>http://xlab.pl/fabianski-top-trendem-na-twitterze/</link>
		<comments>http://xlab.pl/fabianski-top-trendem-na-twitterze/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 20:59:20 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://xlab.pl/?p=896</guid>
		<description><![CDATA[Fabiański w top trendach na brytyjskim Twitterze, niestety nie z powodu super interwencji. Popełnił dwa duże babole w meczu Arsenalu z Porto. Babol 1 , Babol 2 Aj&#8230; Szkoda. Nawet zczubacy się poddali: &#8222;No i po wszystkim. Arsenal ma jeszcze szansę na własnym boisku, musi tylko szybko znaleźć jakiegoś bramkarza.&#8221;]]></description>
			<content:encoded><![CDATA[<p>Fabiański w top trendach na brytyjskim Twitterze, niestety nie z powodu super interwencji. Popełnił dwa duże babole w meczu <a href="http://www.zczuba.pl/zczuba/1,104504,7573507,Porto___Arsenal__czyli_1_8_finalu_Ligi_Mistrzow_Z.html">Arsenalu z Porto.</a></p>
<p style="text-align: center;"><a href="http://www.zczuba.pl/zczuba/1,104504,7573507,Porto___Arsenal__czyli_1_8_finalu_Ligi_Mistrzow_Z.html"></a><a href="http://www.zczuba.pl/zczuba/1,104504,7573507,Porto___Arsenal__czyli_1_8_finalu_Ligi_Mistrzow_Z.html"></a></p>
<p><span id="more-896"></span></p>
<p><a href="http://www.zczuba.pl/zczuba/1,104504,7573507,Porto___Arsenal__czyli_1_8_finalu_Ligi_Mistrzow_Z.html"><img class="size-full wp-image-897    aligncenter" title="Capture" src="http://xlab.pl/wp-content/uploads/2010/02/Capture.JPG" alt="Capture" width="256" height="303" /></a></p>
<p style="text-align: left;"><a href="http://www.sport.pl/sport/10,102724,7573757,Porto___Arsenal_1_0__Gol_Vareli.html">Babol 1</a> , <a href="http://www.sport.pl/sport/10,102724,7573874,Porto___Arsenal_2_1__Gol_Falcao.html">Babol 2</a></p>
<p style="text-align: center;">
<p style="text-align: left;">Aj&#8230; Szkoda. Nawet zczubacy się poddali:</p>
<p style="text-align: left;"><em>&#8222;No i po wszystkim. Arsenal ma jeszcze szansę na własnym boisku, musi tylko szybko znaleźć jakiegoś bramkarza.&#8221;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/fabianski-top-trendem-na-twitterze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Invalid memory access of location używając GWT</title>
		<link>http://xlab.pl/invalid-memory-access-of-location-uzywajac-gwt/</link>
		<comments>http://xlab.pl/invalid-memory-access-of-location-uzywajac-gwt/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 19:33:23 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Programowanie Java]]></category>
		<category><![CDATA[Google Web Toolkit]]></category>
		<category><![CDATA[GWT]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=669</guid>
		<description><![CDATA[Po zaktualizowaniu Safari do wersji 4.0.4 w systemie Mac OS możemy natrafić na bardzo nieprzyjemny błąd uruchamiając Hosted Mode GWT z Eclipse: Invalid memory access of location 00000010 eip=901a277b Odrobina googlowania podsunęła rozwiązanie: http://code.google.com/p/google-web-toolkit/issues/detail?id=4220#c22 Należy ściągnąć aktualny build WebKit pod MacOS stąd: http://nightly.webkit.org/ Otworzyć dwuklikająć plik .dmg, przeciągnąć WebKit do /Applications/ W Eclipse wybrać Run [...]]]></description>
			<content:encoded><![CDATA[<p>Po zaktualizowaniu Safari do wersji 4.0.4 w systemie Mac OS możemy natrafić na bardzo nieprzyjemny błąd uruchamiając Hosted Mode GWT z Eclipse:</p>
<blockquote><p>Invalid memory access of location 00000010 eip=901a277b</p></blockquote>
<p>Odrobina googlowania podsunęła rozwiązanie: <a href="http://code.google.com/p/google-web-toolkit/issues/detail?id=4220#c22">http://code.google.com/p/google-web-toolkit/issues/detail?id=4220#c22</a></p>
<ol>
<li>Należy ściągnąć aktualny build WebKit pod MacOS stąd: <a href=" http://nightly.webkit.org/"> http://nightly.webkit.org/</a></li>
<li>Otworzyć dwuklikająć plik .dmg, przeciągnąć WebKit do /Applications/</li>
<li>W Eclipse wybrać Run -> Run Configurations z menu.</li>
<li>Po lewej stronie wybrać naszą aplikację (pod Web Applications)</li>
<li>Wybrać zakłądkę &#8222;Environment&#8221;</li>
<li>Dodać zmienną:<br />
Name: DYLD_FRAMEWORK_PATH<br />
Value: /Applications/WebKit.app/Contents/Frameworks/10.5</li>
<li>Zapisać</li>
</ol>
<p>Problem powinien być rozwiązany.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/invalid-memory-access-of-location-uzywajac-gwt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fascynujący TED Talk o różnicach kulturowych pomiędzy Indiami a Zachodem</title>
		<link>http://xlab.pl/fascynujacy-ted-talk-o-roznicach-kulturowych-pomiedzy-indiami-a-zachodem/</link>
		<comments>http://xlab.pl/fascynujacy-ted-talk-o-roznicach-kulturowych-pomiedzy-indiami-a-zachodem/#comments</comments>
		<pubDate>Sun, 22 Nov 2009 17:37:11 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[inspirujące]]></category>
		<category><![CDATA[TED]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=666</guid>
		<description><![CDATA[Kilka dni temu ukazał się fascynujący i inspirujący wykład pana Devdutt Pattanaik na temat różnic kulturowych pomiędzy Wschodem (Indiami), a Zachodem (Europa i USA). Utrzymuje on, że różnice te wynikają z różnych mitologii obecnych w tych kulturach. Gorąco polecam, to świetny mówca i świetny temat. http://www.ted.com/talks/devdutt_pattanaik.html]]></description>
			<content:encoded><![CDATA[<p>Kilka dni temu ukazał się fascynujący i inspirujący wykład pana Devdutt Pattanaik na temat różnic kulturowych pomiędzy Wschodem (Indiami), a Zachodem (Europa i USA). Utrzymuje on, że różnice te wynikają z różnych mitologii obecnych w tych kulturach. Gorąco polecam, to świetny mówca i świetny temat.</p>
<p><a href="http://www.ted.com/talks/devdutt_pattanaik.html">http://www.ted.com/talks/devdutt_pattanaik.html</a></p>
<p><span id="more-666"></span></p>
<p><object id="streamingPlayerSWF" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="100%" height="470" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="name" value="streamingPlayerSWF" /><param name="wmode" value="opaque" /><param name="scale" value="noscale" /><param name="align" value="left" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="fms=streaming.ted.com&amp;hs=talks/dynamic/DevduttPattanaik_2009I-high.flv&amp;ms=talks/dynamic/DevduttPattanaik_2009I-medium.flv&amp;ls=talks/dynamic/DevduttPattanaik_2009I-low.flv&amp;vw=432&amp;vh=240&amp;ti=686&amp;sh=http://www.ted.com&amp;fd=Nov 2009&amp;pd=Nov 2009&amp;ch=%5B%5D&amp;embedCode=Unavailable&amp;languageCode=eng&amp;languages=%5B%7B%22LanguageCode%22%3A%22eng%22%2C%22Name%22%3A%22English%22%2C%22Description%22%3Anull%2C%22CommunityUrl%22%3Anull%2C%22CreatedAt%22%3A%222009-05-12+22%3A17%3A26%22%2C%22UpdatedAt%22%3A%222009-05-12+22%3A17%3A26%22%7D%5D&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=devdutt_pattanaik;year=2009;theme=is_there_a_god;theme=new_on_ted_com;theme=a_taste_of_tedindia;theme=unconventional_explanations;theme=not_business_as_usual;event=TEDIndia+2009;&amp;prerollAdTag=tconf.ted/talk;tile=1;sz=512x288;&amp;postrollAdTag=tconf.ted/talk;tile=2;sz=1x2;&amp;inPageAdTag=tconf.ted/talk;tile=3;sz=306x89;&amp;postrollBeaconAdTag=tconf.ted/talk;sz=1x1;&amp;subtitleSponsorAdTag=tconf.ted/subtitles;sz=198x11;&amp;subtitleActiveAdTag=tconf.ted/subtitles_active;sz=198x11;&amp;su=http://www.ted.com/talks/devdutt_pattanaik.html&amp;ga=UA-170299-1" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed id="streamingPlayerSWF" type="application/x-shockwave-flash" width="100%" height="470" flashvars="fms=streaming.ted.com&amp;hs=talks/dynamic/DevduttPattanaik_2009I-high.flv&amp;ms=talks/dynamic/DevduttPattanaik_2009I-medium.flv&amp;ls=talks/dynamic/DevduttPattanaik_2009I-low.flv&amp;vw=432&amp;vh=240&amp;ti=686&amp;sh=http://www.ted.com&amp;fd=Nov 2009&amp;pd=Nov 2009&amp;ch=%5B%5D&amp;embedCode=Unavailable&amp;languageCode=eng&amp;languages=%5B%7B%22LanguageCode%22%3A%22eng%22%2C%22Name%22%3A%22English%22%2C%22Description%22%3Anull%2C%22CommunityUrl%22%3Anull%2C%22CreatedAt%22%3A%222009-05-12+22%3A17%3A26%22%2C%22UpdatedAt%22%3A%222009-05-12+22%3A17%3A26%22%7D%5D&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=devdutt_pattanaik;year=2009;theme=is_there_a_god;theme=new_on_ted_com;theme=a_taste_of_tedindia;theme=unconventional_explanations;theme=not_business_as_usual;event=TEDIndia+2009;&amp;prerollAdTag=tconf.ted/talk;tile=1;sz=512x288;&amp;postrollAdTag=tconf.ted/talk;tile=2;sz=1x2;&amp;inPageAdTag=tconf.ted/talk;tile=3;sz=306x89;&amp;postrollBeaconAdTag=tconf.ted/talk;sz=1x1;&amp;subtitleSponsorAdTag=tconf.ted/subtitles;sz=198x11;&amp;subtitleActiveAdTag=tconf.ted/subtitles_active;sz=198x11;&amp;su=http://www.ted.com/talks/devdutt_pattanaik.html&amp;ga=UA-170299-1" bgcolor="#ffffff" allowscriptaccess="always" allowfullscreen="true" align="left" scale="noscale" wmode="opaque" name="streamingPlayerSWF"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/fascynujacy-ted-talk-o-roznicach-kulturowych-pomiedzy-indiami-a-zachodem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Udostępnianie folderów w Google Docs</title>
		<link>http://xlab.pl/udostepnianie-folderow-w-google-docs/</link>
		<comments>http://xlab.pl/udostepnianie-folderow-w-google-docs/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 08:39:06 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[Google docs]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=597</guid>
		<description><![CDATA[Nowość w Google Docs, coś, czego klientom instytucjonalnym brakowało:]]></description>
			<content:encoded><![CDATA[<p>Nowość w Google Docs, coś, czego klientom instytucjonalnym brakowało:</p>
<p><img class="aligncenter size-full wp-image-598" title="Screen shot 2009-10-13 at 10.36.23 AM" src="http://www.xlab.pl/wp-content/uploads/2009/10/Screen-shot-2009-10-13-at-10.36.23-AM.png" alt="Screen shot 2009-10-13 at 10.36.23 AM" width="496" height="202" /></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/udostepnianie-folderow-w-google-docs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pobranie parametrów metody w C# wraz z wartościami</title>
		<link>http://xlab.pl/pobranie-parametrow-metody-w-c-wraz-z-wartosciami/</link>
		<comments>http://xlab.pl/pobranie-parametrow-metody-w-c-wraz-z-wartosciami/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 15:44:32 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Programowanie .NET]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[reflection]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=558</guid>
		<description><![CDATA[Dosyć długo szukałem w jaki sposób pobrać nazwy parametrów metody wraz z ich wartościami w sposób uniwersalny. Ułatwiłoby to logowanie wszystkiego, co zachodzi w aplikacji. Wywołując metodę: public void CountPrice(int bar, string baz) { } chciałbym otrzymać w logach wpis: Method&#8217;s Foo arguments >> bar: 1, baz: zzz Najpierw spróbowałem za pomocą metody GetParameters klasy [...]]]></description>
			<content:encoded><![CDATA[<p>Dosyć długo szukałem w jaki sposób pobrać <em>nazwy</em> parametrów metody wraz z ich <em>wartościami</em> w sposób uniwersalny.</p>
<p>Ułatwiłoby to logowanie wszystkiego, co zachodzi w aplikacji. Wywołując metodę:</p>
<pre name="code" class="c-sharp">
public void CountPrice(int bar, string baz)
{

}</pre>
<p>chciałbym otrzymać w logach wpis:</p>
<blockquote><p>Method&#8217;s Foo arguments >> bar: 1, baz: zzz</p></blockquote>
<p><span id="more-558"></span></p>
<p>Najpierw spróbowałem za pomocą metody <a href="http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.getparameters.aspx"><strong>GetParameters</strong> klasy <strong>MethodInfo</strong></a>. Zwrócone obiekty typu <strong>ParameterInfo</strong> zawierają jednak tylko informacje o typach parametrów &#8211; nie mają wartości tych parametrów w czasie wykonywania kodu.</p>
<p>Moim celem było stworzenie metody, którą mógłbym użyć do pobrania sformatowanej informacji o parametrach metody &#8211; na przykład w celu zalogowania ich. Załóżmy dla prostoty testowania, że nasza metoda <strong>Foo</strong> będzie zwracała sformatowany napis z jej parametrami i ich wartościami.</p>
<p>Pierwsza wersja:</p>
<pre name="code" class="c-sharp">
public class TestClass
{
  public static string Foo(int bar, string baz)
  {
    return LogingHelpers.GetMethodArguments();
  }
}

public class LoggingHelpers
{
  public static string GetMethodArguments()
  {
    //TODO tutaj magia :-)
    return "";
  }
}</pre>
<p>Niestety &#8211; z taką składnią nie udało mi się. Z kontekstu <strong>LoggingHelpers.GetMethodArguments</strong> nie da się (lub nadal nie potrafię :-) ) dostać się do parametrów metody wywołującej. Działająca składnia jest nieco inna i odrobinę mniej wygodna:</p>
<pre name="code" class="c-sharp">
public class TestClass
{
  public static string Foo(int bar, string baz)
  {
    return GetMethodArguments(() => bar, () => baz);
  }

  public static string NoParameters()
  {
    return GetMethodArguments();
  }
}

public class LoggingHelpers
{
  public static string GetMethodArguments(params Func&lt;object&gt;[] expr)
  {
    //TODO tutaj magia, ujawnione już za chwilę!
    return "";
  }
}</pre>
<p>Ale najpierw test z wykorzystaniem NUnit.</p>
<pre name="code" class="c-sharp">
    using NUnit.Framework;
    using NUnit.Framework.SyntaxHelpers;

    [TestFixture]
    public class LoggingTests
    {

        [Test]
        public void TwoParametersCorrectlyFormatted
        {
            string parameterNamesAndValues = TestClass.Foo(1, "zzz");
            Assert.That(parameterNamesAndValues, Is.EqualTo("Method's Foo arguments >> bar: 1, baz: zzz");
        }

        [Test]
        public void NoParametersCorrectlyFormatted
        {
            string noParameters = TestClass.NoParameters();
            Assert.That(noParameters, Is.EqualTo("Method's Foo arguments >> No arguments.");
        }
    }</pre>
<p>Odpalamy testy, który oczywiście nie przechodzą. </p>
<p>Żeby testy zadziałały, nasza klasa <strong>LoggingHelpers</strong> wraz z metodą <strong>GetMethodParameters</strong> może wyglądać tak:</p>
<pre name="code"  class="c-sharp">
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;

public class LoggingHelpers
{
    public static string GetMethodParameters(params Func&lt;object&gt;[] expr)
    {
      // Pobieramy nazwę metody.
      string methodname = new StackFrame(1).GetMethod().Name;

      // wstępne formatowanie wynikowego napisu:
      string logmessage = "Method's " + methodname + " arguments >> ";

      // Tablica wyrażeń lambda jest pusta
      if (expr.Length == 0)
      {
        logmessage += "No arguments.";
      }
      else
      {
        try
        {
          // dla każdego Expression
          foreach (var par in expr)
          {
            // Zaawansowane sztuczki. Za pomocą MSIL znajdujemy informacje o Expression
            byte[] il = par.Method.GetMethodBody().GetILAsByteArray();

            // bajty 2-6 oznaczają uchwyt do naszych parametrów
            int fieldHandle = BitConverter.ToInt32(il, 2);

            // pobieramy FieldInfo tego parametru
            FieldInfo field = par.Target.GetType().Module.ResolveField(fieldHandle);

            // Formatujemy ostatecznie napis dla tego parametru.
            // Nazwę parametru uzyskujemy z FieldInfo, natomiast wartość wykonując przekazane Expression.
            logmessage += string.Format("{0}: {1}. ", field.Name, par() ?? "@null");
          }
        }
        catch
        {
        // Ignorujemy błędy - nic nie jest gorsze od doskonale działającej logiki aplikacji, która wywala się na narzędziach do logowania :-)
        // Tego typu try-catch to zła praktyka w aplikacji! W tym miejscu jest to stosowne, ale przestrzegam przed nadużywaniem "zjadania" wyjątków.

          logmessage += " FAILED reading arguments.";
        }
      }
    }
}</pre>
<p>Klasa do wykorzystania w aplikacji.</p>
<p>W kolejnej notce pokażę, jak to spiąć z log4net.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/pobranie-parametrow-metody-w-c-wraz-z-wartosciami/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gazeta.pl mistrzem sarkazmu</title>
		<link>http://xlab.pl/gazeta-pl-mistrzem-sarkazmu/</link>
		<comments>http://xlab.pl/gazeta-pl-mistrzem-sarkazmu/#comments</comments>
		<pubDate>Sun, 11 Oct 2009 20:01:22 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[funny]]></category>
		<category><![CDATA[offtopic]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=576</guid>
		<description><![CDATA[Ciekawe, jakie są teraz na to kursy u bukmacherów.]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-578" title="Screen shot 2009-10-11 at 9.59.46 PM" src="http://www.xlab.pl/wp-content/uploads/2009/10/Screen-shot-2009-10-11-at-9.59.46-PM.png" alt="Screen shot 2009-10-11 at 9.59.46 PM" width="260" height="262" /></p>
<p>Ciekawe, jakie są teraz na to kursy u bukmacherów.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/gazeta-pl-mistrzem-sarkazmu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stack Overflow watch: najciekawsze wątki o .NET i C#</title>
		<link>http://xlab.pl/stack-overflow-watch-najciekawsze-watki-o-net-i-c/</link>
		<comments>http://xlab.pl/stack-overflow-watch-najciekawsze-watki-o-net-i-c/#comments</comments>
		<pubDate>Thu, 08 Oct 2009 10:00:35 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Programowanie .NET]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[interview questions]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[rozmowy o pracę]]></category>
		<category><![CDATA[Stack Overflow]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=547</guid>
		<description><![CDATA[Stack Overflow to portal do pytań i odpowiedzi na tematy programistyczne. Założycielami jest dwóch programistycznych guru i/lub celebrytów &#8211; Jeffa Atwooda i Joela Spolsky&#8217;ego. Atwood jest autorem bardzo popularnego i dosyć kontrowersyjnego bloga Coding Horror, jakiś czas temu nawet rzucił swoją główną pracę dla niego i dla Stack Overflow. Atwood dla mnie skończył się swego [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.stackoverflow.com">Stack Overflow</a> to portal do pytań i odpowiedzi na tematy programistyczne. Założycielami jest dwóch programistycznych guru i/lub celebrytów &#8211; Jeffa Atwooda i Joela Spolsky&#8217;ego.<br />
Atwood jest autorem bardzo popularnego i dosyć kontrowersyjnego bloga <a href="http://www.codinghorror.com/blog/">Coding Horror</a>, jakiś czas temu nawet rzucił swoją główną pracę dla niego i dla Stack Overflow. Atwood dla mnie skończył się swego czasu przy okazji <a href="http://www.codinghorror.com/blog/archives/001119.html">notek o PHP</a> &#8211; wyrzuciłem go z RSS-ów.<br />
Spolsky&#8217;ego natomiast nadal chętnie czytuję &#8211; od lat pisze on artykuły na <a href="http://www.joelonsoftware.com/">Joel on Software</a>.</p>
<p>Ich dzieło wspólne to właśnie Stack Overflow. System reputacji i nagród za zadawanie mądrych pytań i dawanie pomocnych odpowiedzi świetnie działa &#8211; moje trzy pytania na dosyć niszowe tematy prawie natychmiastowo miały odpowiedzi, za to trudno było znaleźć pytanie bez odpowiedzi.</p>
<p>Znalazłem tam masę zbiorów różnego rodzaju sztuczek programistycznych. Dzisiaj lista najciekawszych .NET-owych pytań. To także dosyć dobry materiał do przygotowywania się do testów podczas rekrutacji na wymarzone stanowisko programisty.</p>
<p><span id="more-547"></span></p>
<ul>
<li><a href="http://stackoverflow.com/questions/9033/hidden-features-of-c">&#8222;Ukryte&#8221; funkcje języka C#.</a> &#8211; Padają tam podstawowe rzeczy np. &#8222;yield&#8221; lub &#8222;using&#8221;, ale wiele z nich nie znałem, a teraz wykorzystuję samemu.</li>
<li> <a href="http://stackoverflow.com/questions/144833/most-useful-attributes-in-c"> Najbardziej przydatne atrybuty.</a> &#8211; Niestety mało kto używa atrybutów z frameworka, a co dopiero wykorzystuje własne w swoim kodzie. <em>System.Obsolete</em> to mój ulubiony ułatwiający refaktoryzację.</li>
<li> <a href="http://stackoverflow.com/questions/194484/whats-the-strangest-corner-case-youve-seen-in-c-or-net"> Najbardziej zadziwiające zachowania języka </a> &#8211; często spotykane na rozmowach kwalifikacyjnych. Nie cierpię pytań o tego typu szczegóły, ponieważ często ma się ona nijak do naszych umiejętności. Niemniej jednak lepiej zabłysnąć taką wiedzą, nawet jeżeli jej nigdy nie wykorzystamy.</li>
<li> <a href="http://stackoverflow.com/questions/271398/post-your-extension-goodies-for-c-net-codeplex-com-extensionoverflow"> Zbiór metod rozszerzających </a> &#8211; Wątek rewelacja. Mnóstwo świetnych metod rozszerzających, bardzo polecam. Autorzy nawet zrobili z tego gotową bibliotekę.</li>
<li> <a href="http://stackoverflow.com/questions/365489/questions-every-good-net-developer-should-be-able-to-answer"> Na jakie pytania każdy programista .NET powinien umieć odpowiedzieć? </a> &#8211; kolekcja pytań na rozmowy o pracę i do wykorzystania nacodzień.</li>
<li> <a href="http://stackoverflow.com/questions/380819/common-programming-mistakes-for-net-developers-to-avoid"> Częste pomyłki </a> &#8211; każdy programista .NET powinien się z tą listą zapoznać, często zdarza mi się widzieć kod, który podpada pod rzeczy wymienione w tym wątku.</li>
<li> <a href="http://stackoverflow.com/questions/662956/most-useful-free-net-libraries">Najbardziej przydatne darmowe biblioteki do .NET </a> &#8211; doskonały zbiór open source narzędzi. Używam wiele z nich &#8211; NHibernate, RhinoMocks, log4net, StructureMap, itd. Od nadmiaru wymienionych narzędzi może rozboleć głowa, ale każde jest opatrzone komentarzem, co ułatwia nam decyzję, czego użyć</li>
<li> <a href="http://stackoverflow.com/questions/541936/what-can-you-do-in-msil-that-you-cannot-do-in-c-or-vb-net"> Co możemy zrobić w MSIL, czego nie zrobimy w C#. </a> &#8211; bardziej zaawansowany temat wykorzystania samego MSIL (języka pośredniego, <em>assemblera</em> .NET) zamiast C#. Możemy sobie nawet zrobić przeładowane metody, które różnią się tylko typem zwracanym. Nawet nie wiem jak by to działało. :-)</li>
</ul>
<p>Polecam przeglądanie Stack Overflow samemu, baza wiedzy i pomocnych osób jest imponująca.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/stack-overflow-watch-najciekawsze-watki-o-net-i-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 pożeraczy czasu na iPhona</title>
		<link>http://xlab.pl/10-pozeraczy-czasu-na-iphona/</link>
		<comments>http://xlab.pl/10-pozeraczy-czasu-na-iphona/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 10:00:06 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Ogólne]]></category>
		<category><![CDATA[apps]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[timewaster]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=530</guid>
		<description><![CDATA[&#8230;czyli przy czym marnuję czas relaksuję się ostatnio: kliknij w tytuły żeby otworzyć iTunes Run! Prosta, arcade&#8217;owa gierka polegająca na unikaniu przeszkód. Dosyć trudna i mocno wciągająca. Świetnie wykorzystuje interfejs dodytkowy &#8211; skok to machnięcie do góry, wślizg machnięcie w dół, itd. Mój rekord to 1501. Najlepsi na świecie osiągają ponad 2500 punktów &#8211; trochę [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;czyli  przy czym <del>marnuję czas</del> relaksuję się ostatnio:</p>
<p><em>kliknij w tytuły żeby otworzyć iTunes</em></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=327389981&amp;mt=8">Run! </a></h2>
<p>Prosta, arcade&#8217;owa gierka polegająca na unikaniu przeszkód. Dosyć trudna i mocno wciągająca. Świetnie wykorzystuje interfejs dodytkowy &#8211; skok to machnięcie do góry, wślizg machnięcie w dół, itd. Mój rekord to 1501. Najlepsi na świecie osiągają ponad 2500 punktów &#8211; trochę nie ogarniam, jak to możliwe. :)</p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/iOxyGKfCuoc&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/iOxyGKfCuoc&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=319160096&amp;mt=8">California Gold Rush</a></h2>
<p>Kopanie złota w ładnej oprawie graficznej.</p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/IsTFgOeXFfQ&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/IsTFgOeXFfQ&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=329899071&amp;mt=8">Dungeon Hunter</a></h2>
<p>Zagrywam się w to od kilku dni. Klon Diablo na iPhona. Wydana przez Gameloft &#8211; producenta gier z najlepszą grafiką w Appstore.</p>
<p><strong>Cena: 5,49 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/4yZSsqj5hLA&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/4yZSsqj5hLA&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=324741347&amp;mt=8"> The Secret of Monkey Island </a></h2>
<p>Klasyczna przygodówka powraca w wersji na iPhona. Nieźle się uśmiałem przy dialogach, nie mogę się doczekać kolejnych części.</p>
<p><strong>Cena: 5,99 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/4rud3qR9YJo&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/4rud3qR9YJo&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=307727765&amp;mt=8"> Doodle Jump </a></h2>
<p>Bardzo prosta i grywalna gierka w grafice <a href="http://en.wikipedia.org/wiki/Doodle">&#8222;doodle&#8221;</a> (nie wiem jaki jest polski odpowiednik). Skaczemy na kolejne platformy, po drodze strzelając do potworków i UFO.  Często wychodzą kolejne wersje z nowymi ficzersami.</p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/g-TDrsabCBc&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/g-TDrsabCBc&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=322677408&amp;mt=8"> A Doodle Flight</a></h2>
<p>Klasyczna strzelanka samolotem. Grafika taka jak w Doodle Jump. Możemy sobie narysować własny stateczek. :-) Naprawdę trudna na wyższych poziomach trudności. Kropka jako pojazd niestety mało pomaga. </p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/89m_Qw_Z_o0&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/89m_Qw_Z_o0&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=315210057&amp;mt=8"> StoneLoops of Jurassica </a></h2>
<p>iPhonowy klon <a href="http://www.popcap.com/games/zuma">Zumy</a>. Rewelacja, szczególnie dla fanów oryginału.</p>
<p><strong>Cena: 0,79 €.</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/MJtwkPbgpQc&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/MJtwkPbgpQc&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=323298021&amp;mt=8">Alive 4-ever</a></h2>
<p>Mroczny survival shooter. </p>
<p><strong>Cena: 1,59 €.</strong><br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/gbCB2b4S8Ek&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/gbCB2b4S8Ek&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=324016249&amp;mt=8"> Minigore </a></h2>
<p>Kolejny survival shooter, tym razem w kreskówkowej grafice. Dosyć prosta, ale są zapowiedziane kolejne wersje.</p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/smdQE8OI2cE&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/smdQE8OI2cE&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<h2><a href="http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=312494232&amp;mt=8"> Knights Onrush </a></h2>
<p>Castle defense. Celem gry jest obrona zamku przed hordami rycerzy, maszyn oblężniczych i olbrzymów. Bronimy podrzucając atakujących w powietrze lub używając różnych power ups z zamku. Dosyć szybko się nudzi, co nie przeszkodziło mi grać w to kilka dni.</p>
<p><strong>Cena: 0,79 €.</strong></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/iAZLGGnesp4&amp;hl=en&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/iAZLGGnesp4&amp;hl=en&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/10-pozeraczy-czasu-na-iphona/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

