piątek, września 30, 2011

Pomidorowa Jest Najsmaczniejsza

wtorek, września 27, 2011

Ksiądz Sowa redaguje serwis wyborczy

'Duchowni w ogóle nie powinni pisywać do "Gazety Wyborczej" - medium występującego przeciw wartościom chrześcijańskim' - ks. Tadeusz Isakowicz-Zaleski

niedziela, września 25, 2011

Yaris III

'Jak sprawuje się zawieszenie, automatyczna skrzynia biegów dla silnika benzynowego (czy przy gwałtownym wciśnięciu gazu skrzynia "przejdzie z piątki na trójkę"), jak wygłuszony jest diesel'.  Zawieszenie jest przyjemnie zestrojone - na dziurach i przy gwałtowniejszych manewrach nie czuć bujania, kołysania, ale jednocześnie nie jest sztywno. Skrzynia CVT zapewnia płynną jazdę, przy mocnym wciśnięciu gazu po odczuwalnym opóźnieniu "przechodzi z piątki na dwójkę", wtedy silnik warcy-rycy-cescy (wrc) - odgłosy są mało przyjemne nawet mimo dobrego wygłuszenia, więc należy nauczyć się inaczej operować gazem. 36 cm długości więcej ma Auris, który z takim samym wyposażeniem (1.6 Premium względem 1.33 Prestige) jest droższy o 6800zł. Jak na premierę nowego modelu było mało zainteresowanych. Kryzys.

piątek, września 23, 2011

EMS LB jak FT


Połączenie skonfigurowane jest następująco: tcp://10.22.57.30:7222|tcp://localhost:7222. Co 5 sekund jeden proces wysyła komunikat typu ping. Zgadnijcie, co się stanie gdy wyłączę pierwszy interfejs sieciowy? Z perspektywy procesu - nic, komunikacja będzie działać nadal. Z perspektywy providera JMS - zabrane zostanie z puli niedziałające połączenie. W tra można podać java.property.tibco.tibjms.reconnect.attempts 999999999,1000 oraz java.property.tibco.tibjms.reconnect.attempt.timeout 500. Takie LB działa jak FT, LB oznacza tylko zbalansowane tworzenie połączeń przez TibjmsConnectionFactory.

Infrastructure by convention

