Auto-merge, czyli automatyczne scalanie PR Dependabota

Dependabot to narzędzie do wykrywania aktualizacji zależności. Jeśli korzystasz z niego w swoim repozytorium GitHub, to poniższy GitHub Action jest dla ciebie, ponieważ pozwala zaoszczędzić czas. Akcja automatycznie akceptacje oraz scala Pull Request utworzony przez Dependabot bazując na zdefiniowanych typach aktualizacji opartych na Semantic Versioning.
Continue reading

Rover, czyli zwizualizuj kod Terraform

To prawda, istnieje komenda terraform graph, która w połączniku z narzędziem graphviz daje możliwość wygenerowania grafu. Notabene, jest to zalecane podejście. Niestety to podejście było dla mnie niewystarczające, ponieważ mój graf był dość duży, co za tym idzie, poruszanie się po nim było naprawdę trudne/irytujące. Potrzebowałem czegoś więcej.
Continue reading

ngrok, czyli tunelowanie ruchu

Ngrok to mała aplikacja, która umożliwia tunelowanie ruchu. Przydatne wtedy, kiedy istnieje potrzeba wystawienia “czegoś” publicznie na świat. Tym “czymś” może być strona www, aplikacja, serwer. Działa to w następujący sposób: uruchomiona aplikacja ngrok.exe łączy się z chmurą ngrok, która akceptuje ruch na publicznym adresie. Otrzymany ruch z publicznego adresu przekazuje do procesu ngrok.exe uruchomionego na naszym komputerze, który dalej przekazuje owy ruch do lokalnej aplikacji/serwera. Poniższy rysunek, zaczerpnięty z oficjalnej strony, dobrze obrazuje ten schemat.
Continue reading

.NET Core boilerplate, czyli mój projekt wzorcowy

UPDATED: Boilerplate został zmigrowany do .NET 6!

Boilerplate to kawałek kodu, który w szybki sposób pomaga wystartować pisanie kodu. Pewnego rodzaju szablon. Zamiast startować z pustym projektem i dodawać za każdym razem od nowa te same cegiełki, możemy posłużyć się boilerplatem, który te cegiełki już zawiera.

Ostatnimi czasy kilka razy tworzyłem od początku aplikację w .NET Core, a w ramach tej aplikacji odpowiedni zestaw projektów oraz komponentów. Za każdym razem schemat postępowania był bardzo podobny – w jednym projekcie API, w kolejnym projekcie warstwa dostępu do danych oraz kawałek biznesu, następnie projekty z testami. Typ projektu determinował załączone NuGetowe paczki, konfigurację oraz klasy bazowe, które po wielokroć były identyczne. Na koniec “strażnicy” jakości kodu, oni również identyczni w każdej z nowopowstałych aplikacji. Schemat się powtarzał.
Continue reading

Dyndające przecinki, czyli notacja przecinkowa

Oryginalnie Dangling Commas (lub comma-dangle) to reguła pozwalająca na pozostawienie przecinka przy ostatnim elemencie typu wyliczeniowego, tablicy, czy też obiektu (podczas inicjalizacji). W związku z tym kompilatory oraz lintery w dobrej wierze zezwalają na ten niepoprawny znak przy ostatnim elemencie umożliwiając nam:
Continue reading

ObjectHasher, czyli jak wyliczyć hash z obiektu

System nad którym obecnie pracuję wykonuje wiele zapytań do zewnętrznych systemów. Każde zapytanie generuje nie tylko opóźnienie w działaniu aplikacji, ale również dodatkowe koszty. Postanowiliśmy zaimplementować rodzaj cache’u po naszej stronie. Do tego celu potrzebowaliśmy obliczać hash z modelu który przychodził do systemu. Niniejsza notka pokazuje przykładową implementację komponentu do wyliczania hash’a z obiektu.
Continue reading