MVP, MSSQL, .NET
Po dość długim okresie ignorowania zjawiska zwanego Twitterem postanowiłem sprawdzić o co w tym chodzi i z czym to się je. Czy miliony użytkowników, w tym ogromna większość szanowanych przeze mnie specjalistów, mogą się mylić? Okaże się. Wiem jedno: nie pozwolę, aby zostawianie za sobą tych małych wirtualnych kupek zwanych potocznie tweetami stało się moim [...]
Po dość długim okresie ignorowania zjawiska zwanego Twitterem postanowiłem sprawdzić o co w tym chodzi i z czym to się je. Czy miliony użytkowników, w tym ogromna większość szanowanych przeze mnie specjalistów, mogą się mylić? Okaże się. Wiem jedno: nie pozwolę, aby zostawianie za sobą tych małych wirtualnych kupek zwanych potocznie tweetami stało się moim [...]
Minęło circa około ~300 dni od kiedy zostałem freelancerem. Przez ten czas dość regularnie otrzymywałem od Was pytania typu “jak to jest?”, “jak zacząć?”, “jakie są plusy i minusy?”… Czas więc na krótkie zerknięcie wstecz i spisanie kilku porad dla tych, którzy myślą o przejściu na “swoje” i pracy w domu. Freelancowanie może wydawać się [...]
Minęło circa około ~300 dni od kiedy zostałem freelancerem. Przez ten czas dość regularnie otrzymywałem od Was pytania typu “jak to jest?”, “jak zacząć?”, “jakie są plusy i minusy?”… Czas więc na krótkie zerknięcie wstecz i spisanie kilku porad dla tych, którzy myślą o przejściu na “swoje” i pracy w domu. Freelancowanie może wydawać się [...]
W bibliotece System.ServiceModel.dll znajdziemy ciekawą klasę SynchronizedCollection. Szybkie zerknięcie w Reflectora: i nad łysiejącą łepetyną zapaliła się żaróweczka: przecież to idealna klasa do cache dostępnego z różnych wątków aplikacji eliminująca ciągłe pisanie lock! W takim przypadku od stanu wymyślone do stanu zrobione potrzeba jedynie kilkudziesięciu uderzeń w klawiaturę: 1: public class SampleCache 2: { 3: [...]
Testowanie kodu wielowątkowego jest nie lada wyzwaniem. Teoretycznie powinno się tego unikać, ale czasami nie ma innego wyjścia. Co robić w sytuacji, gdy w komponencie tworzonym podczas naszego testu uruchamiany jest nowy wątek, a w nim wyskakuje wyjątek? Test oczywiście nie przechodzi, ale wcale niekoniecznie musimy wiedzieć dlaczego tak a nie inaczej się stało. Kiedyś [...]
Po długim świąteczno-sylwestrowym relaksie czas na powrót do normalnego życia. Normalne życie w nowym roku można zacząć garścią blogowych refleksji, które sobie za rok przeczytam i sprawdzę jak udało mi się ów rok wykorzystać. A jeśli kogoś jeszcze to interesuje to zapraszam. 2009 Ale najpierw rozgrzebię mogiłę roku poprzedniego i krótki rachunek sumienia uczynię. W [...]
Powtarzanie kodu w kilku miejscach zwykle jest sygnałem zaniedbania i nie powinno mieć miejsca. Nawet (a może: w szczególności!) gdy kod ten jest prosty, głupi, niewymagający myślenia i będący efektem tzw. clipboard inheritance (ctrl+c, ctrl+v). Tyczy się to również konstruktorów klas. Tą część kodu łatwo jest przegapić, bo wszelakie ułatwiacze umożliwiają automatyczne ich wygenerowanie. A [...]
Tak prawdziwe, a często musimy się tego nauczyć… “the hard way”: An untested backup strategy is no backup strategy at all! Źródło: Phil Haack.
Jakiś czas temu z dużego projektu nad którym obecnie pracuję zostały całkowicie usunięte i zaorane biblioteki Enterprise Library. I życie stało się prostsze. Wykorzystywaliśmy je jedynie do logowania i obsługi wyjątków i JAKOŚ trzeba było te funkcjonalności w systemie zachować. O ile w przypadku logowania wybór jest dość naturalny (wypasiony log4net), o tyle z wyjątkami [...]
Ostatnio natknąłem się na coś, co… blew my mind (wydymało mi umysł?). Bardzo krótko wspomniał o tym Bartek Pampuch na ostatnim MTS i utkwiło mi w pamięci, ale dopiero kilka dni temu niechcący przyjrzałem się "owemu czemuś" bliżej. Owo cuś to biblioteka Reactive Extensions (Rx) implementująca założenia programowania reaktywnego by Microsoft. Nie będę zagłębiał się [...]
Mądre słowa mądrego człowieka. Odnoszą się do tworzenia oprogramowania, ale pewnie nie tylko tam mają zastosowanie: Simplicity is prerequisite for reliability. Warto o tym pamiętać w programistycznym szale:). Źródło: Edsger W.Dijkstra.
Czy poniższy kod nie jest doskonałym odwzorowaniem odpowiedzi na pytanie “dlaczego programiści nie pracują w Święta?”? :) 1: Observable.Timer(new DateTime(1, 12, 25)) 2: .Subscribe(x => 3: { 4: throw new Exception(); 5: }); Heh, ależ to głupie… A co to za konstrukcja? O tym wkrótce.
"Bezpieczeństwo w WCF" – pojęcie takie wydaje się oklepane i opisane na wszelkie możliwe sposoby. Tyle materiałów, tyle blogów, artykułów, książek… Chciałem osiągnąć rzecz bardzo prostą, właściwie – podstawową. Zacząłem od stworzenia własnej implementacji interfejsów "tożsamości": IIdentity: 1: public class ProcentIdentity : GenericIdentity 2: { 3: public int Id; 4: 5: public ProcentIdentity(int id, string [...]
Projektanci WCF zostawili w swoim produkcie bardzo dużo półprzymkniętych furtek czekających tylko na odkrycie i wykorzystanie ich potencjału. Jednym z takich czarodziejskich otworów do przyjemnego, różowego, miękkiego wnętrza WCF jest infrastruktura Behaviors (więcej o, między innymi, nich, na przykład w artykule "Extending WCF with Custom Behaviors"). Z ich pomocą można osiągnąć baaardzo wiele, między innymi: [...]
MVP, MSSQL, .NET
Programista-pasjonat. Człowiek od wszystkiego związanego z programowaniem. Autor bestsellerowej książki “Zawód: Programista“.
Od 2008 posiadacz tytułu Microsoft MVP (Most Valuable Professional) w kategorii .NET.
Od 2005 Microsoft Certified Professional.