• Blog
  • Cele
  • Książki
  • Spis
  • Polityka prywatności
Devtective

Kodami zbrodni

  • Blog
  • Cele
  • Książki
  • Spis
  • Polityka prywatności

Ostatnie wpisy

  • Przedstaw liczby w czytelny sposób z digit separator w C#
  • Operator of – prosty sposób na tworzenie observable w RxJS
  • Czym jest pipe w Angularze?
  • Mierzenie wydajności kodu w C# – BenchmarkDotNet
  • Czym jest specificity w CSS

Tagi

.NET .NET Core angular ASP ASP.NET Core benchmark BenchmarkDotNet biblioteka biblioteka .NET C# c# 7.0 c# new features clean code CSS Dapper display data dodatkowe funcje c# dotnet EF Core Event frontend Hello World HTML książka observable of operator OOP ORM performance pipe pod lupą podstawy angulara podstawy rxjs podsumowanie podsumowanie miesiąca podsumowanie roku przydatne narzędzia recenzja rxjs silnik graficzny template UE Web Api wydajność wyświetlenie danych
  • Backend,  C#

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024

    Jak się dowiedzieć, czy nasz kod działa wolno i przydałoby się go przyśpieszyć? Często opieramy się na naszej wiedzy, doświadczeniu oraz intuicji. Innym razem dostajemy uwagi od naszego zespołu podczas code review. Albo po prostu widzimy, że aplikacja się wlecze, jak czas pracy w poniedziałek. Nie zawsze jednak uda nam się to dostrzec, bo my ludzie, mamy spowolnioną percepcję, która nie nadąża za obliczeniami komputera. Łatwo zauważymy różnicę sekund, ale z mniejszymi wartościami, już sobie nie radzimy. Z pomocą może przyjść BenchmarkDotNet. Bo dobrze by było móc zobaczyć wyniki prędkości kodu. Tak by mieć liczby przed oczami i móc porównać czasy. Moglibyśmy wtedy sprawdzić ilokrotnie dany kod wykonujący tą samą czynność…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019

    Tworzenie kopii obiektów przez MemberwiseClone oraz ICloneable – Język C#

    20 lutego, 2019

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019
  • Backend,  Bazy danych

    Parametry w Dapperze

    29 stycznia, 2020

    W poprzednim wpisie na temat Dappera, który możecie przeczytać tutaj, opisałem jego podstawowe właściwości oraz przedstawiłem, w jaki sposób możecie z niego skorzystać, aby wykonać najprostsze operacje bazodanowe. Czyli w skrócie znajdziecie tam, jak zrobić całego CRUDa. No i w zasadzie, jest to kwintesencja tego narzędzia, lecz nie wszystko, co warto o nim wiedzieć. W tym artykule wyjaśnię, w jaki sposób można połączyć dane z SQL-owymi zapytaniami korzystając z Dappera. Statyczne zapisanie wartości Gdy znamy wartości poszczególnych elementów możemy zapisać je bezpośrednio w zapytaniu. Przykładowo, gdy chcemy pobrać użytkowników, którzy nie są usunięci (a w zasadzie zarchiwizowani), to wskazujemy w warunku zapytania na to przez podanie odpowiedniej wartości. To zapytanie…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019

    Operacje CRUD – EF Core

    14 lutego, 2019
  • .NET,  Backend,  Database

    Dapper, czyli król .NETowych mikro ORMów

    27 czerwca, 2019

    Najbardziej popularnym ORMem w świecie .NETu jest bez wątpienia Entity Framework. Posiada on wiele wbudowanych mechanizmów ułatwiających pracę z bazą danych, ale odpokutowuje to pewnymi niedogodnościami. Nie należy on do najwydajniejszych ORMów, generuje czasami pokrętne zapytania, oraz łatwo można wpaść w tarapaty,  np. przez problem N+1. Istnieją również alternatywy, jak np. nHibernate, czy Dapper! Jak sami twórcy wskazują, a są to ludzie od StackOverflow, Dapper jest królem wśród micro ORMów pod względem prostoty oraz wydajności działania. Jego zadanie polega tylko na przekształcaniu danych z jednego modelu w drugi, czyli na samej istocie działania mechanizmu ORM: mapowaniu. Nie uświadczycie tutaj wielu fajerwerków, zapytania pisze się z palca, wiec czasami trzeba się…

    read more
    Michał Bartkiewicz 1 Comment

    You May Also Like

    Brak komend do EF.Core w Package Manager Console

    19 grudnia, 2018

    Struktury w języku C#

    14 grudnia, 2018

    ModelState, czyli wstępna walidacja w ASP.NET Web Api

    12 października, 2018
  • Backend,  Programowanie

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019

    Caller Info jest to zestaw atrybutów, dostępnych pod przestrzenią nazw (ang. namespace) System.Runtime.CompilerServices, pozwalających na uzyskanie informacji na temat elementu wywołującego metodę, opatrzoną tymi atrybutami. Metoda wywołująca, której dane pozyskujemy nazywa się z ang. caller. Mechanizm został wprowadzony w wersji 5.0 języka C#. Caller Informaton pozwala na pobranie informacji o: Nazwie elementu wywołującego (np. nazwie metody), za pomocą atrybutu CallerMemberNameAttribute. Nazwy pliku w którym znajduje się caller, za pomocą atrybutu CallerFilePathAttribute. Numerze linijki w kodzie, gdzie znajduje się element wywołujący, za pomocą atrybutu: CallerLineNumberAttribute. Utworzymy teraz praktyczny przykład pokazujący jak działają te atrybuty w praktyce. Na początku stworzymy oddzielny plik gdzie będzie znajdowała się metoda korzystająca z atrybutów Caller Info:…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Tworzenie bazy danych w podejściu Code First – EF Core

    18 stycznia, 2019

    Dapper, czyli król .NETowych mikro ORMów

    27 czerwca, 2019

    Operacje CRUD – EF Core

    14 lutego, 2019
  • Backend,  Programowanie

    Przestarzałe części kodu i atrybut Obsolete – Język C#

    15 marca, 2019

    Przy tworzeniu oprogramowania niemal zawsze trzeba coś zmieniać. Może to być spowodowane sprawami wewnętrznymi, takimi jak nasze (bądź teamu) widzimisie w stosunku do projektu oraz tymi zewnętrznymi. A to klient/konsument będzie chciał coś zmienić, a to regulacje prawne ulegną przemianie i będzie trzeba dostosowywać aplikację do obowiązujących przepisów, albo znajdzie się jeszcze coś innego. Czasami jednak nie będziemy mogli nawet zmodyfikować naszej cześci aplikacji od tak, modyfikując istniejący kawałek kodu, bo: Wymagało by to większego pokładu czasu oraz wysiłku niż stworzenie komponentu od nowa. Złamalibyśmy drugą zasadę SOLID open/closed principle, która jasno mówi, że kod powinien być zablokowany na modyfikację, a otwarty na rozszerzenia. Z naszego systemu korzystają inni programiści,…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019
  • Backend,  Programowanie

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019

    Kontynuuję artykuł na temat tworzenia kopii obiektów referencyjnych. We wcześniejszym wpisie, który możecie znaleźć tutaj, zaprezentowałem jak działa metoda MemberwiseClone oraz interfejs ICloneable, ale czy na pewno wszystko zostało powiedziane? Płytkie kopiowanie (ang. shallow copy) W poprzednim materiale nie bez powodu badanym obiektem był punkt, składający się z dwóch typów wartościowych: X oraz Y. Tym razem będzie trochę inaczej, bo utworzymy obiekt zawierający typy referencyjne. W przykładzie mamy klasę detektywa, który ma do wykonania pewne zadanie. Będzie ono składać się z identyfikatora oraz zmiennej tekstowej określającej co należy zrobić. Sklonujmy teraz detektywa i zmienimy pewne wartości. Po uruchomieniu przykładu zobaczymy: Nie wyszło jednak tak, jak chcieliśmy. Imiona detektywów pokazały się…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Operacje CRUD – EF Core

    14 lutego, 2019

    Parametry w Dapperze

    29 stycznia, 2020

    Tworzenie kopii obiektów przez MemberwiseClone oraz ICloneable – Język C#

    20 lutego, 2019
  • Backend

    Tworzenie kopii obiektów przez MemberwiseClone oraz ICloneable – Język C#

    20 lutego, 2019

    Przypisanie istniejącego obiektu do innej zmiennej niesie ze sobą pewne ryzyko. Należy być świadomym, czym różni się i co zawiera w sobie typ referencyjny, a co typ wartościowy. O typach wartościowych pisałem już nieco podczas omawiania struktur, w tym materiale. Tam też przedstawiłem problem przypisywania typów referencyjnych do innej zmiennej, który zaraz przypomnę. Przypisywanie typów wartościowych Jak sama nazwa wskazuje typy te zawierają w sobie wartość, która zostaje im przypisana. Stwórzmy w naszym testowym przykładzie zwykłą strukturę reprezentującą punkt na płaszczyźnie 2D: Punkt taki składa się z dwóch właściwości, jedna wskazuje położenie w poziomie, a druga w pionie (takie małe przypomnienie ze szkoły). Teraz utwórzmy obiekt naszej struktury, czyli punkt,…

    read more
    Michał Bartkiewicz 1 Comment

    You May Also Like

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019

    Dapper, czyli król .NETowych mikro ORMów

    27 czerwca, 2019

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019
  • Backend,  Bazy danych,  Database

    Operacje CRUD – EF Core

    14 lutego, 2019

    W poprzednim wpisie, dotyczącym EF Core, pokazałem jak utworzyć prostą bazę danych składającą się z jednej tabeli w podejściu Code First. Jednak baza danych do czegoś służy, a nie wegetuje sobie gdzieś. Dzisiaj wykonamy na niej proste operację CRUD, czyli dodamy element (Create), wczytamy go z bazy danych (Read), zmodyfikujemy jego zawartość (Update) oraz usuniemy z bazy danych (Delete). CRUD jest oczywiście akronimem od tych wszystkich operacji. Do tej pory z cyklu poradników o EF ukazały się: Tworzenie bazy danych w podejściu Code First – EF Core Przypomnienie Trochę przypomnienia z poprzedniego wpisu, żebyście nie musieli weryfikować go od nowa. Operujemy na tabeli detektywa, określonego przez klasę: a nasza baza…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Parametry w Dapperze

    29 stycznia, 2020

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024

    Dostęp do informacji elementu wywołującego, czyli Caller Info – Język C#

    13 kwietnia, 2019
  • Backend,  Bazy danych,  Database

    Tworzenie bazy danych w podejściu Code First – EF Core

    18 stycznia, 2019

    Podejście Code First polega na utworzeniu modelu danych za pomocą klas języka C#. Utworzona klasa będzie reprezentowała tabelę bazy danych, a zawarte w niej właściwości (ang. property) będą odzwierciedlały kolumny tabeli. Na podstawie wskazanych klas, które mają być zawarte w bazie danych, EF Core wygeneruje odpowiednie tabele. W tym wpisie pokażę jak utworzyć prostą bazę danych składającą się z jednej tabeli reprezentującą encję detektywów. Na początek wybieram projekt. Będzie to zwyczajna aplikacja konsolowa w Core: Teraz stworzę model danych w postaci klasy POCO (Plain Old CLR Objects). Jest to prosta klasa, odzwierciedlająca dany byt, która później zostanie zamieniona na tabelę bazy danych. Tutaj będzie to tabela detektywów. Zauważcie, że model…

    read more
    Michał Bartkiewicz No Comments

    You May Also Like

    Tworzenie kopii obiektów przez MemberwiseClone oraz ICloneable – Język C#

    20 lutego, 2019

    Operacje CRUD – EF Core

    14 lutego, 2019

    Płytkie (shallow) oraz głębokie (deep) kopiowanie – Język C#

    28 lutego, 2019

