Raspberry Pi - Moduł Zilog ePIR Alarm

Autor: Marcin Kasiński
15.02.2014 17:07:49 +0100

Moduł Zilog ePIR SEN-09587

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
czytaj więcej

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ęcej

IBM 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 haslodowas
czytaj 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