Icon - Piotr Wardyński certyfikowanym programistą Java

Piotr Wardyński certyfikowanym programistą Java

Maj 5th, 2011 | Tagi: , , | Posted in Programowanie

Minęło już kilka dni, chyba więc czas się pochwalić. Tuż przed długim majowym weekendem podszedłem do egzaminu OCJP – Oracle Certified Java Programmer (dawne SCJP, czyli Sun Certified Java Programmer). Po pewnym czasie przygotowań i rozwiązywania testów, udało mi się zdać wspomniany przed chwilą egzamin, myślę że z nie najgorszym wynikiem ogólnym (91% poprawnych odpowiedzi). Egzamin, jak pewnie każdy zainteresowany wie, nastawiony był nie tylko na sprawdzenie mojej wiedzy z samej Javy, ale także z zasad programowania obiektowego czy zwykłej spostrzegawczości i umiejętności analizy kodu źródłowego. Na egzamin przeznaczone są 3 godziny, choć jak ktoś zna Javę i ma trochę praktyki w programowaniu, powinien skończyć szybciej – ja wyszedłem już po 2 godzinach. Dla potwierdzenia wrzucam wydruk jaki otrzymałem w ośrodku certyfikacyjnym, na którym widać ogólny wynik z egzaminu, jak również wyniki z poszczególnych zagadnień.

Wyniki egzaminu OCJP

Wyniki egzaminu OCJP

Załączniki:

Wyniki egzaminu OCJP
Icon - Java, OS X, com.sun.tools i tools.jar

Java, OS X, com.sun.tools i tools.jar

Marzec 17th, 2011 | Tagi: , , | Posted in OS X

Używam swojego MacBooka, pracującego w tej chwili pod kontrolą OS X 10.6.6 Snow Leopard, już ponad rok. Nigdy nie było z nim problemów, jednak ostatnio natknąłem się na dość dziwny problem, którego rozwiązania nie udało mi się odnaleźć w zasobach internetu. Pracując nad projektem, pojawiła się w nim pewna zależność Mavena, która spowodowała błędy w czasie uruchomienia aplikacji. Okazało się, że zależność ta posiadała powiązanie bezpośrednio do pliku tools.jar. Plik ten jest dostarczany standardowo wraz z Javą i zawiera w sobie pakiet com.sun.tools. Wszystko byłoby dobrze, gdyby Java pod OS X nie była specjalnie przygotowaną wersją, w której wszystkie standardowe pakiety, w przeciwieństwie do normalnej dystrybucji Java, zostały zamknięte w jeden plik – classes.jar. Efektem tego było, że projekt przestał się uruchamiać pod OS X, gdyż szukał pakietu com.sun.tools bezpośrednio w pliku tools.jar, który w Snow Leopard po prostu nie istnieje. Niestety, zależność Mavena, która spowodowała takiego problemy, była konieczna w projekcie i nie zdawała się zauważać, że wymagany pakiet klas ładowane jest do wirtualnej maszyny z innego pliku jar. A wystarczy podejrzeć plik /Library/Java/Home/bundle/Classes/classes.jar poleceniem:

jar -tf /Library/Java/Home/bundle/Classes/classes.jar

aby przekonać się, że zawiera w sobie com/sun/tools. Pierwszą myślą było utworzenie dowiązania symbolicznego z nazwą tools.jar, które wskazywałoby na plik classes.jar. Pomysł nie okazał się jednak najlepszy, a Java zaczęła narzekać, że posiada dwa pakiety o identycznej nazwie i z identycznymi klasami w dwóch różnych plikach jar. Po chwili namysłu wpadł mi do głosy jednak inny, trochę szalony pomysł. Skoro pakiet com.sun.tools, wraz ze wszystkimi jego klasami, jest ładowany przez wirtualną maszynę, nie ma potrzeby, aby klasy te znajdowały się faktycznie w pliku tools.jar (wirtualną maszynę nie interesuje z którego archiwum załadowała klasę, musi tylko istnieć w systemie). Problemem jest brak pliku tools.jar, a nie brak odpowiednich klas. Wystarczy więc przygotować pusty plik tekstowy, spakować do przy pomocy ZIPa do pliku tools.zip, a następnie zmienić nazwę na tools.jar (pliki jar to po prostu specjalna wersja zipów, nawet można je rozpakować korzystając ze zwykłego zipa). Tak przygotowany plik należy skopiować jeszcze w odpowiednie miejsce:

/Library/Java/Home/bundle/lib/tools.jar

i wszystko zaczyna działać jak należy. Najprawdopodobniej powyższy sposób pomoże każdemu, kto z jakiś powodów napotyka błędy w Mavenie informujące o brakującym pakiecie com.sun.tools. Tak naprawdę to nie brak pakietu, a brak fizycznego pliku tools.jar jest problemem. Jedyną wadą powyższego obejścia jest fakt, że trzeba je wykonywać po każdej aktualizacji Javy dla OS X – na szczęście zdarzają się one stosunkowo rzadko.

Icon - Program: Sieci neuronowe 1 – operacja AND

Program: Sieci neuronowe 1 – operacja AND

Listopad 23rd, 2008 | Tagi: , , , | Posted in Programowanie, Programy

Dzisiaj dorzuciłem do zbiorów kolejny program napisany na zajęcia. Tym razem jest to prosta aplikacja napisana na zajęcia z przedmiotu Sieci neuronowe 1.

Program obrazuje sposób działania pojedynczego neuronu, którego zadaniem jest nauczyć się wykonywać logiczną operację AND. Jest to pierwszy program, który napisałem na Sieci neuronowe 1. Dzięki tej prostej aplikacji możemy zaobserwować, jaki wpływ mają niektóre parametry na prędkość i jakość uczenia neuronu. Za pomocą graficznego interfejsu możemy wybrać wartości wag początkowych poszczególnych wejść neuronu (przed rozpocząciem uczenia) oraz funkcję aktywacji (bipolarną lub unipolarną). Wyuczony neuron możemy następnie przeegzaminować – dopuszczalne są wartości ułamkowe (nie tylko idealne 0 i 1), więc po podaniu 0.99, 0.99 na wejście, neuron także powinien udzielić odpowiedzi 1. Dodatkowo wyuczony neuron możemy zapisać do pliku, aby możliwe było szybkie jego wczytanie po ponownym uruchomieniu programu. Zachęcam do pobawienia się tym prostym programem, a zainteresowanych tematyką sieci neuronowych odysłam na tę stronę: Sztuczne Sieci Neuronowe.