Ostatnie wpisy

  • Przedstaw liczby w czytelny sposób z digit separator w C#
  • Operator of – prosty sposób na tworzenie observable w RxJS
  • Czym jest pipe w Angularze?
  • Mierzenie wydajności kodu w C# – BenchmarkDotNet
  • Czym jest specificity w CSS

Archiwa

  • styczeń 2026
  • listopad 2025
  • kwiecień 2025
  • luty 2024
  • listopad 2023
  • maj 2020
  • kwiecień 2020
  • marzec 2020
  • luty 2020
  • styczeń 2020
  • grudzień 2019
  • listopad 2019
  • wrzesień 2019
  • sierpień 2019
  • lipiec 2019
  • czerwiec 2019
  • maj 2019
  • kwiecień 2019
  • marzec 2019
  • luty 2019
  • styczeń 2019
  • grudzień 2018
  • listopad 2018
  • październik 2018
  • wrzesień 2018
  • sierpień 2018
  • lipiec 2018
  • czerwiec 2018

Kategorie

  • .NET
  • Angular
  • Backend
  • Bazy danych
  • C#
  • CSS
  • Database
  • Error
  • Frontend
  • Inne
  • Język C#
  • Narzędzia
  • Pod lupą
  • Programowanie
  • Projekty
  • Przemyślenia
  • RxJS

Ostatnie wpisy

  • Przedstaw liczby w czytelny sposób z digit separator w C#
  • Operator of – prosty sposób na tworzenie observable w RxJS
  • Czym jest pipe w Angularze?
  • Mierzenie wydajności kodu w C# – BenchmarkDotNet
  • Czym jest specificity w CSS

Tagi

.NET .NET Core angular ASP ASP.NET Core benchmark BenchmarkDotNet biblioteka biblioteka .NET C# c# 7.0 c# new features clean code CSS Dapper display data dodatkowe funcje c# dotnet EF Core Event frontend Hello World HTML książka observable of operator OOP ORM perfor