Ostatnie wpisy

Logi IIS – LogParser oraz Indihiang

Analiza logów to nieodłączna część poprawiania, naprawiania, optymalizacji…
W IIS również gromadzone są logi operacji. Zapisywane są w katalogu, którego ścieżkę – jak i wiele opcji dotyczących logowania – można sprawdzić we właściwościach sekcji „Logging”. Każda aplikacja stworzona na serwerze www posiada identyfikator. Domyślnie pliki loga tworzone są w trybie „jeden plik dziennika na witrynę dziennie” i zapisywane w katalogu: %SystemDrive%\inetpub\logs\LogFiles.
Microsoft udostępnia sprytne narzędzie konsolowe, które pozwala na przeglądanie rozmaitych plików log – również tych zapisywanych przez IIS. Drugie narzędzie – graficzny Indihiang ma o wiele mniejsze możliwości ale pozwala na szybkie uzyskanie danych o naszej aplikacji i żądaniach do niej kierowanych.
(więcej…)

Script i self-closing tags

Pół godziny z głowy z powodu.. roztargnienia.
Przerzuciłem się kilka dni temu z powrotem na Operę. Powód? Mułowatość, toporność i pamięciożerność Firefoxa. Jedyne za czym tęsknię to Firebug. Stwierdziłem jednak, że zacznę przyzwyczajać się i poznawać Opera Dragonfly.
Z ubolewaniem muszę stwierdzić, że wiele jeszcze brakuje temu narzędziu do używalności jaką oferuje Firebug. Jednak – nie o tym post.
Testując różne funkcjonalności na stronie, którą przygotowuję (ASP.NET MVC 3.0 z Razor’em) przerzuciłem się na chwilę na Firefox 5.0. Ze zdziwieniem stwierdziłem, że żaden JavaScript nie działa! Zwaliłem to na nieumiejętne użycie przeze mnie @section oraz @RenderSection jakie oferuje Razor. Zajrzenie w źródło strony – jednak nie. Wszystko jest ok. Prawie. Rebus dla spostrzegawczych:

(więcej…)

Entity Framework i optimistic concurrency

W przypadkach, gdy dane edytowane są dość rzadko i przez niewielką liczbę użytkowników, najczęściej stosowanym modelem blokowania danych do edycji jest… brak blokowania. Mówiąc konkretnie – chodzi o OCC, czyli Optimistic Concurrency Control.

Pytanie to – w wersji teoretycznej – poruszane było nie tak dawno na devpytaniach. Jeśli możemy założyć, że konflikty będą występować rzadko lub jest to akceptowalne w konkretnym przypadku, który mamy zaprogramować, użycie optymistycznego blokowania jest dobrym i prostym wyborem.
Optimistic concurrency nie blokuje rekordu przy jego pobieraniu, natomiast przy zapisie dokonywane jest nadmiarowe sprawdzenie, czy dane w bazie są tożsame z danymi, które były podstawą naszych zmian.

Stanąłem przed problemem obsługi optimistic concurrency przy korzystaniu z Entity Framework 4.0. Po krótkiej lekturze „Entity Framework 4.0 Recipes – A problem-solution approach” okazało się, że EF wspiera Optimistic Concurrency. Wystarczy dodać do bazy danych kolumnę informującą o – mówiąc ogólnie – wersji obiektu. Najłatwiej będzie przeanalizować problem na bardzo prostym przykładzie (kod do pobrania na końcu artykułu).

(więcej…)

Proste i przyjemne porównanie kolekcji w .NET

Polecam i początkującym i doświadczonym wpis C#/.NET Fundamentals: Choosing the Right Collection Class na blogu Jamesa Michaela Hare.
Zwięzły i konkretny opis podstawowych kolekcji w .NET – zastosowania, zalety, wady. Złożoność wstawiania i wyszukiwania.
Wpis co prawda nie obejmuje nowych concurrent collections w .NET ale i tak jest wart uwagi.

EntityFramework i datetime2 oraz System.Data.UpdateException

Dziś napotkałem bardzo dziwny błąd przy próbie zapisu danych do bazy MS SQL za pomocą Entity Framework z .NET 4.0. Otrzymywałem błąd:

System.Data.UpdateException: Wystąpił błąd podczas aktualizowania wpisów. Aby uzyskać szczegółowe informacje, zobacz wyjątek wewnętrzny. —> System.ArgumentException: Używana wersja programu SQL Server nie obsługuje typu danych ‘datetime2′.

ang: The version of SQL Server in use does not support datatype ‘datetime2

Najdziwniejsze było jednak to, że po przeskanowaniu całego pliku EDMX nigdzie nie stwierdziłem występowania typu „datetime2″ w mapowaniach. Typ „datetime2″ został dodany w MS SQL Server od wersji 2008. Problem okazał się dość trywialny – EDMX (czyli wszelkie mapowania i ustawienia) zostały wygenerowane dla tej właśnie bazy. Połączenie natomiast realizowane było z bazą MS SQL  Server 2005.
(więcej…)

Proste narzędzie do testowania zapytań XPath

Potrzebowałem banalnie prostego narzędzia, które byłoby pomocne w testowaniu zapytań XPath. Po krótkich poszukiwaniach i odnalezieniu kilku kombajnów stwierdziłem, że nawet dla wprawy szybciej stworzę odpowiednie narzędzie, spełniające moje wymagania ;) Dzielę się więc minimalistycznym, intuicyjnym w użyciu programem. Ascetyczny interfejs i funkcjonalność. Nie ma kolorowania, animacji ani miliona wielce-potrzebnych-funkcji.
(więcej…)

Nauka przez przykład – opowieści użytkownika

Kontynuując poprzedni wpis dotyczący nauki przez przykład, określiłem tzw. opowieści użytkownika. Pozwoli to na zdefiniowanie wymagań dotyczących budowanej aplikacji.

Jeśli będziemy wiedzieć czego użytkownik oczekuje, będziemy mogli zaproponować rozwiązanie spełniające te wymagania.

Poniżej opowieści:

(więcej…)

Wielopoziomowa aplikacja – nauka przez przykład

Większość aplikacji w jakich tworzeniu uczestniczyłem była aplikacjami webowymi. Postanowiłem zmierzyć się z innym zadaniem – aplikacją desktopową, która oparta będzie o dostępne w .NET mechanizmy. Nie jest to komercyjny projekt a poligon testowy polegający na określeniu architektury, zaprojektowaniu systemu i jego implemenacji. Wiadomo – teoria teorią, jednak dopiero zderzenie się w praktyce z poruszanymi zagadnieniami pozwala na nauczenie się czegokolwiek zdecydowanie skuteczniej.
(więcej…)