Moje środowisko programistyczne
Raz na jakiś czas, czy to podczas pierwszych dni w nowej pracy czy podczas upgradu sprzętu konfigurujesz swoje środowisko programistyczne. Często są to narzędzia, programy, skrypty, ustawienia do których jesteś przyzwyczajony i dobrze Ci się z nich korzysta. Nawet dzieląc się wewnątrz zespołu tym z czego korzystacie, wiele możesz zyskać i poznać coś nowego. Poniżej moje środowisko programistyczne z którym czuję się dobrze.
JVM
Jako, że jestem głównie javowcem to nie mogę zacząć od rzeczy związanych z java. Jako pierwszego wymienię SDKMAN. Jeśli, jeszcze go nie znasz to jak najszybciej go zainstaluj i zacznij używać. W dużym skrócie jest to narzędzie, dzięki któremu w łatwy sposób będziesz mógł zarządzać wieloma wersjami języków opartych o JVM. Dzięki niemu możesz zapomnieć o ręcznym wyszukiwaniu odpowiedniego sdk, a później o ręcznych zmianach w PATH podczas zmiany wersji.
IDE pluginy
Od około 2015 roku, moim IDE jest IntelliJ – i co tu dużo mówić, jest ono naprawdę dobrym toolem. Wcześniej używałem eclipse i potrafiłem go przy użyciu wielu pluginów dosyć dobrze skonfigurować. Jednak używając IntelliJ, nie mam ich aż tyle co wcześniej, co nie znaczy że ich nie używam. Obecnie mam zainstalowane:
Codota AI– plugin, który rozbudowuje/poprawia sugestie proponowane przez Intellij. Fajnie się sprawdza, w przypadku zewnętrznych bibliotek, gdzie pokazuje procentowo najczęstsze użycia. Również dużym plusem tego pluginu są przykłady użycia na podstawie realnych kodów. Zmienil nazwe na TabnineAI.- Rainbow Brackets – dodaje trochę kolorów do nawiasów, klamer. Dzięki temu pluginowi łatwiej zobaczysz otwierające i zamykające nawiasy.
- SonarLint – jeśli używasz sonara, to dzięki temu pluginowi łatwo podepniesz analizę pod swój kod i wyniki będziesz miał prawie w realtime.
Lombok– jedną z wad używania lomboka była potrzeba instalacji pluginu w IntelliJ. Na szczęście od wersji 2020.3 już nie trzeba go instalować.- AWS Toolkit – z jednej strony pomaga w pracy przy stacku awssowym. Z drugiej jest też wymagany aby używać CodeWhisper
- Big Data Tools – duży kombajn, używalem go głownie do produkowania/konsumowania wiadomosci na kafce
- Mario progress bar – Trochę ciekawszy progress bar niż standardowy
IDE dodatkowa konfiguracja
Nawet jakoś specjalnie nie konfiguruję mojego IDE oprócz trzech rzeczy. Najważniejszą dla mnie zmianą jest wyłączenie sprawdzania wielkości liter, podczas sugestii/autocomplete. Na pierwszy rzut oka niewielka zmiana, ale naprawdę bardzo dużo możesz zyskać. Aby to osiągnąć, wyszukaj “Code completion” i zaznacz “match case off”. Oprócz tego, również podczas formatowania kodu mam włączoną opcję czyszczenia importów oraz robienia cleaningu na kodzie. Oczywiście, nie mogę też zapomnieć o live templetach. Zawsze mam przygotowany template do generowania szablonów testów, obecnie używam Spocka, więc wygląda on tak:
def "should" () { given: when: then: }
Plus dodatkowe templaty w zależności od projektu i konwencji tam przyjętych.
Warto również wspomnieć o toolboxie. Małe narzędzie od JetBrainsow, które pozwala w łatwy sposób zarządzać wieloma aplikacjami od nich, aktualizacjami i szybko wybierać odpowiedni projekt.
Git
O samym gicie nie będę się rozpisywał bo to jednak standard. Bardziej skupię się na paru konfiguracjach, które sprawiają, że praca z nim jest przyjemniejsza. Zwłaszcza wtedy, gdy do większości rzeczy z nim związanych używasz konsoli, tak jak ja.
Pierwszą rzeczą, której domyślnie po instalacji gita mi brakuje – jest wyświetlanie nazwy brancha, na którym aktualnie się znajduję. Jeśli używam zsh, to do pliku .zshrc dodaję:
//.zshrc function parse_git_branch() { git branch 2> /dev/null | sed -n -e 's/^\* \(.*\)/[\1]/p' } COLOR_DEF=$'\e[0m' COLOR_USR=$'\e[38;5;243m' COLOR_DIR=$'\e[38;5;197m' COLOR_GIT=$'\e[38;5;39m' setopt PROMPT_SUBST export PROMPT='${COLOR_USR}%n ${COLOR_DIR}%~ ${COLOR_GIT}$(parse_git_branch)${COLOR_DEF} $ '
A po skończonej edycji wykonuję:
source .zshrc
Czym byłoby środowisko programistyczne z gitem bez aliasów? Też ich używam w takiej formie jakie są dla mnie wygodne, zwłaszcza mój ulubiony alias tree.
git config --global alias.ch checkout git config --global alias.st status git config --global alias.pu pull git config --global alias.tree 'log --graph --decorate --pretty=format:"%h %aN %ai %s" --abbrev-commit' git config --global alias.showalias 'config --get-regexp alias' git config --global alias.pushtoremote 'push -u origin' git config --global alias.c 'commit -m' git config --global alias.ca 'commit --amend -m'
A skoro już używam gita nie mogę zapomnieć o podaniu nazwy i maila użytkownika
git config --global user.name "Mariusz Okaz" git config --global user.email "mariusz.okaz@example.com"
Toole
Oprócz rzeczy związanych z czystym programowaniem, także używam różnych tooli. Pierwszym i chyba najważniejszym jest Docker. Dzięki niemu w łatwy sposób mogę zainstalować i mieć skonfigurowaną bazę, usługi których używam w projekcie.
Do zarządzania bazą używam DBeaver. Jest to narzędzie, które obsługuje wiele baz. W wersji płatnej wspiera również bazy dokumentowe i BigData.
Aby testować RESTy, to głównie wykorzystuję do tego celu Postmana. Wiem, że w IntelliJ jest bardzo fajny klient, ale tutaj górę bierze moje przyzwyczajenie.
Czasem też trzeba podziałać na plikach w systemie, do tego celu używam Double Commandera, bardzo podobnego do TotalCommandera.
Dosyć dużo korzystam z terminala i takim odkryciem, z którego obecnie korzystam to jest warp. Autouzupełnianie i sugestie w podpowiedziach, bloki (commandy i ich odpowiedzi), edycja komend w dowolnym miejscu, dodatkowo nowe taby i podzial na panele na jednym oknie, możliwość zapisywania workflowow i nawet AI. To wszystko sprawia, że praca w nim bardzo przypomina pracę w IDE.
Innym przydatnym narzędziem jest maccy, minimalistyczny clipboard manager.
Pieces – z jednej strony jest to narzędzie do zarządzania snippetami kody. Często są jakieś kontrukcje których nie pamiętasz i musisz sobie je wyszukać. Innym razem w projekcie są jakieś konwencje, standardy, które wykorzystujesz. Dzięki temu programowi jesteś w stanie je dodać, ręcznie, przez dodanie odpowiedniego katalogu, obrazu. Automatycznie są nadawane tagi, powiązane linki z tematem, opis co dany fragment robi. Nie można zapomnieć, że również tutaj jest integracja z ChatGPT i najważniejsze aplikacja działa w myśl offline first. Często dzięki pieces nie muszę korzystać z googla lub stack overflow.
Inne
Z takich innych rzeczy, bardzo ważne dla mnie są zeszyt i długopis. Mogę wtedy zrobić jakieś notatki, coś sobie rozpisać, narysować czy nawet zarzucić kotwicę podczas myślenia i wrócić do tego za chwilę. Przeglądarka internetowa też jest moim podstawowym narzędziem pracy, jednak nie mam w niej zainstalowanych żadnych blokerów. Dodatkowo jestem zalogowany w google i na stackoverflow. Ostatnio testuje konsolowe narzędzie typu todo – taskline i jak na razie sprawdza się dosyć dobrze. Komunikatory, vpn, menadżery haseł i tego typu programy są mocno związane z firmą w której pracuję i nie wchodzą bezpośrednio w moje środowisko programistyczne.
Środowisko programistyczne
To są moje narzędzia, których używam na co dzień i które są dla mnie wygodne. Od ich zainstalowanie i skonfigurowania zaczynam przygotowanie mojego środowiska programistycznego. Do wielu z nich jestem przyzwyczajony od wielu lat i również wiele rzeczy, konfiguracji robię automatycznie. A czy Ty możesz podzielić się innymi narzędziami, które są dla Ciebie niezbędne? Może także, masz jakieś konfiguracje w IDE, które sprawiają, że lepiej Ci się pracuje.