W komentarzu do poprzedniego posta Bartosz napisał, że według niego nowo utworzony obiekt z wynullowanymi polami nie zawsze jest błędem i czasami może mieć sens. Nie zgadzam się z tym zupełnie. Powiem więcej: wg mnie, w językach wysokiego poziomu (chodzi mi o takie, gdzie już nie musimy ręcznie alokować i zwalniać pamięci) wartość null nie ma w ogóle racji bytu! ...
Architektura 4702 dni, 12 godzin, 46 minut temu 404 źrodło rozwiń
Ostatnimi czasy (tuż przed świętami) stwierdziłem że .Net oferuje dosyć ubogie wsparcie dla struktur drzewiastych. Ponieważ miałem konieczność dokonywania operacji Wspieranych przez Linq naturalnym pomysłem było napisanie operacji wspierających iterowanie po drzewie (takiej małej małpki). W ramach tego artykułu opisuję co udało mi się osiągnąć. Nieprzyzwyczajonych do mojej formy wypowiedzi przepraszam za to że "Ten wykwit werbalnej weny wyrodził się w wielomówność" i zapraszam do lektury samego artykułu.
Architektura 4702 dni, 12 godzin, 46 minut temu 211 źrodło rozwiń
W kilku ostatnich wpisach przedstawiłem czym jest metodyka Scrum, po co i jak ją stosować przy użyciu Team Foundation Server. W teorii moglibyśmy już rozpocząć projekt i z powodzeniem go prowadzić. Możliwe, że więcej wiedzy nie było by Wam szybko potrzebne, ale podejrzewam, że całkiem szybko zaczęły się pojawiać pytania o zarządzanie i przepływ zadań. W tym artykule postaram się wybiec przed nie i od razu przedstawić garść odpowiedzi. W skrócie co jak i gdzie w kombinacji TDD + TFS + SRUM
Architektura 4718 dni, 13 godzin, 52 minuty temu 130 źrodło rozwiń
MEF jest kolejnym frameworkiem umożliwiającym tworzenie rozszerzalnych aplikacji. Pomijając marketing serwowany na różnych stronach, jest to po prostu biblioteka umożliwiająca dependency injection. W wersji .NET 4.0 została zintegrowana w .NET Framework i nie musi być instalowana osobno. Na oficjalnej stronie można sporo poczytać o budowie MEF’a jednak w poście chciałbym ograniczyć to do minimum ponieważ dla mnie osobiście, zbyt dokładne intro do tematu po prostu zniechęca mnie do dalszego czytania. Zac...
Architektura 4718 dni, 13 godzin, 52 minuty temu 207 źrodło rozwiń
NULL Object Pattern (Special Case)
Architektura 4730 dni, 19 godzin, 12 minut temu 186 źrodło rozwiń
W kodzie często używamy klasy Stirng do przechowywania poufnych informacji takich jak np. hasło. Niestety często nie zdajemy sobie sprawy jak niebezpieczne jest takie rozwiązanie. String jest specjalnie zoptymalizowaną klasą przeznaczoną do przechowywania łańcucha znaków, która jednak nie jest odporna na wszelkie ataki związane z podglądaniem pamięci operacyjnej. W skrócie pisząc, wszelkie informacje klasa String trzyma w postaci jawnej. Korzystając więc z odpowiedniego oprogramowania, intruz może bez pr...
Architektura 4730 dni, 19 godzin, 12 minut temu 313 źrodło rozwiń
Każdy z nas w trakcie zawodowej kariery miał (nie)przyjemność pracować z systemami kontroli wersji. Codziennie w trakcie swojej pracy wrzucamy, pobieramy z nich pliki, rozwiązujemy konflikty. Wiemy po co je używać, ale czy wiemy jak? Tak jak w każdej dziedzinie życia pewne rzeczy można robić lepiej lub gorzej. W tym artykule postaram się pokazać kilka dobrych zasad ciągłej integracji (Continuous Integration), które pozwolą usprawnić trochę ten proces. Na koniec przedstawię przykład jak w...
Architektura 4733 dni, 3 godziny, 42 minuty temu 63 źrodło rozwiń
Autor: [ten post jest częścią mojego minicyklu o testach, pełna lista postów: tutaj] Po dość długiej przerwie wracam do tematu testów jednostkowych. Kombek zainicjuję krótkim zahaczeniem o mocki, które opisałem w poprzednim poście cyklu. Poruszyć chcę dzisiaj dwie kwestie. Kwestia 1: terminologia Niedawno na blogu Piotra Zielińskiego pojawił się post opisujący różnice pomiędzy terminami określającymi to co ja rozumiem przez "mock". Przypomniało mi to czasy, gdy starałem się zgłębiać definicje skrywając...
Architektura 4736 dni, 18 godzin, 17 minut temu 186 źrodło rozwiń
Code Contracts stanowią kolejny mechanizm ułatwiający programowanie defensywne – sposób wytwarzania oprogramowania odporny na wszelkie niespodziewane wartości (NULL, dzielenie przez zero, wartości skrajne itd.) Rozważmy klasyczny przykład – funkcja dzielenia:privatefloat Divide(float dividend, float divisor) { if (divisor ==0) thrownew DivideByZeroException(); return dividend / divisor; } Funkcja jest zaimplementowana poprawnie – sprawdza czy divisor nie jest zerem. Są jeszcze inne skra...
Architektura 4757 dni, 6 godzin, 39 minut temu 240 źrodło rozwiń
Jakiś czas temu, we wpisie Tworzenie aplikacji wielojęzycznych z C# i ASP.NET w Visual Studio opisywałem jak stworzyć aplikację, która będzie przystosowana do obsługi wielu języków i wykorzystywać będzie do realizacji tego celu mechanizm zasobów udostępniony w platformie .Net. Wpis ten, nie opisywał jednak zastosowanie tego mechanizmu, dla aplikacji napisanych pod kątem frameworka WPF, który korzysta z języka XAML. Dlatego też dziś, w ramach kolejnego wpisu z cyklu WPF Tutorial, chciałbym nadrobić braki...
Architektura 4778 dni, 4 godziny, 58 minut temu 266 źrodło rozwiń
W poprzednim artykule zajęliśmy się częścią odpowiedzialną za wczytywanie i przechowywanie słownika w pamięci. Teraz opiszę w jaki sposób będziemy tłumaczyć UI i oznaczać, które elementy mają temu podlegać. Przedstawię również prostą aplikację napisaną w Windows Forms podsumowującą wszystko o czym mówiliśmy.
Architektura 4804 dni, 3 godziny, 30 minut temu 91 źrodło rozwiń
W części 1 przedstawiłem ogólny zarys naszego modułu lokalizacyjnego. W tej części zajmiemy się formatem pliku xml z zasobami językowymi oraz deserializacją i przechowywaniem danych. Na koniec pokażę jak identyfikować na dysku interesujące nas pliki.
Architektura 4806 dni, 18 godzin, 3 minuty temu 79 źrodło rozwiń
← Pierwsza aplikacja w Windows Phone MarketplaceLokalizacja UI z wykorzystaniem plików XML i mechanizmu refleksji – Część 2 →Lokalizacja UI z wykorzystaniem plików XML i mechanizmu refleksji – Część 1Opublikowano12 września 2011, autor:Tomasz Malesza W tym oraz kilku następnych artykułach przedstawię w jaki sposób można zbudować prosty moduł umożliwiający zmianę języka interfejsu użytkownika w trakcie działania programu. W dowolnym momencie (po instalacji na komputerze docelowym) będzie można dołożyć kol...
Architektura 4806 dni, 18 godzin, 3 minuty temu 60 źrodło rozwiń
W poprzedniej części tutoriala, poświęconej tworzeniu własnych kontrolek użytkownika, wspomniałem co nieco o zasobach i stylach, które możemy umieścić w pliku dodatkowym, bądź też w aktualnie przetwarzanym dokumencie. Dziś chciałbym rozszerzyć trochę temat i pokazać bardziej praktyczne wykorzystanie zasobów. Dowiecie się między innymi o tym jak: Utworzyć zasoby lokalne dla wybranego okna/elementu Utworzyć zasoby globalne dla całej aplikacji Jak tworzyć powtarzalne elementy jako zasoby (np. menu konteks...
Architektura 4812 dni, 5 godzin, 50 minut temu 160 źrodło rozwiń
Test jednostkowy to nic innego jak kod wykonujący inny kod w kontrolowanych warunkach. Jego zadaniem jest weryfikacja (bez ingerencji programisty), że testowany kod działa poprawnie. Robi to w sposób dość banalny: autor testu dostarcza dane wejściowe (input), test wykonuje pewne instrukcje i sprawdza, czy rezultat działań (output) zgodny jest z oczekiwaniami. W świecie idealnym każdy test bada jedną ścieżkę wykonania jednej metody. Czy jednak jedyną rolą testów jednostkowych jest sprawdzenie działania ...
Architektura 4842 dni, 10 godzin, 52 minuty temu 386 źrodło rozwiń
Wykorzystywanie atrybutów w C#, jest często marginalizowane, a nawet wręcz pomijane przez programistów tego języka. Jak pokazuje życie, mogą one być całkiem przydatne np. w serializacji obiektów do XMLa. Mogą one się przydać, również w naszych własnych programach. Użycie atrybutów, może spowodować, że napisany przez nas kod będzie bardziej elastyczny i skalowalny, a chyba to się liczy, prawda;)? W dzisiejszym wpisie, chciałbym zatem Wam pokazać, jak w banalny sposób można utworzyć własną klasę atrybutu ...
Architektura 4852 dni, 9 godzin, 58 minut temu 337 źrodło rozwiń
Prezentacja jest już dostępna na Vimeo. Miejscami kod przykładów może być mało czytelny ale przyjrzeć im się można z bliska na Prezi. //========================================= Przy okazji chciałbym podziękować wszystkim, którzy wyrazili swe opinie w ankiecie konferencyjnej. Jest to dla mnie najcenniejsze źródło informacji. Z 22 opinii tekstowych, 20 z nich odbieram jako bardzo ciepłe i przyjazne. Wasze słowa są na prawdę motywacją do tego aby następnym razem poświęcić jeszcze więcej czasu (po ob...
Architektura 4859 dni, 17 godzin, 34 minuty temu 113 źrodło rozwiń
Jeden z czynników, który warunkuje dobrego programistę, to umiejętność tworzenia elastycznego i niepowtarzalnego kodu. Jeśli jakiś element naszego kodu jest powtarzalny, bądź schematyczny, to z pewnością warto się zastanowić nad napisaniem metody, która zawrze ten kod i będzie mogła być wykorzystana wielokrotnie. Napisana przez nas aplikacja stanie się bardziej przejrzysta i z pewnością zmaleje również ryzyko popełnienia błędu, a wszelkie zmiany będzie można wykonać w jednym miejscu. Podobnie sprawa wyg...
Architektura 4873 dni, 13 godzin, 28 minut temu 298 źrodło rozwiń
Na studiach wpaja się nam zasady programowania obiektowego. Niestety, bardzo często osoby wpajające tą wiedzę mają zerowe doświadczenie w praktycznym jej wykorzystaniu. Mówią coś, bo to samo im kiedyś powiedziano, i tak dalej i tak dalej. Jedną z nieodłącznych cech obiektowości jest oczywiście dziedziczenie.
Architektura 4888 dni, 16 godzin, 24 minuty temu 219 źrodło rozwiń
Witajcie w trzeciej części tutoriala do WPF. W dwóch poprzednich wpisach (WPF Tutorial - wprowadzenie oraz WPF Tutorial - obsługa kontrolek), powiedzieliśmy sobie m.in o: WPFie ogółem Języku znaczników XAML Podstawowych właściwościach WPF Kontrolkach Ponieważ wiemy już całkiem sporo, to czas dowiedzieć się, czy z tych informacji można zrobić jakiś sensowny użytek, np. budując prosty, tytułowy kalkulator:) Jeśli zatem chcecie wykorzystać zgromadzoną dotychczas wiedzę, do zbudowania czegoś praktycznego...
Architektura 4908 dni, 16 godzin, 33 minuty temu 361 źrodło rozwiń