How to add a type constructor or a static field to an interface? How to implement a parameterless constructor for a struct? Fourth part of .NET Internals Cookbook with answers to various C#/.NET/CLR questions.
Strona głównaUżytkownik
TomekS | użytkownik
Kiedy możemy powiedzieć, że architektura naszego systemu jest dobra ? Czy da się znaleźć rozwiązanie, które będzie się dobrze sprawdzać w wielu systemach przez długi czas ? Dobre określenie tego czego się szuka jest kluczowe dla sukcesu poszukiwań. Dlatego warto zastanowić czego oczekujemy od architektury naszych systemów i jakich kryteriów użyć, żeby określić czy jest ona faktycznie dobra.
Architektura 2113 dni, 7 godzin, 34 minuty temu 231 źrodło rozwiń
Dzisiejszy wpis jest całkowicie subiektywny. Będzie to krytyczne spojrzenie na bieżące trendy, mocno już zakorzenione w świecie IT. Już na wstępie pragnę zaznaczyć, że nie jestem ani przeciwnikiem, ani zwolennikiem opisanych poniżej spraw. Uważam, że narzędzia należy dobierać do problemów, które próbujemy rozwiązać. W przeciwnym przypadku poniższe zdanie autorstwa A. Maslowa (tak, ten od piramidy potrzeb) będzie właśnie o nas: Gdy twoim jedynym narzędziem jest młotek, wszystko zaczyna ci przypominać gwo...
Na początek, jak zwykle, odrobina teorii. Reguła Liskov brzmi: Funkcje które używają wskaźników lub referencji do klas bazowych, muszą być w stanie używać również obiektów klas dziedziczących po klasach bazowych, bez dokładnej znajomości tych obiektów. Jak podaje Wikipedia, zasada ta została sformułowana po raz pierwszy przez Barbarę Liskov i Jannette Wing we wspólnej pracy pt. „A Behavioral Notion of Subtyping„, zaprezentowana przez Panią Liskov w przemówieniu pt. „Data Abstraction and Hierarchy„, a s...
Sztuka programowania 2160 dni, 6 godzin, 10 minut temu 134 źrodło rozwiń
In first article in our series about building microservices in .NET core we are going to focus on internal architecture of a typical microservice. There are many options to consider depending on microservice type. Some services in your system will be typical CRUD so there is no use debating on their design...
Sztuka programowania 2161 dni, 6 godzin, 2 minuty temu 191 źrodło rozwiń
Czy komórki, serwisy i systemy, mają coś wspólnego z komórkami, organizmami i grupami społecznymi? Sprawdźmy to.
Architektura 2166 dni, 5 godzin, 59 minut temu 48 źrodło rozwiń
Minęła dłuższa chwila od ostatniej publikacji bardziej technicznego wpisu ze świata .NET-a. Trzeba to nadrobić! Mój drogi czytelniku, zastanawiałeś się kiedyś jak szybko działa Twój kod? Nie chodzi mi o szybkość wykonywania request – u, czy też poprawnej optymalizacji komunikacji z bazą danych, tylko o działaniu największego mięcha… ten czysty kod, bez żadnych szczegółów architektonicznych, jak baza danych, operacje I/O czy nawet internet. Jeżeli to właśnie ten aspekt programowania zaprząta Twoją głowę, ...
Nasza branża szybko się zmienia, dostarczając nam co raz to nowszych narzędzi do rozwiązywania problemów. Nie wszystkie jesteśmy w stanie wykorzystać od razu w projektach produkcyjnych – ze względu na poziom skomplikowania, zupełnie nowy koncept. Czy pracodawca powinien zapewnić nam czas na ich poznawanie? Czy programista powinien rozwijać się po godzinach pracy? W tym odcinku podcastu dyskutujemy czy rozwój programisty powinien odbywać się tylko i wyłącznie podczas wykonywanej pracy, czy może wręcz prz...
Kto z nas nie czekał na telefon od rekrutera po rozmowie? Jak wygląda to po drugiej stronie? Jak radzić sobie z negatywną informacją co do przebiegu rekrutacji? Na te i inne pytania odpowiedzi znajdziecie w tym wpisie :)
Większość projektów, w których brałem udział posiadało funkcjonalność wyszukiwania tekstowego. We wszystkich z nich było to zrealizowane klauzulą LIKE w SQL. Często ten element aplikacji stawał się wąskim gardłem i redukował responsywność aplikacji. Kiedy serwery dalej płoną, opiszę tutaj po pokrótce kilka alternatyw dla tego rozwiązania.
Bazy danych i XML 2161 dni, 6 godzin, 2 minuty temu 198 źrodło rozwiń
Okazuje się, że LSP można naruszyć na wiele sposobów, czasami bardzo trudnych do wyśledzenia, a sztampowe omówienia dostępne powszechnie pomijają najważniejsze aspekty literki L z SOLID’a. Warto wspomnieć, że LSP pomaga nam również lepiej modelować biznesowy kontekst aplikacji, gdyż zmusza nas do odpowiedzi na pytania o relacje pomiędzy obiektami (mam tutaj na myśli głównie dwa ostatnie punkty: inwariant i zasadę historii).
Sztuka programowania 2160 dni, 6 godzin, 10 minut temu 127 źrodło rozwiń
Podczas nagrywania czwartego odcinka „Distributed .NET Core” (do którego oglądania serdecznie Cię zapraszam) wspólnie z Piotrkiem poruszyliśmy przez moment kwestię zasadności użycia async/await w tzw. „one line-rach” czyli metodach, których ciało posiada jedynie jedną linie i najczęściej jest implementowane za pomocą operatora „goes to” (nie mylić z lambdami). Przykład takiej metody: public async Task
Sztuka programowania 2176 dni, 6 godzin, 10 minut temu 311 źrodło rozwiń
Brak porannej kawy to proszenie się o błędy :) Tutaj opisuje jeden taki błąd który z braku kawy wynikał i co zrobiłem żeby w przyszłości się nie powtórzył. TLDR: IReadOnlyList
Sztuka programowania 2176 dni, 6 godzin, 10 minut temu 127 źrodło rozwiń
Czym się różni typ od klasy? Czy podtyp koniecznie musi dziedziczyć ze swojego nadtypu? Czy dziedziczenie z klasy bazowej wystarcza, aby być podtypem?
Sztuka programowania 2175 dni, 5 godzin, 35 minut temu 351 źrodło rozwiń
Poznając polecenie git checkout, na początku zawsze dowiadujemy się, że dzięki niemu możemy przechodzić między branchami. Można z jego pomocą stworzyć nowy branch oraz można poruszać się pomiędzy commitami w historii repozytorium. W tym wpisie pokażę Ci, że można również operować na plikach.
Micromanagement czyli styl zarządzania, który nie kojarzy nam się w sposób pozytywny. To kontrola i wywieranie wpływu na osoby w zespole. Coś z czym większość z nas nie chciała by mieć na co dzień styczności. Mi mocno kojarzy się z korporacją, hierarchiczną strukturą, raportowaniem postępu prac w formalny sposób. 📊 Relikt przeszłości. Zresztą nasz tytuł mocno nawiązuje do czasów w których komunizm był codziennością naszych rodziców.
Wikipedia podaje, że SOLID to ukuty przez Roberta C. Martina mnemonik. Wystarczy jednak zapamiętać, że jest to zbiór zasad jakimi powinien się kierować programista, podczas pisania kodu. Zwłaszcza w paradygmacie programowania obiektowego. Dużo się pokazuje jak na prawdę powinien wyglądać kod spełniający kryteria zawarte w poszczególnych regułach SOLIDa, natomiast niewiele się pokazuje przypadków niepoprawnego zastosowania tych reguł, lub nie zastosowania ich w ogóle. Właśnie to będzie celem tego cyklu....
Sztuka programowania 2183 dni, 4 godziny, 29 minut temu 186 źrodło rozwiń
Ten post to mieszkanka różnych przemyśleń na temat użycia Maybe (Option / Optional) w kodzie produkcyjnym i ogólnie programowania funkcyjnego w C#.
Sztuka programowania 2180 dni, 5 godzin, 57 minut temu 114 źrodło rozwiń
Święta za pasem, już wkrótce usiądziesz ze swoją rodziną przy wigilijnym stole. Po kolacji nadejdzie długo wyczekiwany czas wypatrywania pierwszej gwiazdki, której pojawienie się oznaczać będzie, że już za chwilę zawita św. Mikołaj! A św. Mikołaj to prezenty, ale też… kłopotliwe pytania.
Pewnie bardzo często dodawałeś nową zależność w projekcie. Klikałeś opcję “Manage NuGet Packages…”, wybierałeś pakiet i go instalowałeś. Może w Twojej głowie przemknęła wtedy myśl: Ciekawe skąd się biorą pakiety NuGet?