Wszystkie udostępniane przez komponent po JMS-ie serwisy są odnotowane w zmiennych globalnych. Iterując po jtransport/operations/* można automatycznie wygenerować polecenia tibemsadmin, które wykona specjalista utrzymania przed wdrożeniem.

J(MS)Transport design patterns

Założenie jest takie, że gotowe wzorce powinny być proste w użyciu i zapobiegać błędom dewelopera, a z drugiej strony nie ograniczać funkcjonalności dawanej przez oryginalne oprogramowanie. Proces 'prepareNewMessage' ma tylko dwa wymagane parametry: nazwa przepływu biznesowego (pomaga w pracy ludziom z IT Operations) i nazwa usługi. Wyjście procesu tworzącego nowy komunikat zawiera gotowe wejście dla aktywności 'JMS Queue Sender', 'JMS Queue Requestor', 'Get JMS Queue Message', wystarczy tylko zrobić drag&drop.

Proces odbierający jest tworzony z szablonu, zmianie podlega tylko proces HandleMessage, który jest właściwą implementacją usługi. Odebrany komunikat jest walidowany: czy nadal spełnia uwarunkowania czasowe, czy trafił na właściwe środowisko, czy jest zgodny z wzorcem transportowym, czy deweloper po stronie klienta usługi poprawnie obsłużył transakcyjność. W razie zbyt dużej wartości JMSXDeliveryCount proces pośpi trochę lub skasuje komunikat - deweloper nie musi pamiętać o 'sleep on error'.



Odsyłanie odpowiedzi też jest bardzo proste. Proszę zwrócić uwagę, że błędy techniczne wysyłane są jako właściwości komunikatu JMS a nie w Body, tam mogą być tylko odsyłane błędy biznesowe.

Wzorzec jest explicite wersjonowany, w projekcie można używać różnych wersji artefaktów.

środa, września 21, 2011

Studenci dają czadu

Co kandydatka PiS do Sejmu powinna wiedzieć o in vitro

Po pierwsze: zarodek ma inne DNA niż mama i tata i ma według katolików podmiotowość osoby ludzkiej. Rodzice dają dziecku ciało a Bóg duszę. Pozbywanie się nadmiarowych zarodków jest ich zabijaniem. Tłumaczone jest to wysokimi kosztami operowania na tylko jednym zarodku, co sprowadza się do stawiania pieniędzy ponad ludzkim życiem. Także samo podejście do "produkowania" ludzi budzi wątpliwości. Sztuczne zapłodnienie nie jest leczeniem bezpłodności. Tyle dzieci czeka na adopcję i miłość, dlaczego nie jest to opcją? Z jednej strony zabijanie dzieci poprzez aborcję, z drugiej "produkowanie" dzieci w laboratorium - trudno zrozumieć logikę współczesnej cywilizacji śmierci. Stanowisko Kościoła Rzymskokatolickiego, co do godności życia można odnaleźć w encyklikach Jana Pawła II. Temat ten jest poruszany na lekcjach religii w liceum i rekolekcjach stanowych, więc brak własnych przemyśleń o in vitro jest niezrozumiały. Kandydatka PiS do Sejmu RP powinna znać poglądy Marka Jurka.

poniedziałek, września 19, 2011

Marek Siwiec ma rację

Spot PO mami Polaków kasą. Siwiec nie napisał tylko, że Przewodniczący Parlamentu Europejskiego dopilnuje, żeby komisarz Lewandowski tę kasę załatwił. Buzek, Lewandowski i Tusk załatwią nam tyle kasy, że normalnie będziemy złotą wyspą. Rolnicy dostaną tyle dopłat, że będą mogli sami bez problemu zapłacić za ZUS i KRUS i to dwa razy! Emeryci będą mogli wreszcie kupić i jedzenie i leki! Absolwenci polskich uczelni będą mogli przebierać w ofertach pracy jak w ulęgałkach! Wszystko to dzięki polityce miłości Donalda. Unia kocha nasz rząd za otwartość, tolerancyjność i nieklękanie przed księdzem. Grecja powinna brać z nas przykład. Za innym europosłem: Ciekawe czy ciemny lud to kupi?

Update: Siwiec wkurzył się na Lewandowskiego, ale się przeliczył, bo instytucjonalnej Unii Europejskiej obce są jakiekolwiek standardy etyczne, a tzw. korupcja polityczna jest jedną ze standardowych metod postępowania. A może Unia po prostu boi się powrotu Kaczyńskiego...?

sobota, września 17, 2011

Wyniki ankiety a wielkość próby

Sondaż onet.pl: Kto, Twoim zdaniem, byłby najlepszym kandydatem na premiera po wyborach? Sondaż rozpoczęto o 9:45, po 15 minutach oddano prawie 1000 głosów.









JMS duplicate prevention BW pattern

Jeśli po aktywności wysyłania komunikatu JMS process Tibco BW jeszcze coś robi i pojawia się błąd powodujący brak potwierdzenia komunikatu (acknowledge mode = client), który uruchomił proces, to taki proces będzie generował duplikaty. Proces z automatycznym potwierdzaniem w sytuacjach awaryjnych może gubić komunikaty. Najsensowniejszym rozwiązaniem jest lokalna (w ramach tej samej sesji JMS) transakcyjna obsługa wiadomości - zarówno ta odebrana jak i wysłana zostaną potwierdzone w momencie poprawnego wyjścia z grupy transakcyjnej. Przy transakcyjnej obsłudze JMS-a nadal możemy sterować ilością sesji.

Obejściem na zduplikowane komunikaty już leżące na kolejce lub temacie JMS jest użycie ciężkiej aktywności Checkpoint. Uwaga: duplicateKey nie jest globalne tzn. przy komponentach active-active wykrywanie duplikatu działa tylko per instancja komponentu.

Push&Commit w Tibco

Zacznijmy od tego, że Tibco BusinessWorks w zasadzie nie wspiera transakcji rozproszonych XA. Napisałem "w zasadzie" dlatego, że Tibco BusinessWorks JDBC connection pooling źle działa z TIBCO BusinessWorks XA Transaction Manager (Arjuna kupiona przez Tibco w wersji OEM) - xa_suspend(xid) i xa_resume(xid) wołane na fizycznie różnych połączeniach z bazą Oracle generują błąd (podobnie jak xa_suspend(xid) i xa_start(xid) wołane na tym samym połączeniu). Obejście to ustawienie rozmiaru puli JDBC oraz FlowLimit/MaxJobs na 1. Problem wynika z architektury silnika BW. Można rozwiązać go stosując sterownik-wrapper JDBC przypinający instancję procesu Tibco do pojedynczego połączenia.

Jest inne (też złe) obejście realizowane przez następujący wzorzec projektowy: Implementacja usługi rozbita jest na dwie części - push i commit/pop. W części push klient usługi wysyła standardowy request, który jest walidowany technicznie i biznesowo. Jeśli request nie przechodzi walidacji, klient otrzymuje odpowiedź o błędzie natychmiast. Jeśli request jest poprawny, to wołany jest nowy proces w trybie spawn i zwracana jest odpowiedź o przyjęciu komunikatu do obsługi zawierająca identyfikator transakcji. Stworzony proces aktywnością Wait czeka na commit transakcji. Proszę zauważyć, że na tym etapie obsługi komunikatu nie ma czekania wątków z blokowaniem - nie czeka się na zakończenie stworzonego procesu, a aktywność Wait zwalania wątek do puli Engine Threads. Klient wysyła kolejny komunikat potwierdzający transakcję i w odpowiedzi dostaje dane, które powinien przy standardowym podejściu dostać na wyjściu operacji request-reponse lub informację o błędzie (zazwyczaj błąd grubego kalibru typu transaction rollback, end of communication stream, connection closed). W innej wersji wzorca klient może dostać odpowiedź od razu (IPC procesu rodzica z dzieckiem), wtedy operacja commit nie zwraca żadnych danych.

Czy takie podejście ma plusy? Klient między wywołaniem requestu a commitem może po swojej stronie prowadzić jakieś przetwarzanie danych, a nie bezczynnie czekać. Wzorzec dużą wagę przykłada do walidacji danych. Klient decyduje o czasie wykonania operacji commit, a więc ma dużą domniemaną kontrolę nad timeout-ami. Poprzez odpowiednie sygnalizowanie stanu przetwarzania (Notify: processing) i dobrze dobrane czasy wygasania notyfikacji, klient po wywołaniu aktywności 'Wait for response' ma dokładną odpowiedź biznesową lub status, że przetwarzanie jeszcze trwa lub że już się skończyło poprawnie lub wystąpił błąd. Istnienie statusu przetwarzania wymusza wzorzec.

Minusy: przy źle określonych uwarunkowaniach czasowych możemy mieć do czynienia z pollingiem, przeciążeniem pamięci komponentu Tibco, przedwczesnym kasowaniem odpowiedzi. Nadal nie będziemy mieli prawdziwej transakcji rozproszonej (xa_prepare jest persystentne): jeśli operacja commit dla pierwszej w kolejności usługi zwróci błąd, nie wywołamy operacji commit dla pozostałych usług i jesteśmy szczęśliwi, ale jeśli po paru udanych commitach dostaniemy błąd, to nie jesteśmy w stanie wycofać już transakcji (a przy prawdziwym xa_prepare można zrobić rollback). Jeśli nie używamy JMS-a tylko 'spawn process', to oczekująca transakcja nie przetrwa restartu pojedynczego komponentu. Prawdziwe XA radzi sobie przy błędach infrastruktury technicznej, ten wzorzec nie. Wzorzec jest trudny w poprawnej implementacji.

Wnioski: Tibco, SOA, Order Management - wybierz dowolne dwa. Nie mając prawdziwej transakcyjności zmuszeni jesteśmy do stosowania kompensacji (saga pattern), co nie jest szybkim i prostym rozwiązaniem pudełkowym.

piątek, września 16, 2011

Java, SAP i Tibco

Do przetestowania adaptera outboundowego Tibco SAP R3 wcale nie jest potrzebny SAP. W testach automatycznych można wykorzystać kod Javy i konektor SAP JCo - ten sam, którego używa Tibco Designer.

środa, września 14, 2011

Aplikacje w Windows 8

Pulpit też traktowany jest jako aplikacja. Kliknięcie na przycisk start na pulpicie kieruje do ekranu startowego.








Nowy Windows jest dostosowany do urządzeń dotykowych, smartphone-ów i tabletów. Trzeba jednak pamiętać, że Google Android jest obecny na nich od dawna. Windows 8 może co najwyżej przyczynić się do wzrostu popularności dotykowych monitorów LCD i telewizorów.

Ekran startowy w Windows 8










Ekran startowy ma wirtualną szerokość sporo większą od standardowego fizycznego ekranu, a jego zawartość powinna być scrollowana. Ekran posiada menu kontekstowe wywoływane ruchem ręki po ekranie (trzeba przesunąć scrollbar poza zakres) prezentujące wybrane pozycje jako panele po prawej stronie ekranu. Ekran startowy zabezpieczony jest w podobny sposób co w Androidzie - nakładką z zegarkiem. Nakładkę trzeba przesunąć ręką do góry i odsłonić ekran logowania. Po zalogowaniu widzimy ekran startowy z szeregiem kafelków (tiles) reprezentujących aplikacje nowego i starego typu.

Kafelki można przesuwać i zmieniać ich rozmiar.

Jak zresetować Windows 8?

Na ekranie startowym wybieramy 'Command Prompt cmd' i wpisujemy 'shutdown /r'

Miziamy palcami szybkim ruchem w lewo, pokazuje się czarne menu, zawiera ono pozycję Preferences, którą wybieramy, pojawia się panel m.in. z ikoną Power, po dotknięciu do wyboru jest 'Shut down' lub 'Reboot'.

Windows 8 Setup







Windows 8 jest przystosowany do urządzeń z dotykowymi ekranami, o wysokim współczynniku DPI. Instalator najpierw kopiuje pliki, potem restart, przy czarnym ekranie instaluje sterowniki urządzeń, konfiguruje rejestr, restart, przy zielonym tle konfiguruje system dla użytkownika, w tym prosi o podanie konta Windows Live - jedno internetowe konto użytkownika ma przechowywać spersonalizowane ustawienia dla wszystkich używanych przez niego komputerów.

wtorek, września 13, 2011

Photoshop Elements

Po lewej oryginalny obrazek Kasi z Facebooka - widać nieprofesjonalnie zrobiony retusz górnej części nosa, prawdopodobnie w Photoshop Elements. Po prawej stronie poprawiłem Kasię w Paint Shop Pro.