27 września 2011

Blokowanie w SQL Server dla początkujących

Jak ujarzmić MS SQL Server?

Silnik baz danych MS SQL Server to takie niewdzięczne stworzenie w świecie .NET Framework. Relacyjne bazy danych są często w pogardzie u części programistów,  postrzegane jako zło konieczne. Niektórzy tworzą NoSQL movement,  inni proponują, żeby przenieść bazę danych do pamięci operacyjnej lub chociaż do chumry, usunąć relacje i wcisnąć ten cały data management w obiekty. Oczywiście, na dzisiaj (rok 2011, miesiąc Wrzesień) wielu nieszczęśliwych z tego powodu developerów musi zmagać się z SQL Server'em. Właśnie o pewnym aspekcie tych wysiłków chciałem pokrótce napisać.
Wyróżniłbym kilka klas problemów z którymi zmagają się na codzień programiści baz danych

  • Indeksowanie tabel i widoków
  • Blokowanie
  • Analiza dużej ilości zapytań (tzw. trace)
  • Porównywanie danych
  • Analiza wydajności zapytań
  • Śledzenie i rejestrowanie zapytań generowanych przez aplikację

Zapewne można wyróżnić jeszcze kilka kategorii, aczkolwiek proszę o wyrozumiałość, gdyż nic więcej nie przyszło mi do głowy.  W tym poście skupię się na zagadnieniach związanych z blokowaniem zapytań i narzędziach które mogą pomóc w rozwiązowaniu problemów spowodowanych przez blokady.

26 września 2011

PowerShell - antywzorzec kopiuj/wklej

Dlaczego lubię Add-Type


Pisząc skrypty w PowerShell'u, szczególnie takie jednorazowego użycia kuszącą opcją jest skorzystanie z cmdlet'u Add-Type. Umożliwia on rejestrację typu(-ów) danych zaimplementowanego w C#,VB.NET lub JScript i wykorzystanie go w skrypcie PowerShell'u. W moim przypadku gdy próbowałem użyć typów danych z .NET Framework w skrypcie otrzymałem następujący wyjątek.

Multiple ambiguous overloads found for ... and the argument count: ...

Runtime Powershell'a z jakiegoś powodu nie mógł dopasować odpowiedniej sygnatury metody z typem przekazywanych parametrów. Zamiast spędzić kolejne pół godziny nad hackowaniem kodu, użyłem magicznego cmdlet'u Add-Type.

12 września 2011

Statystyczny programista .NET - A.D. 2011

Co powinien umieć programista .NET w 2011 roku?


Skupiając się w ostatnich dwóch latach na poznawaniu arkanów SharePoint'a i rozwijaniu własnych zainteresowań, prawie kompletnie zaniedbałem wgryzanie się w coraz to nowe technologie pojawiające się na platformie .NET. Ostatni raz poszukiwałem pracy 4 lata temu, z czystej ludzkiej ciekawości postanowiłem sprawdzić na jakie  umiejętności w obrębie technlogii .NET teraz jest zapotrzebowanie na polskim rynku pracy. Oczywiście w tym poście dopuszczę się wszelakich nadużyć i uogólnień, zatem   z góry proszę o wybaczenie.  Moim celem jest ustalenie jakie umiejętności definiują statystycznego "polskiego" programistę .NET.

Do analizy rynku pracy dla programistów .NET wybrałem mało naukową metodę. Postanowiłem przeglądać ogłoszenia o pracę (jobpilot.pl, pracuj.pl) w liczbie 40-stu i wypisywać (oraz zliczać) nazwy technologii, które pojawiają się w treści ogłoszenia.

09 września 2011

WPF DataGrid w służbie metadanych

DataGrid i ja


Z programowaniem okienek w Windows rozstałem się na drugim roku studiów. Moje życie zawodowe tak się ułożyło, że nigdy później nie tknąłem Win32 API, MFC, WinForms,a tym bardziej WPF'a. W noworocznym postanowieniu ustaliłem, że spróbuję opanować chociaż podstawy Windows Presentation Foundation. W ramach realizacji postanowień, moja uwaga skupiła się na problemie prezentacji danych w postaci tabelarycznej w WPF.

W .NET Framework 3.5 do dyspozycji programisty WPF był WPF Toolkit, w którego skład wchodził DataGrid. W .NET Framework 4.0 kontrolka DataGrid wróciła z wygnania na codeplex.com i została włączona do Windows Presentation Foundation.

Ku mojemy zaskoczeniu DataGrid wykazał się dosyć rozbudowaną funkcjonalnością. Scenariusz, który chciałem zrealizować można zoobrazować w następujący sposób. Mamy listę piesków (dogs) i kotków (cats), wyświetlając listy tych zwierzaków nie chciałem deklaratywnie definiować każdego atrybutu w WPF'owym XAML'u. Chciałem wypracować bardziej dynamiczne podejście (cały kod projektu jest dostępny tutaj). Klasy kotków i piesków wyglądają jak poniżej.