Serwus! Jak pewnie zauważyliście, ten blog umarł śmiercią naturalną jakiś czas temu. Za to całkiem niedawno założyłem video bloga: ZM Vlogna którego serdecznie wszystkich zapraszam.

Click here to read this mailing online.

Your email updates, powered by FeedBlitz

 
Here is a sample subscription for you. Click here to start your FREE subscription


  1. Umarł król, niech żyje król.
  2. Jaki jest Twój ulubiony numer?
  3. Software Developers Journal i ja
  4. Kobra czyli zmiany, zmiany zmiany...
  5. perwszy test z Apache JMeter
  6. More Recent Articles

Umarł król, niech żyje król.

Serwus! Jak pewnie zauważyliście, ten blog umarł śmiercią naturalną jakiś czas temu. Za to całkiem niedawno założyłem video bloga: ZM Vlogna którego serdecznie wszystkich zapraszam.
    

Jaki jest Twój ulubiony numer?

Ostatnio wśród wielbicieli i zagorzałych przeciwników Javy modne stało się pytanie o ulubioną liczbę.
Skąd takie pytanie?
Otóż jest pewien wartość sprawiająca Javie kłopoty.

Jaki jest Twoim zdaniem efekt uruchomienia programu:

package pl.matt.fne;

public class Main {
public static void main(String[] args) {
double d = Double.valueOf("22.250738585072012e-309");
System.out.println(d);
}
}

No więc niestety. Program uruchamia się bez końca. Po prostu się zapętla. Także ulubionym numerem prawdziwego hakera jest ostatnio:
22.250738585072012e-309.

Próbę wytłumaczenia tego fenomenu można znaleźć pod tym adresem. Ja niestety wymiękłem podczas analizy klasy FloatingDecimal.

22.250738585072012e-309 to bardzo przebiegła liczba.
Spróbujmy skompilować program:

package pl.matt.fne;

public class Main {
public static void main(String[] args) {
double d = 22.250738585072012e-309;
System.out.println(d == 12);
}
}

Znowu niespodzianka.
javac też się zawiesza.

Czy ta ciekawostka może być groźna.
Ano może.
Wyobraźmy sobie aplikację, która przyjmuje podaną użytkownika liczbę niecałkowitą i konwertuje ją do zmiennej typu double.
Odpowiednio spreparowane żądanie do takiej aplikacji może na zawsze zająć jej wątek. Atak DoS jak się patrzy.
Spróbuję w przyszłym tygodniu przygotować przykład ilustrujący ten scenariusz.

Tymczasem Oracle wypuścił patcha mającego wyeliminować powyższe niedogodności.
Działa u was?
Ja jeszcze nie instalowałem.
    

Software Developers Journal i ja

Styczeń zaczął się upalnie. Wyjechałem do Tajlandii, wszedłem na palmę


po czym pognałem co tchu do słonecznej Kalifornii.

Nie zapomniałem jednak o Javie. W magazynie Software Developers Journal ukazał się właśnie artykuł mego autorstwa "Wszystko w jednym – JBoss SEAM".
Pamiętacie jeszcze to czasopismo? Od jakiegoś czasu nie ukazuje się już wersja drukowana. Jest za to darmowy PDF.

Zapraszam do lektury!
    

Kobra czyli zmiany, zmiany zmiany...

Serwus!

Trochę zaniedbałem mojego bloga... To pierwszy post od 10 miesięcy. W tym roku pewnie ostatni.
Ale od nowego roku szykuję nową ofensywę. Krótsze, częściej publikowane wpisy to coś, co sobie obiecuję. Zobaczymy, co z tego wyjdzie. Trzymajcie kciuki.

Kilka miesięcy temu zmieniłem pracodawcę na Google, więc ciekawych tematów nie powinno zabraknąć.

Tymczasem "stay tuned".
Wesołych!
I udanej zabawy sylwestrowej.
Noc z 31. grudnia na 1szego stycznia to chyba najlepsza noc dla hakerów. Obstawiacie jakieś spektakularne włamania?
    

perwszy test z Apache JMeter

Temat testów wydajnościowych pojawia się od czasu do czasu w waszych komentarzach, mailach lub wiadomościach GG. Dzisiaj zaspokoję ciekawość tych, którzy chcieliby zacząć a nie bardzo wiedzą jak. Przedstawię przepis na prosty test wydajnościowy.

Składniki:
- przeglądarka WWW (u mnie będzie to Opera)
- Apache JMeter
- testowana aplikacja WWW

Przepis umożliwia testowanie każdego rodzaju aplikacji webowych. W moim przypadku będzie to prosta witryna składająca się z dwóch statycznych stron HTML.
a.html

<html>
<body>
<h1>Serwus!</h1>
<a href= b.html>dalej</a>
</body>
</html>

i b.html

<html>
<body>
<h1>Druga strona</h1>
</body>
</html>


Uruchamiam te strony na serwerze Apache Tomcat.


Działa. Pora na JMetera. Dystrybuowany jest on jako archiwum zip lub tgz, więc z jego instalacją i uruchomieniem nie będzie problemu.
Posługuję się wersją 2.3.1.


W JMeterze można tworzyć testy na kilka sposobów. Najwygodniej jest je nagrać w przeglądarce WWW. Odbywa się to za pośrednictwem specjalnego serwera proxy. Dodaję go klikając prawym przyciskiem myszy na węźle WorkBench


i wybierając z podręcznego menu Add / Non-Test Elements / Http Proxy Server
Port zmieniam na 9999 (na 8080 jest uruchomiona moja aplikacja).


W sekcji URL Patterns to include dodaję wyrażenie regularne .*\.html. Dzięki temu w moim teście znajdą się tylko strony HTML. Warto dodać tutaj tylko strony generowane dynamiczne (jsp, php, jsf) ponieważ na sprawdzaniu ich wydajności najbardziej nam zależy.


Do węzła Test Plan dodaję grupę wątków Add / Thread Group. Tam zapiszą się nagrane żądania do mojej aplikacji.


Następnie uruchamiam serwer proxy klikając przycisk Start



Uruchamiam przeglądarkę WWW w której konfiguruję serwer proxy



i nagrywam test klikając w uruchomioną aplikację


Nagrany scenariusz znajduje się w grupie wątków. W moim przypadku składa się on z dwóch stron /test-app/a.html i /test-app/b.html.


Pora na sprawdzenie wydajności aplikacji. W ustawieniach grupy wątków zwiększam wartość Number of Threads (users) do 3.. Loop Count ustawiam na 20. Odpowiada to trzem użytkownikom, z których każdy 20 razy wykona scenariusz testowy.


Do swojej grupy wątków dodaję węzeł "raport z testów" (Add / Listener / Summary Report) w którym będę podglądał wyniki testów.


To w zasadzie wszystko. Zapisuję test i uruchamiam go wybierając akcję Start z menu Run.


Hm... Średnio strona mojej aplikacji generuje się 1 milisekundę. Całkiem nieźle.
Planowałem powtórzyć ten test na serwerze Apache WWW, ale wobec takich wyników na Tomcacie nie będzie to miało chyba większego sensu.

Stworzony plan testów zamieszczam tutaj.
    

More Recent Articles


You Might Like

Click here to safely unsubscribe from "Na Jawie - czyli co w trjawie piszczy...."
Click here to view mailing archives, here to change your preferences, or here to subscribePrivacy