Dzisiaj kolejny odcinek z serii "krótki kod prowadzącego". W tym odcinku zajmę się obiektem FormCollection (NameValueCollection). Obiekt ten jest dobrze znany każdemu programiście piszącemu w ASP.NET MVC. FormCollection jest to kolekcja przechowująca dane formularza przekazywanego do serwera podczas POSTa. Ot zwykły obiekt typu "kolekcja". Niestety przymiotnik "zwykły" po jakimś czas zaczął mi doskwierać. "Zwykłość" tego obiektu objawia się bowiem brakiem możliwości potraktowania g...
Strona głównaUżytkownik
jdubrownik | użytkownik
Kilka postów temu wspominałem, że piszę aplikację pod Windows Phone 7. Chyba pochwaliłem się przedwcześnie bo zaraz potem musiałem odstawić projekt na boczne tory. Po pewnym czasie wróciłem do niego. Problemem, na którym zatrzymałem się poprzednio był związany z synchroniczną obsługą żądań wysyłanych przez obiekt HttpWebRequest. Co w tym nadzwyczajnego? Ano w Silverlight, w obiekcie HttpWebRequest, nie istnieje metoda GetReposne. Dostępne jest "tylko" wersja asynchro...
Ostatnimi czasy dość intensywnie wykorzystuje wzorzec projektowy MVVM (MVVM Light Toolkit). Zgodnie ze sztuką, nie blokuję UI i wszystkie bardziej skomplikowane operacje wykonuję asynchronicznie. Do tego celu najczęściej używam BackgroundWorker lub ThreadPool, ze wskazaniem na BackgroundWorker względu na bogatszą funkcjonalność (OnProgressChanged, OnCompleted itd.). Z czasem gdy V...
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ę generow...
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 kontrol...
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...
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 proj...
Od jakiegoś czasu piszę aplikacje pod Windows Phone 7. Podczas testowania aplikacji na emulatorze zdziwiła mnie słaba wydajność emulatora. Na początku nie przywiązywałem do tego zbyt dużej wagi. Wiadomo... emulator. Jednak gdy podczas przeglądania przykładów aplikacji WP7 nawet proste aplikacje uruchamiane na emulatorze nie działały płynnie zacząłem się zastanawiać czy wszystko jest w porządku. Komputer, na którym pracuje ma już lata świetności za sobą (P83...
Mobile development 553 dni, 4 godziny, 4 minuty temu 97 rozwiń
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 ...
Prawie trzy lata temu, w listopadzie 2007, światło dzienne ujrzał .NET Framework 3.5, a razem z nim LINQ. Przez ten czas 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 mniej znanych ale bardzo przydatnych trików związanych z wykorzystaniem LINQ. ...
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 =)....
Od pewnego czasu namiętnie oddaję się programowaniu urządzeń mobilnych w .NET Compact Framework 2.0. Niestety, nie mogę korzystać z nowszej wersji frameworka niż 2.0. Po dłuższym okresie obcowania z WPF'em, LINQ i innymi dobrodziejstwami .NET 3.5 przesiadka na .NET CE 2.0 powoduje u mnie odczucia podobne do tych, jakie można doświadczyć chodząc w za małych butach. Ale do rzeczy. Pierwsza rzecz, która na prawdę mnie zdenerwowała to emul...
Mobile development 580 dni, 9 godzin, 14 minut temu 107 rozwiń
Od jakiegoś czasu staram się wykształcać w sobie nawyk regularnego pisania testów jednostkowych dla wykrytych błędów. Dlaczego? Możliwość sprawdzenia działania programu przy pomocy testów jednostkowych jest najprostszym wskaźnikiem jakości (choć bardzo ogólnym i nie jedynym!) wytwarzanego kodu. Testy jednostkowe są swego rodzaju drogowskazem, który stale pokazuje programiście dobry kierunek "jeżeli-czegoś-nie-można-przetestować-to-trzeba-to-przebudować".
Ostatnio, z powodu choroby, zaniedbałem trochę projekt Rankingu Sejmowego. Przez ten czas nie powstało zbyt dużo nowego kodu (ledwie kilka poprawek i jakieś pojedyncze testy). Żeby to trochę zrekompensować postanowiłem napisać kilka słów o tym jak ułatwić sobie życie pracując z Visual Studio i Resharperem, a przynajmniej jak ja je staram się sobie ułatwiać. Jak wiadomo Reshaper to nieoceniony narzędzie wspomagające pracę w Visual Studio na każdym kroku. Oprócz osławionego skrótu...
[RS] Lets Moq! Moq to biblioteka służący do tzw. mockowania lub inaczej zaślepiania obiektów na potrzeby testów jednostkowych. Zaślepianie polega na wygenerowaniu obiektu implementującego określony interfejsu, w którym metody zamiast wykonywać skomplikowane operacje np. dostępu do bazy danych zwracają po prostu z góry ustalone obiekty lub wartości. Taką zaślepkę przekazujemy do testowanego obiektu w miejsce oryginalnej implementacji. Umożliwia to prostsze i szybsze testowanie interesującego nas kawałka ...
W drugiej części ćwiczeń zaprezentuję bardziej skomplikowane zapytania Criteria API w NHibernate. Jako materiał treningowy, podobnie jak to było w pierwszej części, posłużą mi wcześniej opisywane statystyki. Metodyka pozostaje bez zmian - na początku T-SQL, później NH. Rozumiem, że może to budzić wątpliwości (zwłaszcza u obiektowych ortodoksów), jednak jak to w praktycznych zastosowaniach NH bywa, prędzej czy później trzeba zerknąć do środka zapytań i pobrudzić się trochę T-SQLem. Posunę się nawet do stw...
Podczas prac związanych ze statystykami zauważyłem, że przy okazji pisania kolejnych testów dla obiektów repozytoriów powielam kod odpowiedzialny za przygotowanie bazy SQLite. Jak nakazuje dobry obyczaj, powtarzający się kod należy wydzielić.
Od pewnego czasu odgrażałem się, że napiszę kilka zapytań przy użyciu NHibernate. Teraz nadszedł ten czas. Za materiał treningowy posłużą mi wcześniej opisywane statystyki. Metodyka pisania zapytań jest następująca: najpierw SQL, później zapytanie w NH. Ma to na celu pokazanie w jaki sposób można przekładać T-SQL na język zapytań NH (w tym przypadku Criteria API).
Kilka dni temu byłem zmuszony przeinstalować Visual Studio 2010. Nie przewidywałem żadnych problemów. Ot zwykłe odinstalowanie i zainstalowanie na nowo programu. Po zakończeniu procesu instalacji uruchomiłem losowy projekt by sprawdzić czy wszystko w porządku. Niestety podczas ładowania solucji pojawiły się błędy: The 'Microsoft.Data.Entity.Design.BootstrapPackage.BootstrapPackage...' package did not load correcly. The 'VSTS for Database Professionals Sql Server Data-tier Application' package did not loa...
Dzisiaj coś zupełnie z innej beczki. SAP Business One (SB1) , czyli "program księgowy". Jakiś czas temu miałem okazję popracować trochę z tym programem i zapoznać się z DI API. DI API to zestaw metod, za pomocą których możemy zautomatyzować proces tworzenia dokumentów księgowych w SB1. Czyli wygenerować dokumenty z poziomu własnego programu, przy użyciu "odpowiednich bibliotek". Bardzo przydatne w sytuacji gdy integrujemy program księgowy z innymi systemami i chcemy zautomatyzować proces powstawania doku...
Polecamy
Ostatnio na blogu
Podsumowanie #5 - tydzień 2...
Najaktywniejsi
