Chciałem przypomnieć prezentację Pawła Łukasika zatytułowaną Kurs programowania w C# – 24. Wzorce projektowe, która została nagrana 1,5 roku temu na VirtualStudy. Dużo się z niej nauczyłem zwłaszcza o antyzworcach. Ostatecznie pytanie o wzorce na pewno pojawi się na rozmowie o pracę, jeśli ktoś ma wątpliwości czy warto. Chociaż fakt lepszego zrozumienia jednego z najważniejszych pojęć powinien wystarczyć. Poniższy ry...
Strona głównaUżytkownik
jdubrownik | użytkownik
Sztuka programowania 3996 dni, 11 godzin, 41 minut temu 658 źrodło rozwiń
Simple.Data jest lekkim frameworkiem dla .NET, który zapewnia dostęp do bazy w stylu ORM, ale bez obiektów (Object), bez wymogu łączenia się do relacyjnej bazy danych (Relational) a także bez generowania relacji (Mapping)! Wszystko dzięki typom dynamicznym w .NET 4!
Bazy danych i XML 4081 dni, 14 godzin, 36 minut temu 613 źrodło rozwiń
IKVM.NET to wirtualna maszyna Javy napisana w .NET oraz zbiór implementacji podstawowych klasy z Javy dzięki którym możliwe jest uruchamianie kodu Javy bezpośrednio w środowisku .NET/Mono. Paczka IKVM.NET zawiera dwa główne narzędzia ikvm.exe (maszyna wirtualna) oraz ikvmc.exe – translator bytekodu Javy do .NET IL. IKVM.NET (ikvmc) umożliwia wykonanie szybkiego portu (translacji) biblioteki Javy do .NET. W moim przypadku była to biblioteka Morofologik – analizator morfologiczny, słownik morfologiczny i ...
Sztuka programowania 4068 dni, 7 godzin, 42 minuty temu 226 źrodło rozwiń
Pytanie “przechowywać, czy nie przechowywać” pojawia się praktycznie przy okazji każdego projektu, w którym trzeba przesłać coś więcej niż proste formy do i od użytkownika. Szkoły są dwie (plus hybryda, o czym za chwilę), jednak wybór, która w danym wypadku jest najlepsza zależy w dużej mierze od specyfiki samej aplikacji oraz rozwiązań technicznych użytych w projekcie.
Sztuka programowania 4109 dni, 23 godziny, 32 minuty temu 192 źrodło rozwiń
XAdES to najbardziej popularny format podpisu elektronicznego w Polsce. Występuje on w kilku odmianach: zwykły, ze stemplem czasowym, dodatkowymi informacjami itd. Czasami zachodzi potrzeba zweryfikowania podpisu elektronicznego w .NET. Jakiś czas temu miałem podobny problem. Pokopałem trochę w Google i w MSDN i znalazłem w .NET Framework ciekawą klasę SignedXml...
Sztuka programowania 4128 dni, 11 godzin, 51 minut temu 1401 źrodło rozwiń
Generowanie plików PDF z poziomu kodu programu to temat rzeka. Wystarczy przejrzeć staka. Temat przewija się w prawie każdej tworzonej dzisiaj aplikacji. Zawsze znajdzie się ktoś komu trzeba wysłać fakturę, raport czy kilka wykresów w PDFie. Problem w tym, że narzędzia do generowania ładnych dokumentów PDF kosztują i to nie mało.
Co w tej metodzie takiego specjalnego? Nazwa metody mówi wszystko, no prawie wszystko. Metoda używana często i gęsto w kodzie HtmlHelper przy okazji tworzenia kontrolek TextBox, CheckBox, DropDown itd. Zamienia...
Jeżeli korzystasz z Twitter Bootstrap w ASP.NET MVC to najprawdopodobniej po kilku godzinach korzystania z tej świetnej biblioteki poczujesz nieodpartą potrzebę napisania kilku HtmlExtensions, aby choć trochę ułatwić sobie życie. Dobrym przykładem jest RadioButton, który w podstawowej wersji, dostępnej w ASP.NET MVC, “trochę” różni się od tego co oferuje nam Bootstrap. Napisałem HtmlExtensions do bootstrapowej wersji elementu jednocześnie dodając obsługę generowania z enuma. Takie radio na...
“Masowa” i “SmtpClient” w jednym zdaniu? Nie, to nie jest żart. Każdy, kto choć raz musiał wysyłać serię maili z poziomu kodu C# pomyśli, że zwariowałem. Blokowanie wątku, cała gama wyjątków, które może rzucić metoda Send(), czy obsługa stanu aplikacji po takim błędzie. To ważniejsze atrakcje, jakie możemy napotkać korzystając z tej klasy. Jest na to jedna prosta metoda. Wróć. Właściwość… DeliveryMethod.
Sztuka programowania 4218 dni, 8 godzin temu 225 źrodło rozwiń
.NET Micro Framework to framework z rodziny .NET służący do oprogramowywania systemów typu embedded z ograniczonymi zasobami pamięci. Minimalne wymagania to 256 kB pamięci flash oraz 64 kB pamięci RAM. .NET Micro to taki młodszy brat .NET Framework z bardzo okrojonym BCL, WPF i WCF (wersja 4.x). Jeżeli programowałeś wcześniej w “pełnym dotnecie”, przesiadka na Micro może okazać się szokiem. Niby to ten sam C#, jednak braki w BCL (wynikające z ograniczeń platformy sprzętowej) szybko dają się we znaki.
Sztuka programowania 4228 dni, 15 godzin temu 130 źrodło rozwiń
20.03.2013 Średnio raz w miesiącu NHibernate doprowadza mnie do białej gorączki wyjątkiem: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.Data.SqlTypes.SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. Powodem powstania tego wyjątku jest niewypełnienie (lub błąd w definicji mapowania) właściwości DateTime obiektu biznesowego zapisywanego do bazy danych. Problem w tym, że treść tego komunikatu jest tak ogó...
Sztuka programowania 4240 dni, 21 godzin, 1 minutę temu 156 źrodło rozwiń
Jeżeli korzystasz z NHibernate i Json.NET i chcesz bezpośrednio serializować obiekty biznesowe pobrane z bazy danych przy użyciu NHibernate do formatu JSON to bardzo szybko napotkasz na problem w postaci wyjątku: Error getting value from 'ReadOnly' on 'NHibernate.Proxy.DefaultLazyInitializer'. Problem ten powstaje w momencie gdy próbujesz serializować encję pobraną przez NHibernate, która posiada niezainicjowane wiązania z innymi encjami (obiekty proxy do obsługi lazy loading). Klasa serializująca prze...
Architektura 4253 dni, 5 godzin, 50 minut temu 116 źrodło rozwiń
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...
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 5107 dni, 9 godzin, 10 minut temu 100 źrodło rozwiń