In the third post about XGain I would like to say something about the heart of server. TcpListener is a great class to build server. It has a normal and async methods, you can choose between Socket and TcpClient. Unfortunately writing this same logic for new project might be boring.
Architektura 3195 dni, 12 godzin, 1 minutę temu 42 źrodło rozwiń
Dwa słowa o udziale w hackathonie DevMuster, a następnie jak można wykorzystać AJAX w widokach ASP.NET MVC z odpowiednią paczką NuGetową.
Behavior-driven development (BDD) is a process of developing the software that has evolved from the TDD (test-driven development). We can think of a BDD such as the feature driven approach to the TDD. The main advantage of the BDD over the TDD is the way the tests are being written, in a form of the story that can be understood both by the developers and the customers. In short, we can simply state that the BDD is the TDD done right – it makes use of the so called ubiquitous language which is the core pa...
Sztuka programowania 3196 dni, 1 godzinę, 7 minut temu 65 źrodło rozwiń
Po moim ostatnim poście dostałem maila z dość ciekawym pytaniem dotyczącym zapisywania klasy Money w bazie danych. Pytanie brzmi następująco: […]mam pytanie, którego nie było w temacie, co prawda nie tego dotyczyło, ale może mogę uzyskać wskazówkę, pomoc co w przypadku zapisania takiej struktury do bazy, np wykorzystując EF ? EF domyślnie nie wspiera struct, dlatego mam pytanie, jak to dobrze i prawidłowo zapisywać do bazy ? Jakas podpowiedz ?
Daj się poznać 2016 3197 dni, 9 godzin, 2 minuty temu 265 źrodło rozwiń
Programowanie jest powtarzalne. Nic z tym nie da się zrobić. Można jednak to nieco uprościć i zrzucić część rzeczy na dostępne na rynku biblioteki.
Daj się poznać 2016 3197 dni, 9 godzin, 2 minuty temu 168 źrodło rozwiń
Ponieważ bardzo ciężko pisać kod „na sucho”, postanowiłem rozpocząć tworzenie pierwszej aplikacji. W trakcie jej pisania wyjdą na jaw prawie wszystkie elementy mojego projektu, które muszą być zdefiniowane i po części zaimplementowane. Dodatkowo będę mógł odpalić mój Runtime bez wyjątków mówiących, że czegoś mi brakuje.
Daj się poznać 2016 3198 dni, 3 godziny, 14 minut temu 82 źrodło rozwiń
Czasami tak projektujemy naszą aplikacje, że każdy model ma jedną lub kilka cech wspólnych. Od najbardziej oczywistych, jak na przykład ID, poprzez czas i datę utworzenia, modyfikacji, czy-usunięty, czy-opublikowany i inne czy-? W zależności od poziomu lenistwa cechy te definiowane i utrzymywane są w każdej z klas z osobna lub w jednym lub-lub w kilku interfejsach który jest implementowany przez modele.Do momentu pisania posta byłem gościem, który posiadał jeden wsp...
Bazy danych i XML 3198 dni, 3 godziny, 14 minut temu 158 źrodło rozwiń
Dzisiaj podstawy, ale wcześniej nie miałem potrzeby skorzystania z funkcji GroupJoin. Myślę, że prosty przykład jest najlepszą dokumentacją. Dosyć częstą używaną funkcją jest GroupBy. Jeśli mamy np. listę zamówień w postaci (IdCustomer, Name), wykonując GroupBy na IdCustomer otrzymamy słownik, gdzie kluczem jest identyfikator zamówienia, a wartością lista zamówień danego klienta. GroupJoin, jak sama nazwa sugeruje jest połączeniem Join z GroupBy. Załóżmy, że mamy nast...
Bazy danych i XML 3198 dni, 3 godziny, 14 minut temu 170 źrodło rozwiń
The new type of the watcher for the API monitoring is already available. Actually, it has much in common with the website watcher (very akin configuration, and under the hood uses the HttpClient as well), however it does serve a different purpose, which is making the request to the API and validating its response, whereas the website watcher basically pings the given url (well, it can validate its response too), and does not really care about any other HTTP method different than GET. In this POST (did yo...
Daj się poznać 2016 3199 dni, 6 godzin, 7 minut temu 64 źrodło rozwiń
Problem chyba tak stary jak stare są aplikacje liczące pieniądze – jak reprezentować kasę w kodzie aplikacji? W świecie .NET jedną z częściej pojawiających się odpowiedzi jest po prostu decimal jednak tak naprawdę jest to tylko połowa odpowiedzi. W każdym razie jeśli chcielibyśmy to zrobić w duchu OOP i OOD.
Daj się poznać 2016 3197 dni, 9 godzin, 2 minuty temu 269 źrodło rozwiń
Do napisania tego tekstu skłoniła mnie dyskusja z jednym z moich młodszych kolegów, zajmujących się (podobnie jak niżej podpisany) tworzeniem rozwiązań opartych o platformę Dynamics CRM. Rozmowa ta wynikła z poczucia rozczarowania, które mój rozmówca odczuwał z w związku ze swoimi zadaniami w pracy. Wyżej wymienione odczucie najlepiej odda następujący cytat: „Wszyscy wokół [czyt. koledzy-programiści] zajmują się ciekawymi rzeczami, a ja napierd[auto-cenzura] kole...
Zacząłem się wczytywać czym jest IoC. Okazuje się, że jest to bardzo szerokie pojęcie, a DI to tylko jedna jego interpretacja. W zeszłym tygodniu pisałem o tym czym jest Dependency Injection. Teraz natomiast opowiem pokrótce czym jest IoC i jak będę go używał w moim projekcie.
Daj się poznać 2016 3199 dni, 6 godzin, 7 minut temu 111 ź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, 9 godzin, 41 minut temu 178 ź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, 4 godziny, 2 minuty 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 3204 dni, 14 godzin, 51 minut temu 217 ź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 3204 dni, 14 godzin, 51 minut 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, 5 godzin, 24 minuty temu 165 źrodło rozwiń
Artykuł w prosty sposób opisuje czym jest autoryzacja i uwierzytelnianie w systemach informatycznych, a także pokazuje w jaki sposób zaimplementować mechanizm uwierzytelniania w ASP.NET WebAPI.
Daj się poznać 2016 3206 dni, 8 godzin, 29 minut temu 124 ź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.