.net.coding.blog

jarosław.dubrownik

Profilowanie aplikacji przy użyciu dotTrace

Przyznam się, że nie miałem w planach poruszania tematu profilowania aplikacji jeszcze przez jakiś czas. Rozpoczęcie masowego importu danych ze strony sejmu do projektu Rankingu Sejmowego zmusiło mnie do zmiany planów. Po przerobieniu przez kilka godzin około 30% danych z ostatniej kadencji Sejmu (około 20 tysięcy plików HTML ważących razem 120 MB) zacząłem zastanawiać się czy dałoby się ten proces trochę przyspieszyć. Do badania wydajności kodu posłużyły mi dwa narzędzia - genialny dotTrace od JetBarins oraz stary dobry SQL Profiler dołączany do niedarmowych wersji SQL Servera. 

Read the rest of this post »

Filed under  //   c#   dotTrace   profilowanie   ranking sejmowy  

Dominik Paszkiewicz wesprze Ranking Sejmowy

Niezmiernie mi miło poinformować, że projekt Ranking Sejmowy postanowił wesprzeć Dominik Paszkiewicz z ngomedia.pl. Dominik zadba o wygląd Rankingu Sejmowego (frontend). Nada mu przejrzystą i przyjazną dla użytkownika formę (w odróżnieniu ode mnie =). Stay tuned!

Filed under  //   ranking sejmowy  

[RS] Breadcrumb z wykorzystaniem "chained routes"

Od jakiegoś czasu zgłębiam temat "chained routes" w ASP.NET MVC (wpisy tutaj i tutaj).  Wykombinowałem sobie, że będę organizował trasy w łańcuchy (Trasa rodzic > Trasa dziecko > Trasa dziecko dziecka > itd.). Takie podejście pozwoliło mi uprościć do minimum nawigację wsteczną pomiędzy stronami oraz prawie z marszu rozwiązało problemy związane z zaznaczaniem aktywnego elementu menu, generowaniem breadcrumb'a czy mapy strony. W tym wpisie zajmę się generowanie breadcrumba wykorzystując "chained routes". Uczciwie ostrzegam, że nie jest to kod produkcyjny (jeszcze) chociaż "działa na mojej maszynie". Jeżeli lubisz ryzyko, pościgi, strzelaniny i wybuchy to zapraszam do dalszej lektury.

Read the rest of this post »

Filed under  //   ASP.NET MVC   ranking sejmowy  

[RS] Problem aktywnego element menu w ASP.NET MVC. Rozwiązanie bez KOMBINACJI.

Podczas pracy nad generowaniem menu w ASP.NET MVC za każdym razem napotykałem na ten sam problem. Zaznaczanie aktywnego elementu menu. Istniejące rozwiązanie jest co najmniej słabe. To ActionFilter, którym należy udekorować metody kontrolera wchodzące w skład menu. Dodatkowo trzeba umieścić trochę if'ów w widoku. Można o tym przeczytać na StackOverflow tutaj i tutaj. Moim zdaniem to niepotrzebne komplikowanie kod zarówno kontrolera jak i widoku. Czy nie można by zrobić tego prościej? Można =)

Read the rest of this post »

Filed under  //   ASP.NET MVC   daj sie poznac   ranking sejmowy  

[RS] Ulepszanie routingu w ASP.NET MVC

Po wyrzuceniu z siebie szkicu interfejsu użytkownika (w postaci 2 obrazków =) zacząłem myśleć o organizacji kontrolerów i routingu. Standardowa trasa {controller}/{action}/{id} ma charakter czysto dydaktyczny. W przypadku prawdziwych aplikacji routing trzeba zbudować od podstaw. Nie będę opisywał co to jest trasa, jak działa, czy jaką powinna mieć budowę. Zamiast tego spróbuję rozwiązać problem (w trochę innych sposób) "powrotu do poprzedniej strony" w serwisach gdzie drzewo podstron jest bardzo rozbudowane (duża ilość zagnieżdżeń podstron).

