MTS – normalny dzień pracy :|

Większość już pewnie powróciła do pracy, powróciła do szarej rzeczywistości, która nie jest jeszcze rokiem 2019 (szkoda).

Na wielu blogach można przeczytać oceny MTS 2009. Ja napiszę kró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óre wybrałem w większości mnie zadowoliły nie rozczarowałem się nimi, mimo że na niektórych liczyłem na więcej. Ogólnie oceniam całość na 5+. Jedyny zarzut Pepsi było wy-gazowane a ja takiego nie lubię 🙂

Bbloggers Underground – spotkanie po pierwszym dniu sesji. Powiem tak dla mnie było za wcześnie, ale nie jest to zarzut musiałem się odstawić do Hotelu, a potem piechtolotem wyruszyłem w podróż do “Piekarni”. Oczywiście byłem jednym z tych spóźnialskich, poza moim przemówieniem którego nie wygłosiłem, mam nadzieję że niewiele straciłem. Burzliwe dyskusje na wiele różnych tematów związanych, powiązanych z technologią IT oraz tych zupełnie luźnych pozwoliło zapewne nam wszystkim lepiej się poznać. Na to spotkanie na pewno będę chciał przyjść za rok jako jeszcze bardziej doświadczona osoba.

Wszystkich zachęcam w uczestnictwie w konferencji MTS.

A teraz kto jeszcze może niech się zapisuje na CodeCamp ja na pewno tam będę.

Krakowska Grupa Developerów .NET

Jako że mieszkam niedaleko Krakowa postanowiłem wsiąść udział w kolejnym spotkaniu Krakowska Grupa Developerów .NET. Odbyło się ono w Pałac Pugetów, ul. Starowiślna 13, Kraków. Lokacja na mapce . Czyli samo centrum łatwo dotrzeć za to naprawdę wielkie plusy. Więcej o Krakowska Grupa Developerów .NET można przeczyta na stronie http://ms-groups.pl/kgd.net/default.aspx .

Bloggers Underground #2.5

Od jakiegoś czasu można się rejestrować na spotkanie blogeró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óre mają chęć dzielenia się z innymi swoimi doświadczeniami oraz wiedzą o przyjrzenie się tej inicjatywie.

Mój harmonogram na MTS 2009

Przedstawiam mój wybór na tegoroczny MTS. Rozstrzeliłem się pomiędzy parę tematów ale mam nadzieję że dzięki temu dowiem się paru ciekawych nowych rzeczy 🙂

O wyborze sesji bardzo ciekawie napisał Grzegorz Tworek Jak być zadowolonym po MTS .

A na blogu Mariusza Kędziora można znaleźć podsumowanie pierwszych dni w których wybieraliśmy sesje: "MTS 2009: Jakie sesje wybieracie"

Visual Studio 2010 – Database Projects – czyli efektywna praca z projektami baz danych [200]
Cezary Nolewajka
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ów. Praca z obiektami baz danych, skryptami baz danych, praca w zespole. Generowanie danych testowych, Unit Testing, automatyzacja testów baz danych. Porównywanie schematów baz danych i danych w bazach danych. Edycja Visual Studio 2010 Professional.

Zabezpieczenie i „odbezpieczanie” kodu .NET[400]
Marcin Książek
Kompilowany kod .NET przekształcany jest do postaci pośredniej, która dopiero na docelowej maszynie kompilowana jest do kodu natywnego. Stosując dosyć proste techniki można odwrócić proces i otrzymać źródła odpowiadające prawie w 100% oryginalnym.
W trakcie sesji przedstawione zostaną techniki zaciemniania kodu tak, aby nie pogarszając jego działania maksymalnie utrudnić dostęp do źródeł.
Każda z technik zostanie poddana analizie oraz pró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ów.
Do końca sierpnia na blogu: http://geekswithblogs.net/marks zostaną zamieszczone posty wprowadzające w tematykę zabezpieczeń, aby w trakcie prezentacji skupić się na najciekawszych elementach.

