Programiści .NET nie mogą narzekać na brak narzędzi i bibliotek wspomagających pisanie testów jednostkowych. Zanim przejdziemy jednak do zerkania w ich kierunku, zobaczymy jak można samemu, bez zewnętrznych zależności, rozpocząć pisanie testów. Testować będziemy taką banalną klaskę, której zadaniem jest obliczenie "ile złotych polskich dostanie polski hydraulik Waldek za przywiezione zza zachodniej granicy jełro"...
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Tworząc programy, bardzo często wykorzystuje się różne biblioteki stworzone przez inne osoby. Dopóki kod jest tworzony na potrzeby własne, nie patrzy się na to jak zostały przygotowane użyte biblioteki. Pierwszy momentem, kiedy zaczyna się zwracać na to uwagę jest podjecie decyzji o publikacji rozwiązania dla większego grona odbiorców. W tym momencie zaczynają się pojawiać myśli o zabezpieczeniu kodu. Najprostszym sposobem...
Bardzo prosty przykład pobrania danych. Prosty przykład na prostych danych czyli standardowo mamy stringa i inta. Sama nienawidzę takich przykładów bo jeśli cokolwiek dołożymy przestają działać. Bez obaw - dokładać będziemy później.
Programowanie rozproszone 4882 dni, 13 godzin, 34 minuty temu 127 źrodło rozwiń
Co robić gdy użytkownik jest niecierpliwy? Pracując nad nową wersją Replication Explorer'a postanowiłem ulepszyć UX (User Expirience) dialogu do łączenia się z serwerem (Dystrybutorem replikacji). W aktualnej wersji programu, w momencie gdy użytkownik wciśnie przycisk 'Connect' cały UI przestaje odpowiadać do momentu połączenia z Dystrybutorem. Nie można anulować akcji łączenia, trzeba czekać 30 sekund żeby komunikat o niemożności zlokalizowania serwera został wyświetlony itp. Rozwiązanie problem...
Ciekawostka: jak uzyskać RouteData z czystego URLa? Nie taka prosta sprawa... Ale najpierw: po co? Tutaj odpowiedź banalna: aby umożliwić wykorzystanie opisanego niedawno mechanizmu w sytuacji, gdy mamy całą strukturę menu zdefiniowaną na zewnątrz aplikacji (np. w bazie danych). Struktura taka mogłaby zawierać wygodne pary kontroler/akcja (+ew. area) i wtedy nie ma problemu, ale jeśli jest inaczej - to trzeba się uciec do tematu niniejszego posta.
Miło mi poinformować, że na polskim MSDN oraz na Channel9 pojawiło się (i będzie pojawiać) dużo ciekawych treści dotyczących Web Platform Installer’a, WebMatrix’a, Galerii aplikacji web oraz Umbraco. Przede wszystkim zapraszam do obejrzenia zwiastuna kursu video ( http://www.youtube.com/watch?v=VCHRCVcO-r0 ) Całość kursu, którego odcinki będą pojawiać się w każdy wtorek i czwartek znaleźć można na specjalnie przygotowanej witrynie. Dodatkowo dla osób chcących poznać system Umbraco, został przygotowany ...
Z przyjemnością informujemy, że rejestracja na szkolenie, o którym pisaliśmy w poprzedniej notce, została otwarta. Widocznie odzew ze strony polskiej społeczności programistów był wystarczający, żeby Ayende Rahien zdecydował się poprowadzić ten kurs. Rejestrować można się na tej stronie: http://www.eventbee.com/v/ayende/event?eid=887726315. Zachęcamy do porozmawiania ze swoimi przełożonymi o możliwości sfinansowania Wam takiego szkolenia. W wielu firmach zdarza się bowiem, że budżet na takie wydar...
Rozwiązywanie problemów na platformie .NET W kolejnym poście skupię się na temacie rozwiązywania problemów na platformie .NET z którymi borykają się programiści. Jest to zagadnienie bliskie memu sercu platformie, ponieważ jako etatowy "detektyw .NET" wielokrotnie byłem zmuszony do korzystania z większości z tych narzędzi, szczególnie gdy zawiodło mnie bezmyślne wyszukanie w Google.
autor: Ostatnio pokazałem jak dobrać się do typu kontrolera dla dowolnego żądania. Było mi to potrzebne do wykonania zadania, które okazało się dużo bardziej skomplikowane niż początkowo zakładałem. Chciałem mianowicie być w stanie zrobić takie coś: 1: <% if (MVC.Administration.Users.DisableUser().IsUserAuthorized(this.ViewContext.RequestContext)) { %> 2: Disable user 3: <% } %> Czyli: w dowolnym miejscu (w tym przypadku - w widoku) sprawdzić, czy aktualny użytkownik ma uprawnienia do...
Witajcie, codintv(); z założenia ma być wideo-blogiem jednak ze względu na okres urlopowy dzisiaj nie jesteśmy w stanie opublikować nowego nagrania. W zamian publikujemy naszym zdaniem ciekawy artykuł\post odnośnie wzorca repozytorium. Temat ten został poruszony w komentarzach do poprzedniego odcinka 09. Repozytorium User. Powstała tam ciekawa dyskusja na temat sensu wykorzystania wzorca repozytorium w naszym projekcie. Poprosiłem o komentarz znajomego i jego odpowiedź zamieszczam poniżej.
Mamy problem z szeroko pojętą jakością oprogramowania. My, czyli nasza cywilizacja. Wciąż nie jesteśmy w stanie stworzyć oprogramowania, które nie będzie zawierało błędów. Nie jesteśmy też w stanie wychwycić wszystkich błędów na etapie testowania. I nie, nie chodzi mi tu (tylko) o błędy związane z bezpieczeństwem. Skutki błędów mogą być zarówno spektakularne (np. eksplozja rakiety Ariane 5), jak i tragiczne (np. ofiary śmiertelne źle działającego sprzętu medycznego). Mogą też być ciekawe, ostatnio przecz...
autor: Jak można było ostatnio zauważyć na blogu - próbuję swoich sił w GTD. Dzisiaj opiszę swoje pierwsze kroki jakie podjąłem przed i po przeczytaniu książki... i co mi to dało. Step by step Tak jak pisałem, wszystko zaczęło się od ok 3-godzinnego szkolenia z zarządzania czasem. Z dużym optymizmem rzuciłem się do wdrażania tego w życie. Pobawiłem się genialną stroną RememberTheMilk (dalej: RTM), postanowiłem: "to jest to!" i zacząłem wrzucać tam wszystko, co miałem w głowie. Po kilku dniach takiej zab...
Visual Studio w wersji 2010 zmieniło swoją powłokę i wykorzystuje technologię WPF. Wywołało to wiele kontrowesji, ale wydaje mi się, że zostało już to zaakceptowane i dobrze się sprawdza Pewnie nie wszyscy się z tym zgodzą, i właśnie dlatego piszę tego posta. Ostatnio do galerii rozszerzeń Visual Studio został dodany nowy dodatek: PerfWatson. Jest to specjalna aplikacja, której wewnętrznie używa także Microsoft, do raportowania problemów z wydajnościa. Teraz została wydana publicznie w postaci dodatku ...
Autor: Niejedną już umowę w swoim "wolnostrzelcowym" życiu podpisałem... i właściwie ani razu nie była ona taka jak być powinna. Co prawda za każdym razem następuje pewien postęp, jednak mimo to zawsze w praniu okazuje się, że jednak o czymś - ja lub Klient - nie pomyśleliśmy. Nie wynikało to bynajmniej z chęci jednej strony do oskubania drugiej strony, co raczej z braku doświadczenia lub zbyt nieformalnego podejścia do bardzo ważnych kwestii. Postaram się tutaj zebrać garść porad wyniesionych zarówno z...
Od ostatniej części tutoriala WPF, poświęconej tworzeniu prostego kalkulatora minęło już kilka tygodni, więc czas najwyższy na nową część. Dziś zajmiemy się zagadnieniem niezwykle ważnym z punktu widzenia wykorzystania własnych danych w połączeniu z interfejsem graficznym. Mowa oczywiście o bindowaniu, czyli wiązaniu danych wyświetlanych w kontrolkach, a pochodzących np. z naszych własnych obiektów, właściwości, bazy danych etc.
Witajcie! Zapraszamy na drugi konkurs codingtv();! Kolejny raz macie szansę wygrać licencję ReSharpera lub dotCover.
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 4921 dni, 15 godzin, 55 minut temu 219 źrodło rozwiń
Ostatnim razem rozpisałem się na temat serializacji WSZYSTKIEGO, nawet interfejsów, do JSONa i możliwością ich deserializacji do odpowiednich klas. Bardzo szybko pojawił się jednak problem: przedstawiony przeze mnie sposób wypluwa z siebie informacje nie tylko o źródłowym typie, ale także o dllce z której ów typ pochodzi. W wielu przypadkach może być to działanie pożądane, jednak u mnie kluczowym aspektem całej sprawy była "przenaszalność" zserializowanych akcji pomiędzy wersjami oprogramowania.
autor: Musiałem ostatnio serializować (no i oczywiście deserializować) kolekcje obiektów z hierarchii wyglądające na przykład tak: ... Pierwszym kierunkiem był XML, jednak (zgodnie z oczekiwaniami zresztą) umożliwienie serializacji czegoś takiego do XMLa wiązałoby się z wieloma nieprzyjemnościami. A to nie można serializować interfejsów więc konieczne by było dodawanie jakiejś klasy abstrakcyjnej, a to trzeba stosować przebrzydłe atrybuty Xmlinclude żeby umożliwić deserializację... a dodatkowo korzystani...
Może wydarzyć się sytuacja, że zajdzie konieczność utworzenia unikalnego klucza na kolumnie typu tekstowego (CHAR lub VARCHAR). W tym momencie warto nadmienić, iż każdy znak zajmie wtedy 1 bajt. Jeśli zaś będzie to typ danych unicode (NCHAR lub NVARCHAR), to znak zapisany będzie na 2 bajtach pamięci. Dlaczego o tym wspominam? Ponieważ jeśli wielkość indeksu przekroczy magiczną granicę 900 bajtów pojawia się Error 1946...
Bazy danych i XML 4927 dni, 10 godzin, 34 minuty temu 92 źrodło rozwiń