Warte uwagi

Miejsce zbrodni: Git

Kontrola wersji jako pomoc w refaktoryzacji

Mając dzień “wolnego” czasu w pracy i mogąc go poświęcić na refaktoryzację – od którego miejsca zacząłbyś/zaczęłabyś? Czy warto byłoby wziąć klasę z największą złożonością cyklomatyczną (cyclomatic complexity) i podzielić ją na mniejsze kawałki kodu? Adam Tornhill proponuje nam lekko zmodyfikowane spojrzenie na sprawę – złożoność jest problemem tylko wtedy, gdy trzeba coś zmienić w […]

Dla juniorów

O zależnościach

Co sobie wstrzykują programiści?

Czym są zależności? Cóż, rzecz to równocześnie teoretyczna – jak i praktyczna. Wyobraź sobie, że jedziesz na wycieczkę do innego miasta i decydujesz się skorzystać z usług PKP. W tym momencie Twoja podróż zależy od Polskich Kolei Państwowych i istnieje pewna doza ryzyka, że coś pójdzie nie tak. A na stację dojedziesz tramwajem? Nie chciałbym […]

Język C#

Nowości w C# 9.0

.NET (Core) 5.0 wydany

Kilka dni temu miał premierę .NET 5, a wraz z nim język C# 9.0. Idzie kilka ważnych zmian, włącznie z klasycznym cukrem składniowym. Największą niespodzianką jest dla mnie nowy rodzaj typu referencyjnego wartościowego – rekord. Dotnet zaczyna nam ułatwiać tworzenie niezmiennych obiektów, czy ich właściwości. Możliwe, że idzie to trochę w kierunku programowania funkcyjnego. Nie […]

Game Dev

Kolizje w Unity

Reagowanie na kolidowanie

