Let's go invent tomorrow instead of worrying about what happened yesterday|mail@jankowskimichal.pl

.net

Azure Function – Upload zdjęć do Azure Blob Storage

Dziś kolejny przykład użycia Azure Functions w kodzie produkcyjnym. Problem jest dość prosty – chcemy wykorzystać funkcję do wgrania zdjęcia do Azure Blob Storage. Oczywiście można było wgrać zdjęcie od razu do Azure Blob Storage, ale takie podejście powoduje dość silne uzależnienie się od tego rozwiązania. Z tego powodu została zastosowana funkcja jako element pośredni. Funkcja ta stanowi API pozwalające na przesłanie zdjęcia zakodowanego w base64 do wybranego przez nas miejsca. Takie podejście pozwoli nam w przyszłości na łatwą zmianę wybranego rozwiązania służącego do przechowywania plików. […]

By |2019-05-12T16:02:10+02:0023 lutego 2018 |Kategorie: .net, Azure|Tagi: , , |0 komentarzy

NDepend – krótka recenzja

Już jakiś czas temu napisał do mnie Patrick Smacchia i poprosił o napisanie, krótkiej recenzji jego aplikacji – NDepend. Chyba nie trzeba przedstawiać nikomu tego narzędzia – jest to kombajn do analizy naszego kodu. Możliwości jego są olbrzymie. Chcąc podejść do tej prośby profesjonalnie, postanowiłem poznać to narzędzie dość dokładnie przed napisaniem czegokolwiek. Niestety poległem. Mnogość funkcji i możliwość dostosowywania tego narzędzia powodują, że jest naprawdę ciężko. Używając go już ponad dwa miesiące mogę spokojnie napisać, że nie czuję się dość zaawansowanym użytkownikiem. […]

By |2017-11-07T16:37:52+01:007 listopada 2017 |Kategorie: Dodatki / Narzędzia|Tagi: |3 komentarze

Pakiet Moq.EntityFrameworkCore

Od wczoraj dostępny jest pakiet, który umożliwia łatwe zamockowanie DbSet<TEntity> wykorzystując Moq. Źródła oraz krótką instrukcję można znaleźć na portalu GitHub. Natomiast wersję skompilowaną można ściągnąć z portalu NuGet. Zasada działania jest taka sama jak w przypadku pakietu Moq.EntityFramework.Helpers.

By |2017-10-15T22:52:17+02:0015 października 2017 |Kategorie: ASP.NET Core, C#, Projekty, Testowanie|Tagi: , , , , , |0 komentarzy

Caching w Azure Function – czyli jak podpiąć Redis’a

Pewnie już wiecie, ale tak w ramach przypomnienia… Microsoft przygotował niewielki zestaw bardzo przydatnych komponentów, które pozwalają na zintegrowanie naszej funkcji z następującymi usługami: Azure Storage, Azure Event Hubs, Azure Service Bus, Azure Mobile Apps, Azure Cosmos DB, Azure Notification Hubs, Twilio, SendGrid. Lista ta pozwala na zaspokojenie różnorakich scenariuszy. Ale jak zawsze chcielibyśmy coś więcej. Dzisiaj chciałbym Wam pokazać jak w bardzo łatwy sposób można dodać cache do naszej funkcji. W przykładzie zostanie wykorzystany Redis. Pewnie zastanawiacie się po co? Niejednokrotnie mówiłem, że funkcje powinny być atomowe, bezstanowe, szybkie, … Rzeczywistość nie zawsze jest taka różowa. Czasami musimy coś [...]

By |2019-05-12T16:03:45+02:002 października 2017 |Kategorie: .net, Azure Functions, C#|Tagi: , , , , |0 komentarzy

Azure Functions – Lessons learned

Ostatnio wszystkie tematy związane z Chmurą oraz pojęciem Serverless stały się bardzo modne. Jednym z takich elementów są Azure Functions. Na stronie Microsoftu można przeczytać, że: Azure Functions to rozwiązanie umożliwiające łatwe uruchamianie małych fragmentów kodu („funkcji”) w chmurze. Możesz napisać tylko kod rozwiązujący aktualny problem, nie martwiąc się o całą aplikację ani infrastrukturę do jej uruchomienia. Dzięki usłudze Functions programowanie może być jeszcze wydajniejsze i można korzystać z wybranego języka programowania, takiego jak C#, F#, Node.js, Python lub PHP. Płać tylko za czas działania kodu — platforma Azure jest skalowana zgodnie z potrzebami. Usługa Azure Functions pozwala tworzyć na [...]

