środa, sierpnia 31, 2011

Jak zarządzać konfiguracją BW na produkcji

U czwartego operatora mobilnego ładnie rozwiązane jest zarządzanie konfiguracją i wdrożeniami. Całe zadeployowane komponenty platformy integracyjnej są wersjonowane w SVN. Na środowisko preprod wgrywana jest nowa paczka, tam następuje testowanie i commit do SVN-a. Na produkcji jest jedynie svn up. Jak ten wzorzec można przenieść na Tibco?
Katalog /export/home/system/bw-adapter jest wersjonowany w SVN na środowisku preprod i prod.
W katalogu mamy podkatalogi: bw (skrypty startowe/klastrowe), config (konfiguracja tra-środowisko, zmienne per środowisko) oraz repo (repozytorium BW przeniesione z datafiles). Skrypty startowe w zależności od zmiennej środowiskowej ustawionej w powłoce Unix używają odpowiednich plików konfiguracyjnych.
Wdrożenie lub wycofanie wdrożenia polega na wykonaniu svn switch --revision. Prosto, szybko i bezpiecznie. Warto używać sprawdzonych wzorców i zasady KISS.

poniedziałek, sierpnia 29, 2011

Jan Tomaszewski

Facet z dużą odwagą cywilną.

M jak "Misio", czyli "Listek". Różnica między Listkiewiczem a Latą jest jak porównanie wodospadu Niagara ze spłuczką klozetową. "Misiu" zna sześć języków, Lato - trzy. Dwa od butów, jeden swój, który i tak trzeba jeszcze tłumaczyć na polski.

L jak Lato Grzegorz. Nawet Copperfield nie zrobiłby z niego inteligenta. Ten człowiek to porażka.

K jak Kręcina Zdzisław. Pierwsza osoba funkcyjna w związku. Podziwiam Zdzisia, który przy każdym prezesie jest sobą i gratuluje mu… hmm… odwagi? Zaimponował mi, kiedy w samolocie powiedział, że Lato to burak, a Listkiewicz – węgorz. Wydaje mi się, że to cała kwintesencja tego związku, gdzie każdy na każdego ma haka. Każdy o czymś wie, tyle że tutaj wyszło "co myślisz po trzeźwemu, powiesz po pijanemu".

P jak PZPN. Ostatni bastion ortodoksyjnej komuny. Powtarzam to po raz któryś. Tajni współpracownicy gonią ubeków i byłych agentów. Dlaczego tak się dobrze trzymają? Jak to byli ubecy, mają na wszystkich haki. Na mnie nie mają, choć raz zarzucali mi, że trzy razy się rozwodziłem i nie mogę być szefem Komisji Etyki. To im odpowiedziałem: "Przepraszam, a czy ja jestem szefem Komisji Etyki kółka różańcowego czy komisji przy Polskim Związku Piłki Nożnej?".

S jak Smuda Franciszek. Największy prymitywista w historii polskiej piłki. Nikifor. Jedyny człowiek w Polsce, który ma swoje zdanie, ale sam się z nim nie zgadza.

sobota, sierpnia 27, 2011

Rzut okiem na Mule Studio



ESB żeby się sprzedawać musi mieć narzędzia graficzne - istnieje taka bariera psychologiczna. Jak ESB ma GUI, to dewelopment będzie szybszy, tańszy, czas time-to-market będzie krótszy itd. Mule Studio we wczesnej wersji beta próbuje sprostać wyzwaniu. Na razie jest używalny, dla tych co znają Mule-a albo ServiceMix-a, dla zupełnie początkujących będzie ciężki w użyciu, gdyż wiele akcji nie jest zautomatyzowanych, użytkownik sam musi wiedzieć, co i gdzie wpisać i że są momenty, gdy musi przebudować projekt, żeby coś się pojawiło. W każdym razie kierunek jest dobry.

Timeout w Tibco Infranet Adapter

