PROGRAMOWANIE

Wstrzykiwanie zależności (dependency injection)

Jak to fajnie ujął James Shore – “Dependency Injection” is a 25-dollar term for a 5-cent concept„. Co w wolnym tłumaczeniu oznacza, że wstrzykiwanie zależności posiada bardzo skomplikowaną nazwą na coś co jest w gruncie rzeczy proste. Chodzi o to, żeby dostarczać obiektowi jego zmienne, zamiast tworzyć je wewnątrz obiektu: Przykład pierwszy Już na pierwszy …

Wstrzykiwanie zależności (dependency injection) Czytaj dalej »

Badanie pokrycia kodu (Code Coverage)

Pokrycie kodu jest najzwyklejszą miarą statystyczną – pokazuje ona jaka część kodu została wykonana podczas uruchomienia testów/aplikacji. Czyli uruchamiasz testy/aplikację a narzędzie do badania pokrycia kodu sprawdza, które linie kodu zostały wykonane, a które nie. Jest to przydatna miara, jeśli chcemy na przykład wiedzieć jaka część kodu została pokryta testami. Miary Zwykłe pokrycie kodu wydaje …

Badanie pokrycia kodu (Code Coverage) Czytaj dalej »

Transpilacja

Jest to rodzaj kompilacji polegający na przekształceniu kodu napisanego w języku A do kodu w języku B, przy czym oba rodzaje są zrozumiałe dla człowieka (są na zbliżonym poziomie abstrakcji). Przykładem transpilacji jest na przykład konwersja kodu napisanego z języku TypeScript, do języka JavaScript. Transpilacja może także dotyczyć przekształceń dotyczących wersji języka, jak na przykład …

Transpilacja Czytaj dalej »

Function.prototype.bind()

Funkcja bind pozwala na przekazywanie powiązanie danej funkcji z kontekstem (opierając się przy tym o słowo kluczowe this). Czyli, jeśli chcemy przekazać gdziekolwiek naszą funkcję, żeby została wykonana (na przykład jako callback) i zależy nam na tym, żeby ta funkcja została wykonana w konkretnym kontekście należy użyć funkcji bind. W gruncie rzeczy funkcja bind nadpisuje …

Function.prototype.bind() Czytaj dalej »

Race Condition

Warunek wyścigu (ang. race condition) – jest to sytuacja, w której działanie systemu zależy od kolejności, w jakiej wykonają się dwie lub więcej operacji. Przykład Załóżmy, że mamy trzy operacje (metody operation1, operation2, operation3), operujące na jednej zmiennej: I teraz jeśli każda z tych operacji byłaby wykonywana równolegle, to mamy sześć możliwych kolejności wykonania: Dają …

Race Condition Czytaj dalej »

run(arg1)(arg2) – co to jest?

Jak pierwszy raz zobaczyłem coś takiego w JavaScript to pomyślałem – co się tutaj dzieje…? Jednak po chwili zastanowienia okazało się, że sprawa jest prosta – funkcja run zwraca funkcję, którą można od razu wywołać. Spójrzmy na przykład: Przy wywołaniu: Otrzymujemy wypisane w konsoli:

Monitor w Javie

Monitor to mechanizm synchronizacji wykorzystywany do zarządzania dostępem do zasobów współdzielonych przez wiele wątków. Pozwala na uzyskanie ekskluzywnego (tylko jeden wątek w danym momencie) dostępu do zasobów. W praktyce wygląda to tak, że gdy jeden wątek jest w trakcie wykonywania metody lub bloku synchronizowanego (jeśli blok jest oparty o synchronized(this)) w klasie A, to w …

Monitor w Javie Czytaj dalej »

Java Thread Dump – jak uzyskać?

jcmd jcdm jest narzędziem diagnostycznym dostępnym w JDK (w katalogu bin). Dzięki niemu wykorzystując parametr Thread.print można uzyskać Thread Dump (pierwszy parametr to id procesu): jstack jstack jest dedykowanym narzędziem do uzyskiwania Thread Dumpów, dostępnym w JDK (w katalogu bin). W podstawowej wersji przyjmuje ono id procesu: