Dziś krótki wpis, który być może okaże się dla Ciebie bardzo przydatny. Chodzi o jedną z technik programowania defensywnego, którą bardzo często możesz spotkać w kodzie C# (z uwagi na jego specyfikę), a mianowicie null-check (ogólniej asercja). Spójrz na poniższy kod...
Strona głównaUżytkownik
dpawlukiewicz | użytkownik
Sztuka programowania 2273 dni, 22 godziny, 58 minut temu 314 źrodło rozwiń
W poprzednim wpisie dosyć obszernie przedstawiłem ogólny koncept oraz implementację zapisu danych w aplikacji DShop, która opiera się na architekturze mikroserwisowej oraz wzorcu CQRS. W tym wpisie zajmiemy się drugim flow przepływu danych w aplikacji tj. ich odczytem. Zaczynajmy! Ogólny zarys podejścia Przed omówieniem kodu znów pozwolę sobie na uprzednią prezentację koncepcji posługując się prostym diagramem: Całe flow rozpoczyna się oczywiście od otrzymania żądania HTTP, które w swoim URI ...
Architektura 2285 dni, 23 godziny, 18 minut temu 204 ź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 2298 dni, 23 godziny, 4 minuty temu 227 źrodło rozwiń
Ostatnio w pracy rozpoczęliśmy nowy projekt, który oparty jest na mikroserwisach. Cały proces tworzenia aplikacji zaczęliśmy od stworzenia dedykowanego repozytorium dla każdej usługi (o tym podejściu pisałem tutaj) i umieszczeniu w nim projektu ASP.NET Core, który następnie należało odpowiednio przygotować. Mam tu na myśli np. stworzenie poprawnej struktury katalogów, dodanie podstawowej integracji z istniejącą infrastrukturą itd. tak, aby każda usługa była możliwie podobna pod względem organizacji plikó...
Ten wpis pierwotnie miał traktować o zasadności wprowadzenia CQRS do aplikacji opertej o mikroserwisy. Jednak przed rozpoczęciem właściwej częsci artykułu chciałem, abyśmy mieli spójną definicję tego konceptu. Trochę się rozpisałem… i uznałem, że warto wynieść ten tekst do osobnej publikacji, którą łatwo będzie zalinkować w razie potrzeby. Dlaczego? W moim odczuciu wielu programistów mylnie utożsamia ten wzorzec (sic!) z jakimś wielkim molochem klasy Enteprise, wymagającym zaawansowanej infrastruktury, ...
Architektura 2353 dni, 22 godziny, 10 minut temu 239 źrodło rozwiń
It’s been a while since I published the latest article, but it’s high time to finally get into the topic of microservices for real. Does open source, .NET Core, distributed system, Docker and other cool words sound good to you? If that’s the case, stick with me and let me guide you through the world (or at least part of it) of microservices. This is going to be the very first article (an introduction) of the upcoming series.
Architektura 2360 dni, 22 godziny, 25 minut temu 213 źrodło rozwiń
Zdaję sobie sprawę, że temat dzisiejszego wpisu zdecydowanie nie wygląda „PRO” i wydawać by się mogło, że przeznaczony jest dla absolutnych laików programowania. Myślę jednak, że wielu programistów zaczynających swoją przygodę z mikroserwisami zadaje sobie w duchu pytanie, w jaki sposób ustrukturyzować wszystkie projekty i pliki, aby miało to ręce i nogi. Cóż… ja przynajmniej tak miałem i po kilku próbach + dyskusjach z innymi programistami wypracowałem własny „przepis”, który uwaga – dla mnie działa. Ni...
Sztuka programowania 2362 dni, 23 godziny, 33 minuty temu 201 źrodło rozwiń
Dziś w pracy mój kolega zwrócił uwagę na dość kuriozalny i wydawać by się mogło, banalny problem. Otóż posiadając wtyczkę OmniSharp (C#) w Visual Studio Code mamy dostęp do kilku snippetów ułatwiających nam pracę z kodem C#. Jednym z nich jest dobrze znane z Visual Studio generowanie konstruktora klasy. Jedyne co trzeba zrobić to w kodzie napisać ctor i nacisnąć tabulator. Wszystko super, jest jednak małe ALE. W Visual Studio taka kombinacja skutkuje wygenerowaniem semantycznie poprawnego konstruktora tj...
Sztuka programowania 2368 dni, 42 minuty temu 47 źrodło rozwiń
Mikroserwisy to temat, który w moim odczuciu jest nadal bardzo popularny na wszelkiego rodzaju meetupach, czy konferencjach porgramistycznych (sam się do tego poniekąd przyczyniam). Implikacją tego jest fakt , że wielu programistów odchodzi od oklepanych i bardzo niemodnych monolitów, na rzecz systemów rozproszonych. Pytanie brzmi, dlaczego? Osobiście uważam, że hype wszyskitgo co „distributed” i „micro” jest poniekąd efektem kuli śniegowej popchniętej kilka lat temu. Ktoś kiedyś wspomniał o SOA, nazwał ...
Architektura 2368 dni, 42 minuty temu 281 źrodło rozwiń
The more I do weightlifting the more I see similarities to programming. Let me explain this. When you start training at a gym, your body is so „surprised” it adapts to new efforts really quickly. From training to training you can lift more weight, you gain muscles and your general recovery is so fast that you can easily train more than once a day. For first few months you feel like a God. Superb feeling. Sadly, after a while, all these „noob gains” start d...
There are many programming-related things, I have tried at least once in my life such as web development, desktop development, cloud computing, functional programming, distributed computing, artificial intelligence, IoT, page styling with CSS (sic!) and many others. However, there’s one popular programming area I’ve never tried and I think I’ve been always scared of – mobile development. There are several reasons for that:I’m not a smartp...
Mobile development 2410 dni, 16 godzin, 17 minut temu 32 źrodło rozwiń
Not so long ago, I got a quite interesting problem with my docker-compose file which surprisingly turned out to be quite common. In a nutshell, I had several ASP.NET Core applications (yup…microservices) which tried to connect to RabbitMQ queue during startup. Since I wanted to run both infrastructure (RabbitMQ, MongoDB) and microservices using only one command, I created mentioned docker-compose file. After all, I typed on my terminal: docker-...
Last Wednesday, together with Piotr Gankiewicz, I started series of technical talks about microservices, called „Distributed .NET Core”. The presentation is mainly focused on live demos, each of which covers a different area of the architecture. Because the application we wrote is a web application, each demo started with HTTP call to the appropriate REST API endpoint… and that caused a little issue (at least for me) because each call has different:URLmethod t...
A few days ago, a friend o mine had a very interesting issue with C# code he had written...
Sztuka programowania 2465 dni, 21 godzin, 49 minut temu 222 źrodło rozwiń
After a while, we get back to series dedicated to the internals of C# language. Personally, I think that previous part about iterators was quite longish and complicated, hence today I decided to choose a much simpler (but hopefully still interesting) subject- foreach statement. Foreach only with IEnumerable? Before we jump into more internal-ish stuff, I’d like to cover one thing which is quite interesting. When we go to the MSDN page about foreach statement...
Sztuka programowania 2479 dni, 23 godziny, 29 minut temu 154 źrodło rozwiń
Today’s post is one of those for which I have been waiting for a long time. I’m more than happy to announce that Connectis_ (so the company that I’m currently working at) formed new IT meetup in Warsaw called Ctech! What makes me even happier is the fact that I will have the pleasure to be the host of this event. The idea behind Ctech was to create a universal meetup for all enthusiasts of IT industry. Therefore we’ll not focus on one specific framework, programm...
The idea behind this blog post is pretty old but I haven’t had enough motivation to write this down till now. Recently, I’ve came across a couple of new articles about AutoMapper and I’ve been struck when I saw how people utilize AutoMapper in their projects. I’ve encountered cases when AutoMapper transforms simple thing like mapping values from object to other into a really complex problem, which results with highly complicated code only for the price of not writing mappings explicitly. Finally, I’ve fo...
Sztuka programowania 2501 dni, 21 godzin, 9 minut temu 253 źrodło rozwiń
This post discusses WebSocket lifetime and how to handle prematurely closed connections.
Append Blob, podobnie jak standardowy blob blokowy, może zapisać w sobie tylko 50.000 elementów. Jak zapisać więcej? Jak obejść ten limit? O tym, w artykule.
In my last post, we got familiar with the internals of string switch statement in C#. Today, we are going to deeply understand another language feature – iterators. Iterators in C# Despite the fact that iterators (using yield keyword) were introduced back in C# 2.0, many folks are still confused how they work. Honestly, I’m not surprised at all, because to me this mechanism was a mystery for a long time. Of course, we have to clearly distinguish two things here:How do...
Sztuka programowania 2503 dni, 18 godzin, 51 minut temu 152 źrodło rozwiń