day Archives:

PMD, czyli Programming Mistake Detector…

Programming Mistake Detector jest jednym z wielu proponowanych rozwinięć skrótu PMD, ale według mnie właśnie to rozwinięcie najdokładniej opisuje przeznaczenie opisywanej biblioteki.

PMD jest narzędziem, którego zadaniem jest znajdowanie w kodzie źródłowym potencjalnych błędów, takich jak puste bloki try/catch/finally, niewykorzystywane fragmenty kodu, nieoptymalne wykorzystanie klas String i StringBuffer, niepotrzebne użycie bloków if w pętlach, które można zamienić na pętle while oraz wykrywanie duplikatów bloków kodu.

Konfiguracja log4j

Poniżej załączam przykłady konfiguracji log4j’a, które wykorzystuje w kilku projektach.

Obfuskacja kodu, czyli jak utrudnić życie cracker'om

Obfuskacja, jak możemy przeczytać na Wikipedii, to “technika przekształcania programów, która zachowuje ich semantykę, ale znacząco utrudnia zrozumienie.”. Polega ona na takim przetworzeniu kodu lub binariów aplikacji, aby uzyskany po dekompilacji kod był jak najbardziej nieczytelny dla osoby przeprowadzającej analizę działania programu z wykorzystaniem tak zwanej Inżynierii wstecznej.

Prawidłowe zamykanie okien w Swing'u

Bawiąc się Swingiem od samego początku wydawało mi się, że aby prawidłowo zamknąć okno, wystarczy w akcji przycisku Zamknij wywołać:

1
2
3
private void closelButtonActionPerformed(java.awt.event.ActionEvent evt) {
    this.dispose();
}

Okazuje się jednak, że niekoniecznie jest to prawidłowe podejście, ponieważ jeśli wywołamy bezpośrednio dispose(), to nie zostaną poinformowane listenery okna oczekujące na zdarzenie zamykania okna. Co za tym idzie, zachowanie aplikacji będzie inne, niż w przypadku wciśnięcia przycisku X zamykającego okno. Zazwyczaj jednak chcemy zachować spójność działania aplikacji i obsługi zdarzeń.

Jak wykonywać długotrwałe zadania w Swing'u

Odkąd zacząłem pisać w Javie bardziej złożone aplikacje, które musiały na przykład komunikować się z jakimiś webowymi usługami lub wykonywać dłuższe obliczenia, miewałem problemy z zamarzającym GUI. Próbowałem problem ten rozwiązać na wiele sposobów, jednak zawsze znalazło się coś, co nie działało tak jak powinno - jak chociażby labele lub pola tekstowe, które powinny wyświetlać informacje o postępie zadania, a przez cały czas aż do zakończenia zadania pozostawały niezmienione.

Jazda, jazda, jazda!!!

No i stało się. W końcu dorobiłem się strony, czy też raczej bloga, na którym będę mógł się co nieco powymądrzać 😉 Wątkiem przewodnim większości tematów będzie zapewne programowanie w Javie i wszystko co się z nim wiąże. Jednak, mam nadzieję, że już w niedalekiej przyszłości pojawią się tu również jakieś tematy poświęcone paralotniarstwu, czy też graniu na gitarze.

Wierzę, że skoro już przeglądasz tę stronę, znajdziesz tu coś interesującego dla siebie.