Timeouty używane przez adapter są w paru miejscach, niestety Tibco Designer nie umożliwia konfiguracji wszystkich. Pierwszy to timeout klienta, drugi timeout połączenia a trzeci timeout transakcji (jeśli operacja ma zaznaczoną opcję wykonywania w transakcji). Żeby ustawić wszystkie trzeba po prostu przeedytować plik dat z repozytorium adaptera.



piątek, sierpnia 26, 2011

Ultimate SOA testing tool



SoapUI 4.0

wtorek, sierpnia 23, 2011

Inteligentna warstwa transportowa



Message Context przy używaniu JMS-a nie trzeba wkładać do XML-a jako elementu opakowującego oryginalny komunikat, nagłówki JMS z powodzeniem wystarczą, zwłaszcza że można je wykorzystać do routingu. Nagłówki JMS można transformować do nagłówków SOAP i HTTP.

OriginalOrigin(1) - system będący pierwotnym źródłem komunikatu, nazwa kodowa
OriginalTarget(1) - system będący pierwotnym celem komunikatu, nazwa kodowa
BusinessFlowNames^ - nazwy biznesowych przepływów obsługiwanych przez przepływ techniczny; po starych logach i bieżących z awarii można szybko ustalić dotknięte funkcjonalności i dostosować reakcję do ważności przepływów biznesowych; komunikaty w ramach reużywalnych usług można dla ważnych procesów przekazywać do dedykowanych komponentów; pole wyliczane jako zbiór
srcComponent^ - komponent aktualnie wysyłający komunikat: adapter, broker, proxy/router; nazwa kodowa jako przedrostek zawiera nazwę środowiska: prod, preprod, test, dev
dstComponent* - komponent, który ma odebrać wysyłany komunikat - jeśli jest on znany;  nazwa kodowa jako przedrostek zawiera nazwę środowiska: prod, preprod, test, dev
dstOperation - nazwa operacji, która ma obsłużyć komunikat
dstOperationVer^ - wersja usługi (operacji); można szybko ustalić podczas awarii, że wysyłane są komunikaty starego typu do nowo wdrożonego komponentu lub nowe komunikaty do starego komponentu; można wersjonować usługi i zapewnić równoległe działanie za pomocą routingu.
dstCommType^ - rodzaj komunikacji: request-response synchronicznie, asynchronicznie, one-way, event, ping itp.; pole zawiera zbiór
dstTimeLeft^- pozostały czas na przetworzenie komunikatu, służy do ustawiania timeout-ów JDBC, JMS, HTTP itp., uaktualniany na każdym hopie; uwzględniane w obsłudze pól JMSTimestamp i JMSExpiration.
addWaitTime^ - dodatkowy czas czekania na odpowiedź przez nadawcę komunikatu, jeśli wykonawca operacji przekroczył dstTimeLeft, ale mieści się w dstTimeLeft+addWaitTime to odsyła odpowiedź, w przeciwnym przypadku wycofuje lub potwierdza operacje zgodnie z oczekiwanym zachowaniem transakcyjnym i nic nie odsyła; wynikowy timeout nadawcy to dstTimeLeft+addWaitTime
replyTo* -adres JMS lub WS, na który trzeba dostarczyć odpowiedź
priority - priorytet komunikatu
flowPath^ - pełna ścieżka, przez które hosty, komponenty, operacje, identyfikatory zadań/procesów/wątków komunikat przeszedł
retryNumber^ - ilość prób przetworzenia komunikatu, jeśli na początku się nie udało; musi być brana pod uwagę razem z dstTimeLeft
txHandling^ - obsługa transakcji: none, XA, best effort, compensate, detect duplicates; jeśli komponent dostaje komunikat z nieprawidłowym/nieobsługiwanym założeniem, co do transakcyjności, powinien go odrzucić i odesłać błąd; pole powinno być zapisywane w metryczce procesu/usługi w katalogu usług tak, żeby deweloperzy korzystający z usługi wiedzieli jak działa
idLevelN* - identyfikator do korelacji, wiele poziomów, aktualnie wypełniany jest pierwszy wolny
corrLevelN* - identyfikator do korelacji, wiele poziomów, aktualnie wypełniany jest pierwszy wolny
kvPairs* - dodatkowe parametry w postaci klucz1=wartość1|klucz2=wartość2
errorArea* - obszar błędu, wartość słownikowa, wykonawca komunikatu nie musi odesłać dokładnego dziedzinowego komunikatu o błędzie w JMS Body, może zalogować u siebie konkretny błąd/wyjątek i odesłać komunikat z wypełnionymi errorArea+errorCode
errorAreaName* - nazwa systemu, który wygenerował błąd
errorCanRepeat* - czy po otrzymaniu błędu można ponowić wywołanie i jest szansa, że się powiedzie: yes, no, maybe, duplicate danger
errorCode* - konkretny kod błędu
warnings* - ostrzeżenia, wartość słownikowa; przykładowo: SLA na granicy przekroczenia, komponent będzie niedługo w stanie obsługi w oknie serwisowym, komponent jest w starej wersji i jest przeznaczony do wyłączenia
meta* - pole do różnych brzydkich rzeczy (np. przechowywania oryginalnego requestu w celu porównania, czy broker dobrze zrobił mapowanie), którego używanie powinno być zabronione