Read the rest of this post »

Filed under  //   ASP.NET MVC   daj sie poznac   ranking sejmowy   routing  

[RS] NuGet - menadżer pakietów dla Visual Studio 2010

NuGet (wcześniej NuPack) to menadżer pakietów przeznaczony dla Visual Studio 2010. Dzięki temu narzędziu można w prosty i szybki sposób dodać do projektu najnowsze wersje popularnych bibliotek i rozszerzeń (Elmah, NHibernate, Castle i wiele innych) bez konieczności mozolnego przedzierania się przez kilka (naście) stron www w poszukiwaniu potrzebnych komponentów. NuGet potrafi ściągnąć dany pakiet, dodać wszystkie wymagane pliki jako referencję do projektu i odpowiednio je skonfigurować. Poezja =)

Read the rest of this post »

Filed under  //   NuGet   Visual Studio 2010   daj sie poznac   ranking sejmowy  

[RS] Prototyp GUI

Uff! Po zakończeniu procesu refaktoryzacji, który z różnych przyczyn szedł jak po grudzie, nadszedł ten czas kiedy mogę wrócić do prac nad GUI w ASP.NET MVC 2. Przed przystąpieniem do pisania kodu pomyślałem, że warto byłoby naszkicować stronę Rankingu Sejmowego. Do tego typu zadań, zamiast kartki i długopisu, świetnie nadają się wyspecjalizowane programy do prototypowania interfejsów użytkownika. Moim ulubiony programem tego typu jest Balsamiq Mockups, który produkuje nieprofesjonalnie wyglądające profesjonalne prototypy UI :D

Read the rest of this post »

Filed under  //   balsamiq   daj sie poznac   ranking sejmowy  

[RS] LINQ tips & tricks - mały dodatek

Po opublikowaniu mojego ostatniego wpisu dotyczącego LINQ i jego mniej znanych funkcjonalności i trików zastanawiałem się, czy w zbiorze metod oferowanych przez LINQ znajdzie się coś równie niedocenionego i równie użytecznego jak SelectMany(). Nie oczekiwałem zbyt wiele, jednak ku mojemu zaskoczeniu udało mi się odnaleźć perełkę w postaci przeciążenia metody Aggregate(). Przy okazji dowiedziałem się czegoś nowego o Where() i przypomniałem sobie o metodach służących do generacji danych Repeat() i Range().

Read the rest of this post »

Filed under  //   LINQ   daj sie poznac   ranking sejmowy  

[RS] LINQ tips & tricks

Prawie trzy lata temu, w listopadzie 2007, światło dzienne ujrzał .NET Framework 3.5, a razem z nim LINQ. Od tego czasu w sieci pojawiły się dziesiątki artykułów opisujących Language Integrated Query, jego zalety, wady oraz możliwości. Przy okazji namiętnego refaktoringu części projektu Rankingu Sejmowego (również z użyciem LINQ) pomyślałem, że dobrze byłoby zebrać w jednym miejscu informacje dotyczące kilku mniej znanych ale bardzo przydatnych trików związanych z wykorzystaniem LINQ.

Read the rest of this post »

Filed under  //   LINQ   daj sie poznac   ranking sejmowy  

[RS] Fluent NHibernate i enum

Obiecałem sobie nie pisać przez jakiś czas o (Fluent) NHibernate ale jak widać nie potrafię =) Przy okazji refactoringu kodu przypomniałem sobie o pewnym drobny problemie, który napotkałem testując kod repozytoriów. Podczas przeprowadzania testów z wykorzystanie SQLite zauważyłem, że właściwości typu enum zapisywane są w bazie danych pod postacią ciągu znaków, a nie jak oczekiwałoby się pod postacią typu całkowitego (najczęściej i najprawdopodobniej pod postacią integera =).

Read the rest of this post »

Filed under  //   Fluent NHibernate   daj sie poznac   ranking sejmowy