Testy działają w Eclipse, a w Maven fail – czyli czemu warto dokładnie czytać dokumentację

Testy działają w Eclipse, a w Maven fail – czyli czemu warto dokładnie czytać dokumentację

Czasem zdarza się, że przez dłuższy czas piszę nową funkcjonalność, testując aplikację tylko za pomocą funkcji wbudowanych w IDE. Kiedy uznam, że nowy kod w środowisku developerskim działa wystarczająco dobrze – pora na spakowanie programu i wrzucenie go do docelowego serwera aplikacji. Włączam terminal, mvn package, i czekam, nie ma potrzeby śledzenia logów z testów – przecież wszystko działa… czyżby?

Tests run: 54, Failures: 4, Errors: 0, Skipped: 0

Przetarłem oczy, jeszcze raz odpaliłem testy pod Eclipse, no przecież tutaj jest ok:

01_tests_pass

Co może być przyczyną takich anomalii, oraz jaki to ma związek z tytułowym czytaniem dokumentacji, w dalszej części wpisu. Czytaj dalej „Testy działają w Eclipse, a w Maven fail – czyli czemu warto dokładnie czytać dokumentację”

Tomcat server at localhost was unable to start…

Tomcat server at localhost was unable to start…

Serwer Tomcat zintegrowany ze środowiskiem Eclipse jest bardzo wygodnym rozwiązaniem, często znacznie przyspieszającym bieżące sprawdzanie efektów zmian wprowadzonych w kodzie aplikacji.
Niestety, czasem maszyna na której pracujemy może dostać czkawki, szczególnie, jeśli nie należy do demonów prędkości…

Po kilku godzinach pracy, czas startu serwera robi się coraz dłuższy. Niestety, czasami powoduje to przerwanie uruchamiania i wyświetlenie następującego komunikatu:

komunikat błędu uruchamiania tomcat'a
Server Tomcat was unable to start within 45 seconds

Jak widać na powyższym zrzucie ekranu: jeśli po domyślnych 45 sekundach serwer nie skończył się uruchamiać, to proces zostanie przerwany. Dalej możemy przeczytać, iż należy zwiększyć timeout w edytorze serwera (możemy też zrestartować komputer – ale kto ma na to czas i ochotę 😉 ) Pytanie tylko: jak się dostać do rzeczonego edytora? Czytaj dalej „Tomcat server at localhost was unable to start…”

Post -> Redirect -> Get w Spring MVC

Wielu z nas zapewne zdarzyła się podobna sytuacja: po wysłaniu formularza chcemy z jakiegoś powodu odświeżyć stronę i ukazuje się nam komunikat w stylu: „ta akcja spowoduje ponowne wysłanie danych”. Jeśli zatwierdzimy taką operację, drugi raz wyślemy zawartość formularza na serwer. Może to spowodować, przykładowo, dodanie kolejnych rekordów do bazy danych.

Na problem ten możemy natrafić również we własnych aplikacjach. Często też zagadnienie to jest całkowicie pomijane w tutorialach i podstawowych szkoleniach dostępnych w internecie (prawdopodobnie żeby nie wprowadzać dodatkowych komplikacji osobom które dopiero uczą się podstaw).

W dzisiejszym poście postaram się przedstawić jak poradzić sobie z tym zjawiskiem w Spring Mvc. Czytaj dalej „Post -> Redirect -> Get w Spring MVC”

Update Javy zepsuł aplikację? czyli dlaczego warto śledzić zmiany w aktualizacjach bezpieczeństwa

Czasem zdarza się, że po aktualizacji któregoś z komponentów naszego systemu aplikacje z których korzystaliśmy nagle przestają działać. Może być to związane z nowym błędem wprowadzonym przez łatkę, ale niekiedy okazuje się że spowodowane jest to zamierzoną, i zapowiedzianą odpowiednio wcześniej, zmianą w jego konfiguracji.

Z taką właśnie sytuacją miałem doczynienia kilka miesięcy temu. Pewnego dnia próba odpalenia jednego z używanych przeze mnie narzędzi skończyła się niepowodzeniem. Pierwszą rzeczą którą zrobiłem było zapytanie znajomych jej użytkowników, czy u nich również problem występuje, w odpowiedzi usłyszałem:

– Coś zepsuli w ostatnim updejcie do javy, użyj poprzedniej wersji i będzie działać

W tym momencie przypomniało mi się, że faktycznie instalowałem ostatnio jakieś łatki. Należę jednak do osób które lubią wiedzieć co dokładnie się zepsuło, nie byłem również zbyt usatysfakcjonowany propozycją downgrade’u do poprzedniej wersji JRE.

Poszukiwania w google, poprzedzone sprawdzeniem błędów wypluwanych przez aplikację, szybko przyniosły wyniki: po kwietniowej aktualizacji bezpieczeństwa, JRE zaczęło traktować aplikacje podpisane za pomocą algorytmu MD5 tak samo jak nie podpisane w ogóle, a więc bez zmiany ustawień działać one nie będą – szczególnie w przypadku aplikacji java web start i appletów (choć te ostatnie i tak nie są już wspierane). Problem był więc spowodowany działaniem zamierzonym, i zapowiedzianym sporo wcześniej. Więcej tutaj.

