Lista artykułów

Słowo na niedzielę, o awansie

W wielu organizacjach ścieżka kariery wygląda (w sporym uproszczeniu i uogólnieniu) mniej więcej tak: bezmyślny klepacz kodu -> myślący klepacz kodu -> architekt -> manager -> … dalej nieważne. Po awansie znakomitego, doświadczonego, sprawdzonego programisty na stanowisko managera zespół traci znakomitego, doświadczonego, sprawdzonego programistę zyskując niedoświadczonego, kształconego w innym kierunku managera. Możliwe rozwiązanie problemu? Podwyżka [...]

NHibernateStarter – zaczątek aplikacji z NHibernate, NHibernate.Linq, Fluent NHibernate, nUnit i SQLite

Jakiś czas temu opublikowałem garść porad dla naprawdę zaczynających z NHibernate – od zera. Była to raczej wysokopoziomowa teoria pomieszana z linkami. Tym razem zajrzymy w kod i pokażę w jaki sposób można zacząć tworzyć i testować aplikację z NHibernate jeszcze przed zaplanowaniem struktury bazy danych czy nawet przed wyborem docelowego serwera baz danych. Paczka [...]

AbsolutePageUrl

Problem wydaje się banalny i głupi. Jeżeli istnieje jego proste rozwiązanie to znaczy że JA jestem głupi. I banalny. Chodzi o wygenerowanie w zwykłej własnej klasie linka do jakiejś strony w naszej witrynie. Nie po stronie aspx, nie w kontrolerze… po prostu GDZIEŚ. Przez długi czas działała taka konstrukcja: HttpContext.Current.Request.ApplicationPath + "/MyPage/". Jednak jak to [...]

Dynamiczne budowanie UI zależne od uprawnień użytkownika

