<?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>&#34;Blog o programowaniu&#34; - hmm... to za dużo powiedziane ;-)</title>
	<atom:link href="http://www.mieczynski.tk/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mieczynski.tk</link>
	<description>Programowanie i takie tam.</description>
	<lastBuildDate>Wed, 12 Jan 2011 17:28:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Genius of Myself</title>
		<link>http://www.mieczynski.tk/index.php/genius-of-myself-2/</link>
		<comments>http://www.mieczynski.tk/index.php/genius-of-myself-2/#comments</comments>
		<pubDate>Thu, 02 Sep 2010 17:51:06 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[GeniusOfMyself]]></category>
		<category><![CDATA[Konkurs-DajSiePoznac]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=391</guid>
		<description><![CDATA[Oficjalnie odpadam z konkursu, niestety nie mam na niego za dużo czasu ani sił, ale sam projekt będę kontynuował po prostu baaardzo, baaardzo wolno Pokibicuje za to innym uczestnikom i jak nie zapomnę to napiszę po zakończeniu głosowania na kogo swój głos oddałem &#8211; albo i nie napisze ;p]]></description>
			<content:encoded><![CDATA[<p>Oficjalnie odpadam z konkursu, niestety nie mam na niego za dużo czasu ani sił, ale sam projekt będę kontynuował po prostu baaardzo, baaardzo wolno <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Pokibicuje za to innym uczestnikom i jak nie zapomnę to napiszę po zakończeniu głosowania na kogo swój głos oddałem &#8211; albo i nie napisze ;p</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/genius-of-myself-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Genius of Myself</title>
		<link>http://www.mieczynski.tk/index.php/genius-of-myself/</link>
		<comments>http://www.mieczynski.tk/index.php/genius-of-myself/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:30:38 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[GeniusOfMyself]]></category>
		<category><![CDATA[Konkurs-DajSiePoznac]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=389</guid>
		<description><![CDATA[Nauczony doświadczeniem (czyt. zbyt ambitnymi projektami) podchodzę do tego projektu malutkimi kroczkami, jeden z nich to jest stworzenie projektu który będzie się realizować bez genialnych pomysłów w trakcie (po prostu one muszą być ustalone wcześniej). Tak więc, o ile ktoś jest w stanie ogarnąć wszystkie blogi w tym konkursie i jeszcze ma siłę zasugerować coś [...]]]></description>
			<content:encoded><![CDATA[<p>Nauczony doświadczeniem (czyt. zbyt ambitnymi projektami) podchodzę do tego projektu malutkimi kroczkami, jeden z nich to jest stworzenie projektu który będzie się realizować bez genialnych pomysłów w trakcie (po prostu one muszą być ustalone wcześniej). Tak więc, o ile ktoś jest w stanie ogarnąć wszystkie blogi w tym konkursie i jeszcze ma siłę zasugerować coś to z pewnością się nad tym zastanowię. Na chwilę obecną mam trochę rozwinięty Game Design Doc &#8211; będę musiał wymyślić fabułę kampanii, co jest trudniejsze niż sama idea-zarys. Następnie postarać się zbalansować atrybuty jednostek, oraz budowli &#8211; co oczywiście będzie miało miejsce w beta-testach do których mam nadzieje się ktoś znajdzie, bo programista nie powinien testować własnych aplikacji &#8211; inaczej się to skończy jedną z <a href="http://jerzyk.soup.io/post/71493350/23-teksty-kt-re-us-yszysz-od" onclick="pageTracker._trackPageview('/outgoing/jerzyk.soup.io/post/71493350/23-teksty-kt-re-us-yszysz-od?referer=');">powyższych</a> odpowiedzi na pytanie &#8216;czemu to nie działa?&#8217;.</p>
<p>Kontynuując, chciałem w miarę oficjalnie przedstawić obiekty które znajdą się na diagramie UML (tzn. już się znajdują, ale na razie jest za biedny więc nie przedstawię go póki co).</p>
<ul>
<li>Surowiec (wyprodukowane i wydobyte)</li>
<li>Zasoby naturalne</li>
<li>Jednostka (lądowe i wodne)</li>
<li>Budynek (podzielę prawdopodobnie na produkujące i wydobywające &#8211; tak więc budynek będzie Abstract)</li>
</ul>
<p>I to by było na tyle jeśli chodzi o większą część logiki &#8211; która będzie wsparta dodatkowo przez skrypty. Dodatkowo będzie wykorzystana biblioteka GUI którą myślę, że już wybrałem ale póki co nie będę pisał która, ale wydaje się z bibliotek podanych w <a href="http://forums.xna.com/forums/t/15274.aspx" onclick="pageTracker._trackPageview('/outgoing/forums.xna.com/forums/t/15274.aspx?referer=');">TYM </a>wątku.</p>
<p>Pozostaje jeszcze opcja terenu, nad którym sobie powoli pracuje, ale przyznam szczerze, że męczy mnie ta pogoda więc wlecze to się jak ślimak, ale niemal na pewno wykorzystam mapy wysokości bo gra nie wymaga jakiś specjalnych formacji skalnych &#8211; a jeżeli już będę je chciał, to zapakuje się jako model, większym wyzwaniem za to będzie stworzenie naturalnie wyglądającego terenu &#8211; rzeki i takie tam, na szczęście podczas poszukiwań materiałów do pracy inż. (którą obroniłem jakiś czas temu <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> ) natknąłem się na ciekawy artykuł z generowania formacji skalnych który postaram się ogarnąć.</p>
<p>Lecimy dalej, bez QuadTree i LOD się nie obejdzie, ale sam tego implementować nie będę, wykorzystam jedną z udostępnionych implementacji i myślę, że gra na tym lepiej wyjdzie.</p>
<p>Jak wymieniłem wcześniej, będę chciał wykorzystać jakiś język skryptowy aby przenieść zachowanie graczy komputerowych z kodu gry do poszczególnych skryptów &#8211; nie wiem jaki to będzie język, możliwe że lua która z tego co się orientuje jest dosyć popularna w tej dziedzinie i kiedyś natknąłem się nawet na bibliotekę do XNA wykorzystującą(interpretującą) Lua.</p>
<p>Pominąłem na liście takie rzeczy jak klasa reprezentująca gracza, ale to dosyć oczywiste, że takie coś będzie &#8211; skupiłem się na podstawach gry, które mają 4 (Cztery!) klasy co się wydaje podejrzanie mało, wliczając klasy pochodne co prawda będzie ich 10 &#8211; więc jeśli ktoś chciałby dorzucić swoje 3grosze to proszę, mi się tak naprawdę nie spieszy, nie traktuje tego jak wyścig czy coś, ale fundamenty mógłbym zacząć już stawiać bazując na tym co teraz mam, potem ciężko będzie o większe zmiany.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/genius-of-myself/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Produkty, Surowce i zasoby</title>
		<link>http://www.mieczynski.tk/index.php/produkty-surowce-i-zasoby/</link>
		<comments>http://www.mieczynski.tk/index.php/produkty-surowce-i-zasoby/#comments</comments>
		<pubDate>Fri, 13 Aug 2010 21:53:54 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[GeniusOfMyself]]></category>
		<category><![CDATA[Konkurs-DajSiePoznac]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=386</guid>
		<description><![CDATA[Zgodnie z umową, a raczej regulaminem przedstawię to co sobie doskrobałem ostatnio jeśli chodzi o założenia projektu, wolał bym raczej to jeszcze trochę rozwinąć więc będę wdzięczny za sugestię. Jak już wspomniałem gra ma kłaść pewien nacisk na &#8216;ekonomie&#8217; (chociaż to jest za duże słowo na to ) &#8211; tzn. budynki, surowce, zasoby, produkty. W [...]]]></description>
			<content:encoded><![CDATA[<p>Zgodnie z umową, a raczej regulaminem przedstawię to co sobie doskrobałem ostatnio jeśli chodzi o założenia projektu, wolał bym raczej to jeszcze trochę rozwinąć więc będę wdzięczny za sugestię. Jak już wspomniałem gra ma kłaść pewien nacisk na &#8216;ekonomie&#8217; (chociaż to jest za duże słowo na to <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) &#8211; tzn. budynki, surowce, zasoby, produkty. W związku z tym, muszę stworzyć pewną listę surowców, produktów tworzonych z tych surowców oraz zasoby które mają być niewydobytym surowcem (np. drzewa są zasobem, który drwal (budynek) ścina tworząc surowiec, który po dalszej obróbce np. w tartaku zostaje deską (produktem)).</p>
<p>W każdym razie, Surowiec i produkt może być jedną klasą, Zasób prawdopodobnie zostanie potraktowany indywidualnie ze względu na konieczność umiejscowienia go gdzieś na mapie i nie widzę sensu dodatkowo rozpoznawać flagi czy to czasem nie surowiec/produkt. Wszystkie dane dotyczące gry będą trzymane w bazie, więc:</p>
<p>Tabela: Good</p>
<p>Pola:</p>
<ol>
<li>GoodsID : ID będzie używane choćby po to aby wiedzieć jakich składników potrzebuje dany produkt.</li>
<li>Name: nazwa produktu/surowca. Prawdopodobnie użyje również jej do ładowania odpowiednich tekstur</li>
<li>Value: Wartość danego produktu &#8211; na potrzeby handlu, zastanawiam się jeszcze nad min i max przy której gracze komputerowi byliby skłonni sprzedawać swoje i kupować nasze.</li>
<li>BuildingID : ID budynku wydobywającego lub produkującego dane dobro</li>
<li>ProductionTime: Czas jaki zajmuje wydobycie/wyprodukowanie jednej jednostki danego dobra.</li>
<li>Typ: Product/Subproduct/Surowiec &#8211; tylko dla stworznei awygodniejszego interfejsu (pogrupowanie)</li>
<li>Typ2: Cywilne/Militarne &#8211; j.w</li>
<li>DayConsumptionPerCitizen: konsumpcja danego dobra na mieszkańca, podawana na dzień. pewnie coś w okolicach 0.0002 <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />   [jednostką towaru będzie 1tona]</li>
</ol>
<p>Tabela: ProductComponets:</p>
<ol>
<li>GoodsID: ID dobra dla którego jest potrzebny jest dany zasób</li>
<li>ComponentID : ID potrzebnego zasobu/produktu/subproduktu</li>
<li>Consumption: Ile zużywa danego dobra dla stworzenia nowego produktu.  (float)</li>
</ol>
<p>ProductComponents nie ma żadnego indexu, uznałem go za zbędny &#8211; żeby pobrać potrzebne surowce będzie trzeba pobrać wszystkie wiersze w których zgadza się GoodsID produktu z GoodsID ProductComponents.</p>
<p>Pozostaje jeszcze tabela dla  budynków i wojska, przede wszystkim będą tam koszty wybudowania/rekrutowania, potrzebne surowce i koszty jakie będzie trzeba ponieść każdego miesiąca. Żołnierz dodatkowo będzie miał informacje nt. siły ataku, zadawanych obrażeń, obrony, punków życia (ale to nie RPG, ranny żołnierz się na dużo nie zda), oraz informacje nt. levelowania (możliwe bonusy), progi doświadczenia.</p>
<p>Prace się trochę wloką, w sporej części przez mało przyjazny klimat &#8211; ja strasznie marudny i wybredny jestem, a te słońce mnie zabija no i sporo energii poświęcam na pracę <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Przez weekend może posiedzę nad terenem który w końcu w grze musi być i coś skrobnę na ten temat, ale trzeba zrobić zakupy, pojechać nad morze skoro już mieszkam w Gdańsku od ponad miesiąca <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  i koniec końców mogę nie mieć sił &#8211; więc skrobnę coś nt. UI a teren zostawię na później.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/produkty-surowce-i-zasoby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Genius Of Myself &#8211; narzędzia i zarys fabuły.</title>
		<link>http://www.mieczynski.tk/index.php/genius-of-myself-narzedzia-i-zarys-fabuly/</link>
		<comments>http://www.mieczynski.tk/index.php/genius-of-myself-narzedzia-i-zarys-fabuly/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:08:01 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[GeniusOfMyself]]></category>
		<category><![CDATA[Konkurs-DajSiePoznac]]></category>
		<category><![CDATA[projekty]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=378</guid>
		<description><![CDATA[Kontynuując wątek konkursowy przedstawię kilka narzędzi z których skorzystam w trakcie tworzenia projektu, lista może oczywiście później się rozwinąć w zależności od potrzeb, ale na chwilę obecną przedstawia się następująco: Visual Studio 2008 Proffesional, mimo, że posiadam wersje 2010 zdecydowałem się na wykorzystanie 2010 główne ze względu lepszej płynności działania (2GB Ramu to na 2010 [...]]]></description>
			<content:encoded><![CDATA[<p>Kontynuując wątek konkursowy przedstawię kilka narzędzi z których skorzystam w trakcie tworzenia projektu, lista może oczywiście później się rozwinąć w zależności od potrzeb, ale na chwilę obecną przedstawia się następująco:</p>
<ol>
<li>Visual Studio 2008 Proffesional, mimo, że posiadam wersje 2010 zdecydowałem się na wykorzystanie 2010 główne ze względu lepszej płynności działania (2GB Ramu to na 2010 jednak za mało)</li>
<li><a href="http://sqlite.phxsoftware.com/" onclick="pageTracker._trackPageview('/outgoing/sqlite.phxsoftware.com/?referer=');">SQLite.NET</a> &#8211; wrapper na sqlite z którym miałem już do czynienia przy projektach aplikacji</li>
<li><a href="http://www.visual-paradigm.com/product/vpuml/" onclick="pageTracker._trackPageview('/outgoing/www.visual-paradigm.com/product/vpuml/?referer=');">Visual Paradigm for UML</a> w wersji 7.2  Community Edition do stworzenia diagramów UML, ile ich będzie wyjdzie w praniu, ale nie mal na pewno diagram klas i diagram stanów.</li>
<li><a href="http://www.sqliteexpert.com/" onclick="pageTracker._trackPageview('/outgoing/www.sqliteexpert.com/?referer=');">SQLite Expert Personal Edition</a> do stworzenia bazy danych, przy czym może się zmienić bo póki co sprawdzałem tylko wersje Proffesional, co oferuje Personal nie wiem (jakiś problem ze ściągnięciem jej jest)</li>
<li><a href="http://tortoisesvn.tigris.org/" onclick="pageTracker._trackPageview('/outgoing/tortoisesvn.tigris.org/?referer=');">TortoiseSVN </a>który wiadomo do czego służy, alternatywą może być wtyczka AnkhSVN do Visuala</li>
<li><a href="https://docs.google.com/" onclick="pageTracker._trackPageview('/outgoing/docs.google.com/?referer=');">GoogleDocs </a>na którym w chwili obecnej powstaje DesignDoc gry i jak energia dopisze niedługo przedstawię jego podstawową zawartość.</li>
</ol>
<p>Jeśli chodzi o zarys &#8216;fabuły&#8217; która nie będzie wybitnie rozbudowana &#8211; nie ten typ gry, zastanawiam się nad skorzystaniem z idei która przewinęła się przez Settlersy czy Anno polegająca na zakładaniu nowych osad/miast na niezasiedlonych terenach, albo odbudowa królestwa &#8211; co by wymagało pewnej ilości ruin pozostałych po ostatniej wojnie &#8211; albo połączenie obydwóch rzeczy. Wcielając gracza w rolę charyzmatycznego szlachcica/księcia/chłopa (wybór mógłby dawać pewne plusy i minusy w niektórych aspektach gry) który obejmie przywództwo nad uciekinierami z królestwa objętego wojną i zorganizuje budowę osady, żeby zebrać siły i stworzyć armie do odbicia utraconego zamku &#8211; myślę że to dobry początek dla kampanii <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/genius-of-myself-narzedzia-i-zarys-fabuly/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>udział w Konkursie</title>
		<link>http://www.mieczynski.tk/index.php/udzial-w-konkursie/</link>
		<comments>http://www.mieczynski.tk/index.php/udzial-w-konkursie/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 21:32:37 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[gamedev]]></category>
		<category><![CDATA[Konkurs-DajSiePoznac]]></category>
		<category><![CDATA[projekty]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=371</guid>
		<description><![CDATA[Zgodnie z wcześniejszymi &#8216;groźbami&#8217; zgłosiłem swój udział do konkursu &#8222;Daj się poznać&#8221; organizowanego przez Macieja Aniserowicza z całkiem ciekawymi nagrodami &#8211; dwa pierwsze miejsca ( ) to MSDN Ultimate sponsorowane przez Macieja i Jakuba Gutkowskiego razem z Microsoftem &#8211; mam nadzieje, że ta mała nadzieja na jakiegokolwiek szanse w zdobyciu głównej nagrody da mi wystarczającą [...]]]></description>
			<content:encoded><![CDATA[<p>Zgodnie z wcześniejszymi &#8216;groźbami&#8217; zgłosiłem swój udział do konkursu <a href="http://www.maciejaniserowicz.com/page/Konkurs-daj-sie-poznac.aspx" onclick="pageTracker._trackPageview('/outgoing/www.maciejaniserowicz.com/page/Konkurs-daj-sie-poznac.aspx?referer=');">&#8222;Daj się poznać&#8221;</a> organizowanego przez <a href="http://www.maciejaniserowicz.com" onclick="pageTracker._trackPageview('/outgoing/www.maciejaniserowicz.com?referer=');">Macieja Aniserowicza</a> z całkiem ciekawymi nagrodami &#8211; dwa pierwsze miejsca ( <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ) to <a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate?referer=');">MSDN Ultimate</a> sponsorowane przez Macieja i <a href="http://blog.gutek.pl/" onclick="pageTracker._trackPageview('/outgoing/blog.gutek.pl/?referer=');">Jakuba Gutkowskiego</a> razem z Microsoftem &#8211; mam nadzieje, że ta mała nadzieja na jakiegokolwiek szanse w zdobyciu głównej nagrody da mi wystarczającą ilość motywacji/siły, żeby pisać przynajmniej dwa razy w tygodniu notki no i rozwijać projekt &#8211; a po pracy to czasami ciężko <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Jeśli chodzi o sam projekt to będzie to gra, strategiczno ekonomiczna &#8211; oczywiście w XNA 3.1. Od dawna chciałem się zabrać za coś takiego i mam nadzieje, że po zakończeniu konkursu znajdzie się parę osób które pomoże w jej rozwoju bo w planach jest kontynuowanie projektu w większym gronie.</p>
<p>Notki związane z konkursem będę publikował z tagiem <a href="http://www.mieczynski.tk/index.php/tag/konkurs-dajsiepoznac/">&#8222;Konkurs-DajSiePoznac&#8221;</a></p>
<p><tt> Non-members may check out a read-only working copy anonymously over HTTP.</tt><br />
<tt id="checkoutcmd">svn checkout <strong><em>http</em></strong>://geniusofmyself.googlecode.com/svn/trunk/</tt></p>
<p>Jeszcze kilka słów o konkursie, na chwile obecną bierze w nim udział 33 &#8216;rywali&#8217; (plus ja) [i ciągle się zwiększa] &#8211; ich strony i projekty można znaleźć na <a href="http://www.maciejaniserowicz.com/page/Uczestnicy-konkursu-Daj-sie-poznac.aspx" onclick="pageTracker._trackPageview('/outgoing/www.maciejaniserowicz.com/page/Uczestnicy-konkursu-Daj-sie-poznac.aspx?referer=');">stronie uczestników</a> konkursu i polecam również śledzenie ich blogów i sam oczywiście będę ich szpiegował &#8211; dla leniwych (czyli m. in. mnie) Gutek stworzył odpowiednik <a href="http://dotnetblogs.pl/" onclick="pageTracker._trackPageview('/outgoing/dotnetblogs.pl/?referer=');">DotNetBlogs</a> dla uczestników konkursu &#8211; pod adresem <a href="http://dotnetblogs.pl/dajsiepoznac.htm" onclick="pageTracker._trackPageview('/outgoing/dotnetblogs.pl/dajsiepoznac.htm?referer=');">DotNetBlogs.DajSiePoznac</a>.</p>
<p>Rejestracja w konkursie otwarta jest do 15go sierpnia, więc zapraszam do rejestracji &#8211; będzie to niewątpliwie całkiem dobra reklama swojej osoby, nawet jeżeli nie wygra się niczego &#8211; a obserwatorów proszę o spojrzenie przychylnym okiem na moje wypociny bo to od was zależy kto wygra <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/udzial-w-konkursie/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Konkurs.</title>
		<link>http://www.mieczynski.tk/index.php/konkurs/</link>
		<comments>http://www.mieczynski.tk/index.php/konkurs/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 16:24:15 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=369</guid>
		<description><![CDATA[Nie organizowany co prawda ale reklama nie zaszkodzi zwłaszcza, że nagrody są całkiem ciekawe Konkurs &#8211; &#8222;Daj się poznać&#8221; Może będzie to też jakaś motywacja do częstszego pisania, ale jak człowiek wraca o 18stej do domu to ciężko będzie. W każdym razie polecam]]></description>
			<content:encoded><![CDATA[<p>Nie organizowany co prawda ale reklama nie zaszkodzi zwłaszcza, że nagrody są całkiem ciekawe <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<h1 style="text-align: center;"><strong><a href="http://www.maciejaniserowicz.com/page/Konkurs-daj-sie-poznac.aspx" onclick="pageTracker._trackPageview('/outgoing/www.maciejaniserowicz.com/page/Konkurs-daj-sie-poznac.aspx?referer=');">Konkurs &#8211; &#8222;Daj się poznać&#8221;</a></strong></h1>
<p>Może będzie to też jakaś motywacja do częstszego pisania, ale jak człowiek wraca o 18stej do domu to ciężko będzie. W każdym razie polecam <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/konkurs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wzorce Projektowe: Dekorator i przykład do Strategii</title>
		<link>http://www.mieczynski.tk/index.php/wzorce-projektowe-dekorator-i-przyklad-do-strategii/</link>
		<comments>http://www.mieczynski.tk/index.php/wzorce-projektowe-dekorator-i-przyklad-do-strategii/#comments</comments>
		<pubDate>Sat, 08 May 2010 16:23:15 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Dekorator]]></category>
		<category><![CDATA[DesignPatterns]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=357</guid>
		<description><![CDATA[Na forum &#8222;C and C plus plus&#8221; w GoldenLine pojawiło się pytanie o przykładowe pytania na rozmowie kwalifikacyjnej, przy którym machnąłem sobie dwa przykłady, dla proponowanych zadań, jedno w oryginale brzmiało tak: &#8222;Zdefiniowac vector wskaznikow na zwierzatka, wrzucic tam pare kotkow i pieskow. Dalej przechodzimy po wektorze wykonujac polimorficzny call i zwierzatka daja glos (wypas [...]]]></description>
			<content:encoded><![CDATA[<p>Na forum<a href="http://www.goldenline.pl/forum/c-and-c-plus-plus" onclick="pageTracker._trackPageview('/outgoing/www.goldenline.pl/forum/c-and-c-plus-plus?referer=');"> &#8222;C and C plus plus&#8221;</a> w <a href="http://www.goldenline.pl/" onclick="pageTracker._trackPageview('/outgoing/www.goldenline.pl/?referer=');">GoldenLine </a>pojawiło się <a href="http://www.goldenline.pl/forum/c-and-c-plus-plus/1665170" onclick="pageTracker._trackPageview('/outgoing/www.goldenline.pl/forum/c-and-c-plus-plus/1665170?referer=');">pytanie </a>o przykładowe pytania na rozmowie kwalifikacyjnej, przy którym machnąłem sobie dwa przykłady, dla proponowanych zadań, jedno w oryginale brzmiało tak:</p>
<blockquote><p>&#8222;Zdefiniowac vector wskaznikow na zwierzatka, wrzucic tam pare kotkow i  pieskow. Dalej przechodzimy po wektorze wykonujac polimorficzny call i  zwierzatka daja glos (wypas <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ). Najlepszy foreach z boost::bind, potem  jakis ptr_fun, potem iteratory (czy beda const? <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) a potem zwykly for  (ostatecznie).&#8221;</p></blockquote>
<p>Zadanie zostało zadane przez p. Przemysława, ja trochę to sobie przeredagowałem i zamiast tablicy, dorzuciłem Właścicieli, jeden z kotkiem, drugi z Pieskiem, trzeci bez zwierzaka &#8211; koniec końców wygląda to tak: <a href="http://ideone.com/PI1KD" onclick="pageTracker._trackPageview('/outgoing/ideone.com/PI1KD?referer=');">http://ideone.com/PI1KD</a> [<em><span style="text-decoration: underline;">tylko mała uwaga, rozwydrzyłem się C# i zapomniałem o destruktorze wirtualnym - co zresztą szybko zostało mi wypomniane ;-</span>) </em>].</p>
<p>Przykład wykorzystuje właśnie wzorzec Strategii, pozwalając tworzyć nowe zwierzątka i nowych (obiektów) właścicieli bez ingerencji w kod Zwierzaka (klasy abstrakcyjnej) ani Właściciela [no chyba, że dodamy nową komendę.</p>
<p>Przez następne kilka stron, przewijały się pytania bardziej techniczno-kruczkowe, które chyba i tak nie przebiło walki z kulkami &#8211; na blogu <a href="http://www.mieczynski.tk/index.php/jedno-z-najciekawszych-ponoc-pytan-na-rozmowie-kwalifikacynej-w-google/">pisałem </a>o pytaniu na rozmowie kwalifikacyjnej ponoć w google &#8211; ale, oczywiście takie pytania są rozkładane w dwie minuty, ciekawsze zadanie dotyczyło 12stu kulek, w której jedna jest <strong>INNA</strong>, nie wiadomo czy cięższa czy lżejsza &#8211; mamy to ustalić sami w 3 ważeniach, to która jest INNA i czy jest cięższa czy lżejsza &#8211; przyznaje, że póki co pomysłu nie mam.</p>
<p>No i, pytanie do którego użyłem wzorca Dekorator &#8211; trochę na wyrost, ale  chodziło o przykład i &#8216;utrwalenie&#8217;. Nikt nie pisał, że źle, to może dobrze napisane &#8211; pytanie zadane przez p. Macieja</p>
<blockquote><p>&#8222;Jak byś zaimplementował(a) zamalowany, a jak pusty romb z diagramu UML?  <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> &#8221;</p></blockquote>
<p>Przykład jest o <a href="http://ideone.com/RsuAy" onclick="pageTracker._trackPageview('/outgoing/ideone.com/RsuAy?referer=');">TUTAJ</a>, no i mam skromną nadzieje, że nie machnąłem się tutaj. Szczerze powiedziawszy, nie jestem zwolennikiem Dekoratora, ale jak to wzorce powinny robić dodanie w tym momencie nowej figury, albo nawet dodanie &#8216;dziurki&#8217; do figury ogranicza się do stworzenia jednej klasy, bez modyfikowania już stworzonych i odpowiednim skonstruowaniu obiektu: WypelnionyRombZDziurka = new FiguraZDziurka(new WypelnionaFigura(new Romb(new Figura()))) &#8211; co prawda wygląda to dziwnie, ale efekt powinien wyglądać tak:<br />
Rysuj Figure typu: Romb i ja wypelnij i zrób dziurkę&#8221;</p>
<p><strong>//Edit:</strong></p>
<p>Oczywiście, zapomniałem o definicji, z lenistwa posłużę się tłumaczeniem  z Head First Design Patterns:</p>
<blockquote><p>&#8222;Wzorzec Dekorator pozwala na dynamiczne przydzielanie danemu obiektowi nowych zachowań. Dekoratory dają elastyczność podobną do tej, jaką daje dziedziczenie, oferując jednak w zamian znacznie rozszerzoną funkcjonalność&#8221;.</p></blockquote>
<p><strong>//~EDIT</strong></p>
<p>Jak ktoś chce się &#8216;sprawdzić&#8217; to polecam <a href="http://www.mycppquiz.com/" onclick="pageTracker._trackPageview('/outgoing/www.mycppquiz.com/?referer=');">mycppquiz </a>(chyba podawałem kiedyś?), albo wątki odnośnie zagadek, które przewijają się przez różne fora, dla przykładu wątek <a href="http://forum.gamedev.pl/index.php/topic,10531.0.html" onclick="pageTracker._trackPageview('/outgoing/forum.gamedev.pl/index.php/topic_10531.0.html?referer=');">&#8222;Zagadki językoznawcze&#8221;</a> na forum <a href="http://www.gamedev.pl/" onclick="pageTracker._trackPageview('/outgoing/www.gamedev.pl/?referer=');">warsztatu</a>.</p>
<p>No i, jeżeli kogoś to jakimś cudem interesuje &#8211; piszę trochę mniej, bo po pierwsze widać jak mi to wychodzi, a po drugie męczę się z projektem edytora terenu (edytor cząsteczek był do niego wstępem) &#8211; jeszcze kilka podejść i może pokaże efekt końcowy (ten nawet działa, ale nie powiem, żebym był zadowolony).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/wzorce-projektowe-dekorator-i-przyklad-do-strategii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Strategy Pattern</title>
		<link>http://www.mieczynski.tk/index.php/strategy-pattern/</link>
		<comments>http://www.mieczynski.tk/index.php/strategy-pattern/#comments</comments>
		<pubDate>Fri, 30 Apr 2010 15:41:07 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[DesignPatterns]]></category>
		<category><![CDATA[interface]]></category>
		<category><![CDATA[Strategy]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=340</guid>
		<description><![CDATA[No to postaram się opisać coś co się przydaje (jak się umie stosować &#8211; to przy wzorcach zawsze trzeba powtarzać). Korzystając z okazji od razu sobie to utrwalę, zgodnie z zasadą &#8216;ucz się ucząc&#8217;, czy jakoś tak Na początek zacznę od wzorca strategii, jest to zdecydowanie jeden z prostszych i upiększających kod wzorców, z jakiś [...]]]></description>
			<content:encoded><![CDATA[<p>No to postaram się opisać coś co się przydaje (jak się umie stosować &#8211; to przy wzorcach zawsze trzeba powtarzać). Korzystając z okazji od razu sobie to utrwalę, zgodnie z zasadą &#8216;ucz się ucząc&#8217;, czy jakoś tak <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Na początek zacznę od wzorca strategii, jest to zdecydowanie jeden z prostszych i upiększających kod wzorców, z jakiś powodów też został wybrany jako pierwszy przez autorów &#8222;Head First Design Patterns&#8221;. Dodatkowymi atutami przemawiającymi, żeby omówić akurat ten wzorzec, jest fakt, że w bardzo fajny sposób pokazuje, że interfejsy są przydatne, co dla początkujących programistów, aż tak oczywiste nie jest &#8211; wiem z doświadczenia <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  [no i czasami przez różne fora, czy Q&amp;A przewija się pytanie po co to jest, dla przykładu: <a title="Po co to wszystko?" href="http://devpytania.pl/questions/1614/po-co-to-wszystko" onclick="pageTracker._trackPageview('/outgoing/devpytania.pl/questions/1614/po-co-to-wszystko?referer=');">Po co to wszystko - devPytania</a>? - gdzie opisałem błąd który popełniłem przy projektowaniu systemu cząsteczkowego]</p>
<p>Więc, zacznijmy od celu, popełnionego błędu, a potem przejdziemy do ładniejszego rozwiązania i jego korzyści. (jeżeli ktoś przejrzał moją odpowiedź w &#8216;po co to wszystko&#8217; to historyjkę teoretycznie może sobie odpuścić, bo tam już ją opisałem.</p>
<p><em>Cel:</em></p>
<p>Cząsteczki miały mieć różne sposoby obliczania ich wartości, tj. kolor, skala, kierunek, prędkość itp. Początkowo były to &#8216;static&#8217; &#8211; czyli nic się nie zmieniało,&#8217;random &#8211; wartość była losowana, raz, na początku życia cząsteczki z podanego przedziału oraz &#8216;linear&#8217; w którym wartość była zmieniana od wartości początkowej, do wartości końcowej względem czasu jaki minął od momentu jej &#8216;narodzin&#8217;.</p>
<p><em>Błędne rozwiązanie:</em></p>
<p>Początkowo, stwierdziłem, że wystarczy stworzyć <em>enum</em> z wartościami &#8216;static&#8217;, &#8216;linear&#8217;, &#8216;random&#8217;. Rozwiązanie to ułatwiało mi stworzenie edytora, w którym PropetyGrid dokładnie wiedział jakie są wartości tego enuma i wystarczyło je tylko wybrać. Problem jednak leżał w ogromnej zależności cząsteczki od całej reszty systemu. Na początek musiałem sprawdzić, czy cząsteczka jest &#8216;losowa&#8217; w momencie jej narodzin, potem w trakcie aktualizacji musiałem sprawdzić jak przypisać nową wartość, czy jest liniowa, czy stała lub losowa (bo te się też nie zmieniały) i chyba jeszcze gdzieś musiałem sprawdzać typ obliczania jakiejś wartości, a że ich trochę było ilość ifów była całkiem spora. Dodatnie w tym wypadku nowej klasy, która miała obliczać nową wartość, zmuszało mnie do wprowadzenia zmian w kilku miejscach, co aż się prosi o błędy, nawet w tak małym &#8216;systemie&#8217;. Więc trzeba było to zmienić</p>
<p><em>Rozwiązanie z użyciem wzorca Strategii</em>:</p>
<p>Czym w ogóle jest ten wzorzec? angielska wikipedia mówi coś takiego:</p>
<blockquote><p>The strategy pattern is useful for situations where it is necessary to  dynamically swap the algorithms used in an application. The strategy  pattern is intended to provide a means to define a family of algorithms,  encapsulate each one as an object, and make them interchangeable.</p>
<p>===</p>
<p>Wzorzec strategii jest użyteczny w sytuacjach kiedy niezbędna jest możliwość zmiany algorytmu podczas działania aplikacji. Wzorzec strategii ma zapewnić środki do stworzenia rodziny algorytmów, &#8216;zakapsułkować&#8217;  każdy jako obiekt i stworzenie ich &#8216;zamiennymi&#8217;</p></blockquote>
<p>Polska wiki też coś mówi, ale ta definicja jest o wiele bardziej zrozumiała (to pod spodem to moje tłumaczenie, ale ja w tym dobry nie jestem <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  )</p>
<p>Teraz popatrzmy chwile na cel, jak widać każda cząsteczka ma zbiór wartości &#8211; każda z tych wartości jest obliczana przez jakiś &#8216;algorytm&#8217; &#8211; no i wszystko pięknie pasuje.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">  <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">interface</span> IColorBehavior
    <span style="color: #008000;">&#123;</span>
        <span style="color: #6666cc; font-weight: bold;">void</span> Calculate<span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">float</span> lifePercent<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #008000;">&#125;</span></pre></div></div>

<p>Dla przykładu, przedstawiłem interfejs dla algorytmu obliczającego wartość koloru, teraz wystarczy, że stworzy klasy które go implementują i w klasie emittera dam możliwość zmiany klasy która implementuje dany algorytm. (<span style="color: #008000;">równie dobrze, można stworzyć IBehavior, bo każda wartość dostaje te same dane, ale ktoś złośliwie mógłby przypisać wtedy StaticScaleBehavior dla przykładu, dla czegoś co na logikę powinno za kolor odpowiadać</span>)</p>
<p><em>Zalety:</em></p>
<p>Dodanie nowego algorytmu do obliczania danej wartości cząsteczki polega tylko na jego stworzeniu, żadnych zmian w  kodzie popełniać nie musimy. &#8211; myślę, że ta zaleta jest całkiem spora <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Jest jeszcze jedna zaleta, takie podejście umożliwiło mi stworzenie &#8216;wtyczek&#8217; z nowymi algorytmami, w prosty sposób &#8211; przy dodawaniu dll, z pomocą System.Reflections pobierałem wszystkie obiekty które implementują dany interfejs i dodawałem je do &#8216;repozytorium&#8217; &#8211; ot, taki &#8216;zarządzany&#8217; bajer <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Warto zajrzeć: </strong></p>
<p><a title="Design Patterns and Refactoring" href="http://sourcemaking.com/" target="_blank" onclick="pageTracker._trackPageview('/outgoing/sourcemaking.com/?referer=');">http://sourcemaking.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/strategy-pattern/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# Visual Studio &#8211; Code Snippets</title>
		<link>http://www.mieczynski.tk/index.php/c-visual-studio-code-snippets/</link>
		<comments>http://www.mieczynski.tk/index.php/c-visual-studio-code-snippets/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 21:55:52 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[Bez kategorii]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[CodeSnippet]]></category>
		<category><![CDATA[inne pierdoły]]></category>
		<category><![CDATA[VisualStudio]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=334</guid>
		<description><![CDATA[Visual Studio został wyposażony w &#8216;code snippets&#8217; które oszczędzają nam palców &#8211; to chyba całkiem dobra definicja np. w przypadku kiedy np. piszemy aplikacje konsolową. Zamiast wpisywać Console.WriteLine( &#8222;costam&#8221;), piszemy same &#8216;cw&#8217; i wciskamy dwa razy TAB. I siup, zamiast nastukać się tyle w klawiaturę,  to mamy od razu w pewnym sensie automatyczne. Microsoft oczywiście [...]]]></description>
			<content:encoded><![CDATA[<p>Visual Studio został wyposażony w &#8216;code snippets&#8217; które oszczędzają nam palców &#8211; to chyba całkiem dobra definicja <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  np. w przypadku kiedy np. piszemy aplikacje konsolową. Zamiast wpisywać Console.WriteLine( &#8222;costam&#8221;), piszemy same &#8216;cw&#8217; i wciskamy dwa razy TAB. I siup, zamiast nastukać się tyle w klawiaturę,  to mamy od razu w pewnym sensie automatyczne.</p>
<p>Microsoft oczywiście <a href="http://msdn.microsoft.com/en-us/library/z41h7fat%28v=VS.80%29.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/z41h7fat_28v=VS.80_29.aspx?referer=');">wyposażył</a> VS w całkiem sporą ilość snippetów, które mogą się przydać, ale jak komuś mało, można w całkiem szybki sposób <a href="http://msdn.microsoft.com/en-us/library/ms165393%28v=VS.80%29.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/ms165393_28v=VS.80_29.aspx?referer=');">stworzyć</a> nowy snippet, przyspieszający pracę. Który poza wklejeniem kawałka kodu, może np. dodatkowo dołączać referencje.</p>
<p><strong><span style="color: #ff0000;">Edit:</span> </strong><a href="http://blog.gutek.pl/" onclick="pageTracker._trackPageview('/outgoing/blog.gutek.pl/?referer=');">J. &#8222;Gutek&#8221; Gutkowski </a>podesłał <a href="http://snippetdesigner.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/snippetdesigner.codeplex.com/?referer=');">Snippet Designer</a> <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p><strong>Podsumowanie:</strong></p>
<p>Wpisujemy interesujący nas snippet, dla przykładu <em>for </em>i wciskamy dwa razy TAB. VS wygeneruje nam taki kod:</p>
<p><img src="http://mieczynski.tk/for.png" alt="" /></p>
<p>Zmiana nazwy iteratora, który jest teraz zaznaczony na niebiesko, automatycznie zmieni elementy podświetlone na szaro. Po wciśnięciu TAB przeskakujemy do następnego elementu, tutaj zaznaczonego na pomarańczowo <em>length</em>. Kolejne wciśnięcie TAB przejdzie do następnego elementu, o ile ten występuje, w przeciwnym razie wracamy do pierwszego, czyli <em>i</em>. Jak już wklepaliśmy co chcieliśmy, pozostaje nam tylko kliknąć ENTER i zostać przeniesionym do wnętrza pętli.</p>
<p>Nie jest to co prawda nic nadzwyczajnego, ale pozwala oszczędzić czas i dłonie &#8211; sięganie po myszkę, albo skakanie &#8216;strzałkami&#8217; do najwygodniejszych rzeczy nie należy <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/c-visual-studio-code-snippets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C# 4.0 &#8211; co nowego.</title>
		<link>http://www.mieczynski.tk/index.php/c-4-0-co-nowego/</link>
		<comments>http://www.mieczynski.tk/index.php/c-4-0-co-nowego/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 21:53:26 +0000</pubDate>
		<dc:creator>Jerzy Mieczyński</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[C#4.0]]></category>

		<guid isPermaLink="false">http://www.mieczynski.tk/?p=324</guid>
		<description><![CDATA[Zainstalowałem właśnie sobie VS2010EE, głównie po to, żeby pobawić się trochę nowościami z C# 4.0 któremu dedykuje tą notkę Nie będę nikogo oszukiwał, nie będzie tutaj wybitnie zaawansowanych rzeczy, ot takie krótkie podsumowanie tego co się pierwsze nawinęło ;-&#62; Named &#38; Optional Parametrs - co można tłumaczyć jako, opcjonalne(domyślne) parametry, oraz parametry nazwane. Osobiście trochę [...]]]></description>
			<content:encoded><![CDATA[<p>Zainstalowałem właśnie sobie VS2010EE, głównie po to, żeby pobawić się trochę nowościami z C# 4.0 któremu dedykuje tą notkę <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Nie będę nikogo oszukiwał, nie będzie tutaj wybitnie zaawansowanych rzeczy, ot takie krótkie podsumowanie tego co się pierwsze nawinęło ;-&gt;</p>
<p><strong>Named &amp; Optional Parametrs </strong>- co można tłumaczyć jako, opcjonalne(domyślne) parametry, oraz parametry nazwane. Osobiście trochę mi brakowało parametrów domyślnych, ale &#8216;named&#8217; to jest faktycznie, ficzer, ale może być całkiem przydatny, szczególnie razem z parametrami domyślnymi.</p>
<pre class="Csharp" name="code">        void Named(int A, int B)
        {
            Console.WriteLine("A: {0}, B: {1}", A, B);
        }

        void Optional(String str = "Default")
        {
            Console.WriteLine(str);
        }

        void NamedAndOptional(String A = "A!", String B = "B!", String C = "C!")
        {
            Console.WriteLine("A: {0}, B: {1}, C: {2}", A, B, C);
        }

// no i wywołanie, w odpowiednim miejscu oczywiście - sugeruje konstruktor klasy Main (czy jak tam sobie nazwicie)
             NamedArguments(B: 10, A: 5);
             OptionalArguments();
             NamedAndOptionalArguments(C: "Ce!");
</pre>
<p>Jak widać, wystarczyło podać argument który chcieliśmy wykorzystać, zamiast podawać A i B, z ich domyślnymi wartościami &#8211; coby dokopać się do C. Co zresztą, jest pokazane na MSDN w <a href="http://msdn.microsoft.com/en-us/library/dd264738(v=VS.100).aspx" target="_blank" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/dd264738_v=VS.100_.aspx?referer=');">How To Use Named and Optional Arguments in Office Programming</a></p>
<p>Kolejnym &#8216;ficzerem&#8217; jest <strong>Dynamic Type</strong>, które nie da się ukryć, muszę rozgryźć, ale ze świata docierają <a href="http://www.goldenline.pl/forum/programisci-net/1579292" onclick="pageTracker._trackPageview('/outgoing/www.goldenline.pl/forum/programisci-net/1579292?referer=');">głosy</a>, że świetnie nadaje się do <em>System.Reflections</em>. I bazując, na przykładzie podanym przez p. Macieja skrobnąłem coś innego, ale nie jakiegoś strasznie innowacyjnego w porównaniu do &#8216;podstawy&#8217; <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 509px; width: 1px; height: 1px; overflow: hidden;">http://www.goldenline.pl/forum/programisci-net/1579292</div>
<pre class="Csharp" name="code">       class DynamicExample
        {
            public void method()
            {
                Console.WriteLine(this.GetType().Name);
            }
        }

        public Main()
        {
            Object o = Activator.CreateInstance(typeof(DynamicExample));
            dynamic dynamicO = o;
            //o.method(); // z wiadomych przyczyn nie działa.
            dynamicO.method();

        }
</pre>
<p>Magia polega na tym, że to czy można wywołać method czy nie odbywa się w czasie działania programu &#8222;run-time&#8221; &#8211; słów kilka od MSDN znajduje się np. <a href="http://msdn.microsoft.com/en-us/library/dd264736(v=VS.100).aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/dd264736_v=VS.100_.aspx?referer=');">TUTAJ</a>. Oczywiście, z wiadomych przyczyn pozbawia nas to InteliSense, ale jakoś się to przeżyje. W każdym razie, pozwala to upiększyć kod, oraz,</p>
<p><a href="http://msdn.microsoft.com/en-us/library/ee461504(v=VS.100).aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/ee461504_v=VS.100_.aspx?referer=');">Walkthrough: Creating and Using Dynamic Objects</a></p>
<p><strong>Expando Object</strong> pozwala dodawać i usuwać członków z instancji obiektu podczas działania programu. Pozwala również odwoływać się do nich, w taki sam sposób jak w przypadku <strong>Dynamic</strong>, zamiast<em> <span class="code">sampleObject.GetAttribute(&#8222;sampleMember&#8221;) </span> </em></p>
<pre class="Csharp" name="code">           dynamic expando = new System.Dynamic.ExpandoObject();
            expando.A = 10;
            dynamic AnotherExpando = new System.Dynamic.ExpandoObject();
            Console.WriteLine(expando.A);
            //Console.WriteLine(AnotherExpando.A); //runtime exception
            expando.Increment = (Action)(() => { expando.A++; });
            Console.WriteLine(expando.A);
            expando.Increment();
            Console.WriteLine(expando.A);
</pre>
<p>Słów kilka, znajdziemy oczywiście na MSDN, tym razem o! <a href="http://msdn.microsoft.com/en-us/library/system.dynamic.expandoobject(v=VS.100).aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.dynamic.expandoobject_v=VS.100_.aspx?referer=');">TUTAJ</a>, np. jak usunąć argument.</p>
<p>Na razie tyle, pobuszuje sobie jeszcze trochę i coś może dopiszę <img src='http://www.mieczynski.tk/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.mieczynski.tk/index.php/c-4-0-co-nowego/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

