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.

środa, grudnia 29, 2010

SOA Systematic Approach


Microsoft oznacza tutaj .NET Framework + ASP.NET + IIS + Windows Process Activation Services (application pool) + Windows Server AppFabric (distributed cache) + Sharepoint.

Gartner ma zastrzeżenia do Tibco, że produkty są duże, drogie i mało znane/słabo promowane. Z plusów są bardzo wydajne (eXtreme Transaction Processing) i zaawansowane.

Komponenty WSO2 mają minimalną funkcjonalność, ale są lekkie i otwarte.

niedziela, grudnia 26, 2010

Yaris 2011







W Japonii już do kupienia. Co ciekawe w wersji z silnikiem 1.33 można dostać napęd 4x4.

piątek, grudnia 24, 2010

OpenSUSE 11.4 updated Look&Feel




czwartek, grudnia 23, 2010

Grzegorz Ciechowski

niedziela, grudnia 19, 2010

Talend ETL






Bardzo sensowne narzędzie ETL. Wspiera wirtualnie wszystkie bazy danych (JDBC), oprócz tego ma dedykowane komponenty m.in. do Oracle-a, MSSQL Server-a, PostgreSQL-a. Ma connector do SAP-a. Ma kontrolki do WebService-ów, zwykłego HTTP, SCP, FTP, POP3, kodu Javy i Groovy. Wspiera JMS-a, co ciekawe kontrolka została napisana z myślą o Tibco EMS. Narzędzie w wersji Community kosztuje 0 zł.

sobota, grudnia 18, 2010

Orange nie zmienia cen


Ceny bez zmian, ot tak, z dobrego serca. Wpisane na sztywno 1,22 w procedurach PL/SQL nie miało żadnego wpływu na taką decyzję.

środa, grudnia 15, 2010

Invalid Temporary Destination

czyli przychodzi dostawca po kasę za naprawę błędów w oprogramowaniu...

Kodeks Cywilny
Art. 556. § 1. Sprzedawca jest odpowiedzialny względem kupującego, jeżeli rzecz sprzedana ma wadę zmniejszającą jej wartość lub użyteczność ze względu na cel w umowie oznaczony albo wynikający z okoliczności lub z przeznaczenia rzeczy, jeżeli rzecz nie ma właściwości, o których istnieniu zapewnił kupującego, albo jeżeli rzecz została kupującemu wydana w stanie niezupełnym (rękojmia za wady fizyczne).

Art. 564. W wypadkach przewidzianych w artykule poprzedzającym utrata uprawnień z tytułu rękojmi za wady fizyczne rzeczy nie następuje mimo niezachowania terminów do zbadania rzeczy przez kupującego i do zawiadomienia sprzedawcy o wadach, jeżeli sprzedawca wadę podstępnie zataił albo zapewnił kupującego, że wady nie istnieją.

np. audyt kodu przeprowadzany przez eksperta explicite wliczany w koszty projektu

Art. 566. § 1. Jeżeli z powodu wady fizycznej rzeczy sprzedanej kupujący odstępuje od umowy albo żąda obniżenia ceny, może on żądać naprawienia szkody poniesionej wskutek istnienia wady, chyba że szkoda jest następstwem okoliczności, za które sprzedawca nie ponosi odpowiedzialności. W ostatnim wypadku kupujący może żądać tylko naprawienia szkody, którą poniósł przez to, że zawarł umowę, nie wiedząc o istnieniu wady; w szczególności może żądać zwrotu kosztów zawarcia umowy, kosztów odebrania, przewozu, przechowania i ubezpieczenia rzeczy oraz zwrotu dokonanych nakładów w takim zakresie, w jakim nie odniósł korzyści z tych nakładów.

§ 2. Przepisy powyższe stosuje się odpowiednio, gdy kupujący żąda dostarczenia rzeczy wolnych od wad zamiast rzeczy wadliwych albo usunięcia wady przez sprzedawcę.

Art. 568. § 1. Uprawnienia z tytułu rękojmi za wady fizyczne wygasają po upływie roku, a gdy chodzi o wady budynku - po upływie lat trzech, licząc od dnia, kiedy rzecz została kupującemu wydana.

§ 2. Upływ powyższych terminów nie wyłącza wykonania uprawnień z tytułu rękojmi, jeżeli sprzedawca wadę podstępnie zataił.

§ 3. Zarzut z tytułu rękojmi może być podniesiony także po upływie powyższych terminów, jeżeli przed ich upływem kupujący zawiadomił sprzedawcę o wadzie.

Za zawiadomienie można uznać zgłoszenie incydentu dostawcy w ramach usług utrzymania IT.

wtorek, grudnia 14, 2010

Jazda na lusterkach



Jak widać przez tylną szybę Punto nic nie widać... Ledwo co widać kierunkowskazy. Boczne szyby też całe w śniegu za wyjątkiem obszarów przy lusterkach.