Moje środowisko programistyczne

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.

Moje środowisko programistyczne
Moje środowisko programistyczne

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.