Najlepszym rozwiązaniem sytuacji byłaby oczywiście aktualizacja aplikacji do wersji podpisanej algorytmem uważanym za bezpieczny, nie miałem wtedy niestety takiej możliwości. Jak więc można sobie poradzić z takim problemem jeśli nie chcemy całkowicie rezygnować z łatek bezpieczeństwa? Czytaj dalej „Update Javy zepsuł aplikację? czyli dlaczego warto śledzić zmiany w aktualizacjach bezpieczeństwa”

Otwarcie Java EE

Otwarcie Java EE

Java Enterprise Edition w znacznym stopniu przyczyniła się do sukcesu języka. Od jakiegoś czasu słychać było jednak głosy, iż Oracle zaniedbuje środowisko, przez co kolejne wydania Java EE  opóźniają się i rozwija się ona znacznie wolniej od konkurencyjnych rozwiązań.

Zarzuty te niedługo mogą przestać być aktualne, miesiąc temu ogłoszono plany przeniesienia rozwoju platformy do organizacji open-source. Ma to uczynić proces rozwoju bardziej zwinnym (agile) i otwartym. Całą wiadomość odczytać można tutaj.

Kilka dni temu, udostępniono aktualizację wiadomości, przedstawiającą kolejne ustalenia. Dowiedzieć się z niej możemy że IBM i Red Hat (najwięksi kontrybutorzy projektu poza samym Oracle) popierają propozycję nowej ścieżki rozwoju.
Dowiedzieliśmy się też, która organizacja miałaby podjąć się zadania dalszego przewodzenia projektowi JEE po wydaniu wersji 8: Eclipse Foundation.
Wiadomość Oracle przeczytać można tutaj , a tu komentarz RedHat’a.

Eclipse Foundation ma ogromne doświadczenie w rozwoju projektów związanych z Javą, takich jak ogłoszone w tym roku Microprofile, czy znane każdemu środowisko programistyczne 😉 Decyzja wydaje się więc być strzałem w dziesiątkę i powinna przynieść powiew świeżości w środowisku.

Teraz pozostaje tylko czekać na dopięcie wszystkich formalności i dalszy rozwój sytuacji.

Android O, czyli?

Android O, czyli?

Znamy już nazwę nowego Androida, jak wiele osób się spodziewało, jest to Android Oreo. Szczerze mówiąc miałem nadzieję że wybiorą coś mniej „komercyjnego”… przykładowo „Oatmeal Cake”. Szczególnie że osobiście za Oreo nie przepadam 😉 Niemniej wybór ten nie dziwi, zwłaszcza biorąc pod uwagę, że zdarzyła się wcześniej nazwa taka jak „KitKat”.

Szczęśliwi posiadacze telefonów Google Pixel oraz nowszych Nexusów mogą już instalować nowy system. Nawet jeśli automatyczny update nie jest dla nich dostępny, obrazy pobrać można stąd.
Posiadacze innych flagowców będą musieli jeszcze trochę poczekać, a reszta… cóż… pewnie jak zwykle zostanie przy dotychczasowej wersji do momentu w którym zdecyduje się zmienić telefon – ale miejmy nadzieję że od teraz się to zmieni, o czym wspomnę nieco dalej.

Odsłonięcie figury nowego bugdroida zeszło się w czasie z zaćmieniem słońca widocznym w Stanach Zjednoczonych, odliczanie do tego zdarzenia, oraz późniejszą transmisję z niego oglądać można było na stronie:
https://www.android.com/eclipse/
Podczas eventu odsłonięto figurę nowego robota, oraz zaprezentowano krótki filmik marketingowy przedstawiający go jako superbohatera który spadł z niebios:

Dokładniejsza prezentacja systemu podczas wydarzenia nie była konieczna, gdyż niemal wszystko o nowym systemie dowiedzieliśmy się podczas jego wcześniejszych prezentacji, choćby podczas Google I/O 2017 – dotąd największą niewiadomą pozostawała nazwa.

Jakie więc nowości czekają na nas w Androidzie 8?
Czytaj dalej „Android O, czyli?”

Server Security 101 – Podstawowe metody zabezpieczenia dev-serwera. Część I

Server Security 101 – Podstawowe metody zabezpieczenia dev-serwera. Część I

Oryginalnie wpis ten miał stanowić całość, jednak w miarę pisania znacznie się rozrósł. W związku z tym postanowiłem go rozdzielić na dwie części. Poniżej część pierwsza.

Podczas prac nad nowym oprogramowaniem, prędzej czy później nadchodzi moment w którym testowanie aplikacji w sieci domowej przestaje wystarczać. Być może chcemy przetestować niektóre funkcje aplikacji mobilnej będąc poza domem, udostępnić nową stronę do testów znajomym, albo wreszcie opublikować aplikację dla szerszej grupy użytkowników.