(1) - wypełnia tylko adapter/channel
*- opcjonalne
^ - pola mogą być wypełniane automatycznie lub wartościami domyślnymi
pola error i warnings używane są tylko w odpowiedziach

Dzięki odseparowaniu nagłówków od JMS Body minimalizujemy narzut na przepakowywanie komunikatów, w JMS Body może być dowolny tekst, format, w tym XML.

OriginalOrigin, OriginalTarget, BusinessFlowNames i flowPath są bardzo ważne dla skutecznego działania IT Operations.

Heurystyka PERSISTENT/NOT_PERSISTENT: timeLeft > 3 minut lub dstCommType = (one-way, event) wymusza tryb dostarczania komunikatu z zapisem na dysk, w innych przypadkach stosowany ulotny tryb przechowywania. Wybór trybu przez dewelopera może być błędny, a późniejsze konsekwencje spore, dlatego ustawianie trybu powinno być wbudowane i automatyczne.

Do tworzenia nagłówków JMS można wykorzystać dwa procesy: prosty makeTransportProperties (ustawianie wszystkich rzeczy automatycznie) i zaawansowany makeTransportPropertiesEx. Wyjście z procesów zasila wejście aktywności wysyłającej, która nie jest ukrywana przed deweloperem. Może oczywiście istnieć wysokopoziomowy proces do wysyłania i odbierania np. transparentnie powtarzający komunikaty w ramach timeLeft i retryNumber.

GetQueueMessage is evil

Aktywność 'Get Queue Message' w Tibco BW jest wąskim gardłem i może powodować problemy wydajnościowe przy masowych przepływach. Przy każdym wywołaniu jest tworzona nowa sesja JMS i nowy konsument. Stworzenie pierwszego konsumenta JMS z selektorem na "zimnej" sesji jest bardzo kosztowne, zwłaszcza przy dużym obciążeniu kolejki - podłączonych wielu receiverach/instancjach komponentu i braku ograniczeń przepływów (MaxJobs > 1000).

Jak zrobić request-response bez 'Get Queue Message' i bez JMS Requestor-a? Dwa oddzielne procesy w modelu asynchronicznym.

