Lista artykułów

Słowo na niedzielę, o pasji, take 1

Jeden z bardziej znanych programistów i trenerów .NET wymyślił chwytliwe zawołanie, od tamtej pory niezmiennie z nim kojarzone. Zawołaniem tym kończy każdy post na swoim blogu. Dawno temu zachwycony myślałem, że te trzy słowa potrafią otworzyć każde programistyczne wrota. Że są wszystkim, wystarczającym do codziennych zmagań. Potem życie zweryfikowało te naiwne ułudy i okazało się, [...]

Kilka tipów dla Fluent NHibernate

Tworząc standardowe mapowania NHibernate za pomocą plików XML trzeba pamiętać o kilku rzeczach, które bardzo łatwo przeoczyć. Po ich przeoczeniu program nie działa i wywala błędy, a ich treść nie zawsze nakierowuje na przyczynę. Najlepszym tego przykładem jest chyba konieczność oznaczania plików mapowań jako "embedded resource". Fluent NHibernate znacznie upraszcza sprawę, ale i przy nim [...]

Tydzień pełen wrażeń: Marilyn Manson, 2012 i Julia Marcell

Dość rzadko zdarza mi się wychodzić z domu w celu innym niż pobliski spożywczy-monopol. A trzykrotne udanie się w jakieś miejsce w ciągu jednego tygodnia to coś zaiste niesamowitego. Postanowiłem uczcić to zjawisko notką (zapewne bardziej interesującą dla mnie samego za pół roku niż dla kogokolwiek teraz) tym bardziej, że dwa z owych trzech wydarzeń [...]

Mapowanie Fluent NHibernate i enum

Jeśli taką klasę: 1: public enum Gender 2: { 3: Male = 1, 4: Female, 5: } 6: 7: public class User 8: { 9: public virtual int Id { get; set; } 10: public virtual string UserName { get; set; } 11: public virtual Gender Gender { get; set; } 12: } 13: zmapujemy [...]

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 [...]