W aplikacji czasami mamy fragmenty kodu, które dodajemy w różnych miejscach. Tak jak ostatnio opisywałem, możemy chcieć dodać cachowanie danych na poziomie logiki biznesowej, aby zmniejszyć ilość zapytań do bazy. W przykładzie dotyczącym CacheManagera wywołanie usługi CacheService dodałem bezpośrednio w kodzie logiki. Z jednej strony tego kodu nie ma zbyt dużo, ale z drugiej strony fajnie byłoby mieć ten kod automatycznie w każdej logice biznesowej. Szczególnie...
Typy takie jak List<T> czy Dictionary<T,K> wydają się niewinne. Ostatecznie, pochodzą przecież z biblioteki standardowej (BCL) samego frameworka. Czy warto używać ich w API Twojej biblioteki? Czy są jakieś zagrożenia związane z ich użyciem? Zapraszam do lektury
Sztuka programowania 2192 dni, 20 godzin, 56 minut temu 78 źrodło rozwiń
Please enable JavaScript in your browser to enjoy WordPress.com.
Microsoft dziś ogłosił 'nową' usługę a mianowicie Azure DevOps Ja jestem zagorzałą fanką odchodzącego właśnie VSTSa a nawet TFSa on premises. Nawet troszkę szczycę się staniem w opozycji do wielkich naszego światka post TFS 11 Express Beta z komentarzem Maćka zawsze rozgrzewa moje serce. Czy to znaczy że VSTS umiera?Na szczęście nie. Azure DevOps to kolejna zmiana nazewnictwa. Visual Studio Team Services to nazwa usługi która kiedyś nosiła przydomek Visual Studio Online i była młodszą chmurową ...
Jak się obejść bez Moq i NSubstitute - proste użyj Fake'ów
Sztuka programowania 2194 dni, 21 godzin, 28 minut temu 128 źrodło rozwiń
Nie każdy o tym wie, ale wzorzec adapter można rozdzielić na 2: adapter klasy i adapter obiektu. W tym wpisie opiszę pierwszy z nich.
Architektura 2194 dni, 21 godzin, 28 minut temu 86 źrodło rozwiń
Żebym mógł podzielić się pracą nad dotnetomaniakiem muszę wykonać jeden bardzo ważny krok. Muszę upublicznić repozytorium. Na początku myślałem, że udostępnię swoje prywatnego repo. Jednak ciągle czytałem: a będzie open-source?
Lubimy kategorie. Podobnie w historii, epoki ułatwiają zrozumienie i przypisanie poszczególnych zdarzeń do okresów. Co z epokami w programowaniu? Czy mają jakieś znaczenie? Czy mogą się do czegoś przydać? Zapraszam do epokowego artykułu.
Sztuka programowania 2194 dni, 21 godzin, 28 minut temu 63 źrodło rozwiń
Jeden z produktów jakie ostatnio rozwijaliśmy w naszym zespole, jest aplikacją desktopową opartą o rozbudowaną bibliotekę, która dostarczała spójne API do komunikacji, opartej o różne protokoły związane z telekomunikacją.Architektura biblioteki ...
Architektura 2197 dni, 21 godzin, 31 minut temu 123 źrodło rozwiń
Kilka zdań o moich spostrzeżeniach po rozpoczęciu przygody z TDD
Sztuka programowania 2197 dni, 21 godzin, 31 minut temu 143 źrodło rozwiń
W aplikacjach bardzo często używamy zewnętrznych zasobów. A to trzeba wykonać zapytanie na bazie danych. Pobrać dane z usługi lub wysłać wiadomość email. Zasoby te charakteryzują się tym, że mogą być przez jakiś czas niedostępne, bo na przykład wystąpił jakiś problem z siecią lub zasób jest zbyt mocno obciążony. W takich sytuacjach zastanawiamy się, czy od razu pokazać użytkownikowi informacje o błędzie, czy może spróbować ponowić operację po jakimś czasie i do...
Wanna know what is fReachable queue, how finalization works in .NET and how to use a Dispose pattern? Come and read a new post in my .NET Internals series :)
Sztuka programowania 2198 dni, 21 godzin, 10 minut temu 45 źrodło rozwiń
Ostatnimi czasy na blogu było dosyć cicho, ale wynika to z dwóch rzeczy. Po pierwsze zrobiłem sobię przerwę wakacyjną (która przyznam szczerze rozciągnęła się nieco w czasie), a po drugie aplikacja DShop zmieniła się mocno pod kontem infrastrukturalnym, dlatego pozwoliłem sobie wstrzymać serię o mikroseriwach, aby nie doszło do sytuacji, w której prezentowany w poście kod staje się po chwili nieaktualny. Tyle słowem wstępu. W jednym z ostatnich wpisów przedstawiłem czym jest, a czym nie jest wzorzec CQR...
Architektura 2198 dni, 21 godzin, 10 minut temu 227 źrodło rozwiń
Pewnie nad tym się teraz zastanawiasz. Przecież commity się łączy w jeden, żeby historia była krótsza! Po co ją wydłużać? Po co w ogóle rozdzielać commit na dwa nowe? Jest kilka powodów: 1. Chcemy, żeby historia była bardziej czytelna. 2. Chcemy przeorganizować commity (interactive rebase) i powoduje Nam to konflikty. 3. Chcemy trzymać się zasady SRP (Single Responsibility Principle) w commitach, a do jednego wrzuciliśmy za dużo kodu. O tej zasadzie w kontekście gita przec...
Generic export of csv files Once in a while, you get a task, that you need to generate an export file to the 3rd party system. It is popular when communicating with price comparer services, search services, adds services etc. So you need to generate csv file with almost the same data, but in a slightly different format. How to solve it, when you don’t want to write everything separately? How to write you code so that you can make changes very easy?Let’s start with a simple csv file export CSV acronym s...
Rozpocząłem właśnie naukę nowej technologii – Cloud Foundry (CF). Aby przybliżyć czym jest CF umieszczam tutaj trochę marketingowego bełkotu. Możesz go pominąć klikając w link. CF obiecuje, że aplikacje tworzone pod jej kątem mogą być wdrożone i uruchomione na chmurach różnych dostawców, zarówno tych publicznych takich jak: AWS, Azure czy Google Cloud, jak i na rozwiązaniach typu private cloud np. OpenStack czy nawet maszyna wirtualna virtual-box. CF obiecuje dodatkow...
What does maximum-connections, CPU autoscaling, money and distributed systems have in common? Find out by solving a task: how many servers should you get to run your service, given that maximum allowed average CPU usage can be 80%. Edit it on Draw.io With increasing number of hosts in a fleet, the CPU utilization should be successively smaller. The proportion and exact curve will be different for each sy...
Architektura 2199 dni, 21 godzin, 16 minut temu 33 źrodło rozwiń
Przykładowe zadanie rekrutacyjne dla seniora
Sztuka programowania 2199 dni, 21 godzin, 16 minut temu 267 źrodło rozwiń
Po prawie 3 miesiącach wziąłem się w garść i zacząłem szukać ekipy do pomocy w rozbudowie dotnetomaniaka. Ale jak to się zaczęło? Dobre pytanie. Każdy jest ciekaw początku. Oto i on.
tym razem case z nhibernate - o tym że czasami można "ile fabryka dała" i nie więcej.
Sztuka programowania 2199 dni, 21 godzin, 16 minut temu 38 źrodło rozwiń