niedziela, stycznia 30, 2011

Och Karol 2

Reporter RMF FM do Karola próbujacego się wyrwać z samolotu: 'Czy jest jeszcze jakiś Karol, którego pan nie zagrał?'. Karol wyprowadzany z samolotu przez antyterrorystów: 'Ratunku! Niemcy mnie biją!'. Jakieś plusy filmu? Socha, Glinka i Żmuda ładnie wyglądają w bieliźnie, Foremniak jest już za stara. Polskie komedie to porażka...

sobota, stycznia 29, 2011

IOTest for AntiViruses

Na prośbę Pani Moniki z Politechniki Wrocławskiej wznawiam pakiet do testowania rezydentnych monitorów antywirusowych, który przed laty napisałem dla magazynu komputerowego IT-FAQ.


Zmierzony narzut McAfee VirusScan 8.7.0i wynosi 16%. IOTest został tym razem napisany w C++.NET i WinAPI z wykorzystaniem Visual C++ 2010 Express. Trzeba nadmienić, że IDE w najnowszej wersji _nie_ posiada IntelliSense dla C++, co jest bardzo dużym krokiem wstecz, zważywszy na zaawansowane możliwości jakie oferuje C++.NET.

wtorek, stycznia 25, 2011

Przesiadka z Javy na C

niedziela, stycznia 23, 2011

Scalable networking

Facet udowania, że OpenBSD (s. 65, 73) nie nadaje się do zastosowań sieciowych ;)

Ubuntu 11 usuability



Trzeba przyznać, że projektanci Ubuntu wzorują się na systemie Mac OS X. Bardzo ładny rendering czcionek, miękkie cienie pod oknami i tooltipami, menu nautiliusa zintegrowane z górnym panelem pulpitu. Ekran szerokokątny o proporcjach 16x9 najlepiej pasuje do pola widzenia człowieka, dlatego umieszczenie paska zadań z boku pulpitu jest sensownym rozwiązaniem.



'Pin to launcher' znane z Windows 7.



Pulpity wirtualne - szkoda, że dla każdego nie można mieć oddzielnej tapety.

sobota, stycznia 22, 2011

Nvidia ION2


Rihanna też się cieszy, że grafika Nvidii i Intel Atom dają radę z dekodowaniem video HD.




czwartek, stycznia 20, 2011

VB Reactive/Proactive 2010-12

Virus Bulletin też już używa magicznych ćwiartek, osiami są ochrona reaktywna (definicje wirusów uaktualniane na bieżąco) oraz proaktywna (heurystyka, analiza behawioralna, inteligencja chmurowa). Na dobrą sprawę sensowne produkty powinny być zlokalizowane powyżej współrzędnych (75%, 90%).


Z rozwiązań wielosilnikowych najlepsze są G Data AntiVirus i Trustport. Widać też jak na przestrzeni lat awansował silnik Avira (kiedyś Antivir PE), zaczyna być chętnie licencjonowany (Microsafe, ZeoBit). Z ciekawostek: Coranti ma aż 4 silniki - BitDefender, F-Prot, Normal, Lavasoft; Arcavir próbuje wykrywać wszystkie te wirusy, co światowa konkurencja, ale raz ma za dużo fałszywych alarmów, drugi raz za mało wykryć świeżo grasującego malware-u; mks_vir daleko w tyle (celowo nie piszę MkS_Vir).

sobota, stycznia 15, 2011

Acer Aspire Revo




Nettop, który sprawdza się w salonie. Dwurdzeniowy czterowątkowy Intel Atom D525 1.8GHz (lepszy niż w netbookach, nie ma jednak spekulatywnego wykonywania kodu), do tego Nvidia ION2, połączenie HDMI w rozdzielczości 1920x1080 telewizora Sony Bravia. Klawiatura i myszka są bezprzewodowe.

piątek, stycznia 14, 2011

Adapter Tibco SAP R3 outbound

Adapter jest napisany w C++ i korzysta z natywnych bibliotek SAP. Tibco Designer używa bibliotek Javy SAP JCO opakowujących implementację w C. Adapter implementuje RFC Server, który woła funkcję RfcAccept (podłączenie się do danej instancji SAP-a, parametrem jest gateway i program ID) a następnie w pętli nieskończonej woła RfcListen (sprawdza czy jest nowe żądanie lub odpowiedź, nie czeka) oraz ewentualnie RfcDispatch (dokonuje obsługi żądania). Funkcje outboundowe SAP są dynamicznie rejrestrowane poprzez RfcInstallFunction ze wspólnym handlerem wywoływanym wewnętrznie przez RfcDispatch. Handler to funkcja typu callback. Obsługa wywołań w adapterze jest w praktyce blokująca mimo, że własne RFC_HANDLE jest podawane handlerowi jako parametr wejściowy i tylko RfcListen, RfcDispatch, RfcGetData, RfcSendData są wzajemnie blokujące. Handler rozpoznaje typ funkcji po jej nazwie uzyskanej z RfcGetName. Serwer RFC obsługuje wiele wywołań na jednym połączeniu na zasadzie multipleksera. Handler pobiera dane żądania za pomocą RfcGetData a odsyła odpowiedź poprzez RfcSendData - funkcje obsługują wielowątkowość. W trakcie wywołań RfcDispatch/RfcGetName biblioteka RFC sama nawiązuje ewentualne ponowne połączenie z rejestracją Program ID włącznie, ponieważ po każdym obsłużeniu żądania powinno zostać wywołane RfcClose. Użycie RfcDisplatch i RfcGetName naraz jest dyskusyjne.

