Raspberry Pi - Moduł Zilog ePIR Alarm
Autor: Marcin Kasiński
15.02.2014 17:07:49 +0100
W niniejszym artykule postaram się opisać wykorzystanie Raspberry Pi oraz czujnika ruchu Zilog ePIR do zbudowania alarmu. Czujnik, przedstawiony na zdjęciu obok, to ePIR SEN-09587 jeszcze niedawno możliwy był do kupienia w sklepie sparkfun. Obecnie wycofany on jest ze sklepu sparkfun, ale można go kupić na aukcjach internetowych. Do obsługi czujnika stworzyłem dedykowaną aplikację JAVA wykorzystującą bibliotekę Pi4J. Aplikacja reaguje na zdarzenia generowane przez czujnik w momencie detekcji ruchu, które to zdarzenia będą powodowały wysyłanie emaila na zadany adres. Jako , że zaobserwowałem czasami alarmy "nieprawdziwe" do aplikacji wprowadziłem poprawkę generującą powiadomienie w momencie pojawienia się kilku zdarzeń następujących po sobie.
W przedstawionym rozwiązaniu potrzebne nam będzie:
- Moduł Raspberry Pi
- Moduł Zilog ePIR SEN-09587
- Biblioteka Pi4J
Tomcat - Klaster. Środowisko rozproszone oraz HA (wysoka dostępność)
Autor: Marcin Kasiński
02.11.2013 18:23:49 +0100
W niniejszym artykule postaram się opisać środowisko pozwalające na rozłożenie obciążenia aplikacji internetowych pomiędzy wiele instancji serwera WWW oraz Tomcat. Jako środowisko pokazowe wykorzystane zostaną w sumie 4 serwery z zainstalowanymi komponentami HAProxy, keepalived, httpd oraz tomcat.
Dla środowiska postawione zostały 2 główne cele.
Pierwszym jest ciągłość pracy środowiska w przypadku awarii serwera poprzez zdublowanie serwerów. Każdy z komponentów środowiska występuje w dwóch instancjach i w normalnych
warunkach oba serwery obsługują przychodzący ruch. Celem zdublowania jest to aby awaria jednego ze zdublowanych komponentów nie wpłynęła na ciągłość pracy.
W przypadku awarii cały ruch będzie obsłużony przez drugi działający serwer do momentu, aż awaria nie zostanie rozwiązana.
Drugim celem jest replikacja sesji aplikacji pomiędzy nodami.
W przypadku prostego zdublowania serwera tomcat każdy z nodów ma własną sesję.
W przypadku awarii jednego z nodów i ruch zostanie przekierowany na drugi powstanie wtedy nowa sesja.
Oznacza to, że zostaną utracone wszelkie dane przechowywane w sesji danego użytkownika. Aby temu zapobiec należy sesje aplikacji przechowywać równocześnie na wszystkich nodach.
W takiej sytuacji w przypadku awarii po przekierowaniu ruchu na drugi nod nie powstanie nowa sesja , tylko zostanie odnaleziona konkretna sesja związana z danym użytkownikiem.
czytaj więcej
STM32F4Discovery - Coocox program HelloWorld
Autor: Marcin Kasiński
23.09.2013 09:41:49 +0200
xxxxxxxxxxxxx
czytaj więcej
HBase - Instalacja prostego klastra
Autor: Marcin Kasiński
15.12.2012 20:41:49 +0100
W dzisiejszych czasach obserwowana jest coraz większa potrzeba zarządzania bardzo dużą ilością danych.
Ilości tych danych w wielu przypadkach przerasta możliwości relacyjnych baz danych.
Okazuje się, że rozwiązaniem jest wykorzystanie rozproszenia w taki sposób aby zamiast używania jednego , czy też kilku serwerów bazodanowych,
wykorzystywać ich farmę składającą się z wielu instancji.
Oczywiście ilość potrzebnych instancji zależna jest od ilości przechowywanych danych oraz specyfiki operacji wykonywanych na tych danych.
czytaj więcej
Hibernate - Jak ułatwić programowanie baz danych w języku JAVA
Autor: Marcin Kasiński
08.12.2012 20:41:49 +0100
Pisząc aplikacje JAVA komunikujące się z bazą danych zaczynamy od komunikowania się za pomocą API JDBC.
Jest to uniwersalne API pozwalające na wykonywanie dowolnych operacji SQL na bazie.
Nie jest tu zbytnio istotne z jaką bazą się komunikujemy. za samą natywną komunikacje z bazą odpowiada sterownik odpowiedni dla danego silnika bazy.
Rolą programisty jest tutaj napisanie odpowiednich operacji SQL SELECT, INSERT, UPDATE DELETE itp.
Czasami developer zna podstawy języka SQL i nie chce zbytnio się skupiać na programowaniu zapytań SQL do bazy.
Czasami mimo nawet dużych kompetencji programisty w zakresie SQL chce się on skupić tylko i wyłącznie na programowaniu logiki JAVA.
Tutaj rozwiązaniem może być
Hibernate
, biblioteka przysłaniająca operacje SQL.
czytaj więcej
CXF - Zabezpieczenie usług za pomocą WS-Security
Autor: Marcin Kasiński
23.11.2012 20:41:49 +0100
W poniższym artykule postaram się opisać konfiguracje bezpiecznej komunikacji z użyciem CXF i WS-Security. Zakładam, że czytający artykuł ma podstawową wiedzę o tym jak zbudować prostą usługę CXF oraz klienta CXF. W artykule opisane będą następujące technologie:
- cxf
- Spring Framework
- WSS4J
W przykładzie poniższym klient zabezpiecza wysłane zapytanie XML poprzez jego zaszyfrowanie oraz podpisanie.
Usługa CXF podczas weryfikacji sprawdza podpis i odkodowuje komunikat.
W naszym przykładzie opisze konfiguracje z wykorzystaniem certyfikatów oraz UsernameToken.
czytaj więcej
CXF - JMS z wykorzystaniem WebSphere MQ
Autor: Marcin Kasiński
15.08.2012 20:06:49 +0200
Biblioteka CXF pozwala w łatwy sposób implementować usługi Web Services bez zbytniego skupiania się na kwestiach technologicznych. Używając tej biblioteki możemy położyć nacisk na implementacje samej logiki operacji jakie chcemy udostępnić jako Web Service. Wiele narzędzi programistycznych posiada kreatory w łatwy sposób generujący aplikacje webową z biblioteką CXF. Standardowo przy generowaniu takiej aplikacji mamy nasze operacje udostępnione jako Web Service z wykorzystaniem protokołu HTTP.
W poniższym artykule postaram się opisać użycie transportu JMS w aplikacji CXF z wykorzystaniem IBM WebSphere MQ.
Zakładam, że czytający znają podstawy CXF i potrafią wygenerować prostą aplikację CXF udostępnianą poprzez Web Service.
czytaj więcej
WebSphere MQ - Konfiguracja : Najlepsze praktyki
Autor: Marcin Kasiński
03.07.2012 21:33:49 +0200
Standardowa konfiguracja WebSphere MQ może swobodnie być używana w środowiskach developerskich.
Zdecydowanie jednak nie nadaje się ona dla środowiska produkcyjnego.
Poniższe rady pozwalają odpowiednio przygotowaś środowisko aby ustrzec się problemów podczas codziennego użytkowania środowiska.
czytaj więcej
WebSphere MQ - JMS przykład wykorzystania
Autor: Marcin Kasiński
27.06.2012 16:03:49 +0200
Technologia JMS, to pewnego rodzaju uniwersalny interfejs (kolejna warstwa) do systemów kolejkowych.
Systemy takie przystosowane są do obsługi komunikacji asynchronicznej. Pozwalają one na wysyłanie i odbieranie
komunikatów pomiędzy systemami. Ważną zaletą technologii JMS jest to, że przesłania ona dedykowane dla
konkretnego systemu kolejkowania API własnym ustandardyzowanym API, co powoduje, że ułatwione jest przejście
z jednego systemu na inny bez dużych zmian w kodzie aplikacji. Jako, że jest to kolejna warstwa aplikacyjna
istnieje tutaj pewien narzut na wydajności. Jeśli nie ma jakiś szczególnych wymagań co do wydajności, wydaje
się, że zaleta uniwersalności przeważy te wydajnościowe niedoskonałości.
czytaj więcej
IBM Message Broker - Manipulowanie treścią komunikatu
Autor: Marcin Kasiński
12.06.2012 12:45:49 +0200
W tym miejscu postaram się przedstawić kilka przykładów manipulacji danymi komunikatu.
Parsowanie CDATA
Wyobraźmy sobie sytuacje, że w wejściowym komunikacie mamy dane CDATA, które będziemy chcieli w przepływie
sparsować za pomocą odpowiedniego parsera, tak aby odczytać to pole nie jako łańcuch tekstowy, ale jako drzewo XML.
Mamy wejściowy XML o poniższej strukturze, gdzie mamy tagi MESSAGE/A, a w nim wartość CDATA zawierający dynamiczną
strukturę XML.
czytaj więcej
WebSphere MQ - Persystencja komunikatów
Autor: Marcin Kasiński
26.04.2012 12:59:49 +0200
Persystencja komunikatów jest bardzo ważnym parametrem oznaczającym czy komunikaty maja być trwale
przechowywane przez menadżer kolejek i nie mogą zaginąć. Komunikaty dzielimy na persystentne i nie persystentne.
Jeśli komunikat jest persystentny oznacza to, że będzie on logowany w pamięci trwalej, co powoduje to, ze nie
ma możliwości jego utraty. Komunikat taki przetrwa nawet restart menadżera kolejek. W związku z tym, że
komunikaty takie musza być logowane ich procesowanie trwa zdecydowanie dłużej niż komunikatów niepersystentnych.
Komunikaty niepersystentne z kolei nie gwarantują dostarczenia do adresata ze względu na swoja ulotna naturę.
Nie są one logowane tak jak komunikaty persystentne, ale za to są o wiele szybciej procesowane.
czytaj więcej
WebSphere MQ - Triggering kolejek i aplikacji
Autor: Marcin Kasiński
26.04.2012 12:59:49 +0200
Triggering aplikacji
Często w przypadku komunikacji MQ aplikacja uruchamiana jest niezależnie od menadżera kolejek, łączy się z
nim, czyta jej kolejki, procesuje komunikaty cały oczekując na nowe komunikaty w kolejce wejściowej. Istnieją
jednak sytuacje, w których tego typu rozwiązanie można zastąpić bardziej odpowiednim. Wyobraźmy sobie sytuacje,
kiedy komunikaty, które aplikacja musi przetworzyć pojawiają się w jej kolejce wejściowej bardzo rzadko. Może
się okazać, że aby nie trzymać zasobów niewykorzystywanych, a to ma miejsce np., kiedy aplikacji przez długi
czas oczekuje na kolejce na nowe komunikaty bez rezultatu, wskazane by było uruchomienie aplikacji w momencie
pojawienia się komunikatu w kolejce. Taka uruchomiona aplikacja może przeczytać dany komunikat z kolejki
przetworzyć go i inne znajdujące się w kolejce i rozłączyć się po zaraz po ich przetworzeniu lub po jakimś
określonym w aplikacji czasie. Na tym właśnie polega triggering aplikacji.
czytaj więcej
WebSphere MQ - Konfiguracja Accounting and Statistics
Autor: Marcin Kasiński
26.04.2012 12:59:49 +0200
Komunikaty Accounting and Statistics są specjalnymi komunikatami generowanymi przez menadzer zawierającymi
informacje statystyczne. Czy informacje te będą generowane zależy od konfiguracji kolejki, którą chcemy monitorować
oraz menadżera kolejek.
czytaj więcej
WebSphere MQ - Komunikacja synchroniczna i asynchroniczna
Autor: Marcin Kasiński
24.04.2012 12:59:49 +0200
Ze względu na specyfikę możemy rozróżnić dwa sposoby komunikacji, komunikacja synchroniczna i asynchroniczna.
Komunikacja synchroniczna, to standardowy sposób komunikacji, kiedy to wysyłając zadanie blokując czekamy ze
zwróceniem interfejsu do klienta, aż zadanie zostanie przetworzone. W przypadku krótkich transakcji taka sytuacja
jest do przyjęcia, jednak w przypadku bardzo długich transakcji nie ma ona racji bytu. Weźmy na przykład zadanie
wygenerowania raportu, którego przetworzenie trwa długi czas. W takiej sytuacji nie miałoby sensu aby użytkownik
systemu przez ten okres nie mógł nic zrobić w aplikacji. W takich właśnie sytuacjach stosuje sie komunikacje
asynchroniczna.
czytaj więcej
WebSphere MQ - Konfiguracja połączenia szyfrowanego SSL
Autor: Marcin Kasiński
24.04.2012 12:59:49 +0200
WebSphere MQ ma możliwość za pomocą SSL zabezpieczyć komunikacje kliencka, jak również komunikacje
pomiędzy menadżerami.
Każdemu menadżerowi przypisana jest własna baza certyfikatów i tą bazę będzie on używał przy połączeniach
szyfrowanych. Baza ta jest w standardowym formacie pliku kdb.
Ważne tu jest, że w celu poinformowania menadżera jakiego klucza prywatnego ma używać alias tego klucza musi
nosić odpowiednią nazwę.
czytaj więcej
WebSphere MQ - Klastry w praktyce
Autor: Marcin Kasiński
28.01.2012 12:20:49 +0100
Klastry MQ, to rozwiązanie pozwalające na połączenie większej ilości menadżerów kolejek w grupę. Rozwiązanie to pozwala na programowe osiągniecie wysokiej dostępności jak również na zmniejszenie ilości kanałów do zarządzania.
czytaj więcejIBM Message Broker - Intergacja narzędzia z WSRR
Autor: Marcin Kasiński
28.01.2012 12:20:49 +0100
Konfiguracja połączenia z WSRR
mqsireportproperties WBRK7_BROKER -c ServiceRegistries -o DefaultWSRR -r mqsichangeproperties WBRK7_BROKER -c ServiceRegistries -o DefaultWSRR -n endpointAddress \ -v https://localhost:9443/WSRR6_1/services/WSRRCoreSDOPort mqsisetdbparms WBRK7_BROKER -n DefaultWSRR::WSRR -u logindowas -p haslodowasczytaj więcej
JAVA - bezpieczeństwo
Autor: Marcin Kasiński
24.04.2011 12:59:49 +0200
SSL
Protokół SSL (Secure Socket Layer) został w początkowej wersji opracowany przez firmę Netscape i stał
się wkrótce standardem, powszechnie stosowanym w Internecie. Ostatnia, trzecia wersja protokołu (SSLv3) stała
się podstawą do opracowania nieco ulepszonego i firmowanego przez IETF protokołu TLS (Transport Layer Security).
czytaj więcej
Wszystkie pogrupowane tematycznie
Newsletter
Jeżeli chcesz być na bieżąco informowany o aktualnościach i poradach IT zapisz się do naszego newslettera.