.NET 4.0 Inside/Out – CLR 4.0, DLR i ich wpływ na sposób programowania [300]
Daniel Biesiada
Na tej sesji zostaną omówione zmiany w CLR 4.0 oraz przekazane informacje dotyczące funkcjonowania Dynamic Language Runtime (nadbudowy CLR, odpowiedzialnej za obsługę dynamicznych języków programowania). Naturalną konsekwencją tego omówienia będzie wprowadzenie do nowych języków programowania (Python, Ruby oraz F#) oraz zmian w istniejących (C# 4.0).

IIS7 nie tylko serwer WWW [300]
Artur Żarski
Sesja ma na celu przedstawienia IIS7 jako platformy dla twórców witryn, programistów oraz specjalistów IT a nie zwykłego serwera WWW. Pokazane będą dodatki i rozszerzenia stworzone przez firmę Microsoft oraz przykłady jak napisać swój własny dodatek.

User Experience and design technologies – What’s New and Cool? [200]
Michael Koster
Visit this session to hear about exciting new features of Microsoft’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.

Czy ASP.NET MVC oznacza zmierzch "klasycznego" ASP.NET? [200]
Bartosz Kierun
Do technologii odpowiedzialnych za tworzenie aplikacji webowych dołączyła ostatnimi czasy platforma ASP.NET MVC. Czy jej pojawienie się oznacza, że rozwój „podstawowej” wersji technologii ASP.NET opartej o tzw. WebForms zostanie zaniechany? Jakie korzyści przynosi nowa technologia i kiedy warto rozpocząć z nią swoją „przygodę”?
Na sesji dowiesz się:

  • o podstawowych koncepcjach technologii ASP.NET MVC takich jak: model, view, controller, routing itp.,
  • jak zacząć przy jej pomocy budować własne aplikacje webowe,
  • jak ASP.NET MVC wpływa na architekturę i testowalność aplikacji,
  • jakie są wady i zalety tej technologii w kontekście klasycznego ASP.NET.

Configuration Manager dla ludzi [300]
Emil Krotki
Cel prezentacji:

  1. przekazanie doświadczeń z pracy w projektach, w których aplikacja była słabo zdefiniowana, lub wymagała elastyczności wykraczającej poza typowe zadania kodowania,
  2. przełamanie barier i ułatwienie wykorzystania z bogatej klasy służącej do konfiguracji aplikacji,
  3. pokazanie jak w prosty sposób budować konfigurację aplikacji wielomodułowych, podnosząc wydajność pracy developera i ułatwiając deployment,
  4. pokazanie metod budowy konfiguracji czytelnej i modyfikowalnej dla ludzi, której diagnostyka jest precyzyjna i równie czytelna.

Problemy i ich rozwiązania:

  1. jak budować w VisualStudio konfigurację dla wielu projektów jednego rozwiązania, żeby było lekko, łatwo i przyjemnie,
  2. konfiguracja początkowa i zmienna w locie – "problem jajka i kury" w konfiguracji aplikacji (konfiguracja konfiguracji), „hard-coded” defaults, zmiana parametrów pracy aplikacji „w locie”, diagnostyka, uodpornienie aplikacji na błędy konfiguracji, generowanie plików konfiguracyjnych,
  3. czytelność pliku konfiguracyjnego, XML dla ludzi – użycie klas dziedziczących i ich cech dodatkowych, struktura plików konfiguracyjnych, typy, konfiguracja projektów wielomodułowych,
  4. monitorowanie aplikacji (Event Log lub Enterprise Library, ale nie omawiane) – 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ów w trakcie pracy aplikacji,
  5. sterowanie zachowaniem aplikacji, czyli sposobem przetwarzania danych poprzez konfigurację w XML-u.

Prezentacja danych w swoich aplikacjach [300]
Artur Żarski
Sesja ma na celu przedstawienie dostępnych technologii i komponentów Microsoft służących prezentacji danych w swoich aplikacjach – zarówno desktop jak i Web. Czyli od wykresów i tabel z danymi skończywszy na zaawansowanych systemach raportowania (Reporting Services) i prezentacji danych na witrynach MOSS.

Dane o sesjach pochodzą z strony www.mts2009.pl.

UpdateProgress – blokada kontrolek w przeglądarce

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ó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.

Zakładam że osoba ma Visual Studio 2008 i może utworzyć nową aplikacje która ma już ScriptMenager na swoim pokładzie, czyli New->Projekt->AJAXEnabledWebApplication Dodajemy UpdatePanel a w nim przycisk.Na samym końcu dodajemy UpdateProgress/

<form id="form1" runat="server">
	<asp:ScriptManager ID="ScriptManager1" runat="server" />
	<div>
		<asp:UpdatePanel ID="UpdatePanel1" runat="server">
			<ContentTemplate>
				<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
			</ContentTemplate>
		</asp:UpdatePanel>
		<asp:UpdateProgress ID="UpdateProgress1" runat="server">
			<ProgressTemplate>
				<h1>Proszę czekać...</h1>
			</ProgressTemplate>
		</asp:UpdateProgress>
	</div>
</form>

Oczywiście do przycisku dodajemy akcje Click

protected void Button1_Click(object sender, EventArgs e)
{
	System.Threading.Thread.Sleep(4000);
}

W UpdateProgress Wprowadzamy zmiany

<asp:UpdateProgress ID="UpdateProgress1" runat="server">
	<ProgressTemplate>
		<div id="blur">&nbsp;</div>
		<div id="progress">
			<h1>Proszę czekać...</h1>
		</div>
	</ProgressTemplate>
</asp:UpdateProgress>

Teraz musimy do naszej strony dodać plik css z naszymi stylami.

#blur
{
    width: 100%;
    background-color: black;
    moz-opacity: 0.5;
    khtml-opacity: .5;
    opacity: .5;
    filter: alpha(opacity=50);
    z-index: 120;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
}
#progress
{
    z-index: 200;
    background-color: White;
    position: absolute;
    top: 0pt;
    left: 0pt;
    border: solid 1px black;
    padding: 5px 5px 5px 5px;
    text-align: center;
}

A teraz nasza wstawka w JavaScript:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
	<script language="javascript" type="text/javascript">
<!--
    Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(
    function () {
   if (document.getElementById) {
        var progress = document.getElementById('progress');
        var blur = document.getElementById('blur');
        
        progress.style.width = '300px';
        progress.style.height = '30px';
        
        blur.style.height = document.documentElement.clientHeight;
        progress.style.top = document.documentElement.clientHeight/3 - progress.style.height.replace('px','')/2 + 'px';
        progress.style.left = document.body.offsetWidth/2 - progress.style.width.replace('px','')/2 + 'px';
    }
  }
)
// -->
</script>