A co z 'Wait for JMS Queue Message'? Ta aktywność tworzy anonimowe procesy (i startery) obsługiwane przez standardową pulę wątków silnika BW, więc trzeba być z nią ostrożnym. Ponadto startery odbierają komunikaty we wszystkich instancjach komponentów i mogą wczytać odpowiedź w komponencie, który nie wysłał skorelowanego z nim żądania - w takim wypadku odpowiedź zostanie zgubiona. Dlatego każda instancja komponentu powinna mieć oddzielną kolejkę do odbierania odpowiedzi lub każdy nadany komunikat powinien mieć dodatkowy identyfikator instancji komponentu używany potem w selektorze 'Wait for JMS Queue Message'. Aktywność w trybie Client Ack i Auto wykorzystuje tylko jedną sesję JMS, dlatego przy szeregowym przetwarzaniu wartość pola konfiguracyjnego Event Timeout powinna być odpowiednio duża. Pamięć też...

niedziela, sierpnia 21, 2011

Kret

Dziędziel, Szyc, Pszoniak i temat teczek. To już było - w serialu Oficerowie. Tu temat jest pokazany z innej perspektywy. Dla Pawła Kowala 31 tysięcy za Audi A4 kombi 2.4 z 2005 roku to kupa kasy, dla byłego oficera SB 60000 zł to tylko pieniądze na życie. 'Te prawicowe pedały chcą mi odebrać emeryturę! Ja nie będę miał za co żyć!' Salowy murzyn we francuskim szpitalu mówiący po polsku - sympatyczny epizod.

Strach przed wyjściem prawdy na światło dzienne. Strach, który przygniata serce. Strach przed spojrzeniem ludziom w oczy. Strach przed własnym sumieniem. Z drugiej strony życie w zakłamaniu, wmawianie sobie na siłę innej wersji swojej historii, tak że prawda zaczyna mylić się z kłamstwem, jedno kłamstwo z innym kłamstwem. Mimo wszystko Zygmunt Kowal jest ofiarą.

Jest jeszcze jedna kwestia: reżyser Lewandowski opisuje pokolenie bez perspektyw w Polsce, dorabiające na zachodzie. Obrazy są bardzo autentyczne. I zaskakujące: polonia, do której trzeba mówić po francusku, ale potrafiąca bez problemu zaśpiewać Mazurka Dąbrowskiego.

SLD bez lewicowej wrażliwości

Józef Oleksy żali się Gazecie Wyborczej, że Napieralski wyrugował go z kandydowania. Wszyscy ci, co mieli w SLD lewicową wrażliwość albo zostali wykluczeni albo przeszli do PO. Biedroń poszedł do Palikota. Może czas rozwiązać partię?



Rzecznik SLD Kalita o wykluczonym dzisiaj z klubu SLD pośle: "Było to przykre i niezrozumiałe, że w dniu święta, jakim jest konwencja własnej partii Witold Gintowt-Dziewałtowski zdecydował się na wystąpienie na konferencji konkurencyjnej partii [PO]".

sobota, sierpnia 20, 2011

Ubuntu 11.10



Ewolucyjne zmiany. Kontrolka wyszukiwania została przeniesiona do dołu i w lewo, nowa lokalizacja jest bardziej ergonomiczna. Ikonka 'power' (która względem zawartości menu była semantycznym nadużyciem) została zastąpiona ikonką komputera - powinna być ona monochromatyczna. Tytuł okna odróżnia się od menu, bo ma teraz cieniowaną czcionkę.


Zmaksymalizowane okno w Unity3d ma inne przyciski: zamknij, minimalizuj, maksymalizuj. Pierwszy kojarzy się z błędem, pozostałe dwa są prawie niewidoczne. Chęć uzmysłowienia użytkownikowi, że przy zmaksymalizowanym oknie obramowanie okna jest połączone z menu należy docenić, jednak wykonanie nie jest najlepsze. Przyciski powinny różnić się nieznacznie od standardowych, zamiast zamiany wypełnionych kolorem obszarów lepszy byłby efekt podbicia gammy do białości.