Nie ma większego problemu, jeśli mówimy o prostej stronie lub usłudze pisanej w PHP – istnieje wiele planów hostingowych, również darmowych, umożliwiających wrzucenie naszego kodu bez martwienia się o aktualizacje oprogramowania, firewalle i inne zabezpieczenia. Nie mamy tam do nich nawet dostępu, a zadaniami typowo administracyjnymi zajmują się pracownicy firmy hostingowej.

Jeśli jednak chcemy mieć dostęp do wybranych przez nas wersji oprogramowania, albo większą kontrolę nad serwerem, to zostaje nam właściwie tylko wybór między serwerami dedykowanymi; VPS; lub patentami w stylu RaspberryPi, postawionej w sypialni i wystawionej na sieć zewnętrzną.

Niezależnie od wybranej metody, będziemy musieli jakoś zabezpieczyć nasz serwer przed intruzami pokroju botów, script-kiddies, czy wannabe-hackerów. Pamiętajmy że licho nie śpi… Jako przykład podam komunikat który zobaczyłem kiedyś logując się po raz pierwszy na zakupiony dzień wcześniej serwer VPS:

27_07_2017_sec_0login

Jak widać, internet jest ciągle skanowany pod kątem maszyn do potencjalnego przejęcia, lub uszkodzenia.

Pytanie tylko: jak się zabezpieczyć? Nie każdy programista zna się przecież na podstawach bezpieczeństwa systemów informatycznych (i ciężko tego od każdego wymagać). Podstawowe metody zabezpieczenia serwera opartego na systemie GNU/Linux postaram się zaprezentować w dalszej części postu.

Forma może wydawać się niektórym, szczególnie bardziej zaawansowanym użytkownikom, nieco rozwlekła. Chciałem jednak opisać wszystkie czynności w taki sposób, żeby nawet osoby nie mające żadnych wcześniejszych doświadczeń z administracją systemem Linux dowiedziały się nie tylko, co zrobić, ale też dlaczego proponuję akurat takie rozwiązania. Czytaj dalej „Server Security 101 – Podstawowe metody zabezpieczenia dev-serwera. Część I”

Odtwarzacz Banshee a problemy z zamontowaniem telefonu

Czasem, czy to w celu skopiowania zdjęć, czy też testowania pisanej właśnie aplikacji, trzeba podłączyć telefon do komputera. Niby nic nadzwyczajnego, ale w pewnym momencie natrafiłem na utrudnienie które przez dłuższy czas spędzało mi sen z powiek.

Nieraz, w losowych zdawałoby się momentach, nie mogłem „zamontować” telefonu, w celu przeglądania plików… po podłączeniu go przez usb widziałem któryś z komunikatów:

Zdarzało się, że traciłem możliwość przeglądania plików na telefonie w samym środku pracy. Czasem też okno z folderem telefonu włączało się nagle z powrotem, tylko po to, żeby po kilku sekundach znowu zniknąć. Czytaj dalej „Odtwarzacz Banshee a problemy z zamontowaniem telefonu”

13. Sesja Linuksowa – wrażenia

13. Sesja Linuksowa – wrażenia

Bycie mieszkańcem dużego miasta, mimo licznych wad związanych ze smogiem, korkami i hałasem, ma pewną ogromną zaletę: stosunkowo często dzieje się coś ciekawego. Nie mam w tej chwili na myśli, oczywiście, wszelkiej maści koncertów ani imprez (chociaż i one są niewątpliwą zaletą), lecz konferencje branżowe – szczególnie te bezpłatne, takie jak Code::Dive, czy właśnie: Sesja Linuksowa.

13. Sesja Linuksowa miała miejsce na terenie Politechniki Wrocławskiej w dniach 2-3 kwietnia 2016. Stwierdziłem – jak łatwo się zapewne domyślić – że nie może mnie tam zabraknąć, szczególnie że ten weekend miałem akurat wolny 🙂 Czytaj dalej „13. Sesja Linuksowa – wrażenia”

Katastrofa 2be.pl – czyli o bezpieczeństwie danych słów kilka

Niedawno miała miejsce, jedna z większych ostatnimi czasy, awaria serwisu hostingowego.

2be.pl, bo o nich właśnie mowa, nie jest może liderem na tym rynku, ale zaufało im wielu klientów: na stronie silesiasem.pl możemy się dowiedzieć, że w wyniku awarii funkcjonować przestało prawie 2000 stron internetowych.

We wpisie postaram się przybliżyć nieco kulisy tego zdarzenia, a na koniec spróbuję odpowiedzieć na pytanie: co można zrobić, żeby choć trochę zabezpieczyć się przed podobnymi katastrofami – czy to jesteśmy administratorem, czy też niezwiązanym szczególnie z IT klientem firmy hostingowej.

Czytaj dalej „Katastrofa 2be.pl – czyli o bezpieczeństwie danych słów kilka”