Zbyt wiele razy spotkałem się z takim kodem: 1: private void Form1_Load(object sender, EventArgs e) 2: { 3: btnAddUser.Visible = Thread.CurrentPrincipal.IsInRole("can add user"); 4: btnShowPosts.Visible = Thread.CurrentPrincipal.IsInRole("can show posts"); 5: //... 6: //... 7: //... 8: //... 9: 10: } Naprawdę, pisanie takiego kodu w czasach, gdy programowanie obiektowe nie jest "nowością" (czyli od dobrych [...]

Pierwsze słowo na niedzielę

Zdarza się, że napotykam czasami mądrą wypowiedź skłaniającą do refleksji. Albo głupią wypowiedź skłaniającą do uśmiechu. Albo interesującą wypowiedź wartą przeczytania. Albo sam w niespodziewanym przebłysku inteligencji wymyślę coś, czemu można nadać miano… “aforyzmu”? I raz na jakiś czas (w założeniu – co siedem dni… Siódmego Dnia Napisał) będę takiego krótkiego posta zamieszczał, w sam [...]

VatCalculator – przykład testów jednostkowych w nUnit 2.5

Niedawno opublikowałem posta o tym, jak nie należy pisać testów jednostkowych. Przytoczony przykład powodował bezsensowną duplikację kodu w aplikacji i testach. Dzisiaj bardzo krótka demonstracja tego, jak można zastosować atrybut ValuesAttribute z NUnit 2.5 do wygenerowania testów dla więcej niż jednej wartości naraz. Testować będziemy klasę, która oblicza 22%-ową stawkę podatku VAT. Jej implementacja jest [...]

Zawieszająca się instalacja Windows 7 i jej związek z FDD

Wielki owóż nastąpił przewrót w życiu moim zawodowym (i chyba w sumie nie tylko), gdyż wreszcie, po 4 miesiącach zwlekania, stareńkiego XP zastąpiłem nowym 7. I poszło zadziwiająco zgrabnie, 2 dni konfiguracji i prawie (…) wszystko działa tak jak chcę! Wrażeń opisywać nie będę, ponieważ pewnie większość z was i tak zdanie ma już wyrobione. [...]

AutoMapper, NHibernate, lazy loading oraz problem select n+1

Ostatnio pisałem o AutoMapperze, a kiedyś wcześniej o NHibernate. Dzisiaj złączę te dwa narzędzia niczym Jasia i Małgosię, Tristana i Izoldę, Lecha i Jarosława, a z ich nawzajemnego obcowania narodzi się problem, który dość łatwo przegapić. Wróćmy do przedstawionych ostatnio, banalnych klas: 1: public class User 2: { 3: public virtual int Id { get; [...]

Co to jest AutoMapper i dlaczego warto go znać

W każdej aplikacji klient-serwer następuje komunikacja. Masło maślane – gdyby nie było komunikacji, nie byłoby aplikacji klient-serwer. Pomiędzy klientem i serwerem muszą być przesyłane jakieś dane. Szymon pisał jakiś czas temu o tym dlaczego warto wyrzucić ze swojej architektury DTOs, czyli Data Transfer Objects. Ja natomiast przedstawię pokrótce narzędzie, które pozwoli bardzo efektywnie WYKORZYSTAĆ koncept [...]

Moje środowisko pracy z MaxiVista

Minął ponad rok od kiedy zwiększyłem swój "obszar roboczy" ponad 2x: do 19" Benq dorzuciłem 24" Hyundai. Od kiedy zmieniłem miejsce pracy na domowe zacisze krok ten doceniam oczywiście o wiele bardziej niż wcześniej, gdy w domu programowałem jedynie hobbystycznie. I któregoś pięknego dnia zapaliła się w nienasyconej głowie lampka: "a może by tak… jeszcze [...]

PrincipalMock

Podczas pisania testów jednostkowych możemy natknąć się na problem uprawnień – co jeśli testowana metoda wymaga, aby użytkownik był zalogowany, miał określoną nazwę bądź był przypisany do konkretnej roli? Nie chcemy przecież, aby testy jednostkowe w jakiś sposób logowały się do naszej aplikacji. Rozwiązaniem jest pomocnicza klasa, którą napisałem z wykorzystaniem frameworka Moq: 1: public [...]

Zawód – programista. RAK kreatywności i satysfakcji.

Wielokrotnie zdarzało mi się, że budziłem się rano i na samą myśl o kolejnym dniu w pracy robiło mi się niedobrze. Czy też tak czasami macie? Pomimo całej świetności naszego zawodu, ogromnej gamy wyzwań i oczekujących na rozwiązanie pasjonujących problemów, bycie programistą może czasami dać się nieźle we znaki. Post ten jest kierowany nie tyle [...]

Jak nie pisać testów jednostkowych

Testy jednostkowe pełnią dwie bardzo ważne role: poprawiają design aplikacji sprawdzają czy kod jest poprawny Drugi aspekt można rozumieć dwojako… Spójrzmy na przykładową metodę kalkulatora: 1: public class Calculator 2: { 3: public int Add(int first, int second) 4: { 5: return first + second; 6: } 7: 8: // more operations... 9: } Jej [...]

NHibernate – jak zacząć?

Ostatnio miałem kolejne podejście do NHibernate. Tym razem zdecydowanie udane. W ciągu minionych kilku tygodni trzykrotnie prowadziłem też w "swoim środowisku" rozmowę na temat taki jak w poście – jak zacząć przygodę z NHibernate? Postanowiłem więc, że warto efekt takiej rozmowy opublikować szerszemu gronu. 1. Spróbuj Stwierdzenie pierwsze: jeżeli kiedyś odbiłeś się od NH, jeżeli [...]

Jestem DEMONEM! by procentd

Ależ chwytny tytuł! I groźny. Ale zobaczmy: demon (za Wikipedią) – proces, który pracuje w tle bez konieczności interakcji z użytkownikiem Mniej więcej tak można określić moją egzystencję przez kilka ostatnich (i jeden przyszły) tygodni. Siedzę sobie w tle otoczony przez monitory i jedyną słuszną muzykę, pracuję, i wszelką interakcję z kimkolwiek ograniczam do minimum [...]