W Unity3d menu wyszukiwania ma rozmyte tło z warstwy pulpitu, która znajduje się poniżej. Rozmycie rozjaśnia także kolor uzyskany z mieszania, więc ciężko jest dobrać tapetę, żeby uzyskać sensowny kolor wynikowy. Kolor czcionek jest zawsze biały, a powinien przy jasnym tle być zamieniany na czarny (kontrastowy).
Teraz kontrolka wyszukiwania ma ikony-kategorie: wszystko, aplikacje, foldery, muzyka.


W Unity2d wyszukiwanie ma czarne rozmyte tło - stare rozwiązanie jest chyba lepsze. Unity2d jest zauważalnie szybsze od wersji 3d.


Ubuntu 11.10 zachęca do przechowywania plików w chmurze.

piątek, sierpnia 19, 2011

Bezpieczna jazda



Jeżdżąc bez tablicy:
  • nie jest nam groźny fotoradar
  • jak nas zatrzyma policja, powiemy że odpadła albo uciekniemy - nie znajdą nas bo nie mają numerów
  • możemy zajeżdżać drogę i pchać się na chama na pracowników administracji państwowej - nie mając numeru nie są w stanie przez kolegów ustalić naszych danych i nasłać kontroli z urzędu skarbowego, ZUS-u, KRUS-u itp.

W przyszłości



A gdyby tu był nagle węzeł Konotopa w przyszłości i wasz synek mały tędy przechodził w przyszłości, którego jeszcze nie macie. Więc nie mówcie mi, że siedzi z tyłu !!!!!!

Klient Java 1.5 do WebLogic-a 11g działającego na Javie 1.6

http://download.oracle.com/docs/cd/E12840_01/wls/docs103/client/jarbuilder.html

czwartek, sierpnia 18, 2011

Bezpieczna architektura EMS



Mamy dwa niezależne serwery EMS1 i EMS2. Mamy też dwie instancje komponentu używającego EMS-a. String Provider URL skonstruowany jest z wykorzystaniem failoveru (,) oraz load-balancingu (|). Jeśli w trakcie wysyłania komunikatu padnie pierwszy serwer, to wykorzystywany jest drugi po przecinku. Odpowiedzi odbierane są z dwóch lokalizacji rozdzielonych znakiem pipe. Awarie połączenia do pojedynczego serwera zakrywa biblioteka EMS.

Teraz pojawia się pytanie: co z procesami startowanymi zegarkiem, które mają działać active-active? Sekcja krytyczna z blokadą typu "multi engine".

A co z procesami aktywowanymi przez komunikat HTTP/SOAP? Alteon lub Apache mod_proxy_balancer.

Przy takim podejściu nie musimy też mieć klastrowego systemu plików. Wdrożenia są bezpieczniejsze, bo zawsze podmienia się po jednym komponencie z dwóch, jeśli wdrożenie pierwszego się udało, można wdrażać drugi.

poniedziałek, sierpnia 15, 2011

Generator danych testowych

http://www.bogus.ovh.org/generatory/all.html - biznes może sobie wyklikać NIP, PESEL, REGON, dowód osobisty.

wtorek, sierpnia 09, 2011

Problem z SSL-em na linii .NET - Tibco

Objawy są takie, że klientowi .NET urywa się połączenie SSL, bo używa TLSv1 w sposób nieobsługiwany przez bibliotekę kryptograficzną IAIK. Po włączeniu debugowania: java.property.javax.net.debug=ssl widać:

ssl_debug(70): Received v3 client_hello handshake message.
ssl_debug(70): Client requested SSL version 3.1, selecting version 3.1.
ssl_debug(70): Creating new session A1:B2:C3:D4:E5:F6:A7:A8...
ssl_debug(70): CipherSuites supported by the client:
ssl_debug(70): SSL_RSA_WITH_RC4_128_MD5
ssl_debug(70): SSL_RSA_WITH_RC4_128_SHA
ssl_debug(70): SSL_RSA_WITH_3DES_EDE_CBC_SHA
ssl_debug(70): SSL_RSA_WITH_DES_CBC_SHA
ssl_debug(70): SSL_RSA_EXPORT1024_WITH_RC4_56_SHA
ssl_debug(70): SSL_RSA_EXPORT1024_WITH_DES_CBC_SHA
ssl_debug(70): SSL_RSA_EXPORT_WITH_RC4_40_MD5
ssl_debug(70): SSL_RSA_EXPORT_WITH_RC2_CBC_40_MD5
ssl_debug(70): SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA
ssl_debug(70): SSL_DHE_DSS_WITH_DES_CBC_SHA
ssl_debug(70): SSL_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA
ssl_debug(70): CompressionMethods supported by the client:
ssl_debug(70): NULL
ssl_debug(70): Sending alert: Alert Fatal: unexpected message
ssl_debug(70): Shutting down SSL layer...
ssl_debug(70): SSLException while handshaking: First message not ClientHello.
ssl_debug(70): Closing transport...

Workaround dla .NET-u:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Ssl3;

lub

Workaround dla Tibco:
java.property.TIBCO_SECURITY_VENDOR=j2se

niedziela, sierpnia 07, 2011

Java z dużą ilością pamięci

java -Xmx12g -XX:MaxPermSize=64M -XX:PermSize=32M -XX:MaxNewSize=2g
-XX:NewSize=1g -XX:SurvivorRatio=128 -XX:+UseParNewGC -XX:+UseConcMarkSweepGC
-XX:MaxTenuringThreshold=0 -XX:CMSInitialOccupancyFraction=60 -XX:+CMSParallelRemarkEnabled
-XX:+UseCMSInitialOccupancyOnly -XX:ParallelGCThreads=12 -XX:LargePageSizeInBytes=256m

java -Xms8g -Xmx8g -XX:PermSize=64M -XX:MaxPermSize=256M -XX:-OmitStackTraceInFastThrow
-XX:SurvivorRatio=2 -XX:-UseAdaptiveSizePolicy -XX:+UseConcMarkSweepGC
-XX:+CMSConcurrentMTEnabled -XX:+CMSParallelRemarkEnabled -XX:+CMSParallelSurvivorRemarkEnable
-XX:CMSMaxAbortablePrecleanTime=10000 -XX:+UseCMSInitialOccupancyOnly
-XX:CMSInitialOccupancyFraction=63 -XX:+UseParNewGC -Xnoclassgc

sobota, sierpnia 06, 2011

Trzynastka


Kiedy sąsiedzi po przeczytaniu w Komputer Świecie artykułu o sieciach WiFi nabierają tajemnej wiedzy, że to nie jest dobrze kiedy 90% ruterów w bloku używa kanałów 11 i 6, i kiedy zaczynają nadawać na naszych kanałach 1, 3, czas na działania radykalne. Większość sprzętu sieciowego przeznaczonego na rynki amerykański i europejski razem proponuje kanały z zakresu 1-11 (USA), nie biorąc pod uwagę, że w Europie legalny zakres to 1-13 (a w Japonii 1-14). Wybierając kanał 13 możemy poprawić jakość połączenia. Co do czternastki: na Linksysie trzeba mieć Tomato a na laptopie Linuksa.

czwartek, sierpnia 04, 2011

Autostrada A1





Autostrada A1 się buduje... Ale na Euro 2012 za Chiny ludowe nie zdążą...

Wyższa Szkoła Kultury Społecznej i Medialnej





Na uczelni wykłada Ojciec Tadeusz Rydzyk, który ma doktorat Uniwersytetu Kardynała Stefana Wyszyńskiego w Warszawie.

Radio Maryja









Radio Maryja mieści się w Toruniu przy ulicy Żwirki i Wigury, po przejechaniu przez most droga jest prosta, na trasie są tablice z logiem radia i strzałkami. Dużo gorzej jest trafić do Wyższej Szkoły Kultury Społecznej i Medialnej (Droga Starotoruńska przy Szosie Bydgoskiej).

Kruszwica i Płowce



Licheń