Poznałeś/poznałaś już podstawowe komponenty oraz posiadasz zestaw grafik, a także wiesz jak je dostosować do wyświetlania, żeby nie były rozmazane. Dzisiaj będziemy potrzebować dwa obrazki – jeden na obiekt kolizyjny, na który działa grawitacja, oraz jeden na platformę – kolizyjną, ale bez grawitacji. Po wybraniu grafik dostosuj im ustawienia (dla przypomnienia: 32 pixels per unit, […]

Narzędzia

Projekt bazodanowy

Jak rozwijać bazę danych w solucji

Nie jestem fanem podejścia code-first, a migracje kojarzą mi się jedynie z migreną. Prędzej czy później zawsze pojawiał się z nimi problem, a ja bym wolał pracować bezawaryjnie i bezpiecznie. Z pomocą przychodzi SSDT (SQL Server Data Tools), dzięki któremu w prosty sposób można włączyć bazę pod kontrolę wersji, porównywać schematy baz między środowiskami, aktualizować […]

Warte uwagi

Produktywność w rytmie slow

Skup się na najważniejszym

Jakie jest znaczenie słowa produktywność? Czy jest to dla Ciebie wykorzystanie każdej wolnej chwili na wykonanie jak największej ilości zadań? Czy planujesz czas nawet na odpoczynek? A po urlopie wracasz z jeszcze większym stresem, gdy nie zrealizujesz zadania odpoczynku? Rok temu byłem na prezentacji Piotrka, odbywającej się podczas konferencji SegFault. Przedstawił nam trochę inną definicję […]

Dla juniorów

Testy automatyczne

Czy zawsze jest sens je stosować?

Junior developer na początku swojej drogi ma masę rzeczy do ogarnięcia, zaczynając od rozwiązania problemu “jak zrobić, żeby to się kompilowało?”, a kończąc na kontroli wersji. Jak ja szukałem pierwszej pracy to miałem już parę projektów do pokazania, ale technicznie to pisałem wszędzie voidy, bo nawet nie wiedziałem, że metody mogą coś zwracać. O to, […]

Game Dev

Podstawowe komponenty w Unity

Kluczowy mechanizm Unity

Dzisiaj trochę teorii. Komponenty są prostym sposobem realizacji systemu modułowego. Posiadając przykładowy obiekt przeciwnika w grze, możemy go określić kilkoma cechami charakterystycznymi, np.: jest widoczny na ekranie komputera (renderowany – potrzebuje renderera), możemy z nim wchodzić w kolizję i zareagować na ten fakt (collider), może na niego oddziaływać siła grawitacji (rigidbody), może posiadać własne źródło […]

Narzędzia

AutoMapper – konfiguracja

Zmniejszanie bólu mapowania

AutoMapper powstał, aby rozwiązać dość popularny problem z mapowaniem klas. W znacznej większości projektów pojawiają się warstwy i związane z nimi DTOsy (Data Transfer Object). Mapowanie polega na przepisaniu wartości pól z jednej klasy do nowego obiektu o innym typie, np. z PersonDataAccessObject do PersonDataTransferObject. Dzięki temu zostaje zachowana jedna z podstawowych zasad programowania obiektowego – […]

Warte uwagi

The art of destroying software

Kiedy wiadomo najwięcej o projekcie?

Trzy lata temu byłem na pewnym trzydniowym szkoleniu z architektury aplikacji i systemów. Najbardziej zapamiętałem z niego krótką wstawkę od prowadzącego, żeby optymalizować kod pod usuwanie i jak bardzo zmieniło to jego perspektywę na pisanie aplikacji. Został polecony mi wtedy filmik, który załączam poniżej. Postanowiłem spróbować tego podejścia i u mnie również się sprawdziło – […]

Dla juniorów

Refaktoringi codzienne

Czy na pewno nie mamy czasu na refaktoryzację?

Refaktoryzacja kojarzy się z wielkim, długotrwałym procesem przepisywania pewnej części, albo nawet całości aplikacji. Natomiast w mojej głowie to proces normalny, codzienny. Masz lepszą nazwę dla danego pola, bądź metody? Zmień ją, nie zastanawiaj się. Widzisz niepotrzebny komentarz? To go usuń. A co, jeśli możesz pozbyć się komentarza poprzez zastosowanie bardziej opisowej nazwy metody? Czy […]

Game Dev

Unity – pierwszy skrypt

Łączenie edytora z kodem

Dzisiaj zajmiemy się utworzeniem pierwszego obiektu, ustawieniem mu grafiki (żeby go było widać), oraz napisaniem skryptu, który nim będzie obracał. Pozornie jest to mało tematów, ale poruszają chyba wszystkie fundamenty Unity. Większość rzeczy w grze to właśnie takie obiekty z popodpinanymi skryptami i innymi wbudowanymi komponentami (np. do animacji). To, czego się przez lata człowiek […]

Narzędzia

Smart Enum

Gdyby enumy miały metody

Typy wyliczeniowe w C# są przydatne i przeważnie z jeden czy dwa przewijają się w każdym projekcie. Niestety prawie zawsze idą w parze z instrukcją switch, a to z kolei może wiązać się z łamaniem zasady otwarte-zamknięte z SOLID. Pomocny może być tu samoopisujący się enum, ale do tego musielibyśmy mieć możliwość definiowania w nim […]

Warte uwagi

CQRS: moje własne podejście

W zasadzie nie moje tylko Gutka

Kolejny bardzo ważny filmik, który położył solidne fundamenty pod aktualnie stosowane pode mnie podejście do wytwarzania aplikacji. W internecie jest dużo materiałów opisujących CQRS wyłącznie w połączeniu z Event Sourcingiem. Jakub prezentuje tutaj samą esencję CQRSa, wyjaśnia CQS i mówi o swoich doświadczeniach. Na koniec wspomina o zastosowaniu CQRS w aplikacji typu CRUD, pomimo odradzania […]

Dla juniorów

Co to jest ORM?

Który wybrać?

Takie pytanie nie powinno pojawić się na rozmowie kwalifikacyjnej, mimo to – warto znać na nie odpowiedź. Od juniora wymaga się dzisiaj, żeby z ORMa umiał korzystać, co tu komu po teorii? W znacznej większości przypadków pisane przez nas aplikacje wykorzystują bazy danych. A w najprostszych słowach ORM to sposób odwzorowania bazy danych w kodzie […]

Game Dev

Unity – podstawowe okienka

Scena, hierarchia, projekt, inspektor.

Pozwolę sobie w tym wpisie na drobne uproszczenia, bo nie ma powodu komplikować życia na start nauki. Na początek teoria i pojęcie sceny. Scena służy do organizacji obiektów, które aktualnie chcemy wyświetlić graczowi. Przeważnie w małych i średnich grach pojedynczy poziom to jedna scena. Unity zapisuje to jako pliki z rozszerzeniem .scene (dostają one ikonę […]

Narzędzia

Dapper – podstawy

Proste i szybkie łączenie się z bazą danych

W życiu każdego człowieka programisty i programistki przychodzi czas, że musi połączyć się z bazą danych. Są na to sposoby mniej i bardziej finezyjne. Dzisiaj pokażę Ci jeden z najprostszych, jakie znam, a zarazem najbardziej wydajnych. Z powodzeniem stosuję go w codziennej pracy – do odczytu danych, lub do pełnego CRUDa w prostej aplikacji. Dapper […]

Warte uwagi

Czysty kod i czysty biznes

Krótko i na temat

Dzisiaj kolega Jarek opowie Wam o ważnych rzeczach. Czym jest biznes? Czym jest technologia? Czy biznes potrzebuje warstw? Czy taśma dwustronna może rozwiązać nasz problem? Na te i inne pytania odpowiada poniższy lightning talk. Zgadzam się z przedstawionym przez Jarka opisem naszego kawałka rzeczywistości, więc pozostało mi jedynie zaprosić na krótki seans. A historia z […]

XAML

Układanie elementów w XAMLu

Typy kontrolek-kontenerów

Nie ma dla mnie przyjemniejszego sposobu tworzenia widoczków niż pisanie w XAMLu (czyt. zamlu). Swoją przygodę z programowaniem zaczynałem od Windows Phone 7, robiłem aplikacje natywne na Windows 8.1 czy na desktop w WPF. Wszystkie te technologie były oparte o XAML i zawsze dobrze mi się z nimi pracowało. W przeciwieństwie do wiecznie rozjeżdżającego się […]

Narzędzia

Mediator i MediatR

Implementacja CQRS w praktyce

Mediator to wzorzec projektowy, z kategorii wzorców zachowań. Odpowiada za komunikację między obiektami. Tworzymy tu centralny obiekt, który obsługuje nasze żądania (request) i ewentualnie zwraca odpowiedzi (response). Porównuje się go często do wieży kontroli lotów – samoloty nie  rozmawiają ze sobą bezpośrednio, to wieża kontroluje ich położenie i wydaje im odpowiednie komendy. To jeden z […]