jump to navigation

Obfuskacja – zaciemnianie kodu w Javie, narzędzie Czerwiec 17, 2009

Posted by artiko in : Java, Software , 2komentarze

W dzisiejszych czasach aplikacje pisane w Javie lub C# dość łatwo zdekompilować i otrzymać czasami przejrzysty kod. Oczywiście już dawno temu wymyślono sposoby na zabezpieczanie się przed tym 🙂
Jednym i bardzo prostym jest właśnie obfuskacja, czyli zaciemnianie kodu. Polega ona na takiej modyfikacji kodu bądź bytecodu, by nie było możliwe jego późniejsze zrozumienie. Po dokładny opis odsyłam na stronę Wikipedii – pl.wikipedia.org/wiki/Zaciemnianie_kodu.
Po bardzo krótkich poszukiwaniach w sieci znalazłem projekt o nazwie ProGuard, dzięki któremu można w naprawdę szybki sposób można zaciemnić kod, zmniejszyć objętość plików oraz dokonać optymalizacji kodu wynikowego. Można go uruchamiać z linii komend, jednak posiada również GUI. Osobiście wolę GUI, gdyż w przypadku używania wersji konsolowej trzeba tworzyć plik z konfiguracją dla każdej paczki. Aplikacja jest napisana w Javie, co czyni ją multiplatformową.
Do programu w zakładce Input/Output po prostu dodajemy nasz plik jar z aplikacją, plik wynikowy oraz, co bardzo ważne, pliki bibliotek, do których znajdują się odniesienia w naszym kodzie. Następne zakładki można pozostawić na wartościach domyślnych, w Process kliknąć Process! i po chwili dostajemy plik wynikowy, zabezpieczony przed tymi, którzy chcieliby do niego zaglądać 🙂
Ja przy pierwszym użyciu natrafiłem na błąd
Warning: javax.swing.JFrame: can't find superclass or interface javax.swing.TransferHandler$HasGetTransferHandler

Rozwiązanie jest proste, w zakładce Information wystarczy odznaczyć pola Skip non-public library classes i class members.

Grupowanie wyświetlanych obiektów Java3D Maj 13, 2009

Posted by artiko in : Java , add a comment

Do rozwiązania typowy problem: na canvasie wyświetlamy kilkadziesiąt obiektów, z czego część jest statyczna w czasie działania programu, część dynamicznie odświeżana. Co zrobić, by nie musieć przy odświeżaniu przeładowywać wszystkich obiektów w canvasie i uniknąć mrugania?
Odpowiedź jest prosta jesli użyjemy klasy javax.media.j3d.BranchGroup do której metodą addChild(Node arg0) możemy po prostu dodawać obiekty 3D. Oczywiście całą taką grupę łatwo się transformuje.
Jeśli do jednej grupy dodamy obiekty statyczne w wyświetlaniu, do drugiej odświeżane wystarczy, że w czasie wykonania programu będziemy odświeżać tylko tą drugą grupę. Można to uczynić używając metody detach() na rzecz grupy, a następnie przeładowując jej zawartość i dodając ją do canvasu, bądź grupy nadrzędnej.

NetBeans 6.5.1 i GlassFish 2.1 – problem z uruchomieniem serwera Kwiecień 1, 2009

Posted by artiko in : Software, Windows , 1 comment so far

Miałem dzisiaj do rozgryzienia dość denerwujący i nie pozwalający pracować problem, mianowicie po instalacji uaktualnionego NetBeansa 6.5.1 w wersji Full nie byłem w stanie odpalić serwerów aplikacji GlassFish (system Windows Vista Business 64bit). Problem dotyczył zarówno wersji 2.1 oraz 3 Prelude. Przy próbie ich podniesienia w zakładce Services w NetBeansie przez Start z menu kontekstowego serwera następowała normalna procedura startowa, na końcu pisało Application server startup complete, ale jednocześnie wyskakiwało okno informujące o niepowodzeniu uruchomienia serwera. Działo się tak i z serwerami już skonfigurowanymi i nowo dodanymi.
Lekarstwem okazała się zmiana uprawnień plików domeny GlassFish’a. Domyślnie znajdują się one w ścieżce C:\Program Files\glassfish-v2.1\domains. Wystarczy otworzyć właściwości folderu, który się tam znajduje (na przykład domain1), przejść do zakładki Zabezpieczenia, na liście zaznaczyć pozycję Użytkownicy i kliknąć Edytuj, w nowo otwartym oknie zaznaczyć pozycję Użytkownicy i zaznaczyć dla niej checkbox Pełna kontrola w kolumnie Zezwalaj. Klikamy OK dwa razy i już znowu możemy uruchamiać nasz serwer GlassFish 🙂

P.S.
Aby uruchamiać serwer GlassFish automatycznie (na przykład przy starcie systemu) należy dodać skrypt startserv znajdujący się z katalogu bin domeny (domyślnie np. C:\Program Files\glassfish-v2.1\domains\domain1\bin do programów uruchamiających się wraz z systemem (albo dodać skrót do niego do autostrartu, bądź stworzyć odpowiedni klucz w rejestrze systemowym).

Forest Fire – Symulator pożaru lasu Listopad 23, 2008

Posted by artiko in : Java, Software , add a comment

Forest Fire to projekt studencki symulujący pożar lasu przy użyciu teorii automatów komórkowych.
Samo podejście do wykorzystania Automatów Komórkowych jest w nim niestandardowe, gdyż korzysta z kilku warstw nałożonych na siebie, co pozwala znacznie lepiej symulować las oraz rozprzestrzenianie się w nim ognia. Pozwoliło to również w bardziej wierny sposób zasymulować wpływ takich czynników, jak wiatr, teren oraz struktura lasu na jego pożar.
Zachęcam do testowania, projekt dostępny jest w postaci aplikacji Java Web Start na tej stronie -> Link