<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8246461070535876922</id><updated>2011-04-21T20:12:33.826-07:00</updated><category term='WTF'/><title type='text'>Piotr Leszczyński - developer's blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>7</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-4032469652538345117</id><published>2008-10-12T12:55:00.001-07:00</published><updated>2008-10-12T12:55:35.480-07:00</updated><title type='text'>MTS 2008</title><content type='html'>&lt;p&gt;Wróciłem z dwudniowej konferencji Microsoft Technology Summit 2008. Zgodnie z oczekiwaniami konferencja była inspirująca. Momentami treść prelekcji odbiegała od tematu, albo od poziomu na jakim powinna być (była za prosta), ale ogólne wrażenie bardzo pozytywne i na pewno polecam uczestnictwo w takich eventach. Daje to doskonały pogląd gdzie należy położyć akcenty w rozwoju naszych aplikacji, jakie nowe mechanizmy mogą nam w tym pomóc. Czego i jak używać. Równocześnie nie jest prowadzeniem „za rączkę” jak na szkoleniu, więc zgłębienie tematów, które nas zainteresowały pozostaje w gestii słuchacza.&lt;/p&gt;  &lt;p&gt;Teraz po kolei…&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;h5&gt;Refleksja ogólna&lt;/h5&gt;  &lt;p&gt;Większość prelekcji nie dotyczyła rzeczy nowych, albo takich, które nadal można nazywać nowymi, szczególnie w kontekście architektury tworzonych aplikacji w technologii .NET. Było natomiast dużo o istniejących mechanizmach, o tym jak ich dobrze używać, jak ich nie używać, jakie są Best Practices.&lt;/p&gt;  &lt;p&gt;Z tego wprost płynie wniosek, że należy poważnie zabrać się za używanie technologii M$ (i nie tylko) w sposób częsty i skuteczny. Bo skoro ciągle w kółko mówi się np. o tym, co to jest AOP jakie jest dobre i dlaczego… Ciągle powtarza się jak używać WCFa, do czego to służy, jakie niesie konsekwencje… Nadal pokazuje się jak przyspieszać działanie aplikacji Webowych, jakie najczęściej są popełniane błędy i jakie niesie to za sobą konsekwencje… Stale mówi się o refactoringu, kontenerach DependencyInjection, Separation of Concerns i couplingu w bibliotekach, to znaczy, że ciągle:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;powtarzamy te same mechanizmy/fragmenty kodu… Tworzymy kod, a nie sens (J).&lt;/li&gt;    &lt;li&gt;używamy dostępnych technik nie do końca tak, jak należy.&lt;/li&gt;    &lt;li&gt;nasze aplikacje webowe są ciężkie i wolne&lt;/li&gt;    &lt;li&gt;nasz kod jest nieczytelny, niezgodny z zasadą SoC i mocno zależny od innych fragmentów, szczególnie od implementacji innych fragmentów!!!&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Wydajne aplikacje &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; w świecie Web 2.0 – Tymoteusz Chmielewski&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;W końcu prosta definicja Web 2.0 – treść od &lt;u&gt;użytkowników&lt;/u&gt;, zarządzanie przez społeczności itp.&lt;/li&gt;    &lt;li&gt;REST – wyrażanie treści logicznej przez URLe&lt;/li&gt;    &lt;li&gt;&lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; a Web 2.0:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;AJAX&lt;/li&gt;      &lt;li&gt;LINQ&lt;/li&gt;      &lt;li&gt;WCF&lt;/li&gt;      &lt;li&gt;WWF&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;Ogólnie w rozwiązaniach Web 2.0 – nie odkrywać po raz setny koła – korzystać z gotowych szablonów/rozwiązań do tworzenia for, wiki, cms, blogów – np. Community Server – takich mechanizmów nie należy pisać od zera, bo to zwyczajna strata czasu.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Wydajność w Web 2.0&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Baza danych zawsze będzie wąskim gardłem – czasem przy dużym obciążeniu warto zastanowić się nad de normalizacją struktury w celu zwiększenia wydajności&lt;/li&gt;      &lt;li&gt;Logiczne partycjonowanie danych – można lokalizować dane/serwery np. zgodnie z regionami (np. zgodnie z województwami)&lt;/li&gt;      &lt;li&gt;Pageowanie - Różnica w wydajności jest ogromna w zależności od zastosowanych mechanizmów:&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Od strony dostępu do danych – LINQ2SQL – działa dokładnie tak jak byśmy to napisali sami na DataReader&lt;/li&gt;        &lt;li&gt;Od strony WWW to zależy:&lt;/li&gt;        &lt;ul&gt;         &lt;li&gt;AJAX + JSON – opad szczeny jak to może być wydajne, ale na razie po stronie kodu JavaScriptowego – masakra&lt;/li&gt;          &lt;li&gt;AJAX (Ajax Control Toolkit) – dużo lepiej niż było to dawniej, a bardzo wygodnie z kodu&lt;/li&gt;       &lt;/ul&gt;     &lt;/ul&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h5&gt;Praktyczne aspekty budowania rozwiazań klasy Enterprise z wykorzystaniem produktów Microsoft Patterns and Practices - Marcin Sieradzki&lt;/h5&gt;  &lt;p&gt;No tu się Pan niestety nie wykazał. Pogadał trochę o Enterprise Library i o samej idei M$ P&amp;amp;P, ale ogólnie poziom sesji bardzo niski.&lt;/p&gt;  &lt;h5&gt;&lt;b&gt;.NET bez wizardów – sposoby tworzenia i dynamicznego aktywowania komponentów w aplikacjach - Bartosz Pampuch&lt;/b&gt;&lt;/h5&gt;  &lt;p&gt;Bartek jak zwykle wymiatał…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Nie wiedziałem, że jest coś takiego jak otwarte typy generyczne (np. ICollection&amp;lt;&amp;gt;)&lt;/li&gt;    &lt;li&gt;Porównanie kontenerów do DependencyInecjtion – pokazanie co jest w którym jak realizowane, ze wskazaniem na kontener Autofac.&lt;/li&gt;    &lt;li&gt;Onion Architecture – o tym już czytałem akurat – polecam &lt;a href="http://jeffreypalermo.com/blog/the-onion-architecture-part-1/"&gt;http://jeffreypalermo.com/blog/the-onion-architecture-part-1/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Hawkeye – aplikacja musthave dla developera&lt;/li&gt;    &lt;li&gt;AOP&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Najpierw pokazał jak można różne rzeczy zrobić przy pomocy ContextBoundObject, ale to działa wolno&lt;/li&gt;      &lt;li&gt;Post# - Make Sense Not Code – z tym się powinniśmy jak najszybciej zaznajomić i używać.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Jak należy korzystać z WCFa – tutaj mamy gotowy mechanizm napisany przez Szymona Pobiegę – z tego co mówił Szymon prawie dokładnie tak, jak sugerował Bartek&lt;/li&gt;    &lt;li&gt;Stock Trader – przykładowa aplikacja/platforma do konfiguracji, skalowania i zarządzania aplikacjami WCFowymi – tę architekturę można wykorzystać – jest udostępniona – ogólnie jest na co popatrzeć&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Wybrane koncepcje architektoniczne - jak organizować rozbudowane systemy Informatyczne (oraz jak ich NIE organizować) - Tomasz Kopacz&lt;/h5&gt;  &lt;p&gt;Dużo o SOA. Ogólnie Tomek miał ostatnią sesję pierwszego dnia, ostro jechał z tematem, trochę było powtórzeń w kontekście Web 2.0 i przyspieszeń.&lt;/p&gt;  &lt;h5&gt;&lt;b&gt;Nowe typy danych w SQL 2008 - Krzysztof Kozielczyk&lt;/b&gt;&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Typy datowe – teraz precyzja i skala tych typów ma znaczenie – uważać przy indeks seekability – przy użyciu w klauzuli np. WHERE daty o precyzji 7 niekoniecznie QO może skorzystać z indeksu zbudowanego dla kolumny datowej o precyzji 3.&lt;/li&gt;    &lt;li&gt;DateTimeOffset – działa na UTC, przechowuje informacje również o strefie czasowej:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Indeksy, agregacje, sortowanie – na czasie UTC&lt;/li&gt;      &lt;li&gt;Cast/Convert – na wartości lokalnej&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Do nowych typów datowych (np. DATETIME2) nie można już dodawać wartości integer&lt;/li&gt;    &lt;li&gt;Uwaga: Proces .NET Framework, który będzie działał w trakcie zmiany czasu z letniego na zimowy nie dokonuje automatycznej zmiany czasu lokalnego&lt;/li&gt;    &lt;li&gt;(SQL) TIME mapuje się na Timespan (.NET), ale jeszcze nie ma pełnego wsparcia - .NETowcy nad tym pracują&lt;/li&gt;    &lt;li&gt;Typ tablicowy&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;doskonale może się nadawać przy operacjach „batchowych&amp;quot;,&lt;/li&gt;      &lt;li&gt;jest wspierany przez .NET Framework (SqlDbType.Structured)&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;HierarchyId - Typ hierarchiczny - drzewko&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Indeks wgłąb&lt;/li&gt;      &lt;li&gt;Indeks wszerz&lt;/li&gt;      &lt;li&gt;Zdecydowanie szybsze do operacji CTE i rekursywnych w relacji parent/children&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Filestream&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Atrybut na varbinary(max)&lt;/li&gt;      &lt;li&gt;Przechowywanie w systemie plików&lt;/li&gt;      &lt;li&gt;Dostęp transakcyjny&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;h5&gt;&lt;b&gt;Organizacja dostępu do danych w aplikacjach WWW - Tomasz Kopacz&lt;/b&gt;&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;HyperV – doskonałe do testowania zachowania aplikacji w różnych konfiguracjach środowiskowych – łatwe modyfikacje ilości pamięci, liczby rdzeni, procesorów itp.&lt;/li&gt;    &lt;li&gt;Asynchroniczne &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; i &lt;a href="http://ADO.NET"&gt;ADO.NET&lt;/a&gt; oraz jak tego używać.&lt;/li&gt;    &lt;li&gt;Visual Studio Web Test – naprawdę nieźle działa&lt;/li&gt;    &lt;li&gt;Strumieniowanie RSS po WCF jako dostęp do danych – ciekawe zastosowanie&lt;/li&gt;    &lt;li&gt;Konflikt zapisu do bazy przez różnych użytkowników – możliwe rozwiązania&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Np. Encja EntityDataModel do ViewState’a – mamy to wtedy zapewnione od razu (łącząc z Windingiem)&lt;/li&gt;      &lt;li&gt;Kolejka – zapis à ServiceBroker à można uniknąć „Peeków” zapisowych&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Długie transakcje – możliwe rozwiązania&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;ViewState między stronami&lt;/li&gt;      &lt;li&gt;Cookie + GUID&lt;/li&gt;      &lt;li&gt;WWF + WebClientSoftwareFactory&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;MARS&lt;/li&gt;    &lt;li&gt;Enterprise Library&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Konfiguracja – zapisywanie zmian między środowiskami TEST/PRODUKCJA itp. w kontekście danej maszyny – łatwe do użycia i zastosowania&lt;/li&gt;      &lt;li&gt;CachingApplicationBlock&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;Do tego dodajemy mechanizm SqlDependency i mamy dobry mechanizm do cacheowania z uwzględnianiem przedawniania&lt;/li&gt;        &lt;li&gt;Problem – działa lokalnie – kłopot gdy farma serwerów – rozwiązaniem będzie rozwijany teraz projekt Velocity – na razie nie jest jeszcze w fazie CTP. Planowy RTM na połowę 2009 chyba&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;Stoswanie var przy korzystaniu z EDM – przy przekazywaniu danych dostajemy dzięki temu „automatyczną” konwersję pomiędzy ciężkimi i lekkimi obiektami w zależności&amp;#160; od potrzeb.&lt;/li&gt;    &lt;li&gt;DataServices (aka Astoria) – .NET 3.5 sp1 – wsparcie RESTowe - kolejny sposób dostępu do danych warty rozważenia&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;Programowanie .NET na platformie SQL Server - Krzysztof Kozielczyk&lt;/h5&gt;  &lt;p&gt;Szkoda, że nie nazywało się SQL CLR, bo o tym właściwie było.&lt;/p&gt;  &lt;p&gt;Z ciekawszych rzeczy o których mówił&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;UserDefinedAggregate – można definiować własne agregaty – co ciekawe zawsze trzeba zaimplementować możliwość łączenia wyników pośrednich, aby SQL serwer mógł wykorzystać zrównoleglenie i chyba nie da się tego wyłączyć :/&lt;/li&gt;    &lt;li&gt;TableValuedFunction – można teraz takie tworzyć, obsługa IEnumerable wiersz po wierszu, ale:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Jeżeli funkcja czyta dane, to nie można wejść w tryb „przeplatanej” egzekucji „field return” – BUG – może kiedyś zostanie poprawiony, komunikat z SQLa jest bardzo nieadekwatny&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;HierarchyId, SpatialData, PolicyBasedManagement – to są rzeczy nowe w SQL2008 w całości zrealizowane w SQLCLR więc na pewno M$ będzie dbał o rozwijanie i optymalizowanie tej technologii.&lt;/li&gt;    &lt;li&gt;W trybie External Access można wołać usługi WCFowe&lt;/li&gt; &lt;/ul&gt;  &lt;h5&gt;SQL Server 2008 dla developerów - Cezary Nolewajka&lt;/h5&gt;  &lt;p&gt;Tu dużo się powtórzyło, było dużo uwag jak należy zamykać, zwalniać połączenia, readery itp., oraz trochę drobnych uwag.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;DataReader&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;CommandBehavior.CloseConnection – powoduje, że przy zamykaniu Readera, zostanie również zamknięte/zwolnione połączenie – przydatne przy przekazywaniu Readera w parametrach&lt;/li&gt;      &lt;li&gt;Odwołania do readera – lepiej sobie zapisać gdzieś ordinal danej kolumny i odwoływać się przez indeks, a nie przez nazwę – podobno szybsze.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Można wyłączyć w SO operację zmiany daty modyfikacji plików bazodanowych – może trochę przyspieszyć – baza danych i tak ciągle pisze po tych plikach.&lt;/li&gt;    &lt;li&gt;ServiceBroker jako&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Mechanizm kolejkowy&lt;/li&gt;      &lt;li&gt;Mechanizm wymiany komunikatów&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-4032469652538345117?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/4032469652538345117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=4032469652538345117' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4032469652538345117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4032469652538345117'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2008/10/mts-2008.html' title='MTS 2008'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-5582158215635142008</id><published>2008-09-11T10:03:00.001-07:00</published><updated>2008-09-11T10:05:32.497-07:00</updated><title type='text'>http://leszczu-dev.blogspot.com/ – reaktywacja</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Jak w temacie. Tym razem postanowiłem nie silić się na j. angielski – może w ten sposób dłużej pociągnę…&lt;/p&gt;  &lt;p&gt;P.S.   &lt;br /&gt;A kontrola języka polskiego w WLWriter dalej mi nie działa :/&lt;/p&gt;  &lt;br /&gt;&lt;br /&gt;EDIT: Już działa - tak to jest jak się nie czyta do końca&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-5582158215635142008?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/5582158215635142008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=5582158215635142008' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/5582158215635142008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/5582158215635142008'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2008/09/httpleszczu-devblogspotcom-reaktywacja.html' title='http://leszczu-dev.blogspot.com/ – reaktywacja'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-4224147673332588712</id><published>2008-09-11T10:01:00.001-07:00</published><updated>2008-09-11T10:01:54.653-07:00</updated><title type='text'>ZineDay2008 – krótka relacja</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Byłem. Czytuję blogi na zine.net, więc postanowiłem pojechać. Ogólne wrażenie z wydarzenia bardzo pozytywne. I przez to, że nie budżet był skromny, to obeszło się bez całej masy niepotrzebnego marketingowego bełkotu.&lt;/p&gt;  &lt;h5&gt;Gael Fraiteur - &amp;quot;Addressing non-functional requirements with aspects&amp;quot;&lt;/h5&gt;  &lt;p&gt;Mała retrospekcja – na CodeCamp w Krakowie sesja Gaela całkowicie mnie zanudziła, więc to była druga szansa dla tego Pana i choćby z tego powodu warto było pojechać. Gael przeszedł samego siebie. Pokazał dokładnie o co chodzi w programowaniu aspektowym, porównał jak działają różne dostępne frameworki, na jakim etapie dokonywane jest tkanie aspektów i jakie to ma konsekwencje, oraz omówił krótko możliwości frameworków. Wszystko klarownie i z humorem. 10/10&lt;/p&gt;  &lt;h5&gt;Andras Belokosztolszki - &amp;quot;Managing change in the database world&amp;quot;&lt;/h5&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Jako, że dziedzina związana z SqlServerem i SQLem ogólnie, które są mi coraz bliższe, to bardzo się cieszyłem na tę sesję i przyznam, że trochę się zawiodłem. Tzn. poziom prezentacji i wartość merytoryczna jak najbardziej w porządku. Andreas pokazał jakie wyzwania są przed ludźmi chcącymi nadzorować zmiany wprowadzane w schematach baz danych, jakie są problemy, jak niektóre mechanizmy zostały niedopracowane przez M$. Czego nie używać i dlaczego. Wszystko fajnie, tylko brakowało mi jakiejś konkretnej myśli przewodniej – niby jasne, ale co dalej? Dobrze wiedzieć, że nie należy używać sp_rename do textual objects w SqlServer, ale odpowiedź czego używać w zamian już nie padła. 8/10&lt;/p&gt;  &lt;h5&gt;Gael Fraiteur &amp;amp; Jakub Binkowski - &amp;quot;More complex aspects using PostSharp&lt;/h5&gt;  &lt;p&gt;Druga sesja Gaela tym razem w parze z Kubą poprowadzona w konwencji początkujący developer + expert, który wszystkie Twoje problemy rozwiąże przy pomocy aspektów. &lt;/p&gt;  &lt;p&gt;Poza tym, że miałem wrażenie, iż Kuba trochę przesadza z tą “głupkowatością”, to również bardzo udane wystąpienie. Dalej konkretnie i z humorem, tym razem już nurkując w kod i pokazując jak niektóre rzeczy łatwo zrobić używając Post#. Motyw z INotifyPropertyChange – opad szczeny. Chciałoby się rzec – no nareszcie to zaczyna być proste.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h5&gt;Konkurs na projekt Open Source&lt;/h5&gt;  &lt;p&gt;Szymon startował. Niestety nie wygrał upragnionego VSTS. Szkoda. Wydarzenie udane. Chłopak z Biesko-Białej, z II klasy LO prezentujący aplikację webową, w połączeniu z servicem zbierającym dane administracyjne o komputerach w sieci i parametrach przydatnych dla administratora – opad szczeny.&lt;/p&gt;  &lt;h5&gt;&lt;/h5&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h5&gt;Konkluzja&lt;/h5&gt;  &lt;p&gt;Było warto. Więcej takich imprez poproszę.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-4224147673332588712?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/4224147673332588712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=4224147673332588712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4224147673332588712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4224147673332588712'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2008/09/zineday2008-krtka-relacja.html' title='ZineDay2008 – krótka relacja'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-6137271812704358664</id><published>2007-05-22T13:37:00.001-07:00</published><updated>2007-06-01T07:14:21.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WTF'/><title type='text'>My private daily WTF</title><content type='html'>&lt;span xmlns=''&gt;&lt;p&gt;As I look to see how far am I In writing my dev-blog the only sentence that comes to my mind is &lt;em&gt;Didn't I tell you?&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The truth is I don't really have time for anything, and so, for writing blog either.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;There are only two things to which I'm sure they have no borders: God's Mercifulness and human stupidity (I can't remember where I've read this sentence). &lt;br /&gt;&lt;/p&gt;&lt;p&gt;It's really funny what "programmers" are able to produce. Unfortunately I'm one of them and I also make mistakes, so I'll try to be self-criticised and when I find some stupid code I've written I'll put it here also.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The most irritating part of code I'm often reading  is written like this:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;if (a == b) &lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;    return true;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;else&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;{&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;    return false;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Grrrrrrrrrr.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Why can't a programmer write it like:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style='color:gray; font-family:Courier New; font-size:9pt'&gt;return a == b;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;1 line instead of 8.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/p&gt;&lt;p&gt;Please, all of you – programmers, remember:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Think twice before you start coding. Otherwise you'll have to write twice – before and after thinking.&lt;br /&gt;&lt;/em&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-6137271812704358664?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/6137271812704358664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=6137271812704358664' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/6137271812704358664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/6137271812704358664'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2007/05/my-private-daily-wtf.html' title='My private daily WTF'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-1657618992622042662</id><published>2007-04-22T10:16:00.000-07:00</published><updated>2007-04-22T10:50:40.694-07:00</updated><title type='text'>Logger</title><content type='html'>I've tried programming in many languages and using different technologies. And for doing all that development stuff I realised one thing. There is no programmer, that makes no mistakes. And there is no tester or Q/A worker, that finds all mistakes. The only way to know what and when goes wrong with your application is to log almost everything. You can always use sth like log level, not to log every method call, but you should have ability to do it.&lt;br /&gt;The first thing we usually do (in the company I'm now working for) if something goes wrong, is asking client for logs from the application.&lt;br /&gt;&lt;br /&gt;If you can't use loggers like log4j you can quite easily write your owns. I'll not give you the exact code example (as far as I remember I've seen something similar on &lt;a href="http://www.codeproject.com/"&gt;http://www.codeproject.com&lt;/a&gt;), but I'll try to show you the main concept:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;enum LogLevel  {&lt;br /&gt; INFO,&lt;br /&gt; WARNING,&lt;br /&gt; ERROR,&lt;br /&gt; DEBUG,&lt;br /&gt; CRITICAL,&lt;br /&gt; DEFAULT&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;interface ILogger {&lt;br /&gt; void Log(string message);&lt;br /&gt; void Log(string message, LogLevel level);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class EmptyLogger impl ILogger{&lt;br /&gt;   EmptyLogger() {}&lt;br /&gt;   void Log(string message) {}&lt;br /&gt;   void Log(string message, LogLevel level) {}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class CompositeLogger implILogger {&lt;br /&gt;   CompositeLogger() {}&lt;br /&gt;   ArrayList&lt;ilogger&gt; Loggers = new ArrayList&lt;ilogger&gt;();&lt;br /&gt;&lt;br /&gt;   void AddLogger(ILogger logger) {&lt;br /&gt;      Loggers.add(logger);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void RemoveLogger(ILogger logger) {&lt;br /&gt;       Loggers.remove(logger);&lt;br /&gt;   }  &lt;br /&gt;&lt;br /&gt;   void Log(string message) {&lt;br /&gt;       Log(message, LogLevel.DEFAULT;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   void Log(string message, LogLevel level) {&lt;br /&gt;       foreach (ILogger logger : Loggers) {&lt;br /&gt;           logger.Log(message, level)&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/ilogger&gt;&lt;/ilogger&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;When using this simple Composite pattern logger implementation in your application remember to mix it with Singleton pattern. We don't want to have separate logger for each method, but one per application.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-1657618992622042662?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/1657618992622042662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/1657618992622042662'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2007/04/logger.html' title='Logger'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-4154343014454583078</id><published>2007-04-16T11:28:00.000-07:00</published><updated>2007-04-16T11:39:47.137-07:00</updated><title type='text'>Eclipse - vanished plugin</title><content type='html'>I'm developing a project based on &lt;span style="font-style: italic;"&gt;Eclipse GEF&lt;/span&gt;. I'm using&lt;span style="font-style: italic;"&gt; de.unikassel.imageexport&lt;/span&gt; plugin. I postponed working on this project for some time. One day I decided to write something new. I've updated my local version with the svn version. My project wasn't compiling... There was a problem with &lt;span style="font-style: italic;"&gt;MANIFEST.MF&lt;/span&gt; file, and &lt;span style="font-style: italic;"&gt;plugin.xml&lt;/span&gt; file - extension point to &lt;span style="font-style: italic;"&gt;de.unikassel.imageexport&lt;/span&gt; was invalid.&lt;br /&gt;I tried to:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;refresh the project&lt;/span&gt; - it didn't work...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;clean the workspace&lt;/span&gt; - it didn't work...&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;delete all stuff connected with the project and download it again&lt;/span&gt; - it didn't work...&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;The solution&lt;/span&gt; was:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Eclipse -&gt; Help -&gt; Software Updates -&gt; Manage Configuration&lt;/span&gt;&lt;br /&gt;Select the button &lt;span style="font-style: italic;"&gt;Show Disabled Features&lt;/span&gt;, to be clicked.&lt;br /&gt;Disable the plugin &lt;span style="font-style: italic;"&gt;Image Export&lt;/span&gt;.&lt;br /&gt;Enable the plugin &lt;span style="font-style: italic;"&gt;Image Export&lt;/span&gt;.&lt;br /&gt;It worked!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-4154343014454583078?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/4154343014454583078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=4154343014454583078' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4154343014454583078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/4154343014454583078'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2007/04/eclipse-vanished-plugin.html' title='Eclipse - vanished plugin'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8246461070535876922.post-8828044220263729363</id><published>2007-04-16T11:26:00.000-07:00</published><updated>2007-04-16T11:28:24.073-07:00</updated><title type='text'>Hello</title><content type='html'>I've decided, to create my own developer's blog... I'll try to present my solutions to some annoying problems with developer tools, some tips &amp;amp; tricks I've learned etc...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8246461070535876922-8828044220263729363?l=leszczu-dev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leszczu-dev.blogspot.com/feeds/8828044220263729363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8246461070535876922&amp;postID=8828044220263729363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/8828044220263729363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8246461070535876922/posts/default/8828044220263729363'/><link rel='alternate' type='text/html' href='http://leszczu-dev.blogspot.com/2007/04/hello.html' title='Hello'/><author><name>Piotr Leszczyński</name><uri>http://www.blogger.com/profile/07044399564969656029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://lh6.google.pl/image/p.leszczynski/RjhQIbaQCaI/AAAAAAAAAAo/T18qZOlktl4/Ja.JPG'/></author><thr:total>0</thr:total></entry></feed>
