<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://itblogs.pl/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Rafal. T Blog</title><subtitle type="html" /><id>http://itblogs.pl/blogs/rtynski/atom.aspx</id><link rel="alternate" type="text/html" href="http://itblogs.pl/blogs/rtynski/default.aspx" /><link rel="self" type="application/atom+xml" href="http://itblogs.pl/blogs/rtynski/atom.aspx" /><generator uri="http://communityserver.org" version="4.1.31106.3070">Community Server</generator><updated>2009-02-18T15:39:00Z</updated><entry><title>CodeCamp w Krakowie</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/10/19/codecamp-w-krakowie.aspx" /><id>/blogs/rtynski/archive/2009/10/19/codecamp-w-krakowie.aspx</id><published>2009-10-19T14:59:00Z</published><updated>2009-10-19T14:59:00Z</updated><content type="html">Powiem że jestem zaskoczony poziomem CodeCamp. Prelengaci to naprawdę wysoka p&amp;oacute;lka, spos&amp;oacute;b w jaki przekazywali informacje był niesamowity i z przykrością muszę stwierdzić że daleko jeszcze naszym MTS-owym prelengentom do takiego poziomu. Kto miał możliwość przyjechanie niech żałuje że nie przyjechał. Kto zam&amp;oacute;wił zwejści&amp;oacute;wkę a nie przyszedł i nie zrezygnował powinien dostać kopa w 4 litery od tych kt&amp;oacute;rzy chcieli a nie mogli. Było jeszcze wiele wolnych miejsc. Z tego...(&lt;a href="http://itblogs.pl/blogs/rtynski/archive/2009/10/19/codecamp-w-krakowie.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=1743" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author></entry><entry><title>MTS - normalny dzień pracy :|</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/10/01/mts-normalny-dzie-pracy.aspx" /><id>/blogs/rtynski/archive/2009/10/01/mts-normalny-dzie-pracy.aspx</id><published>2009-10-01T20:11:00Z</published><updated>2009-10-01T20:11:00Z</updated><content type="html">Większość już pewnie powr&amp;oacute;ciła do pracy, powr&amp;oacute;ciła do szarej rzeczywistości, kt&amp;oacute;ra nie jest jeszcze rokiem 2019 (szkoda). Na wielu blogach można przeczytać oceny MTS 2009. Ja napiszę kr&amp;oacute;tko. Był dużo lepiej zorganizowany niż w roku ubiegłym, fajniejsza sesja otwarcia (chociaż nie ukrywam że były momenty że mnie łamało, 4h snu to dla mnie troszkę za mało). Sesje kt&amp;oacute;re wybrałem w większości mnie zadowoliły nie rozczarowałem się nimi, mimo że na niekt&amp;oacute;rych liczyłem...(&lt;a href="http://itblogs.pl/blogs/rtynski/archive/2009/10/01/mts-normalny-dzie-pracy.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=1641" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="MTS2009" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/MTS2009/default.aspx" /></entry><entry><title>Krakowska Grupa Developerów .NET</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/09/24/krakowska-grupa-developer-amp-oacute-w-net.aspx" /><id>/blogs/rtynski/archive/2009/09/24/krakowska-grupa-developer-amp-oacute-w-net.aspx</id><published>2009-09-24T06:47:00Z</published><updated>2009-09-24T06:47:00Z</updated><content type="html">Jako że mieszkam niedaleko Krakowa postanowiłem wsiąść udział w kolejnym spotkaniu Krakowska Grupa Developer&amp;oacute;w .NET. Odbyło się ono w Pałac Puget&amp;oacute;w, ul. Starowiślna 13, Krak&amp;oacute;w. Lokacja na mapce . Czyli samo centrum łatwo dotrzeć za to naprawdę wielkie plusy. Więcej o Krakowska Grupa Developer&amp;oacute;w .NET można przeczyta na stronie http://ms-groups.pl/kgd.net/default.aspx ....(&lt;a href="http://itblogs.pl/blogs/rtynski/archive/2009/09/24/krakowska-grupa-developer-amp-oacute-w-net.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=1634" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="ms-groups" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/ms-groups/default.aspx" /></entry><entry><title>Bloggers Underground #2.5</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/08/23/bloggers-underground-2-5.aspx" /><id>/blogs/rtynski/archive/2009/08/23/bloggers-underground-2-5.aspx</id><published>2009-08-23T21:15:00Z</published><updated>2009-08-23T21:15:00Z</updated><content type="html">Od jakiegoś czasu można się rejestrować na spotkanie bloger&amp;oacute;w po pierwszym dniu konferencji MTS 2009 (tj. 29 września 2009) o godzinie 19:00. Więcej informacji znajdziesz na blogu: Bloggers Underground #2.5 . Zachęcam wszystkie osoby kt&amp;oacute;re mają chęć dzielenia się z innymi swoimi doświadczeniami oraz wiedzą o przyjżenie się tej inicjatywie....(&lt;a href="http://itblogs.pl/blogs/rtynski/archive/2009/08/23/bloggers-underground-2-5.aspx"&gt;read more&lt;/a&gt;)&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=1532" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="MTS2009" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/MTS2009/default.aspx" /><category term="Bloggers Underground" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/Bloggers+Underground/default.aspx" /></entry><entry><title>Mój harmonogram na MTS 2009</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/08/21/m-243-j-harmonogram-na-mts-2009.aspx" /><id>/blogs/rtynski/archive/2009/08/21/m-243-j-harmonogram-na-mts-2009.aspx</id><published>2009-08-21T22:35:00Z</published><updated>2009-08-21T22:35:00Z</updated><content type="html">&lt;p&gt;Przedstawiam m&amp;oacute;j wyb&amp;oacute;r na tegoroczny MTS. Rozstrzeliłem się pomiędzy parę temat&amp;oacute;w ale mam nadzieję że dzięki temu dowiem się paru ciekawych nowych rzeczy :)&lt;/p&gt;
&lt;p&gt;O wyborze sesji bardzo ciekawie napisał &lt;i&gt;&lt;b&gt;Grzegorz Tworek&lt;/b&gt;&lt;a target="_blank" title="Jak być zadowolonym po MTS " href="http://blogs.technet.com/plitpromicrosoftcom/archive/2009/07/31/jak-by-zadowolonym-po-mts.aspx"&gt; Jak być zadowolonym po MTS &lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;i&gt;A na blogu &lt;b&gt;Mariusza Kędziora&lt;/b&gt; można znaleźć podsumowanie pierwszych dni w kt&amp;oacute;rych wybieraliśmy sesje: &lt;a target="_blank" href="http://blogs.technet.com/mkedziora/archive/2009/08/21/mts-2009-jakie-sesje-wybieracie.aspx"&gt;&amp;quot;MTS 2009: Jakie sesje wybieracie&amp;quot;&lt;/a&gt;&lt;br /&gt;&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://itblogs.pl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/sesje.gif"&gt;&lt;img src="http://itblogs.pl/resized-image.ashx/__size/550x512/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/sesje.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Visual Studio 2010 &amp;ndash; Database Projects - czyli efektywna praca z projektami baz danych [200]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Cezary Nolewajka&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Proces zarządzania bazami danych i zmianami baz danych. Zarządzanie projektami baz danych, Source Control, TFS, proces zarządzania zmianami w projektach baz danych, dziedziczenie projekt&amp;oacute;w. Praca z obiektami baz danych, skryptami baz danych, praca w zespole. Generowanie danych testowych, Unit Testing, automatyzacja test&amp;oacute;w baz danych. Por&amp;oacute;wnywanie schemat&amp;oacute;w baz danych i danych w bazach danych. Edycja Visual Studio 2010 Professional.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Zabezpieczenie i &amp;bdquo;odbezpieczanie&amp;rdquo; kodu .NET[400]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Marcin Książek&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Kompilowany kod .NET przekształcany jest do postaci pośredniej, kt&amp;oacute;ra dopiero na docelowej maszynie kompilowana jest do kodu natywnego. Stosując dosyć proste techniki można odwr&amp;oacute;cić proces i otrzymać źr&amp;oacute;dła odpowiadające prawie w 100% oryginalnym.&lt;br /&gt;W trakcie sesji przedstawione zostaną techniki zaciemniania kodu tak, aby nie pogarszając jego działania maksymalnie utrudnić dostęp do źr&amp;oacute;deł.&lt;br /&gt;Każda z technik zostanie poddana analizie oraz pr&amp;oacute;bie złamania, dzięki czemu słuchacze będą w stanie świadomie dobierać zabezpieczenia do konkretnych potrzeb. Przedstawione przykłady pochodzą z najnowszych wersji stosowanych obfuskator&amp;oacute;w.&lt;br /&gt;Do końca sierpnia na blogu: &lt;a target="_blank" title="http://geekswithblogs.net/marks" href="http://geekswithblogs.net/marks"&gt;http://geekswithblogs.net/marks&lt;/a&gt; zostaną zamieszczone posty wprowadzające w tematykę zabezpieczeń, aby w trakcie prezentacji skupić się na najciekawszych elementach.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;.NET 4.0 Inside/Out &amp;ndash; CLR 4.0, DLR i ich wpływ na spos&amp;oacute;b programowania [300]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Daniel Biesiada&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Na tej sesji zostaną om&amp;oacute;wione zmiany w CLR 4.0 oraz przekazane informacje dotyczące funkcjonowania Dynamic Language Runtime (nadbudowy CLR, odpowiedzialnej za obsługę dynamicznych język&amp;oacute;w programowania). Naturalną konsekwencją tego om&amp;oacute;wienia będzie wprowadzenie do nowych język&amp;oacute;w programowania (Python, Ruby oraz F#) oraz zmian w istniejących (C# 4.0).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;IIS7 nie tylko serwer WWW [300]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Artur Żarski&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Sesja ma na celu przedstawienia IIS7 jako platformy dla tw&amp;oacute;rc&amp;oacute;w witryn, programist&amp;oacute;w oraz specjalist&amp;oacute;w IT a nie zwykłego serwera WWW. Pokazane będą dodatki i rozszerzenia stworzone przez firmę Microsoft oraz przykłady jak napisać sw&amp;oacute;j własny dodatek.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;User Experience and design technologies &amp;ndash; What&amp;rsquo;s New and Cool? [200]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Michael Koster&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Visit this session to hear about exciting new features of Microsoft&amp;rsquo;s design and UX technologies: Silverlight 3, WPF 4.0 and Expression 3. Learn how to take your application projects to the next level and see how easy it is to create stunning experiences for the desktop and the web.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Czy ASP.NET MVC oznacza zmierzch &amp;quot;klasycznego&amp;quot; ASP.NET? [200]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Bartosz Kierun&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Do technologii odpowiedzialnych za tworzenie aplikacji webowych dołączyła ostatnimi czasy platforma ASP.NET MVC. Czy jej pojawienie się oznacza, że rozw&amp;oacute;j &amp;bdquo;podstawowej&amp;rdquo; wersji technologii ASP.NET opartej o tzw. WebForms zostanie zaniechany? Jakie korzyści przynosi nowa technologia i kiedy warto rozpocząć z nią swoją &amp;bdquo;przygodę&amp;rdquo;?&lt;br /&gt;Na sesji dowiesz się:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;o podstawowych koncepcjach technologii ASP.NET MVC takich jak: model, view, controller, routing itp.,&lt;/li&gt;
&lt;li&gt;jak zacząć przy jej pomocy budować własne aplikacje webowe,&lt;/li&gt;
&lt;li&gt;jak ASP.NET MVC wpływa na architekturę i testowalność aplikacji,&lt;/li&gt;
&lt;li&gt;jakie są wady i zalety tej technologii w kontekście klasycznego ASP.NET.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;b&gt;Configuration Manager dla ludzi [300]&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Emil Krotki&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Cel prezentacji:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;przekazanie doświadczeń z pracy w projektach, w kt&amp;oacute;rych aplikacja była słabo zdefiniowana, lub wymagała elastyczności wykraczającej poza typowe zadania kodowania,&lt;/li&gt;
&lt;li&gt;przełamanie barier i ułatwienie wykorzystania z bogatej klasy służącej do konfiguracji aplikacji,&lt;/li&gt;
&lt;li&gt;pokazanie jak w prosty spos&amp;oacute;b budować konfigurację aplikacji wielomodułowych, podnosząc wydajność pracy developera i ułatwiając deployment,&lt;/li&gt;
&lt;li&gt;pokazanie metod budowy konfiguracji czytelnej i modyfikowalnej dla ludzi, kt&amp;oacute;rej diagnostyka jest precyzyjna i r&amp;oacute;wnie czytelna.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;br /&gt;Problemy i ich rozwiązania:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;jak budować w VisualStudio konfigurację dla wielu projekt&amp;oacute;w jednego rozwiązania, żeby było lekko, łatwo i przyjemnie,&lt;/li&gt;
&lt;li&gt;konfiguracja początkowa i zmienna w locie &amp;ndash; &amp;quot;problem jajka i kury&amp;quot; w konfiguracji aplikacji (konfiguracja konfiguracji), &amp;bdquo;hard-coded&amp;rdquo; defaults, zmiana parametr&amp;oacute;w pracy aplikacji &amp;bdquo;w locie&amp;rdquo;, diagnostyka, uodpornienie aplikacji na błędy konfiguracji, generowanie plik&amp;oacute;w konfiguracyjnych,&lt;/li&gt;
&lt;li&gt;czytelność pliku konfiguracyjnego, XML dla ludzi &amp;ndash; użycie klas dziedziczących i ich cech dodatkowych, struktura plik&amp;oacute;w konfiguracyjnych, typy, konfiguracja projekt&amp;oacute;w wielomodułowych,&lt;/li&gt;
&lt;li&gt;monitorowanie aplikacji (Event Log lub Enterprise Library, ale nie omawiane) &amp;ndash; jak budować całkowicie dynamiczne zdarzenia, re-definiowalne z zewnątrz aplikacji: Adresuje problem niezdefiniowanego styku z systemami monitorowania podczas tworzenia aplikacji, takich jak poziom diagnozowania, identyfikacja zdarzeń, klasyfikacja, redefinicje wymienionych element&amp;oacute;w w trakcie pracy aplikacji,&lt;/li&gt;
&lt;li&gt;sterowanie zachowaniem aplikacji, czyli sposobem przetwarzania danych poprzez konfigurację w XML-u.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;b&gt;Prezentacja danych w swoich aplikacjach [300]&lt;/b&gt; &lt;br /&gt;&lt;i&gt;&lt;b&gt;Artur Żarski &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Sesja ma na celu przedstawienie dostępnych technologii i komponent&amp;oacute;w Microsoft służących prezentacji danych w swoich aplikacjach &amp;ndash; zar&amp;oacute;wno desktop jak i Web. Czyli od wykres&amp;oacute;w i tabel z danymi skończywszy na zaawansowanych systemach raportowania (Reporting Services) i prezentacji danych na witrynach MOSS.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dane o sesjach pochodzą z strony &lt;a target="_blank" href="http://www.mts2009.pl"&gt;www.mts2009.pl&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=1518" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="MTS2009" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/MTS2009/default.aspx" /></entry><entry><title>UpdateProgress - blokada kontrolek w przeglądarce</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/03/20/updateprogress-blokada-kontrolek-w-przegl-darce.aspx" /><id>/blogs/rtynski/archive/2009/03/20/updateprogress-blokada-kontrolek-w-przegl-darce.aspx</id><published>2009-03-20T20:03:00Z</published><updated>2009-03-20T20:03:00Z</updated><content type="html">&lt;p&gt;Pisząc aplikację WEB zdarza ci się konieczność blokowania możliwości
naciśnięcia jakiegoś przycisku w chwili kiedy wykonuje sie inna akcja
kt&amp;oacute;ra trwa stosunkowo długo. Zapewne nie raz się zastanawiałeś jak to
zrobić może już nawet wykonywałeś takie skrypty w JavaScript i JQuery.
Ale czy widziałeś kiedyś jak można to wykonać w ASP .NET z kontrolką
UpdateProgress i dosłownie kilkoma linijkami w JavaScript. Zapraszam.&lt;/p&gt;
&lt;p&gt;Zakładam że osoba ma Visual Studio 2008 i może utworzyć nową
aplikacje kt&amp;oacute;ra ma już ScriptMenager na swoim pokładzie, czyli New
-&amp;gt; Projekt -&amp;gt; AJAXEnabledWebApplication Dodajemu
UpdatePanel a w nim przycisk.Na samym końcu dodajemy UpdateProgress/&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;form1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ScriptManager&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdatePanel1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:Button&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;onclick&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Button1_Click&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ContentTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdatePanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdateProgress1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Proszę czekać...&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Oczywiście do przycisku dodajemy akcje Click&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Button1_Click(&lt;span class="kwrd"&gt;object&lt;/span&gt; sender, EventArgs e)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    System.Threading.Thread.Sleep(4000);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;W UpdateProgress Wprowadzamy zmiany&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;UpdateProgress1&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;server&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;blur&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;span class="attr"&gt;&amp;amp;nbsp;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;progress&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Proszę czekać...&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h1&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ProgressTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:UpdateProgress&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Teraz musimy do naszej strony dodać plik css z naszymi stylami.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;#blur&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;    width: 100%;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    background-color: black;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    moz-opacity: 0.5;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    khtml-opacity: .5;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    opacity: .5;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;    filter: alpha(opacity=50);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    z-index: 120;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    height: 100%;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    position: absolute;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    top: 0;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;    left: 0;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;}&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;#progress&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    z-index: 200;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    background-color: White;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    position: absolute;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;    top: 0pt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;    left: 0pt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;    border: solid 1px black;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;    padding: 5px 5px 5px 5px;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;    text-align: center;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;A teraz nasza wstawka w JavaScript:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&amp;lt;asp:ScriptManager ID=&lt;span class="str"&gt;&amp;quot;ScriptManager1&amp;quot;&lt;/span&gt; runat=&lt;span class="str"&gt;&amp;quot;server&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&amp;lt;script language=&lt;span class="str"&gt;&amp;quot;javascript&amp;quot;&lt;/span&gt; type=&lt;span class="str"&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&amp;gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&amp;lt;!--&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;    function () {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (document.getElementById) {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;        var progress = document.getElementById(&lt;span class="str"&gt;&amp;#39;progress&amp;#39;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;        var blur = document.getElementById(&lt;span class="str"&gt;&amp;#39;blur&amp;#39;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;        &lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;        progress.style.width = &lt;span class="str"&gt;&amp;#39;300px&amp;#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;        progress.style.height = &lt;span class="str"&gt;&amp;#39;30px&amp;#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        &lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        blur.style.height = document.documentElement.clientHeight;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        progress.style.top = document.documentElement.clientHeight/3 - progress.style.height.replace(&lt;span class="str"&gt;&amp;#39;px&amp;#39;&lt;/span&gt;,&lt;span class="str"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)/2 + &lt;span class="str"&gt;&amp;#39;px&amp;#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;        progress.style.left = document.body.offsetWidth/2 - progress.style.width.replace(&lt;span class="str"&gt;&amp;#39;px&amp;#39;&lt;/span&gt;,&lt;span class="str"&gt;&amp;#39;&amp;#39;&lt;/span&gt;)/2 + &lt;span class="str"&gt;&amp;#39;px&amp;#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;  }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;)&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;&lt;span class="rem"&gt;// --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;&amp;lt;/script&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="http://itblogs.pl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/UpdateProgress_2D00_200903.jpg"&gt;&lt;img src="http://itblogs.pl/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/UpdateProgress_2D00_200903.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=474" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="ASP .NET" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/ASP+.NET/default.aspx" /><category term="AJAX" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/AJAX/default.aspx" /></entry><entry><title>Testowanie aplikacji sieci WEB</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/03/04/testowanie-aplikacji-sieci-web.aspx" /><id>/blogs/rtynski/archive/2009/03/04/testowanie-aplikacji-sieci-web.aspx</id><published>2009-03-04T12:14:00Z</published><updated>2009-03-04T12:14:00Z</updated><content type="html">&lt;p&gt;&lt;a href="http://watin.sourceforge.net/"&gt;WatiN&lt;/a&gt; jest to biblioteką dzięki kt&amp;oacute;rej będziesz m&amp;oacute;gł przetestować swoja aplikację pod kątem wyniku jaki zostanie uzyskany przy wyświetlaniu strony. Sprawdzisz czy wynik jaki uzyskałeś jest tym co miałeś zamiar uzyskać.&lt;/p&gt;
&lt;p&gt;A teraz kr&amp;oacute;ciutki przykład. Tworzymy bibliotekę, projekt dla NUnit.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; WatiN.Core;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; WatiN.Core.Exceptions;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; NUnit.Framework;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; itblogs.pl&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;{&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    [TestFixture, Description(&lt;span class="str"&gt;&amp;quot;Watin class Test&amp;quot;&lt;/span&gt;)]&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TestWatin&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;        [TestFixtureSetUp]&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Init()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;            System.Threading.Thread.CurrentThread.SetApartmentState(ApartmentState.STA);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;        [Test]&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; WatinIE()&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (IE ie = &lt;span class="kwrd"&gt;new&lt;/span&gt; IE(&lt;span class="str"&gt;&amp;quot;http://www.google.pl&amp;quot;&lt;/span&gt;))&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;            {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;                ie.TextField(Find.ByName(&lt;span class="str"&gt;&amp;quot;q&amp;quot;&lt;/span&gt;)).TypeText(&lt;span class="str"&gt;&amp;quot;itblogs&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;                &lt;span class="rem"&gt;//ie.Button(Find.ByValue(&amp;quot;Szukaj w Google&amp;quot;)).Click();&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;                ie.Button(Find.ByName(&lt;span class="str"&gt;&amp;quot;btnG&amp;quot;&lt;/span&gt;)).Click();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;                &lt;span class="kwrd"&gt;int&lt;/span&gt; i = 3;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;                &lt;span class="kwrd"&gt;do&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;                {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;try&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;                    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;                        ie.Link(Find.ByUrl(&lt;span class="str"&gt;&amp;quot;http://itblogs.pl/blogs/&amp;quot;&lt;/span&gt;)).Click();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;                    }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;                    &lt;span class="kwrd"&gt;catch&lt;/span&gt; (ElementNotFoundException exp)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;                    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;                        ie.Link(Find.ByText(&lt;span class="str"&gt;&amp;quot;Następna&amp;quot;&lt;/span&gt;)).Click();&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;                        i = 0;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;                    }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;&amp;nbsp;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;                }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;                &lt;span class="kwrd"&gt;while&lt;/span&gt; ((--i) &amp;gt; 0);&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;                Assert.IsTrue(i &amp;lt; 0);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;}&lt;br /&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Ponieważ aplikacja musi być uruchomiona w trybie STA nie wystarczy tylko inicjalizacja podczas początku testu. Musimy dodać plik z rozszerzeniem config kt&amp;oacute;rego nazwa jest taka jak nazwa pliku dll i jest w tym samym folderze co tenże plik. Np:&amp;nbsp; mojtest.dll, nazwa pliku config to mojtest.dll.config.&lt;br /&gt;Więcej informacji na ten temat możesz uzyskać na stronie &lt;a href="http://nunit.com/blogs/?p=9"&gt;Nunit&lt;/a&gt; oraz na stronie projektu &lt;a href="http://watin.sourceforge.net/apartmentstateinfo.html"&gt;WatiN&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt; ?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configSections&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;sectionGroup&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;NUnit&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;section&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;TestRunner&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Configuration.NameValueSectionHandler&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;sectionGroup&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configSections&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;NUnit&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TestRunner&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;      &lt;span class="rem"&gt;&amp;lt;!-- Valid values are STA,MTA. Others ignored. --&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;key&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;ApartmentState&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;STA&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TestRunner&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;NUnit&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Może napisany przykład nie działa zachwycająco szybko ale nie to jest celem. Projekt jest nadal rozwijany i warto obserwowac jego postępy. Dzięki niemu można też testować&amp;nbsp; aplikacje przy użyciu FireFox wszystkie dostepne narzędzia są w paczce kt&amp;oacute;rą ściągamy.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=401" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="NUnit" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/NUnit/default.aspx" /><category term="WatiN" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/WatiN/default.aspx" /></entry><entry><title>Firefox Authentication</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/02/27/firefox-authentication.aspx" /><id>/blogs/rtynski/archive/2009/02/27/firefox-authentication.aspx</id><published>2009-02-27T16:55:00Z</published><updated>2009-02-27T16:55:00Z</updated><content type="html">&lt;p&gt;Nawet nie myślałem że da się coś takiego zrobić, po prostu zawsze wpisywałem login i hasło jak chciałem się zalogować do strony intranetowej. A tutaj mamy prosty spos&amp;oacute;b w jaki można dodać swoją domenę do Firefox&amp;#39;a aby nie było konieczności wykonywania tej czynności.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://itblogs.pl/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/20090227_5F00_001.jpg"&gt;&lt;img src="http://itblogs.pl/resized-image.ashx/__size/550x0/__key/CommunityServer.Blogs.Components.WeblogFiles/rtynski/20090227_5F00_001.jpg" border="0" alt="" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Więcej informacji można znaleść na stronie &lt;a href="http://www.mozilla.org/projects/netlib/integrated-auth.html"&gt;Integrated Authentication&lt;/a&gt;. A ja osobiście wpadłem na to na stronie &lt;a href="http://brennan.offwhite.net/blog/2005/07/22/firefox-authentication-with-ntlm/"&gt;Brennan&amp;rsquo;s Blog&lt;/a&gt; stary post a może warto przypomnieć że cos takiego można.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=372" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author></entry><entry><title>Visual Studio - twoje IDE</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/02/20/visual-studio-twoje-ide.aspx" /><id>/blogs/rtynski/archive/2009/02/20/visual-studio-twoje-ide.aspx</id><published>2009-02-21T04:31:00Z</published><updated>2009-02-21T04:31:00Z</updated><content type="html">&lt;p&gt;Czy samo narzędzie Visual Studio wystarczy nam, aby pisać dobry kod w C#. Zapewne tak, ale jeżeli chcemy sprawniej tworzyć, mieć pomoc w tym co robimy musimy używać narzędzi wspomagających tworzenie właśnie takiego kodu. Jednym z narzędzi jest &lt;a target="_blank" href="http://www.jetbrains.com/resharper/index.html"&gt;Resharper&lt;/a&gt;. Zapewne go już widziałeś na webcastach a może już go masz zainstalowanego i używasz?
&lt;/p&gt;
&lt;p&gt;Jak używać tego narzędzia, jego możliwości o tym można poczytać na blogu &lt;a target="_blank" href="http://www.maciejaniserowicz.com/?tag=/resharper"&gt;Maciej Aniserowicz&lt;/a&gt;. Jedynym pytaniem jest czy cię stać na używanie takiego narzędzia. Jedni powiedzą co to jest $ 199, ale dla drugiej osoby to przy dzisiejszym kursie znaczna część wypłaty. Ale to już indywidualne rozpatrywania za i przeciw. &lt;/p&gt;
&lt;p&gt;Oczywiście jeszcze link do &lt;a target="_self" href="http://www.jetbrains.com/resharper/documentation/presentation/codingSession/CodingSession.wmv"&gt;filmiku&lt;/a&gt; z możliwościami. Jak można poczytać troszkę zamotany ale dzięki niemu w skr&amp;oacute;cie otrzymasz jak można się poruszać po twoim ulubionym IDE.&lt;/p&gt;
&lt;p&gt;
Nasuwa się zapewne inne nurtujące was pytanie czy można użyć innych narzędzi o tej funkcjonalności. Odpowiedź brzmi nie (przynajmniej ja nie spotkałem) i patrząc na popularność zapewnie wcześniej czy p&amp;oacute;źniej napotkasz na to narzędzie i będziesz go używać. 
&lt;/p&gt;
&lt;p&gt;A co teraz?? Nom zostaje parę narzędzi kt&amp;oacute;re na pewno uboższe w funkcjonalność pozwolą tobie przyspieszyć pracę z twoim kodem. Np.:DPack,C# Refactory&amp;nbsp; (Poczytaj komentarze na blogu Macieja).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=337" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="Visual_Studio" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/Visual_5F00_Studio/default.aspx" /></entry><entry><title>Pierwszy post</title><link rel="alternate" type="text/html" href="/blogs/rtynski/archive/2009/02/18/pierwszy-post.aspx" /><id>/blogs/rtynski/archive/2009/02/18/pierwszy-post.aspx</id><published>2009-02-18T20:39:00Z</published><updated>2009-02-18T20:39:00Z</updated><content type="html">&lt;p&gt;Witam wszystkich. &lt;/p&gt;
&lt;p&gt;Mam nadzieję że moje informacje na tym blogu będą przydatne.&lt;/p&gt;
&lt;p&gt;Pozdrawiam&lt;/p&gt;

&lt;div class="csharpcode"&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; &lt;span class="class"&gt;Program&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;    {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;        {&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;            &lt;span class="class"&gt;Console&lt;/span&gt;.WriteLine(&lt;span class="str"&gt;&amp;quot;Witam wszystkich.&amp;quot;&lt;/span&gt;);&lt;/pre&gt;
&lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;        }&lt;/pre&gt;
&lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;    }&lt;/pre&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://itblogs.pl/aggbug.aspx?PostID=327" width="1" height="1"&gt;</content><author><name>rafal.t</name><uri>http://itblogs.pl/members/rafal.t/default.aspx</uri></author><category term="Blog" scheme="http://itblogs.pl/blogs/rtynski/archive/tags/Blog/default.aspx" /></entry></feed>