Serwer RFC może zarejestrować się pod tym samym Program ID wielokrotnie, żądanie z SAP-a zostanie wysłane do jednej z instancji. Jeśli serwer RFC nie zamknie w czysty sposób połączenia (RfcClose) a przerwaniu ulegnie komunikacja TCP/IP (np. firewall nie dopuszcza połączeń długo będących w stanie idle) połączenie po stronie SAP-a będzie widoczne w stanie WAITING. Standardowo co 300 sekund między SAP-em a serwerem RFC następuje komunikacja keep-alive. Czas ten można skrócić za pomocą zmiennej środowiskowej RFC_MAX_REG_IDLE. Jeśli czas pomiędzy wywołaniami RfcListen jest zbyt duży, to od strony SAP-a będzie to wyglądać jako niedostępność adaptera outbound.

Żeby zobaczyć co się dzieje w środku można ustawić zmienne środowiskowe RFC_TRACE, RFC_DEBUG, RFC_SAFE_MODE na 1. Przydatne są też: CPIC_MAX_CONV (Connection Pool - Internal Connection - Max Connections Value), CPIC_TRACE.

piątek, stycznia 07, 2011

Spektakularny bug w GCC





80483fd: c7 04 24 30 85 04 08 movl $0x8048530,(%esp)
8048404: e8 1b ff ff ff call 8048324
8048409: dd 5c 24 18 fstpl 0x18(%esp) //zdjęcie wyniku ze stosu fp
804840d: c7 04 24 32 85 04 08 movl $0x8048532,(%esp)
8048414: e8 0b ff ff ff call 8048324
8048419: dd 44 24 18 fldl 0x18(%esp) //załadowanie na stos fp
804841d: de f1 fdivp %st,%st(1) //dzielenie ST(0)=ST(0)/ST(1)
804841f: dd 5c 24 20 fstpl 0x20(%esp) //zdjęcie wyniku 1.0/3.0
8048423: c7 04 24 30 85 04 08 movl $0x8048530,(%esp)
804842a: e8 f5 fe ff ff call 8048324
804842f: dd 5c 24 28 fstpl 0x28(%esp)
8048433: c7 04 24 32 85 04 08 movl $0x8048532,(%esp)
804843a: e8 e5 fe ff ff call 8048324
804843f: dc 7c 24 28 fdivrl 0x28(%esp) //dzielenie ST(1)=ST(1)/ST(0)
8048443: dd 44 24 20 fldl 0x20(%esp)
8048447: d9 c9 fxch %st(1)
8048449: df e9 fucomip %st(1),%st // porównanie ST(0) z ST(1)
804844b: dd d8 fstp %st(0)
804844d: 0f 97 c0 seta %al
8048450: 0f b6 d0 movzbl %al,%edx
8048453: b8 34 85 04 08 mov $0x8048534,%eax
8048458: 89 54 24 04 mov %edx,0x4(%esp)
804845c: 89 04 24 mov %eax,(%esp)

Dzielenie fdivrl to dzielenie o podwójnej precyzji obliczeń (wynik ma typ double), podczas gdy fdiv to dzielenie o pojedyńczej precyzji. Obie operacje na takich samych argumentach zwrócą inne wyniki numeryczne. No i masz babo placek.

niedziela, stycznia 02, 2011

Benchmark XStream




133 MB XML-i zawierających zserializowane obiekty Javy StaxDriver obrabia prawie o połowę krócej niż DomDriver.

sobota, stycznia 01, 2011

Mapa EAI

Wraz ze zwiększaniem się liczby przepływów i komponentów na platformie integracyjnej zmniejsza się jej zarządzalność. Po przekroczeniu pewnego punktu krytycznego niezbędne jest stworzenie mapy istniejącej infrastruktury. Jest parę opcji:

1. Narzędzie do monitorowania, które na poziomie JVM odnajdzie usługi i zależności między nimi
2. Repozytorium usług (usługi wprowadzane ręcznie, półautomatycznie, lub automatycznie za pomocą 1.)
3. Specjalistyczne narzędzie do stworzenia mapy infrastruktury (napisane pod dane środowisko w danej firmie)




Trzecie rozwiązanie jest najtańsze mimo, że kosztuje tyle co nowy samochód średniej klasy.
Gdyby dostawca potrafił rozszerzyć funkcjonalność 3. do 2. a nawet 1. to mielibyśmy narzędzie idealne, ale już tylko o rząd wielkości tańsze od HP Systinet czy SAG CentraSite.