By |2019-05-12T16:06:50+02:006 czerwca 2017 |Kategorie: .net, Azure Functions, C#|0 komentarzy

FluentValidation.Validators.UnitTestExtension wersja 1.1

Nowa wersja pakietu FluentValidation.Validators.UnitTestExtension jest dostępna. Pakiet umożliwia tworzenie testów jednostkowych Fluent Validator-ów w sposób bardziej efektywny. W wersji 1.1 wprowadziłem następujące zmiany: dodałem wsparcie do najnowszej wersji biblioteki FluentValidation 7.*, wprowadziłem możliwość szybkiego testowania dwóch walidatorów – ScalePrecisionValidator oraz RegularExpressionValidator. Projekt dostępny jest oczywiście na GitHubie.

Pakiet Moq.EntityFramework.Helpers

Na blogu pojawiły się ostatnio dwa wpisy pokazujące w jaki sposób mnożna zamockować DbSet<TEntity> wykorzystując Moq: wywołania synchroniczne – Mockowanie typów DbContext oraz DbSet z wykorzystaniem Moq wywołania asynchroniczne – EntityFramework – testowanie zapytań asynchonicznych Opisane rozwiązania połączyłem w jednej bibliotece i opublikowałem jako pakiet NuGet – Moq.EntityFramework.Helpers. […]

EntityFramework – testowanie zapytań asynchonicznych

Jakiś czas temu opisałem w jaki sposób można zamockować typy DbContext przy pomocy Moq – Mockowanie typów DbContext oraz DbSet z wykorzystaniem Moq. Temat ten nie został wtedy całkowicie wyczerpany. Pozostał jeden element do opisania – zapytania asynchoroniczne. Do tego elementu chciałbym dziś wrócić. Punktem wyjścia będzie poprzedni wpis – czyli mamy fragment kodu, który pozwala na zamockowanie DbSet<T>. Teraz tylko dodamy możliwość obsługi wywołań asynchronicznych. Aby to zrobić należy zaimplementować interfejs IDbAsyncQueryProvider: public class InMemoryAsyncQueryProvider<TEntity> : IDbAsyncQueryProvider { private readonly IQueryProvider innerQueryProvider; internal InMemoryAsyncQueryProvider(IQueryProvider innerQueryProvider) { this.innerQueryProvider = innerQueryProvider; } public IQueryable CreateQuery(Expression expression) { return new InMemeoryAsyncEnumerable<TEntity>(expression); } public IQueryable<TElement> CreateQuery<TElement>(Expression expression) { return new InMemeoryAsyncEnumerable<TElement>(expression); } public object Execute(Expression expression) { return this.innerQueryProvider.Execute(expression); } public TResult Execute<TResult>(Expression expression) { return this.innerQueryProvider.Execute<TResult>(expression); } public Task<object> ExecuteAsync(Expression expression, CancellationToken cancellationToken) { return Task.FromResult(Execute(expression)); [...]

By |2020-07-01T16:52:32+02:005 marca 2017 |Kategorie: .net|Tagi: , , , , , |0 komentarzy

Migracja z ASP.NET Core 1.0.x do 1.1

Od 17 listopada dostępna jest nowa wersja .NET Core 1.1. Wraz z nią pojawiły się nowe wersje ASP.NET oraz EntityFrameworka. Przyszedł, więc czas na aktualizację aplikacji do najnowszego środowiska. Proces ten powinien przebiegać bezboleśnie, ale nie do końca. W moim przypadku miałem problemy z dwoma elementami, co spowodowało, że aplikacja nie wystartowała od razu po aktualizacji. Przed przystąpieniem do aktualizacji należy ściągnąć najnowszą wersją pakietów – zarówno SDK, jak i Runtime. Pakiety do ściągnięcia dostępne są na stronie .NET Core Downloads. […]

By |2017-02-22T19:53:39+01:0022 lutego 2017 |Kategorie: .net|Tagi: |0 komentarzy
Przejdź do góry