niedziela, stycznia 30, 2011
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
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
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
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.
Subskrybuj:
Posty (Atom)