• 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
  • Digit separator banner
    Język C#

    Przedstaw liczby w czytelny sposób z digit separator w C#

    27 stycznia, 2026

    Tworząc kod staramy się zrobić to zgodnie ze sztuką, zachowując dobre praktyki clean code. Często jednak umykają nam najprostsze rzeczy. Dlatego warto wiedzieć, że język C# posiada separator liczb – digit separator. Pomaga on, nam ludziom, uniknąć frustracji przy pracy z dużymi liczbami, które trudno odczytać, gdy nie są przedstawione w wygodny dla nas sposób. Przykład opisujący problem Przejdźmy od razu do przykładu, ponieważ czym jest digit separator widać gołym okiem. Gdy chcemy przypisać liczbę do zmiennej, robimy to w taki sposób: Jakbyście mieli w ciągu jednej sekundy, tak szybko odpowiedzieć, jaka liczba jest przypisana do number0, to czy trafilibyście? Jest na to szansa, ale czy bylibyście pewni tej odpowiedzi?…

    read more
    Michał Bartkiewicz No Comments
  • 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

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

    13 kwietnia, 2019

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

    18 stycznia, 2019

    Parametry w Dapperze

    29 stycznia, 2020
  • 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

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024

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

    20 lutego, 2019

    Operacje CRUD – EF Core

    14 lutego, 2019
  • Narzędzia

    Zmiana automatycznie generowanych namespace’ów podczas tworzenia klas w Visual Studio

    14 września, 2019

    Programiści .NET nieustannie widzą taki o to zestaw namespace’ów w swoich klasach: Lub ewentualnie taki: Są one dodawane automatycznie za każdym razem, gdy jest tworzona klasa C# z poziomu Visual Studio. W zależności od wersji platformy .NET wygenerowany zostanie odpowiedni szablon (nowej klasy) z domyślnie ustalonymi przestrzeniami nazw. Dodawane są te namespace’y, które uważane są za najbardziej popularne. Tylko, że nie są one dodawane przez nas, a narzucane z góry. A co jeżeli chcielibyśmy to zmienić? Czy można dodać swoje przestrzenie nazw, a może w ogóle się ich pozbyć? Zmiana szablonu Aby je zmienić należy zmodyfikować szablon, na podstawie którego zostaje wygenerowana klasa. W zależności od posiadanej przez nas wersji…

    read more
    Michał Bartkiewicz No Comments
  • 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

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

    15 marca, 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

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

    20 lutego, 2019

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

    28 lutego, 2019

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

    27 czerwca, 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

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

    20 lutego, 2019

    Operacje CRUD – EF Core

    14 lutego, 2019

    Parametry w Dapperze

    29 stycznia, 2020
  • 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

    Operacje CRUD – EF Core

    14 lutego, 2019

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

    18 stycznia, 2019

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024
  • 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

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

    20 lutego, 2019

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

    28 lutego, 2019

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

    27 czerwca, 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

    Mierzenie wydajności kodu w C# – BenchmarkDotNet

    29 lutego, 2024

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

    27 czerwca, 2019

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

    20 lutego, 2019
 Older Posts

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