Implementacja INotifyPropertyChanged w aplikacjach wykorzystujących MVVM potrafi przysporzyć o niemały ból głowy. Redundantny kod, monotonia zapisu, rozwlekłe klasy, a wszystko to opatrzone niezliczoną ilością niepotrzebnego kodu. Wraz z ewolucją języka i rozwojem bibliotek starano się optymalizować użycie tego mechanizmu poprzez coraz to nowocześniejsze rozwiązania. Lambdy, refleksje, wykorzystanie atrybutu [CallerMemberName] z C# 5.0 – wszystko to jedna...
Daj się poznać 2016 3197 dni, 23 godziny, 15 minut temu 197 źrodło rozwiń
Prosty przypadek: biblioteka potrzebuje trzymać hasło i użytkownika do konfiguracji aplikacji w app.configu. Rozwijam bibliotekę, która jest wersjonowana w gicie. Dodałem wyjątek do .gitignore, aby plik app.config się nie wersjonował. Następnie dodałem bibliotekę z testami i tam też muszę dodać konfigurację. Dodać kolejny wyjątek to już przesada więc można by tak zrobić aby biblioteka testowa używała już istniejącej konfigurację z innego pliku...
CQS stands for the command query separation. There’s a chance that you may have not heard about it, but on the other hand the CQRS might ring a bell. Even though these 2 patterns have very much in common, there is a significant difference (definitely a bigger one than the additional “R” character within the CQRS acronym) in how do they apply to the architecture of our system. In this post I’ll focus on the CQS – the older brother of the CQRS – that will help you understand how to design the software that...
Sztuka programowania 3201 dni, 23 godziny, 54 minuty temu 178 źrodło rozwiń
Kolejny wpis o MiSeCo. Tym razem opisuje strukturę projektu oraz wstępne założenia implementacji.
Daj się poznać 2016 3201 dni, 23 godziny, 54 minuty temu 60 źrodło rozwiń
In today’s post, I’ll describe what kind of interfaces have been defined in the Sentry project, and how you can take advantage of this knowledge, e.g. in order to create the custom metrics. I’ve tried to keep these interfaces as simple as possible, yet some of them require an explanation, mostly due to the fact, that even though the library itself is rather simple to use (I want to believe that it’s also what you think), it does not mean that the main methods when being executed, will return for example,...
Daj się poznać 2016 3204 dni, 3 godziny, 9 minut temu 89 źrodło rozwiń
Wrażliwe ciągi znaków takie jak np. klucze do zewnętrznych usług czy connection stringi do baz danych z których korzysta nasza aplikacja, zwykle zapisywane są w plikach konfiguracyjnych projektu. Jeżeli jest to coś więcej niż string do połączenia z testowym LocalDb, to wszyscy zdajemy sobie sprawę, że należy uważać z wrzucaniem takiego pliku do repozytorium – i to nie tylko publicznego. Istnieją lepsze rozwiązania tego problemu niż ciągłe pilnowanie siebie i deweloperów z którymi pracujemy. Do tego cel...
Daj się poznać 2016 3203 dni, 18 godzin, 15 minut temu 162 źrodło rozwiń
Zwykle programiści korzystają z podstawowych typów dostarczonych przez C#, takich jak String, Int32 czy Double. W świecie programowania obiektowego można jednak pójść o krok dalej i budować własne typy danych. Przeważnie programiści korzystają z nich wyłącznie, gdy do zaimplementowania jest jakaś logika. Dlaczego nie tworzyć ich nawet w sytuacjach, gdy mają one przechowywać wyłącznie dane? Problem z podstawowymi typami takimi jak String Czy Int32 t...
Sztuka programowania 3205 dni, 5 godzin, 4 minuty temu 217 źrodło rozwiń
Wstęp do MiSeCo: MicroServices framework based on ASP.NET Core. Mój projekt na #dajsiepoznac
Daj się poznać 2016 3205 dni, 5 godzin, 4 minuty temu 48 źrodło rozwiń
Kiedy korzystamy z EF należy pamiętać o tym, aby zawsze wyłączyć leniwe ładowanie (lazy loading) w przeciwnym wypadku za każdym razem gdy będziemy sięgać po dane które leżą w innej tabeli niż ta, która została początkowo zaciągnięta z bazy danych EF zrobi to za nas. Brzmi fajnie, ale gdy pomyślicie że taka operacja może wykonać się w pętli, pomysł szybko przestaje być tak miły. N wykonań pętli N pojedynczych zapytań do bazy danych. Minusem wyłączenia lenia w EF jest to, ...
Daj się poznać 2016 3205 dni, 5 godzin, 4 minuty temu 278 źrodło rozwiń
Zanim omówimy czym jest IoC i jak będę go używał, zacznijmy od tego czym jest Dependency Injection. Głównie chodzi o to, żeby rozdzielić implementacje poszczególnych klas. (...)
Daj się poznać 2016 3205 dni, 19 godzin, 37 minut temu 165 źrodło rozwiń
Przedstawienie podstaw FluentValidation - 1 część cyklu.
Sztuka programowania 3205 dni, 19 godzin, 37 minut temu 146 źrodło rozwiń
W tym odcinku tworzymy prostą kontrolkę użytkownika w WPF służącą później to wyświetlania poziomu głośności z filtrów pasmowych.
Daj się poznać 2016 3206 dni, 22 godziny, 42 minuty temu 70 źrodło rozwiń
After a few days of a quite intensive coding, I’ve managed to implement the first, basic version of the Sentry project and its API, along with a few (by this I mean 2) fully functional examples. I’ll use the website and MSSQL “watchers”, as these are the only ones that are currently working, however there’s many more coming in the near future. Let’s dive into the code already, as it usually speaks for itself.
Nie zdawałem sobie sprawy jak bardzo łatwiej pisać kod w oparciu o interfejsy. Zamiast tworzyć od razu klasy i martwić się ich implementacją, możemy odłożyć to zadanie na przyszłość. Dzięki temu można stworzyć hierarchię zależności między typami, nie martwiąc się zbytnio wnętrzem interfejsu.
Daj się poznać 2016 3209 dni, 14 godzin, 28 minut temu 91 źrodło rozwiń
In one of my previous posts I’ve told about my feelings for the repository pattern. Complaining about something is one thing (please, don’t even try to tell me, that you have never seen some piece of code, that made you cry like a baby), however, if we want to (pretend to) be professionalists, it is very important to come up with some ideas in order to solve the given problem (at least partially). In this post, I’ll present to you one of my solutions to the commonly misused repository pattern.
Architektura 3209 dni, 14 godzin, 28 minut temu 133 źrodło rozwiń
Dzisiaj pokażę jak zrobić własny interfejs użytkownika dla wtyczki VST w WPF.
Daj się poznać 2016 3210 dni, 12 godzin, 45 minut temu 97 źrodło rozwiń
Daj się poznać 2016 3211 dni, 19 godzin, 49 minut temu 122 źrodło rozwiń
Zaczynam implementację wtyczki VST w C# do przetwarzania dźwięku. W tym odcunku dodajemy pierwsze filtry pasmowo przepustowe.
Daj się poznać 2016 3213 dni, 3 godziny, 49 minut temu 49 źrodło rozwiń
Wczoraj dostałam wreszcie email z zaproszeniem do EAP nowego projektu Jetbrains przeznaczonego dla programistów .NET, jakim jest Rider. Jest to nowe środowisko IDE stworzone przez autorów uwielbianego przez dotnetowców ReSharpera a także wielu innych profesjonalnych IDE jak IntelliJ IDEA, PHPStorm czy PyCharm. Byłam zatem niezwykle ciekawa, jakie możliwości przyniesie ze sobą to środowisko i czy będzie miało ambicję zastąpić Visual Studio. Co więcej – interesowała mnie możliwość tworzenia aplikacji dotne...
Druga część tworzenia wrappera C++owej biblioteki dla C# przy użyciu C++/CLI. W tym odcinku pin_ptr oraz przekazywanie tablicy między C# i C++ bez kopiowania za pomocą samych wskaźników.
Daj się poznać 2016 3214 dni, 21 godzin, 49 minut temu 96 źrodło rozwiń