﻿<?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>andrzej.net.pl &#187; ogólne</title>
	<atom:link href="http://andrzej.net.pl/index.php/category/ogolne/feed/" rel="self" type="application/rss+xml" />
	<link>http://andrzej.net.pl</link>
	<description>Blog o programowaniu C#, ASP.NET</description>
	<lastBuildDate>Mon, 27 Jun 2011 22:36:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Proste i przyjemne porównanie kolekcji w .NET</title>
		<link>http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/</link>
		<comments>http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/#comments</comments>
		<pubDate>Mon, 20 Jun 2011 09:01:35 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[kolekcje]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=849</guid>
		<description><![CDATA[Polecam i początkującym i doświadczonym wpis C#/.NET Fundamentals: Choosing the Right Collection Class na blogu Jamesa Michaela Hare. Zwięzły i konkretny opis podstawowych kolekcji w .NET &#8211; zastosowania, zalety, wady. Złożoność wstawiania i wyszukiwania. Wpis co prawda nie obejmuje nowych concurrent collections w .NET ale i tak jest wart uwagi. Powiązane wpisy:BugNET i TRAC &#8211; [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/' rel='bookmark' title='Permanent Link: BugNET i TRAC &#8211; porównanie. Część I' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/?referer=');">BugNET i TRAC &#8211; porównanie. Część I</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/' rel='bookmark' title='Permanent Link: Wielopoziomowa aplikacja &#8211; nauka przez przykład' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">Wielopoziomowa aplikacja &#8211; nauka przez przykład</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Polecam i początkującym i doświadczonym wpis <a href="http://geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx" onclick="pageTracker._trackPageview('/outgoing/geekswithblogs.net/BlackRabbitCoder/archive/2011/06/16/c.net-fundamentals-choosing-the-right-collection-class.aspx?referer=');">C#/.NET Fundamentals: Choosing the Right Collection Class</a> na blogu Jamesa Michaela Hare.<br />
Zwięzły i konkretny opis podstawowych kolekcji w .NET &#8211; zastosowania, zalety, wady. Złożoność wstawiania i wyszukiwania.<br />
Wpis co prawda nie obejmuje nowych concurrent collections w .NET ale i tak jest wart uwagi.</p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/' rel='bookmark' title='Permanent Link: BugNET i TRAC &#8211; porównanie. Część I' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/?referer=');">BugNET i TRAC &#8211; porównanie. Część I</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/' rel='bookmark' title='Permanent Link: Wielopoziomowa aplikacja &#8211; nauka przez przykład' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">Wielopoziomowa aplikacja &#8211; nauka przez przykład</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nauka przez przykład &#8211; opowieści użytkownika</title>
		<link>http://andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/</link>
		<comments>http://andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/#comments</comments>
		<pubDate>Sun, 31 Oct 2010 23:00:46 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[nauka przez przykład]]></category>
		<category><![CDATA[opowieści użytkownika]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=825</guid>
		<description><![CDATA[Kontynuując poprzedni wpis dotyczący nauki przez przykład, określiłem tzw. opowieści użytkownika. Pozwoli to na zdefiniowanie wymagań dotyczących budowanej aplikacji. Jeśli będziemy wiedzieć czego użytkownik oczekuje, będziemy mogli zaproponować rozwiązanie spełniające te wymagania. Poniżej opowieści: Aplikacja ma wspomagać zarządzanie zadaniami rozdzielanymi dla użytkowników firmy. Po wykonaniu zadania, przenoszone jest ono do „archiwum”, tak aby możliwy był [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/' rel='bookmark' title='Permanent Link: Wielopoziomowa aplikacja &#8211; nauka przez przykład' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">Wielopoziomowa aplikacja &#8211; nauka przez przykład</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Kontynuując <a href="http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">poprzedni wpis</a> dotyczący nauki przez przykład, określiłem tzw. opowieści użytkownika. Pozwoli to na zdefiniowanie wymagań dotyczących budowanej aplikacji.</p>
<p>Jeśli będziemy wiedzieć czego użytkownik oczekuje, będziemy mogli zaproponować rozwiązanie spełniające te wymagania.</p>
<p>Poniżej opowieści:</p>
<p><span id="more-825"></span></p>
<ol>
<li>Aplikacja ma wspomagać zarządzanie zadaniami rozdzielanymi dla użytkowników firmy.</li>
<li>Po wykonaniu zadania, przenoszone jest ono do „archiwum”, tak aby możliwy był podgląd zrealizowanych już zadań</li>
<li>Zadania mają prostą postać. Użytkownik zlecający zadanie może zdefiniować:
<ul>
<li>Temat</li>
<li>Treść</li>
<li>Priorytet (zwykły, wysoki, krytyczny)</li>
<li>Data wykonania (opcjonalna – nie zawsze jest określana)</li>
<li>Osoby, które przypisane są do realizacji danego zadania (jedna lub więcej)</li>
</ul>
</li>
<li>Zadania mają statusy:
<ul>
<li>Aktualne</li>
<li>Zrealizowane (archiwalne)</li>
<li>Zakończone bez realizacji (archiwalne)</li>
</ul>
</li>
<li>Użytkownik ma dostęp do listy swoich zadań. Widzi zarówno zadania przypisane do siebie jak i zadania przypisane przez siebie dla innych osób. Kolumny widoczne na liście, to:
<ul>
<li>Tytuł</li>
<li>Priorytet (w formie graficznej –ikona symbolizująca priorytet)</li>
<li>Opis (ok. 100 pierwszych znaków z treści zadania)</li>
<li>Data wykonania</li>
<li>Od (oznaczenie osoby, która zleciła zadanie)</li>
<li>Dla (oznaczenie osoby, dla której zlecone jest zadanie)</li>
</ul>
</li>
<li>Lista zadań może być filtrowana wg następujących kryteriów:
<ul>
<li>Stan (aktualne, archiwalne)</li>
<li>Data wykonania (filtr wyłączony lub określona data)</li>
<li>Tytuł/treść (wpisanie frazy, która będzie jednocześnie wyszukiwania w tytule i treści zadania)</li>
<li>Przypisane do (wybór z listy osób) – do kogo zadanie jest przypisane</li>
<li>Przypisane od (wybór z listy osób) – od kogo pochodzi zadanie</li>
</ul>
</li>
<li>Lista zadań powinna mieć możliwość wydruku – z uwzględnieniem filtrowania</li>
<li>Użytkownik powinien mieć możliwość podglądu szczegółów zadania – w odrębnym oknie.</li>
<li>Użytkownik powinien mieć możliwość zmiany statusu zadania na:
<ul>
<li>Zrealizowane</li>
<li>Zakończone bez realizacji</li>
</ul>
</li>
<li>Nie można zmienić statusu zadania ze zrealizowanego lub zakończonego bez realizacji na aktywny.</li>
<li>Zadania mogą być edytowane wyłącznie przez jego autora</li>
<li>Użytkownicy powinni móc logować się do aplikacji przy użyciu nazwy użytkownika i hasła. Dane te są nadawane przez administratora systemu.</li>
<li>Użytkownik może sortować listę wg dowolnej z wyświetlanych kolumn</li>
<li>Użytkownik może dowolnie zmieniać kolejność kolumn</li>
<li>Aplikacja powinna zapamiętywać ostatnio wybrany przez użytkownika wygląd listy (kolejność oraz posortowanie kolumn)</li>
</ol>
<p>Skoro wiemy już, jakie są oczekiwania użytkownika co do systemu &#8211; możemy przystąpić do wstępnego projektu. To już w następnym odcinku.</p>
<p>Przypomnę tylko o zaproszeniu do współpracy, <a href="http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">zawartym w poprzednim wpisie</a>.</p>
<ol></ol>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/' rel='bookmark' title='Permanent Link: Wielopoziomowa aplikacja &#8211; nauka przez przykład' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/?referer=');">Wielopoziomowa aplikacja &#8211; nauka przez przykład</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wielopoziomowa aplikacja &#8211; nauka przez przykład</title>
		<link>http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/</link>
		<comments>http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 22:12:31 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[Entity Framework 4]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[wspólny projekt]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=810</guid>
		<description><![CDATA[Większość aplikacji w jakich tworzeniu uczestniczyłem była aplikacjami webowymi. Postanowiłem zmierzyć się z&#160;innym zadaniem &#8211; aplikacją desktopową, która oparta będzie o dostępne w .NET mechanizmy. Nie jest to komercyjny projekt a poligon testowy polegający na określeniu architektury, zaprojektowaniu systemu i jego implemenacji. Wiadomo &#8211; teoria teorią, jednak dopiero zderzenie się w praktyce z poruszanymi zagadnieniami [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/' rel='bookmark' title='Permanent Link: Nauka przez przykład &#8211; opowieści użytkownika' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/?referer=');">Nauka przez przykład &#8211; opowieści użytkownika</a></li>
<li><a href='http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/' rel='bookmark' title='Permanent Link: Proste i przyjemne porównanie kolekcji w .NET' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/?referer=');">Proste i przyjemne porównanie kolekcji w .NET</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/01/mutex-i-sprawdzanie-czy-aplikacja-jest-jedyna-uruchomiona/' rel='bookmark' title='Permanent Link: Mutex i sprawdzanie czy aplikacja jest jedyną uruchomioną' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/mutex-i-sprawdzanie-czy-aplikacja-jest-jedyna-uruchomiona/?referer=');">Mutex i sprawdzanie czy aplikacja jest jedyną uruchomioną</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Większość aplikacji w jakich tworzeniu uczestniczyłem była aplikacjami webowymi. Postanowiłem zmierzyć się z&nbsp;innym zadaniem &#8211; aplikacją desktopową, która oparta będzie o dostępne w .NET mechanizmy. Nie jest to komercyjny projekt a poligon testowy polegający na określeniu architektury, zaprojektowaniu systemu i jego implemenacji. Wiadomo &#8211; teoria teorią, jednak dopiero zderzenie się w praktyce z poruszanymi zagadnieniami pozwala na nauczenie się czegokolwiek zdecydowanie skuteczniej.<br />
<span id="more-810"></span></p>
<p>Tyle tytułem nudnego wstępu, przejdźmy do konkretów. Z racji tego, że przez zasiedzenie w technologiach webowych ominęło mnie <a href="http://msdn.microsoft.com/en-us/library/ms754130.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/ms754130.aspx?referer=');">WPF</a> &#8211; postanowiłem wykorzystać właśnie tę technologię przy realizacji projektu. Godne zainteresowania jest również <a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/netframework/aa663324.aspx?referer=');">Windows Communication Foundation</a> &#8211; czyli WCF. Jeśli chodzi o dostęp do danych przyznam, że wybór jest trudny. Używam i pokochałem <a href="http://nhforge.org/Default.aspx" onclick="pageTracker._trackPageview('/outgoing/nhforge.org/Default.aspx?referer=');">NHibernate</a> ale przy chęci nauki nowych narzędzi mocno kusi <a href="http://msdn.microsoft.com/en-us/data/ef.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/data/ef.aspx?referer=');">Entity Framework 4</a>, który jest już na tyle dojrzały, że warto się nim zainteresować.</p>
<p>Pewnie zastanawiacie się co to za projekt, który determinowany jest technologiami. Jak widać jest tutaj trochę odwrotna sytuacja &#8211; &#8222;dobieram&#8221; projekt do tego, czego chciałbym się nauczyć. Blog będzie dziennikiem, opisem napotykanych problemów, miejscem na Waszą krytykę podejmowanych działań.</p>
<p>Tutaj właśnie dochodzę do sedna sprawy. Przedzieranie się przez tyle nowych rzeczy może okazać się dość trudne przy ograniczonych zasobach czasowych (praca na pełny etat). Może więc znajdzie się czytelnik (dwóch?) chętnych do wspólnej nauki i prowadzenia projektu. Mam tutaj na myśli połączenie sił i konkretne podejście do tematu &#8211; bez kompromisów. Poligon z ostrą amunicją.</p>
<p>Przygotuję serię opowieści użytkownika pozwalających na opracowanie architektury systemu. Następnym etapem byłaby stopniowa implementacja i publikowanie wyników &#8211; np. na <a href="http://taskman.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/taskman.codeplex.com/?referer=');">CodePlex</a>. Pełny, konkretny i kompletny projekt, którego wynikiem będzie open source&#8217;owe oprogramowanie. Publikacja postępów na blogu (tym, który właśnie czytasz lub dedykowanym dla projektu &#8211; do wyboru).</p>
<p>Jednak żeby nie przedłużać, podsumujmy:</p>
<p>Cel: <strong>Aplikacja do zarządzania zadaniami z wykorzystaniem WPF, WCF, Entity Framework</strong><br />
Założenia: <strong>Publikowanie postępów, problemów i wyników kolejnych kroków w formie artykułów na blogu</strong><br />
Potrzebne: <strong>1-2 osoby, chcące uczestniczyć w projekcie. Idealnie, gdyby osoba ta <em>nie znała</em> przynajmniej jednej z wymienionych technologii i aby <em>znała co najmniej jedną</em> z nich</strong></p>
<p>Jeśli kogoś pomysł zainteresuje &#8211; zapraszam do kontaktu za pomocą <a href="http://andrzej.net.pl/index.php/kontakt/" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/kontakt/?referer=');">formularza</a>. Zobaczę, czy znajdą się zainteresowani i jak dalej potoczą się losy tego pomysłu.</p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/' rel='bookmark' title='Permanent Link: Nauka przez przykład &#8211; opowieści użytkownika' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/11/nauka-przez-przyklad-opowiesci-uzytkownika/?referer=');">Nauka przez przykład &#8211; opowieści użytkownika</a></li>
<li><a href='http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/' rel='bookmark' title='Permanent Link: Proste i przyjemne porównanie kolekcji w .NET' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/?referer=');">Proste i przyjemne porównanie kolekcji w .NET</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/01/mutex-i-sprawdzanie-czy-aplikacja-jest-jedyna-uruchomiona/' rel='bookmark' title='Permanent Link: Mutex i sprawdzanie czy aplikacja jest jedyną uruchomioną' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/mutex-i-sprawdzanie-czy-aplikacja-jest-jedyna-uruchomiona/?referer=');">Mutex i sprawdzanie czy aplikacja jest jedyną uruchomioną</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/10/wielopoziomowa-aplikacja-nauka-przez-przyklad/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Satyra na .NET ;) ?</title>
		<link>http://andrzej.net.pl/index.php/2010/06/satyra-na-net/</link>
		<comments>http://andrzej.net.pl/index.php/2010/06/satyra-na-net/#comments</comments>
		<pubDate>Fri, 25 Jun 2010 21:45:11 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[na wesoło]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[wyszperane]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=794</guid>
		<description><![CDATA[Wspaniały filmik, który poprawił mi humor dzisiejszego dnia ;) Podlinkowany przez znajomego na fb. Perfekcyjnie punktuje .NET ;) Polecam! Powiązane wpisy:[Nonsensopedia] &#8211; programowanie. Na wesoło. Powiązane wpisy wygenerowane przez wtyczkę Yet Another Related Posts.


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/' rel='bookmark' title='Permanent Link: [Nonsensopedia] &#8211; programowanie. Na wesoło.' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/?referer=');">[Nonsensopedia] &#8211; programowanie. Na wesoło.</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Wspaniały filmik, który poprawił mi humor dzisiejszego dnia ;) Podlinkowany przez znajomego na fb.</p>
<p><object width="500" height="306"><param name="movie" value="http://www.youtube.com/v/6gbNZK60Xe4&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6gbNZK60Xe4&#038;fs=1" type="application/x-shockwave-flash" width="500" height="306" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Perfekcyjnie punktuje .NET ;) Polecam!</p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/' rel='bookmark' title='Permanent Link: [Nonsensopedia] &#8211; programowanie. Na wesoło.' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/?referer=');">[Nonsensopedia] &#8211; programowanie. Na wesoło.</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/06/satyra-na-net/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>DebuggerDisplay &#8211; mały pomocnik</title>
		<link>http://andrzej.net.pl/index.php/2010/06/debuggerdisplay-maly-pomocnik/</link>
		<comments>http://andrzej.net.pl/index.php/2010/06/debuggerdisplay-maly-pomocnik/#comments</comments>
		<pubDate>Thu, 24 Jun 2010 12:16:28 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>
		<category><![CDATA[visual studio tricks]]></category>
		<category><![CDATA[wyszperane]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=788</guid>
		<description><![CDATA[Czasami, gdy próbuję zdebugować jakiś uciążliwy problem istnieje konieczność oglądania właściwości obiektu. Klikanie kolejnych plusików w wizualizacji debuggera w poszukiwaniu odpowiedniego obiektu na liście doprowadza mnie do szału (zwłaszcza, gdy klasy są dziedziczone). Przy przeglądaniu namespace&#8217;a System.Diagnostics natknąłem się na atrybut: DebuggerDisplay. Krótka lektura MSDN i okazało się, że taka mała głupota może niesamowicie ułatwić [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Czasami, gdy próbuję zdebugować jakiś uciążliwy problem istnieje konieczność oglądania właściwości obiektu.<br />
Klikanie kolejnych plusików w wizualizacji debuggera w poszukiwaniu odpowiedniego obiektu na liście doprowadza mnie do szału (zwłaszcza, gdy klasy są dziedziczone).<br />
Przy przeglądaniu namespace&#8217;a System.Diagnostics natknąłem się na atrybut: DebuggerDisplay. Krótka lektura <a href="http://msdn.microsoft.com/en-us/library/x810d419.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/x810d419.aspx?referer=');">MSDN</a> i okazało się, że taka mała głupota może niesamowicie ułatwić życie :)</p>
<p><span id="more-788"></span></p>
<p>Weźmy pod lupę bardzo prosta klasę:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #008000;">&#91;</span>Serializable<span style="color: #008000;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Part<br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> PartSeries <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> PartNumber <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span style="color: #008000;">...</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>Jak prezentuje się w debuggerze podgląd listy naszych części? Ano tak:</p>
<p><a href="http://andrzej.net.pl/wp-content/uploads/2010/06/screen047.jpg" rel="lightbox[788]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/06/screen047.jpg?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/06/screen047-300x173.jpg" alt="" title="domyślny wygląd" width="300" height="173" class="alignnone size-medium wp-image-790" /></a></p>
<p>Jeśli nie znamy pozycji naszego elementu musimy uprawiać zawody w klikaniu mychą w celu znalezienia interesującego nas elementu. Jak ułatwić sobie życie?<br />
Dodając do klasy atrybut DebuggerDisplay:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span style="color: #008000;">&#91;</span>Serializable<span style="color: #008000;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#91;</span><span style="color: #000000;">System.<span style="color: #0000FF;">Diagnostics</span></span><span style="color: #008000;">.</span><span style="color: #0000FF;">DebuggerDisplay</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Part number = {PartNumber}, Part series = {PartSeries} &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span><br />
&nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Part<br />
&nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> PartSeries <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> PartNumber <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">...</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span></div></div>
<p>Wizualizacja naszej kolekcji wygląda teraz następująco:</p>
<p><a href="http://andrzej.net.pl/wp-content/uploads/2010/06/screen048.jpg" rel="lightbox[788]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/06/screen048.jpg?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/06/screen048-300x150.jpg" alt="" title="debugger display" width="300" height="150" class="alignnone size-medium wp-image-791" /></a></p>
<p>Prawda, że lepiej i wygodniej :) ?<br />
Nie będę rozwodził się nad wszystkimi opcjami jakie udostępnia ten atrybut, gdyż <a href="http://msdn.microsoft.com/en-us/library/x810d419.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/x810d419.aspx?referer=');">bardzo dobrze (wraz z przykładami) opisany jest on na MSDN.</a></p>
<p>Miłego debugowania! ;)</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/06/debuggerdisplay-maly-pomocnik/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Finderr &#8211; serwis ułatwiający szukanie zlokalizowanych wyjątków</title>
		<link>http://andrzej.net.pl/index.php/2010/06/finderr-serwis-ulatwiajacy-szukanie-zlokalizowanych-wyjatkow/</link>
		<comments>http://andrzej.net.pl/index.php/2010/06/finderr-serwis-ulatwiajacy-szukanie-zlokalizowanych-wyjatkow/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 13:54:16 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>
		<category><![CDATA[przydatne narzędzia]]></category>
		<category><![CDATA[wyszperane]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=783</guid>
		<description><![CDATA[Jakiś czas temu na devpytaniach Maciej Zbrzezny pytał o to, jak zmienić język zgłaszanych wyjątków w .NET. Dziś podczas jednego z podobnych poszukiwań natknąłem się na serwis FindErr. Jeden z komentarzy zadowolonych użytkowników: I have spent numerous hours trying to translate error messages logged by application deployed at my Chinese client. After long hours of [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu na devpytaniach Maciej Zbrzezny pytał o to, <a href="http://devpytania.pl/questions/2565/jak-zmienic-jezyk-dla-exception-w-net/2782#2782" onclick="pageTracker._trackPageview('/outgoing/devpytania.pl/questions/2565/jak-zmienic-jezyk-dla-exception-w-net/2782_2782?referer=');">jak zmienić język zgłaszanych wyjątków w .NET</a>.<br />
Dziś podczas jednego z podobnych poszukiwań natknąłem się na serwis <a href="http://finderr.net/search" onclick="pageTracker._trackPageview('/outgoing/finderr.net/search?referer=');">FindErr</a>.<br />
Jeden z komentarzy zadowolonych użytkowników:</p>
<blockquote><p>I have spent numerous hours trying to translate error messages logged by application deployed at my Chinese client. After long hours of frustration, I finally found this site. So far, this site has saved me at least 1480 man hours of laborous searching for translations of those Chinese error messages. I simply love it!</p></blockquote>
<p>jakże podobny do tego co odczuwamy tłumacząc na angielski polskie teksty wyjątków ;)</p>
<p>Teraz wystarczy wkleić tekst wyjątku do serwisu zamiast do google &#8211; to tylko jedno kliknięcie więcej ;)</p>
<p><a href="http://andrzej.net.pl/wp-content/uploads/2010/06/screen043.jpg" rel="lightbox[783]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/06/screen043.jpg?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/06/screen043-300x127.jpg" alt="" title="FindErr" width="300" height="127" class="alignnone size-medium wp-image-784" /></a></p>
<p>W połączeniu z możliwościami jakie daje choćby Opera, wystarczy po krótkiej konfiguracji wpisywać w pasku adres np:</p>
<p><a href="http://andrzej.net.pl/wp-content/uploads/2010/06/screen044.jpg" rel="lightbox[783]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/06/screen044.jpg?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/06/screen044-300x67.jpg" alt="" title="FindErr + Opera" width="300" height="67" class="alignnone size-medium wp-image-785" /></a></p>
<p>i serwis finderr zrobi za nas resztę ;)</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/06/finderr-serwis-ulatwiajacy-szukanie-zlokalizowanych-wyjatkow/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Akademia Internetowa, czyli XAMLa czas zacząć</title>
		<link>http://andrzej.net.pl/index.php/2010/05/akademia-internetowa-czyli-xamla-czas-zaczac/</link>
		<comments>http://andrzej.net.pl/index.php/2010/05/akademia-internetowa-czyli-xamla-czas-zaczac/#comments</comments>
		<pubDate>Thu, 13 May 2010 19:22:12 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>
		<category><![CDATA[Akademia Internetowa]]></category>
		<category><![CDATA[Integral Technologies]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[szkolenia]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=766</guid>
		<description><![CDATA[Wpis po dość długiej przerwie, także może dość nieskładny. Chyba ta zima mnie wykończyła, że nawet ochoty siadać przy komputerze nie miałem. Trochę przechodzi na szczęście syndrom nic-mi-się-nie-chce. Wcześniej robi się jasno, dłużej jest jasno &#8211; żyć się znowu chce. Programować też. Do rzeczy jednak. Dziś, wraz z kolegą z pracy, brałem udział w pierwszym [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Wpis po dość długiej przerwie, także może dość nieskładny. Chyba ta zima mnie wykończyła, że nawet ochoty siadać przy komputerze nie miałem. Trochę przechodzi na szczęście syndrom nic-mi-się-nie-chce. Wcześniej robi się jasno, dłużej jest jasno &#8211; żyć się znowu chce. Programować też.</p>
<p>Do rzeczy jednak. Dziś, wraz z kolegą z pracy, brałem udział w pierwszym z cyklu czterech warsztatów organizowanych przez Microsoft. Kryptonim akcji &#8211; <a href="http://www.microsoft.com/poland/ai/" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/poland/ai/?referer=');">Akademia Internetowa</a>.<br />
<span id="more-766"></span><br />
Gdy kilka dni temu dowiedzieliśmy się o szkoleniach, ledwo udało się nam zapisać na wolny termin. Załapaliśmy się rzutem na taśmę do <a href="http://www.integral-tech.pl/default.htm" onclick="pageTracker._trackPageview('/outgoing/www.integral-tech.pl/default.htm?referer=');">Integral Technologies</a>. Dzisiejsza część dotyczyła SilverLighta, dokładniej: &#8222;SilverLight dla programistów &#8211; podstawy&#8221;.<br />
Nadmienię tylko, że w sprawie SilverLighta (jak i WPF, o <a href="http://devpytania.pl/questions/2219/wpf-czy-zaczynac-jak-zaczac" onclick="pageTracker._trackPageview('/outgoing/devpytania.pl/questions/2219/wpf-czy-zaczynac-jak-zaczac?referer=');">którego ostatnio pytałem na devpytania.pl</a>) wiedziałem, że gdzieś dzwoni&#8230; Jednak idea XAMLa była mi obca.</p>
<p>Szkolenia zdecydowanie mogę polecić. Było bardzo trafione &#8211; zarówno z ilością materiału jak i przekrojem tematycznym. 7 godzin wystarczyło na zainteresowanie tą technologią, poznanie podstaw SL i zwrócenie uwagi na kilka niuansów, które zapewne ciężko byłoby wyczytać w czysto teoretycznych książkach.<br />
Zajęcia prowadzone były w formie warsztatów &#8211; na prostych przykładach można było zobaczyć o co w tym wszystkim chodzi, wyklikać, poznać narzędzia.</p>
<p>Zakres tematyczny:</p>
<ol>
<li>Wprowadzenie do Silverlight i XAML oraz środowiska narzędziowego</li>
<li>Protoypowanie interfejsu użytkownika &#8211; Expression Blend i Sketch Flow</li>
<li>Rozmieszczenie elementów w Silverlight &#8211; layout</li>
<li>Atrakcyjny wygląd</li>
<li>Podstawowe kontrolki i Silverlight Control Toolkit</li>
<li>Style i szablony wizualne</li>
<li>Binding</li>
<li>Techniki animacji</li>
<li>Wykorzystanie technologii Deep Zoom do prezentacji grafiki</li>
<li>Udostępnianie mediów</li>
</ol>
<p>Prowadząca &#8211; Ewa Baćmaga &#8211; zwinnie opowiadała zarówno o Silverlight jak i narzędziach: Expression Blend i samym designerze wbudowanym w VS2010 (którego wymaga Silverlight 4). Bardzo dobrze przygotowane pliki do laboratorium sprawiały, ze skupialiśmy się na tym, by zobaczyć jak najwięcej i poznać jak najwięcej możliwości samego Silverlighta bez jednoczesnego klepania banalnego kodu, nie związanego stricte z tematem.</p>
<p>O samym Silverlight może napiszę kilka słów oddzielnie &#8211; na razie wpadł na moją listę &#8222;ciekawe tematy, na których opracowanie potrzeba trochę czasu i wcześniejszego zgłębienia wiedzy&#8221; ;) </p>
<p>Muszę przyznać, że Microsoft skutecznie &#8222;sprzedał&#8221; mi Silverlighta. Zdecydowanie będę teraz szukał miejsca, w którym ja sprzedam go dalej &#8211; już dosłownie ;)</p>
<p>Tylko dlaczego do cholery Silverlight nie chodzi na mojej ukochanej Operze!?</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/05/akademia-internetowa-czyli-xamla-czas-zaczac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>BugNET i TRAC &#8211; porównanie. Część I</title>
		<link>http://andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/</link>
		<comments>http://andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/#comments</comments>
		<pubDate>Mon, 01 Feb 2010 23:14:36 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>
		<category><![CDATA[programy]]></category>
		<category><![CDATA[przydatne narzędzia]]></category>
		<category><![CDATA[BugNET]]></category>
		<category><![CDATA[bugtracker]]></category>
		<category><![CDATA[system zgłaszania błędów]]></category>
		<category><![CDATA[TRAC]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=737</guid>
		<description><![CDATA[Nie tak dawno wspominałem o startupie devpytania.pl. Niewiele cykli procesora upłynęło od tego czasu a ja muszę przyznać, że devpytania przypadły mi do gustu. Widać tam grupę ludzi angażujących się w pomoc innym, ciekawe pytania i rozważania. Co ważne &#8211; nie oderwane od naszego lokalnego podwórka. W informatyce wiele problemów jest &#8222;poza podziałami&#8221;, są jednak [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/' rel='bookmark' title='Permanent Link: Proste i przyjemne porównanie kolekcji w .NET' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/?referer=');">Proste i przyjemne porównanie kolekcji w .NET</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/' rel='bookmark' title='Permanent Link: Polski klon stackoverflow.com &#8211; devpytania.pl' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/?referer=');">Polski klon stackoverflow.com &#8211; devpytania.pl</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Nie tak dawno <a href="http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/?referer=');">wspominałem</a> o startupie devpytania.pl. Niewiele cykli procesora upłynęło od tego czasu a ja muszę przyznać, że devpytania przypadły mi do gustu.</p>
<p style="text-align: justify;">Widać tam grupę ludzi angażujących się w pomoc innym, ciekawe pytania i rozważania. Co ważne &#8211; nie oderwane od naszego lokalnego podwórka. W informatyce wiele problemów jest &#8222;poza podziałami&#8221;, są jednak i takie dość mocno związane z konkretnym regionem. Devpytania stają się jednym z podstawowych serwisów, które odwiedzam. Pozwala mi to na zapoznanie się z problemami innych, i to problemami niekoniecznie dotyczącymi .NET czy nawet niekoniecznie programowania sensu stricte.</p>
<p style="text-align: justify;">Do rzeczy jednak. Dlaczego wspominam o devpytania? Dlatego, że z <a href="http://devpytania.pl/questions/534/darmowy-system-typu-bugtracker" onclick="pageTracker._trackPageview('/outgoing/devpytania.pl/questions/534/darmowy-system-typu-bugtracker?referer=');">pewnego tematu dotyczącego darmowych systemów typu bugtracker</a> wziął się pośrednio pomysł na opowiastkę w odcinkach, której pierwszą część właśnie czytasz.</p>
<p style="text-align: justify;">W odpowiedziach na wspomniane pytanie pojawiło się wiele odpowiedzi &#8211; wiadomo &#8211; każdy chwalił swoje. Osobiście od dość dawna używam <a href="http://trac.edgewall.org/" onclick="pageTracker._trackPageview('/outgoing/trac.edgewall.org/?referer=');">systemu TRAC</a>. Zaraził mnie nim jeszcze kolega ze studiów i używałem go już parę lat temu chyba na jedynej platformie w Polsce udostępniającej hosting SVN + TRAC &#8211; <a href="http://svn.pl/" onclick="pageTracker._trackPageview('/outgoing/svn.pl/?referer=');">svn.pl</a>. Zainteresował mnie natomiast inny  &#8211; <a href="http://www.bugnetproject.com" onclick="pageTracker._trackPageview('/outgoing/www.bugnetproject.com?referer=');">bugNET</a>. Spróbować nie zaszkodzi. Zainstalowałem więc bugNET obok TRAC&#8230;</p>
<p><span id="more-737"></span></p>
<p style="text-align: justify;">Pierwsze odczucie po instalacji &#8211; jest nieźle. Wszystko kolorowe, ikonkowe, błyszczące, świecące, grupujące się i radosne. W kolorze zielonym &#8211; ponoć kolor nadziei. Pozytywnie nastraja, jak na system który &#8222;śledzi&#8221; błędy. Marketingowo świetne ;)</p>
<p style="text-align: justify;">Konfiguracja dość łatwa, wszystko odbywa się z poziomu przeglądaki. Nadszedł pierwszy zachwyt.<br />
O zachwytach i samym korzystaniu jednak później. <strong>W tym odcinku skupię się na instalacji</strong>. Nie jest to sprawa, którą można zbagatelizować porównując TRAC i bugNET. Jest to diametralnie różne podejście i &#8211; moim zdaniem &#8211; nie bez znaczenia.</p>
<p style="text-align: justify;">
<h2>Ogólne założenia</h2>
<p>Instalacja na systemie Windows, automatyczne uruchamianie z systemem i umożliwienie dostępu z zewnątrz.</p>
<p>Wymagana autoryzacja użytkowników.</p>
<p>Zakładamy, że zainstalowany jest SVN.</p>
<p>Punktacja w skali od 1 do 10, im więcej punktów przyznane tym lepsza ocena.</p>
<p>TRAC <a href="http://trac.edgewall.org/wiki/TracDownload" onclick="pageTracker._trackPageview('/outgoing/trac.edgewall.org/wiki/TracDownload?referer=');">w wersji 0.11.6</a></p>
<p>BugNET <a href="http://bugnetproject.com/Blogs/tabid/53/EntryId/54/BugNET-0-8-167-0-RC2-Released.aspx" onclick="pageTracker._trackPageview('/outgoing/bugnetproject.com/Blogs/tabid/53/EntryId/54/BugNET-0-8-167-0-RC2-Released.aspx?referer=');">w wersji 0.8.167.0 (RC2)</a></p>
<p>Może trochę niesprawiedliwie, że TRAC w wersji produkcyjnej a BugNET w wersji RC2, jednak kto powiedział, że świat  jest sprawiedliwy ;) ? Poważniej &#8211; BugNET &#8222;więcej daje&#8221; w wersji 0.8 a ewentualne bolączki wersji RC pominę w dalszych porównaniach.</p>
<h2>TRAC</h2>
<div id="attachment_750" class="wp-caption alignnone" style="width: 310px"><a href="http://andrzej.net.pl/wp-content/uploads/2010/02/trac.png" rel="lightbox[737]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/02/trac.png?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/02/trac-300x185.png" alt="trac" title="trac" width="300" height="185" class="size-medium wp-image-750" /></a><p class="wp-caption-text">trac</p></div>
<p>Gdybyśmy instalowali TRAC na  Windows rok temu &#8211; to byłby dramat. Dokumentacja była dość uboga i co chwilę napotykane problemy sprawiały, że wszystkiego się odechciewało.</p>
<p>Obecnie nie jest to instalacja typu dalej-dalej-instalator-gadżeta ale każdy zainteresowany powinien sobie poradzić.</p>
<p><a href="http://how-to-solutions.com/how-to-install-trac-on-windows.html" onclick="pageTracker._trackPageview('/outgoing/how-to-solutions.com/how-to-install-trac-on-windows.html?referer=');">Kroki niezbędne do instalacji:</a></p>
<ol>
<li><a href="http://www.python.org/download/" onclick="pageTracker._trackPageview('/outgoing/www.python.org/download/?referer=');">Instalacja Pythona</a> (najlepiej wersja 2.5) &#8211; bezproblemowa. Plik MSI. 10/10</li>
<li><a href="http://trac.edgewall.org/wiki/TracDownload" onclick="pageTracker._trackPageview('/outgoing/trac.edgewall.org/wiki/TracDownload?referer=');">Instalacja TRAC</a> &#8211; bezproblemowa. Instalator. 10/10</li>
<li><a href="http://genshi.edgewall.org/wiki/Download" onclick="pageTracker._trackPageview('/outgoing/genshi.edgewall.org/wiki/Download?referer=');">Instalacja Genshi</a> &#8211; biblioteki do przetwarzania HTML / XML &#8211; bezproblemowa. Instalator. 10/10</li>
<li><a href="http://peak.telecommunity.com/dist/ez_setup.py" onclick="pageTracker._trackPageview('/outgoing/peak.telecommunity.com/dist/ez_setup.py?referer=');">Ściągnięcie ez-setup</a> i umieszczenie w katalogu skrytpów. 10/10</li>
<li>Utworzenie projektu &#8211; z linii komend, używając skryptów. Uciążliwe ale nie dramatyczne. W sumie ogranicza się do &#8222;dalej-dalej&#8221; tyle że w lini poleceń. 7/10</li>
<li>Instalacja <a href="http://trac-hacks.org/wiki/AccountManagerPlugin" onclick="pageTracker._trackPageview('/outgoing/trac-hacks.org/wiki/AccountManagerPlugin?referer=');">AccountManagerPlugin</a> &#8211; do autoryzacji użytkowników. Z linii poleceń &#8211; ściągnięcie ze zdalnego repozytorium. Wszystko dzieje się samo. Do przeżycia. 7/10</li>
<li>Ustawienie sekcji w pliku konfiguracyjnym projektu i nadanie uprawnień anonimowemu użytkownikowi. Nie ma dramatu ale znowu konsola. 7/10</li>
<li>Uruchomienie TRAC z linii poleceń &#8211; proste, ale to chwilowe rozwiązanie. 7/10</li>
<li>Konfiguracja wtyczki uprawnień &#8211; już z poziomu przeglądarki. Wymaga dość intuicyjnego podejścia. 7/10</li>
<li>Ściągnięcie i zainstalowanie Windows Server 2003 Resource Toolkit &#8211; niezbędne do instalacji TRAC jako usługi systemowej. 9/10</li>
<li><a href="http://trac.edgewall.org/wiki/TracOnWindowsStandalone#RunningTracdasservice" onclick="pageTracker._trackPageview('/outgoing/trac.edgewall.org/wiki/TracOnWindowsStandalone_RunningTracdasservice?referer=');">Ustawienie TRAC jako usługi systemowej</a> &#8211; trochę grzebania w rejestrze. Mimo, że dobrze udokumentowane to jednak uciążliwe. 3/10</li>
<li>Głęboki oddech i może zadziała ;) Za ilość kroków instalacj: 5/10</li>
</ol>
<h2>BugNET</h2>
<div id="attachment_751" class="wp-caption alignnone" style="width: 310px"><a href="http://andrzej.net.pl/wp-content/uploads/2010/02/bugnet.png" rel="lightbox[737]" onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/wp-content/uploads/2010/02/bugnet.png?referer=');"><img src="http://andrzej.net.pl/wp-content/uploads/2010/02/bugnet-300x159.png" alt="bugNET" title="bugNET" width="300" height="159" class="size-medium wp-image-751" /></a><p class="wp-caption-text">bugNET</p></div>
<ol>
<li><a href="http://www.windowsnetworking.com/articles_tutorials/Web-Sites-Windows-2003.html" onclick="pageTracker._trackPageview('/outgoing/www.windowsnetworking.com/articles_tutorials/Web-Sites-Windows-2003.html?referer=');">Założenie site&#8217;u na IIS</a>. Dla niezaznajomionych może być kłopotliwe ale mocno udokumentowane &#8211; 9/10</li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms186312.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/ms186312.aspx?referer=');">Założenie bazy danych MS SQL</a>. Raczej banalne. 9/10</li>
<li>Przerzucenie plików instalacyjnych do katalogu stworzonego website&#8217;u 10/10</li>
<li><a href="http://www.bugnetproject.com/Documentation/tabid/57/topic/Installation/Default.aspx" onclick="pageTracker._trackPageview('/outgoing/www.bugnetproject.com/Documentation/tabid/57/topic/Installation/Default.aspx?referer=');">Ustawienie ConnectionStringa do połączenia z bazą</a> &#8211; 9/10</li>
<li>Uruchomienie skryptu instalacyjnego z przeglądarki. Informacja o statusie i ewentualnych błędach na ekranie. 10/10</li>
<li>Gotowe. Za ilość kroków instalacji: 10/10</li>
</ol>
<h2>Podsumowanie</h2>
<p>Może najpierw numerkologia. Zaszalejemy ze średnią harmoniczną ;) ? Może nie &#8211; niech zostanie nic nie mówiąca średnia arytmetyczna. Jednak jak na poważne porównanie publikowane na poczytnym blogu przystało &#8211; cyferki muszą być ;) Poważniej:</p>
<p><strong>TRAC</strong>. Ilość kroków instalacji &#8211; minimum 11. Średnia punktów 7,25.</p>
<p><strong>BugNET</strong>. Ilość kroków instalacji &#8211; 5. Średnia punktów 9,50.</p>
<p>Dodatkowo TRAC wymaga &#8222;standalone servera&#8221; pracującego tylko na jego potrzeby. Dla bugNET można wykorzystać wbudowany IIS, jednak nie ma go np. WinXP Home.<br />
TRAC zainstalujemy na każdym komputerze. BugNET tylko na Windows i tylko na takim, na którym można zainstalować IIS.</p>
<p><strong>Wniosek:</strong></p>
<p>Zdecydowanie łatwiej zainstalować jest bugNET niż TRAC, szczególnie dla zaznajomionych z zagadnieniami Windows i ASP.NET.<br />
TRAC wymaga większej uwagi i może spowodować więcej nieprzewidzianych komplikacji, jednak da się go zainstalować wszędzie.</p>
<h3><strong><span style="color: #ff6600;">Odcinek wygrywa: BugNET</span></strong><strong><span style="text-decoration: underline;"></span></strong></h3>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/' rel='bookmark' title='Permanent Link: Proste i przyjemne porównanie kolekcji w .NET' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2011/06/proste-i-przyjemne-porownanie-kolekcji-w-net/?referer=');">Proste i przyjemne porównanie kolekcji w .NET</a></li>
<li><a href='http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/' rel='bookmark' title='Permanent Link: Polski klon stackoverflow.com &#8211; devpytania.pl' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/?referer=');">Polski klon stackoverflow.com &#8211; devpytania.pl</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/02/bugnet-i-trac-porownanie-czesc-i/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Weekendowo &#8211; przygotowania do egzaminu, poznawanie MVC</title>
		<link>http://andrzej.net.pl/index.php/2010/01/weekendowo-przygotowania-do-egzaminu-poznawanie-mvc/</link>
		<comments>http://andrzej.net.pl/index.php/2010/01/weekendowo-przygotowania-do-egzaminu-poznawanie-mvc/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 21:17:47 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=719</guid>
		<description><![CDATA[Po ciężkiim tygodniu nastał weekend :) Skupiłem się dziś na czytaniu Training Kit&#8217;a do egzaminu 70-536. Rewolucji żadnej póki co ta książka nie wnosi. Owszem &#8211; dość dobrze porządkuje całą zdobytą wiedzę, jednak zagadnienia są dość akademickie. Muszę jednak przyznać, że to jedna z lepszych publikacji MS jakie mam okazję czytać. Pisana jest bez zbędnego [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">
Po ciężkiim tygodniu nastał weekend :)<br />
Skupiłem się dziś na czytaniu <a href="http://www.microsoft.com/learning/en/us/book.aspx?ID=9469&#038;locale=en-us" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/learning/en/us/book.aspx?ID=9469_038_locale=en-us&amp;referer=');">Training Kit&#8217;a do egzaminu 70-536</a>.<br />
Rewolucji żadnej póki co ta książka nie wnosi. Owszem &#8211; dość dobrze porządkuje całą zdobytą wiedzę, jednak zagadnienia są dość akademickie.<br />
Muszę jednak przyznać, że to jedna z lepszych publikacji MS jakie mam okazję czytać. Pisana jest bez zbędnego nadęcia a autor pozwala sobie nawet na rozbawiające wstawki w rodzaju: &#8222;doskonała znajomość wyrażeń regularnych zapewne ucieszyłaby Twoich kolegów, mających świra na punkcie Linuxa ale nie oszukujmy się &#8211; na egzaminie wymagamy ich podstawowej znajomości&#8221; ;)</p>
<p><p style="text-align:justify">
Zdziwiony też jestem lekkością, z jaką czyta się tak ogromną cegłę (waży chyba ze 2,5kg). Przebrnąłem przez ponad 200 stron &#8211; value types, reference types, collections, serialization &#8211; i nie czuję się nawet zmęczony.<br />
Zobaczymy co bedzie dalej &#8211; właśnie zaczynam rozdział o Graphics i uświadomiłem sobie, że nigdy chyba w C# niczego nie narysowałem &#8222;ręcznie&#8217;. Także spora luka do nadrobienia ;)</p>
<p><p style="text-align:justify">
Druga sprawa &#8211; <a href="http://www.asp.net/mvc/whatisaspmvc/" onclick="pageTracker._trackPageview('/outgoing/www.asp.net/mvc/whatisaspmvc/?referer=');">framework MVC</a>.<br />
Kiedyś coś o nim słyszałem, jednak jakoś nie miałem okazji używać. W firmie, w której pracuje korzystamy z własnego frameworka, w &#8222;prywatnym&#8221; programowaniu też miałem jakieś własne rozwiązania ze &#8222;starych&#8221; czasów.<br />
Przypomniałem sobie o MVC kilka dni temu, przy okazji robienia niewielkiego projektu w.. uwaga &#8211; PHP ;) Użyłem do tego frameworka <a href="http://www.kohanaphp.com/" onclick="pageTracker._trackPageview('/outgoing/www.kohanaphp.com/?referer=');">Kohana</a> opartego o ten sam wzorzec. Praca z tym frameworkiem była dość przyjemna. Banalna konfiguracja i nareszcie możliwość utrzymania względnie czystego i czytelnego kodu sprawiły, że nareszcie jestem zadowolony z własnego kodu napisanego w PHP ;)
</p>
<p style="text-align:justify">
W przypływie zachwytu postanowiłem więc w wolnej chwili przyjrzeć się temu, jak do sprawy MVC podszedł Microsoft. Cóż &#8211; w pierwszej chwili czułem się totalnie zdezorientowany.<br />
Dziwnie czuje się człowiek, któremu wydaje się, że &#8222;coś tam wie&#8221; a jednocześnie nie wie nagle jak coś działa. Setki atrybutów przy metodach, klasach, DataContext, brak kontrolek.<br />
Po kilku godzinach, na które złożyło się oglądanie <a href="http://www.asp.net/learn/mvc-videos/" onclick="pageTracker._trackPageview('/outgoing/www.asp.net/learn/mvc-videos/?referer=');">Video Tutoriali</a>, odpalenia <a href="http://nerddinner.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/nerddinner.codeplex.com/?referer=');">NerdDinner</a>, czyli przykładowej aplikacji od MS opartej o MVC muszę przyznać, że spodobało mi się!
</p>
<p style="text-align:justify">
Trochę mnie to martwi, gdyż zapewne najbliższe tygodnie przeznaczę na oglądanie kolejnych video-tutoriali i czytaniu wszystkiego co popadnie. W połączeniu z chronicznym brakiem czasu skończy się niejedną zarwaną nocką ;) Mam już sporo &#8222;pytań&#8221; dotyczących połączenia z bazą danych. Do tej pory używałem własnej klasy opakowującej frameworkowe SQlConnection w połączeniu z procedurami składowanymi. Ciekawe, czy da się łatwo użyć tych, istniejących już, procedur w DataContext.
</p>
<p style="text-align:justify">
Takie luźne przemyślanie.. A jak wyglądało Wasze spotkanie z MVC? Jakie projekty zrealizowaliście przy jego pomocy? Co polecicie do poczytania, niekoniecznie tylko w internecie? Na co denerwującego się natknęliście i możecie przestrzec przed tym innych?</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/01/weekendowo-przygotowania-do-egzaminu-poznawanie-mvc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Polski klon stackoverflow.com &#8211; devpytania.pl</title>
		<link>http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/</link>
		<comments>http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 12:09:09 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=714</guid>
		<description><![CDATA[Wczoraj wpis o klonowaniu a dziś zauważyłem, że powstał klon najlepszego moim zdaniem społecznościowego(?) serwisu programistycznego &#8211; stackoverflow.com. Z tego co zauważyłem premiera devpytania.pl miała miejsce 3 stycznia. Ja jednak dopiero dziś wpadłem na informację o tym startupie. Pytanie tylko &#8211; czy się to przyjmie? Stackoverflow.com ma niesamowitą siłę rażenia. Ilość pytań (i dobrych odpowiedzi) [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">
Wczoraj wpis o klonowaniu a dziś zauważyłem, że powstał klon najlepszego moim zdaniem społecznościowego(?) serwisu programistycznego &#8211; <a href="stackoverflow.com">stackoverflow.com</a>.<br />
Z tego co <a href="http://www.devblogi.pl/2010/01/z-nowym-rokiem-nowym-krokiem_03.html" onclick="pageTracker._trackPageview('/outgoing/www.devblogi.pl/2010/01/z-nowym-rokiem-nowym-krokiem_03.html?referer=');">zauważyłem</a> premiera <a href="devpytania.pl">devpytania.pl</a> miała miejsce 3 stycznia. Ja jednak dopiero dziś wpadłem na informację o tym startupie.</p>
<p>Pytanie tylko &#8211; czy się to przyjmie? Stackoverflow.com ma niesamowitą siłę rażenia. Ilość pytań (i dobrych odpowiedzi) jest ogromna a chyba język angielski w przypadku programowania to żadna bariera.<br />
Uważam jednak, że sama idea jest niezła. Polska &#8222;społeczność&#8221; osób związanych z programowaniem powoli wychodzi z ukrycia ;) Oby tylko z tego serwisu nie zrobił się śmietnik.<br />
Dla mnie najwspanialsza w tego typu serwisach jest czytelność. Każda odpowiedź ma ocenę i od razu widać, co jest wartościowe. Niesamowicie to pomocne w codziennym pędzie.<br />
Sam chętnie będę zaglądał i (być może) służył radą tam i ówdzie ;) </p>
<p>W każdym razie &#8211; powodzenia.</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/01/polski-klon-stackoverflow-com-devpytania-pl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[Nonsensopedia] &#8211; programowanie. Na wesoło.</title>
		<link>http://andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/</link>
		<comments>http://andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:53:41 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[na wesoło]]></category>
		<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=710</guid>
		<description><![CDATA[Niesamowicie spodobał mi się wpis dotyczący programowania, zamieszczony na nonsensopedii. Polecam zapoznanie się przy porannej kawie: http://nonsensopedia.wikia.com/wiki/Programowanie Mam nadzieję, że poprawi humor, podniesie biorytm i odpędzi złe duchy ;) Powiązane wpisy:Satyra na .NET ;) ? Powiązane wpisy wygenerowane przez wtyczkę Yet Another Related Posts.


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/06/satyra-na-net/' rel='bookmark' title='Permanent Link: Satyra na .NET ;) ?' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/06/satyra-na-net/?referer=');">Satyra na .NET ;) ?</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p>Niesamowicie spodobał mi się wpis dotyczący programowania, zamieszczony na nonsensopedii.<br />
Polecam zapoznanie się przy porannej kawie:</p>
<p><a href="http://nonsensopedia.wikia.com/wiki/Programowanie" onclick="pageTracker._trackPageview('/outgoing/nonsensopedia.wikia.com/wiki/Programowanie?referer=');">http://nonsensopedia.wikia.com/wiki/Programowanie</a></p>
<p>Mam nadzieję, że poprawi humor, podniesie biorytm i odpędzi złe duchy ;)</p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/06/satyra-na-net/' rel='bookmark' title='Permanent Link: Satyra na .NET ;) ?' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/06/satyra-na-net/?referer=');">Satyra na .NET ;) ?</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/01/nonsensopedia-programowanie-na-wesolo/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Shallow copy a deep copy &#8211; klonowanie obiektu z MemberwiseClone oraz przy użyciu serializacji</title>
		<link>http://andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/</link>
		<comments>http://andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 22:40:53 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[C# klonowanie]]></category>
		<category><![CDATA[deep copy]]></category>
		<category><![CDATA[ICloneable]]></category>
		<category><![CDATA[serializacja]]></category>
		<category><![CDATA[shallow copy]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=692</guid>
		<description><![CDATA[Rozróżnia się dwie możliwości klonowania obiektów: shallow copy &#8211; tzw. płytka kopia. Najczęściej wykonywana przy użyciu metody MemberwiseClone z klasy Object. deep copy &#8211; tzw. głęboka, pełna kopia. Przyjrzymy się jednej z możliwości jej realizacji &#8211; wykorzystania serializacji do strumienia w pamięci. Zapewne wszyscy wiedzą o istnieniu metody MemberwiseClone w klasie Object. Pozwala ona na [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2009/08/show-hide-javascript-proste-podlaczenie-przy-uzyciu-c/' rel='bookmark' title='Permanent Link: Show-hide JavaScript &#8211; proste podłączenie przy użyciu C#' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2009/08/show-hide-javascript-proste-podlaczenie-przy-uzyciu-c/?referer=');">Show-hide JavaScript &#8211; proste podłączenie przy użyciu C#</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">
Rozróżnia się dwie możliwości klonowania obiektów:</p>
<ul>
<li>shallow copy &#8211; tzw. płytka kopia. Najczęściej wykonywana przy użyciu metody MemberwiseClone z klasy Object.</li>
<li>deep copy &#8211; tzw. głęboka, pełna kopia. Przyjrzymy się jednej z możliwości jej realizacji &#8211; wykorzystania serializacji do strumienia w pamięci.</li>
</ul>
<p style="text-align:justify">
Zapewne wszyscy wiedzą o istnieniu metody <a href="http://msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.object.memberwiseclone.aspx?referer=');">MemberwiseClone</a> w klasie Object.<br />
Pozwala ona na wykonanie tzw. &#8222;shallow copy&#8221;, czyli &#8222;płytkiej kopii&#8221; obiektu. Kopia taka nie radzi sobie jednak z typami referencyjnymi zagnieżdżonymi w klonowanym obiekcie. Potrafi poprawnie kopiować tylko Value Types.
</p>
<p><span id="more-692"></span></p>
<p style="text-align:justify">
Weźmy przykładową klasę Person:
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Person<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> FirstName <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">string</span> LastName <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> DateTime BirthDate <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> Person Boss <span style="color: #008000;">&#123;</span> get<span style="color: #008000;">;</span> set<span style="color: #008000;">;</span> <span style="color: #008000;">&#125;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">public</span> Person<span style="color: #008000;">&#40;</span> <span style="color: #6666cc; font-weight: bold;">string</span> firstName, <span style="color: #6666cc; font-weight: bold;">string</span> lastName, DateTime birthDate <span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">FirstName</span> <span style="color: #008000;">=</span> firstName<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">LastName</span> <span style="color: #008000;">=</span> lastName<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">BirthDate</span> <span style="color: #008000;">=</span> birthDate<span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span> &nbsp; &nbsp; &nbsp;<br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align:justify">
<p>Możemy zaimplementować interfejs <a href="http://msdn.microsoft.com/en-us/library/system.icloneable.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.icloneable.aspx?referer=');">ICloneable</a> dla &#8222;shallow copy&#8221; w ten sposób:
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">object</span> Clone<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #0600FF; font-weight: bold;">this</span><span style="color: #008000;">.</span><span style="color: #0000FF;">MemberwiseClone</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align:justify">
<p>Co się jednak stanie, gdy wykonamy kopię zmiennej kowalski z poniższego przykładu?
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Person jankowski <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Person<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Stefan&quot;</span>, <span style="color: #666666;">&quot;Jankowski&quot;</span>, <span style="color: #008000;">new</span> DateTime<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1977</span>,<span style="color: #FF0000;">2</span>,<span style="color: #FF0000;">25</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
Person kowalski <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Person<span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Jan&quot;</span>, <span style="color: #666666;">&quot;Kowalski&quot;</span>, <span style="color: #008000;">new</span> DateTime<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">1980</span>,<span style="color: #FF0000;">12</span>,<span style="color: #FF0000;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
kowalski<span style="color: #008000;">.</span><span style="color: #0000FF;">Boss</span> <span style="color: #008000;">=</span> jankowski<span style="color: #008000;">;</span><br />
<br />
Person kowalskiCopy <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span>Person<span style="color: #008000;">&#41;</span>kowalski<span style="color: #008000;">.</span><span style="color: #0000FF;">Clone</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
Debug<span style="color: #008000;">.</span><span style="color: #0000FF;">Write</span><span style="color: #008000;">&#40;</span>kowalski<span style="color: #008000;">.</span><span style="color: #0000FF;">Boss</span> <span style="color: #008000;">==</span> kowalskiCopy<span style="color: #008000;">.</span><span style="color: #0000FF;">Boss</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p style="text-align:justify">
<p>Wynik? Tak jak oczekiwaliśmy, Boss w obiekcie kowalski oraz kowalskiCopy wskazują na ten sam obiekt &#8211; jankowski.</p>
<p>Jak widać nie jest to idealne wyjście. Rzadko zdarza się, by obiekt zawierał wyłącznie value types. Ponadto metodę MemberwiseClone możemy wywołać tylko w klasie, do której mamy dostęp. Dlaczego? Ponieważ jest ona oznaczona jako protected w klasie Object. Oznacza to, że nie użyjemy jej, gdy chcemy sklonować typ z innej biblioteki, której źródła nie jesteśmy w stanie sami zmodyfikować implementując ICloneable.</p>
<p>Właśnie tutaj z pomocą przychodzi nam serializacja. Wystarczy zserializować obiekt do strumienia w pamięci i zdeserializować do innej instancji. Gotowe.</p>
<p>Jak z realizacją?<br />
Nic nie stoi na przeszkodze, aby zamknąć kod w statycznej metodzie i wykorzystać typ generyczny. Dzięki temu będziemy mogli przy użyciu jednej metody serializować wszystkie typy! No &#8211; prawie wszystkie.</p>
<p>Należy pamiętać, że typ, który chcemy serializować:</p>
<ul>
<li>musi być oznaczony atrybutem <a href="http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.serializableattribute.aspx?referer=');">Serializable</a></li>
<li>wszystkie jego pola muszą być serializowalne</li>
</ul>
<p>Jeśli klasa nie będzie spełniać powyższych wymagań, w runtime otrzymamy SerializationException.</p>
<p> Do naszej klasy wprowadzamy więc małą modyfikację:
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #008000;">&#91;</span>Serializable<span style="color: #008000;">&#93;</span><br />
<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Person<br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">...</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align:justify">
<p>Metoda, którą będziemy serializować nasze obiekty jest dość prosta.</p>
<p>W dyrektywie using tworzymy nowy MemoryStream. Następnie tworzymy instancję <a href="http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx" onclick="pageTracker._trackPageview('/outgoing/msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter.aspx?referer=');">BinaryFormattera</a>, informując go w konstruktorze, że będzie użyty w kontekście serializacji.<br />
Serializujemy przekazany obiekt, przewijamy stream do początku i deserializujemy. Musimy przeprowadzić rzutowanie (Deserialize zwraca Object). Trochę kodu:
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #0600FF; font-weight: bold;">static</span> T CloneObject<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span> T item <span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp;<span style="color: #0600FF; font-weight: bold;">using</span> <span style="color: #008000;">&#40;</span> MemoryStream ms <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> MemoryStream<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp;<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//instancja BinaryFormattera - informujemy go,</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//ze bedzie uzyty w celu klonowania</span><br />
&nbsp; &nbsp; &nbsp; BinaryFormatter bf <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> BinaryFormatter<span style="color: #008000;">&#40;</span><span style="color: #0600FF; font-weight: bold;">null</span>, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">new</span> StreamingContext<span style="color: #008000;">&#40;</span>StreamingContextStates<span style="color: #008000;">.</span><span style="color: #0000FF;">Clone</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//serializacja</span><br />
&nbsp; &nbsp; &nbsp; bf<span style="color: #008000;">.</span><span style="color: #0000FF;">Serialize</span><span style="color: #008000;">&#40;</span>ms, item<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//przewijamy memoryStream do poczatku</span><br />
&nbsp; &nbsp; &nbsp; ms<span style="color: #008000;">.</span><span style="color: #0000FF;">Seek</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">0</span>, SeekOrigin<span style="color: #008000;">.</span><span style="color: #0000FF;">Begin</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; <span style="color: #008080; font-style: italic;">//deserializacja</span><br />
&nbsp; &nbsp; &nbsp; <span style="color: #0600FF; font-weight: bold;">return</span> <span style="color: #008000;">&#40;</span> T <span style="color: #008000;">&#41;</span>bf<span style="color: #008000;">.</span><span style="color: #0000FF;">Deserialize</span><span style="color: #008000;">&#40;</span>ms<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
&nbsp; &nbsp;<span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p style="text-align:justify">
<p>To wszystko. Przykład użycia:
</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Person kowalskiCopy <span style="color: #008000;">=</span> Tools<span style="color: #008000;">.</span><span style="color: #0000FF;">CloneObject</span><span style="color: #008000;">&lt;</span>Person<span style="color: #008000;">&gt;</span><span style="color: #008000;">&#40;</span>kowalski<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
Debug<span style="color: #008000;">.</span><span style="color: #0000FF;">Write</span><span style="color: #008000;">&#40;</span>kowalski<span style="color: #008000;">.</span><span style="color: #0000FF;">Boss</span> <span style="color: #008000;">==</span> kowalskiCopy<span style="color: #008000;">.</span><span style="color: #0000FF;">Boss</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p>Efekt wykonania tej metody? W oknie output pojawi się false. Oznacza to, że obiekt został w pełni sklonowany &#8211; łącznie z referencją do szefa.</p>
<p>Jest jeszcze kilka niewielkich niuansów związanych z serializacją &#8211; jak np. delegaty czy propertiesy, które nie powinny być serializowalne. To jednak materiał na odrębny, obszerny wpis.</p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2009/08/show-hide-javascript-proste-podlaczenie-przy-uzyciu-c/' rel='bookmark' title='Permanent Link: Show-hide JavaScript &#8211; proste podłączenie przy użyciu C#' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2009/08/show-hide-javascript-proste-podlaczenie-przy-uzyciu-c/?referer=');">Show-hide JavaScript &#8211; proste podłączenie przy użyciu C#</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Zmiana wyglądu</title>
		<link>http://andrzej.net.pl/index.php/2009/10/zmiana-wygladu/</link>
		<comments>http://andrzej.net.pl/index.php/2009/10/zmiana-wygladu/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 22:06:47 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=657</guid>
		<description><![CDATA[W poprzedniej skórce bloga czegoś mi brakowało. To jeden z tych przypadków, gdy wiadomo, że coś jest nie tak ale nie wiadomo do końca co ;) Przejrzałem chyba wszystkie tematy do wordpressa i w końcu trafiłem na ten, który wlaśnie widzicie. Przypadl mi do gustu niesamowicie. Pozostaje oczywiście dopracowanie szczegółów i spolszczenie komunikatów &#8211; jednak [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align:justify">
W poprzedniej skórce bloga czegoś mi brakowało. To jeden z tych przypadków, gdy wiadomo, że coś jest nie tak ale nie wiadomo do końca co ;)
</p>
<p><span id="more-657"></span></p>
<p style="text-align:justify">
Przejrzałem chyba <a href="http://wordpress.org/extend/themes" onclick="pageTracker._trackPageview('/outgoing/wordpress.org/extend/themes?referer=');">wszystkie tematy do wordpressa</a> i w końcu trafiłem na ten, który wlaśnie widzicie. Przypadl mi do gustu niesamowicie. Pozostaje oczywiście dopracowanie szczegółów i spolszczenie komunikatów &#8211; jednak większość gotowa. Mam nadzieję, że spójny wygląd z interesującym layoutem będzie zachęcał do czytania :) Zawsze chciałem mieć coś na zasadzie &#8222;category slider&#8221; widocznego na stronie głównej. Pojawia się co prawda dodatkowe wyzwanie &#8211; poza wpisem trzeba stworzyć również infografikę &#8211; jednak efekt końcowy wg mnie zadowalający.</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2009/10/zmiana-wygladu/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Książki &#8211; co czytam. Certyfikacja &#8211; czy warto?</title>
		<link>http://andrzej.net.pl/index.php/2009/10/ksiazki-co-czytam-certyfikacja-czy-warto/</link>
		<comments>http://andrzej.net.pl/index.php/2009/10/ksiazki-co-czytam-certyfikacja-czy-warto/#comments</comments>
		<pubDate>Fri, 16 Oct 2009 21:52:07 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[c#]]></category>
		<category><![CDATA[nowe]]></category>
		<category><![CDATA[ogólne]]></category>
		<category><![CDATA[certyfikacja MS]]></category>
		<category><![CDATA[CLR VIA C#]]></category>
		<category><![CDATA[książki o C#]]></category>
		<category><![CDATA[MCTS 70-536]]></category>
		<category><![CDATA[THE BASE CLASS LIBRARY]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=627</guid>
		<description><![CDATA[Na wstępie &#8222;krótkie&#8221; wprowadzenie &#8211; opis książki, którą męczyłem przez ostatnie ładnych &#8222;kilka&#8221; dni ;) Co uważniejsi z czytelników zauważyli malutki widget po prawej stronie &#8211; &#8222;Obecnie czytam&#8221;. Właśnie wymieniła się w niej książka. Skończyłem czytać &#8222;CLR VIA C#&#8221; Richtera, zabieram się za &#8222;VISUAL C# 2005: THE BASE CLASS LIBRARY&#8221; Balena. Z tą książką powinno [...]


Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/' rel='bookmark' title='Permanent Link: Shallow copy a deep copy &#8211; klonowanie obiektu z MemberwiseClone oraz przy użyciu serializacji' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/?referer=');">Shallow copy a deep copy &#8211; klonowanie obiektu z MemberwiseClone oraz przy użyciu serializacji</a></li>
</ol>

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p><a rev="vote-for" href="http://dotnetomaniak.pl/Ksi%C4%85%C5%BCki-co-czytam" onclick="pageTracker._trackPageview('/outgoing/dotnetomaniak.pl/Ksi_C4_85_C5_BCki-co-czytam?referer=');"><img alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fandrzej.net.pl%2Findex.php%2F2009%2F10%2Fksiazki-co-czytam-certyfikacja-czy-warto%2F" style="border:0px"/></a></p>
<p>Na wstępie &#8222;krótkie&#8221; wprowadzenie &#8211; opis książki, którą męczyłem przez ostatnie ładnych &#8222;kilka&#8221; dni ;)</p>
<p style="text-align:justify">
Co uważniejsi z czytelników zauważyli malutki widget po prawej stronie &#8211; &#8222;Obecnie czytam&#8221;. Właśnie wymieniła się w niej książka. Skończyłem czytać <a href="http://www.microsoft.com/learning/en/us/book.aspx?ID=6522&#038;locale=en-us" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/learning/en/us/book.aspx?ID=6522_038_locale=en-us&amp;referer=');">&#8222;CLR VIA C#&#8221; Richtera</a>, zabieram się za <a href="http://www.amazon.com/Programming-Microsoft-Visual-2005-Pro-Developer/dp/0735623082" onclick="pageTracker._trackPageview('/outgoing/www.amazon.com/Programming-Microsoft-Visual-2005-Pro-Developer/dp/0735623082?referer=');">&#8222;VISUAL C# 2005: THE BASE CLASS LIBRARY&#8221; Balena</a>. Z tą książką powinno pójść łatwiej i szybciej niż z Richterem (takie mam wrażenie).
</p>
<p style="text-align:justify">
CLR VIA C# jest bardzo interesującą pozycją, którą polecam każdemu. Richter w dość swoisty sposób rozebrał na części pierwsze wszystko, z czym spotykamy się na co dzień. Pierwsza część jest mocno teoretyczna &#8211; operacja na otwartym sercu .NET, czyli CLR właśnie. Ciekawostki, ogólny zarys i założenia, które zapadają w pamięć i sporo rozjaśniają. Część &#8222;Working with types&#8221; &#8211; dość ciekawa. Nie zanudza, mimo, iż opisuje rzeczy oczywiste. &#8222;Designing parts&#8221; &#8211; wspaniałe kompendium dla każdego, kto programuje współdzielone komponenty lub po prostu dąży do tego, by jego kod był zgodny ze standardem, skalowalny, bezpieczny i zoptymalizowany. 70 stron czyta się z miłym odczuciem, że nareszcie ktoś uporządkował to nad czym zawsze zastanawiałem się &#8222;czy robię to dobrze?&#8221;.
</p>
<p><span id="more-627"></span></p>
<p style="text-align:justify">
Dział &#8222;Essential types&#8221; również segreguje i porządkuje zagadnienia dotyczące rzeczy, z którymi spotykami się często. Praca z tekstem, typami enumerowanymi, tablicami, interfejsami, typami generycznymi &#8211; po lekturze staje się bardziej przewidywalna i pewna. Same przykłady są naprawdę w porządku. Prezentują często wiele aspektów poruszanego zagadnienia w&nbsp;przystępny sposób. Nie traktują czytelnika jako &#8222;niepełnosprytnego&#8221; wyjaśniając niepotrzebnie każdą linijkę &#8211; oby takie przykłady spotykać w każdej książce.
</p>
<p style="text-align:justify">
Sekcja &#8222;CLR Facilities&#8221; nie jest lekka ale jest niesamowicie przydatna. Świadomość istnienia i sposób działania Garbage Collectora, refleksje i operacje asynchroniczne &#8211; nie taki wilk straszny, jak go malują.
</p>
<p style="text-align:justify">
Książki tej (niemal 650 stron) nie da się przeczytać i zapamiętać wszystkiego. Nie raz jednak wracam do niej podczas codziennej pracy, utrwalając coś, co w danej chwili robię. Sama świadomość, że wiadomo gdzie zajrzeć aby uzyskać pewną podpowiedź czy wskazówkę jest komfortowa. Książka to kompendium, które zwraca uwagę na aspekty często traktowane w innych publikacjach po macoszemu lub wręcz pomijane. &#8222;Important notes&#8221; &#8211; przyciągają uwagę do pułapek, na których można się wyłożyć przy nieumiejętnym używaniu tego, co oferuje C#. Jednocześnie książkę czyta się przyjemnie. Liczne wzmianki o tym, że Microsoft (zdaniem autora) coś schrzanił i ma nadzieję, że naprawią to w następnej wersji przyprawiają o&nbsp;uśmiech i zwracają uwagę na to, że nikt nie jest nieomylny ;) Richter ma co prawda świra na punkcie thread safety, security, wydajności, zasięgu widoczności zmiennych, pieczętowania klas &#8211; i trochę tym zaraża ;) To w sumie jedyny zarzut do książki ;)
</p>
<p style="text-align:justify">
Jeden z przykładów, gdy sedno będzie krótsze niż wstęp ;) Po przeczytaniu &#8222;THE BCL&#8221; zastanawiam się nad połknięciem pozycji stricte &#8222;egzaminowej&#8221; i podejście do MCTS. Propozycja szefostwa i własne obserwacje to <a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-536&#038;Locale=en-us" onclick="pageTracker._trackPageview('/outgoing/www.microsoft.com/learning/en/us/Exam.aspx?ID=70-536_038_Locale=en-us&amp;referer=');">70-536: Microsoft .NET Framework &#8211; Application Development Foundation</a>. Ktoś z Was miał sposobność zdawać? Jak poszło? Jak się przygotowywaliście? Ile czasu Wam to zajęło? Może ktoś, tak jak ja, dopiero planuje? Czy według Was obecnie takie potwierdzenie umiejętności &#8211; poza własną satysfakcją &#8211; jest przydatne?
</p>
<p style="text-align:justify">
Zapraszam do dyskusji w&nbsp;komentarzach. Myślę, że pomoże to i mi rozwiać niektóre wątpliwości.<br />
Jeśli ktoś chce podzielić się informacją o ciekawej książce (niekoniecznie w tematyce egzaminowej) &#8211; również chętnie zapoznam się z Waszym &#8222;co czytam&#8221;.
</p>
<p><a rev="vote-for" href="http://dotnetomaniak.pl/Ksi%C4%85%C5%BCki-co-czytam" onclick="pageTracker._trackPageview('/outgoing/dotnetomaniak.pl/Ksi_C4_85_C5_BCki-co-czytam?referer=');"><img alt="Promuj" src="http://dotnetomaniak.pl/image.axd?url=http%3A%2F%2Fandrzej.net.pl%2Findex.php%2F2009%2F10%2Fksiazki-co-czytam-certyfikacja-czy-warto%2F" style="border:0px"/></a></p>


<p>Powiązane wpisy:<ol><li><a href='http://andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/' rel='bookmark' title='Permanent Link: Shallow copy a deep copy &#8211; klonowanie obiektu z MemberwiseClone oraz przy użyciu serializacji' onclick="pageTracker._trackPageview('/outgoing/andrzej.net.pl/index.php/2010/01/shallow-copy-a-deep-copy-klonowanie-obiektu-z-memberwiseclone-oraz-przy-uzyciu-serializacji/?referer=');">Shallow copy a deep copy &#8211; klonowanie obiektu z MemberwiseClone oraz przy użyciu serializacji</a></li>
</ol></p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2009/10/ksiazki-co-czytam-certyfikacja-czy-warto/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Po urlopie i&#8230; pierwszy tysiąc</title>
		<link>http://andrzej.net.pl/index.php/2009/08/po-urlopie-i-pierwszy-tysiac/</link>
		<comments>http://andrzej.net.pl/index.php/2009/08/po-urlopie-i-pierwszy-tysiac/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 19:05:57 +0000</pubDate>
		<dc:creator>andrzej</dc:creator>
				<category><![CDATA[ogólne]]></category>

		<guid isPermaLink="false">http://andrzej.net.pl/?p=528</guid>
		<description><![CDATA[Udało się wybyczyć nad polskim morzem &#8211; ani jednej kropelki przez cały tydzień. Po powrocie wchodzę na blog i co widzę&#8230; Dotychczas Akismet ochronił Twoją stronę przed 1 130 komentarzami będącymi spamem, lecz w kolejce nie znajdują się obecnie żadne komentarze. Dobrze, że coś mnie podkusiło przed wyjazdem i włączyłem tę wtyczkę. Czekałoby mnie niezłe [...]


Nie znaleziono powiązanych wpisów.

Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Udało się wybyczyć nad polskim morzem &#8211; ani jednej kropelki przez cały tydzień.<br />
Po powrocie wchodzę na blog i co widzę&#8230;<br />
<span id="more-528"></span></p>
<blockquote><p>Dotychczas Akismet ochronił Twoją stronę przed 1 130 komentarzami będącymi spamem, lecz w kolejce nie znajdują się obecnie żadne komentarze.</p></blockquote>
<p style="text-align: justify;">Dobrze, że coś mnie podkusiło przed wyjazdem i włączyłem tę wtyczkę. Czekałoby mnie niezłe czyszczenie. Z drugiej strony baza jednak nieźle puchnie, dlatego dziś dołożyłem pod komentarzami CAPTCHA. Wybaczcie, może będzie to czasem dla Was uciążliwe, jednak stało się niezbędne.</p>
<p style="text-align: justify;">Wybaczcie również wakacyjne rozprężenie, postaram się do końca weekendu jakiś konkretny wpis wrzucić, nie taki jak ten ;-)</p>


<p>Nie znaleziono powiązanych wpisów.</p>
<p>Powiązane wpisy wygenerowane przez <a href='http://yarpp.org' onclick="pageTracker._trackPageview('/outgoing/yarpp.org?referer=');">wtyczkę Yet Another Related Posts</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://andrzej.net.pl/index.php/2009/08/po-urlopie-i-pierwszy-tysiac/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

