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

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 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

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 […]

Game Dev

Unity – wstęp

Nigdy nie było lepszego okresu na robienie gier

Nie planowałem pisać o Unity, ale rozmawiając ze studentami, widziałem duże zainteresowanie tym tematem. Sam mam z tą technologią do czynienia na co dzień, gdyż od trzech miesięcy rozwijamy z kolegą grę z game jamu. Może uda mi się podzielić na kawałki mój stacjonarny, całodzienny kurs „Unity3D od zera” i umieścić go tu w formie […]

Narzędzia

Proste logi z Serilog

Konfigurowanie loggera nigdy nie było prostsze

Nie wiem jaka biblioteka jest najbardziej powszechna na rynku, bo odkąd zobaczyliśmy Seriloga dwa lata temu, to nie było potrzeby szukać innego rozwiązania. Wcześniej używaliśmy NLog oraz log4net, ale zapamiętałem je raczej kiepsko. Nie chcę ich krytykować – to dobre rozwiązania, ale dla zupełnego laika Serilog będzie najprostszym wyborem. Możliwe, że znalezienie przez nas Seriloga […]

Dla juniorów

Logger w aplikacji

nie mylić z logowaniem (uwierzytelnianiem)

Jakiego frameworka używasz do zapisywania logów? To było jedno z pytań, jakie zadał mi Maciek na rozmowie kwalifikacyjnej. Wtedy jeszcze zapisywałem zdarzenia po prostu do pliku, jeśli już w ogóle to robiłem. Co ciekawe, nie przypominam sobie innej rozmowy o pracę, gdzie ktoś by mnie o to zapytał. A przecież logger to podstawowe narzędzie przy […]

Warte uwagi

Słowo o testowaniu

dla osób które już testują automatyczne

Dziś bardzo krótko – niech wypowie się ktoś mądrzejszy ode mnie. Od czasu do czasu będę się dzielił materiałami, które miały duży wpływ na moją codzienną pracę. Często do nich wracam i przerabiam po raz kolejny, próbując wyciągać nowe wnioski. Na początek wybrałem prezentację Sławka Sobótki o testowaniu. Znalazłem ją, próbując po raz kolejny zrozumieć […]

Społeczność

Atos Lab 2020

czyli co robiliśmy na wiosnę

Poniższy wpis jest jedynie krótkim podsumowaniem warsztatów oraz podzieleniem się ocenami otrzymanymi od uczestników. Mam nadzieję, że pomoże on w przyszłości zachęcić kolejną firmę do pomagania studentom. W marcu oraz kwietniu zorganizowaliśmy na Politechnice Wrocławskiej cykl warsztatów o nazwie „Atos Lab”. Obyło się osiem spotkań trwających około dwóch godzin. Była to nasza firmowa inicjatywa, na […]

Dla juniorów

CQS i CQRS

Obowiązek kontra ewentualność

Gdyby na studiach ktoś powiedział mi o CQS, zaoszczędziłbym około dwóch lat z życia. Oczywiście największym problemem na początku jest, aby kod w ogóle chciał działać. Optymalizacją można zająć się później (ta, jasne). Jednak ucząc się niektórych praktyk na starcie, możemy małym kosztem otrzymać bardzo duże efekty. Przykładowo: urządzenia elektryczne działają zdecydowanie lepiej po podłączeniu […]