W poprzednim wpisie pokazałam prosty (i przy okazji brzydki) sposób na użycie pakietu FluentValidation do walidacji danych po stronie serwera. Czas na refactoring.
Sztuka programowania 2327 dni, 19 godzin, 23 minuty temu 69 źrodło rozwiń
Programowanie to nie tylko pizza raz w tygodniu, granie na konsoli w pracy i zabawa przez cały dzień, a często tak przedstawiają nas zawód media. Coraz głośniej jest o tym zawodzie, którego można się nauczyć nawet korespondencyjnie przez Facebooka...
Sztuka programowania 2327 dni, 19 godzin, 23 minuty temu 97 źrodło rozwiń
Posted on : By Grzegorz KotfisCode Druga „recepta na” będzie związana z warunkami if i skracaniem ich zapisu a zarazem poprawy ich czytelności. Na początek przykład nad którym popracujemy:public class MyBusinessClass { AuthorizationService authorizationService = new AuthorizationService(); public void AddOrderToInvoice(Order order, Invoice invoice, UserInfo user) { if (authorizationService.HasAuthorization(order, user, AuthorizationLevel.Read) &...
Sztuka programowania 2331 dni, 18 godzin, 26 minut temu 157 źrodło rozwiń
W 10-tym odcinku podcastu przedstawiamy swoje 10 dobrych praktyk tworzenia oprogramowania. Nie mówimy o SOLID, DRY, KISS i reszcie "popularesów". O tym poczytasz już u wszystkich specjalistów. My przygotowaliśmy swoje własne zestawienie. TOP 10 Dobrych Praktyk Tworzenia Oprogramowania.
Sztuka programowania 2331 dni, 18 godzin, 26 minut temu 96 źrodło rozwiń
Artykuł oryginalnie w języku francuskim, ale nawet po auto-tłumaczeniu na polski jest warty przeczytania: Można sobie wyobrazić, że przechowywanie hasła w łańcuchu podczas wykonywania procesu, oferuje bezpieczne rozwiązanie i że trudno jest odczytać zawartość tego ciągu. W rzeczywistości ten typ pamięci nie jest bezpieczny. W aplikacjach .NET hasła przechowywane w stanie wyczyszczonym można znaleźć w obiekcie typu System.String . Jednak za pomocą bardzo małych środków można szybko odczytać zawartość do...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 58 źrodło rozwiń
About two years ago I blogged about an upcoming experimental IO API in the .NET world - at the time provisionally called "Channels"; at the end of May 2018, this finally shipped - under the name System.IO.Pipelines. I am hugely interested in the API, and over the last few weeks I'm been consumed with converting StackExchange.Redis to use "pipelines", as part of our 2.0 library update. My hope in this series, then, is to discuss:what "pipelines" arehow to use them in terms of codewhen you might want to u...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 25 źrodło rozwiń
In the previous post in this series, I introduced the concept of outgoing middleware using DelegatingHandlers registered with named and typed clients. While that approach is available, the ASP.NET team hope that for most scenarios, we won’t need to resort to manually building our own handlers. In some cases, the built-in features of the library may provide the functionality we need. For example, it is sometimes useful to wrap requests ...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 33 źrodło rozwiń
In the first article of machine learning in ML.NET saga, we explored basics of machine learning and we got our first look at Microsoft’s framework for this purpose. There we mentioned that machine learning addresses two kinds of problems: regression and classification. We used Iris classification dataset, which is sort of a Hello World! example in the machine learning world, in order to get familiar with the concepts...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 25 źrodło rozwiń
Ćwiczenia czynią mistrza, ale jak zacząć? Wczuj się w sytuacje, mamy końcówkę Czerwca, masz wiele lat komercyjnego doświadczenia, szef mianował Cię na mentorkę/mentora grupy praktykantów/stażystów. Przychodzisz do Pracy w pierwszy dzień roboczy Lipca, na końcu korytarza widzisz nowe twarze, czeka już na Ciebie grupa ambitnych praktykantów/praktykantek kierunku Informatyka, lub pokrewnego. Po wstępnej rozmowie z grupą studentów/studentek 2-3 roku studiów dowiadujesz się od nich, że o testach jednostkowyc...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 126 źrodło rozwiń
In part 1, we discussed some of the problems that exist in the familiar Stream API, and we had an introduction to the Pipe, PipeWriter and PipeReader APIs, looking at how to write to a single Pipe and then consume the data from that Pipe; we also discussed how FlushAsync() and ReadAsync() work together to keep both sides of the machinery working, dealing with "empty" and "full" scenarios - suspending the reader when there is nothing to do, and resuming it when data arrives; and suspending the writer when...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 19 źrodło rozwiń
In the previous article, we started analyzing asynchronous programming in .NET world. There we made concerns about how this concept is somewhat misunderstood even though it has been around for more than six years, ie. since .NET 4.5. Using this programming style it is easier to write responsive applications that do asynchronous, non-blocking I/O operations. This is done by using async/await operators. However, this concept is often misused. In this article, we will go through s...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 116 źrodło rozwiń
Posted on by krystiankolad W trakcie pracy nad naszymi aplikacjami często musimy sprawdzić, czy na przykład dane wysłane do nas w formularzu lub do naszego api spełniają pewne kryteria. Kryteriami tymi mogą być długość numeru pesel, prawidłowy adres email oraz wiele, wiele więcej. Dziś pokażę, jak skonfigurować taką walidację przy użyciu biblioteki FluentValidation w ASP.Net Core Web Api. Zapraszam. Aby zainstalować bibliotekę w naszym projekcie używamy dwóch komend:dotnet add package FluentValidation ...
Sztuka programowania 2332 dni, 19 godzin, 14 minut temu 55 źrodło rozwiń
We wpisie pokazuję przykład walidacji po stronie serwera z wykorzystaniem pakietu FluentValidation. Na początek pokazuję proste użycie pakietu, w kolejnych wpisach - refactoring i testy.
Sztuka programowania 2333 dni, 19 godzin, 33 minuty temu 58 ź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 2333 dni, 19 godzin, 33 minuty temu 201 źrodło rozwiń
Reducing memory allocations from 7.5GB to 32KB Contents Context of the problem Establishing a baseline Easy win 1 Easy win 2 Splits are never cool Lists are not always nice Pooling byte arrays Goodbye StringBuilder Skipping commas The war between classes and structs Goodbye StreamReader TLDR - give me a table
Sztuka programowania 2333 dni, 19 godzin, 33 minuty temu 47 źrodło rozwiń
Czy testy są potrzebne? Jaką wartość przynosi nam testowanie aplikacji? Jak testować oprogramowanie? W artykule m.in. o 7 zasadach testowania, które powinien znać programista w kontekście wykrywania błędów.
Sztuka programowania 2334 dni, 7 godzin, 31 minut temu 132 źrodło rozwiń
This is a usage guide for asynchronous programming in F# using the Async type. The content should be helpful to existing F# Async users or those approaching F# concurrency from another programming language, and is complementary to existing material such as Asynchronous Programming by Scott Wlaschin, Async in C# and F# by Tomas Petricek and Async Programming in F# on MSDN.Table of ContentsDefinition— th...
Sztuka programowania 2338 dni, 20 godzin, 42 minuty temu 27 źrodło rozwiń
Ostatnio opisywałam po co i jak piszemy przypadki testowe. Dzisiaj chciałabym odpowiedzieć na pytanie - co jest nam potrzebne aby przetestować aplikację. Natychmiast przychodzi nam do głowy, środowisko, odpowiednie narzędzia, dane testowe itd.. I na tym ostatnim dzisiaj chciałabym się skupić. Dane testowe są jednym z kluczowych elementów dobrze przeprowadzonego testu. Dlaczego tak uważam?
Sztuka programowania 2338 dni, 20 godzin, 42 minuty temu 39 ź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 2338 dni, 20 godzin, 42 minuty temu 47 źrodło rozwiń
O code review napisano już całkiem sporo. W internecie można znaleźć dokładne opisy jak powinny wyglądać, jakie dają efekty, czy ile kodu sprawdzać na raz. Dlatego nie będę dokładnie analizować tych aspektów. Zamiast tego krótko opiszę najważniejsze korzyści i kilka przydatnych technik na podstawie własnych doświadczeń. Z code review korzystałem już w wielu projektach i zawsze miało to pozytywny wpływ na jakość kodu. Moim zdaniem code review powinno być elementem każdego poważnego projektu. Jakie są n...
Sztuka programowania 2340 dni, 14 godzin, 39 minut temu 124 źrodło rozwiń