sobota, kwietnia 25, 2009

Oracle Workshop for WebLogic 10.3 pod Linuksem

W przypadku wywalania się aplikacji na starcie należy wyedytować plik /bea/workshop_10.3/workshop.ini dodając linię:
-Dorg.eclipse.swt.browser.XULRunnerPath=/usr/lib/xulrunner-1.9 z poprawną ścieżką do XULRunnera.

Do Oracle Service Bus przydałyby się jakieś testowe WebService'y - są np. tutaj.

wtorek, kwietnia 21, 2009

Sun Fuji Milestone 5

Lekkie ESB techniczne (czyli w zasadzie sama warstwa routingu), w którym przepływy można wyklikać w przeglądarce. Do dyspozycji są adaptery: bazodanowy, http, jms, rss, ftp, email. Proste transformacje komunikatu mogą być dokonowywane przez węzły serwisowe JRuby.



Kiedy kontrolka JDBC będzie obsługiwać Oracle'a, będzie można zacząć myśleć o praktycznych zastosowaniach.

poniedziałek, kwietnia 20, 2009

Oracle buys Sun

No to teraz będą mieć trzy różne serwery aplikacyjne, dwie różne maszyny wirtualne i 2.5 ESB. Najważniejszym aspektem całego newsa jest to, że będą mieć system operacyjny i hardware, na którym najlepiej działa baza danych. Ultimate end user solution: SPARC + Solaris + Oracle 11g.

piątek, kwietnia 17, 2009

JRockit Mission Control

Śledzimy fragmentację...
JAVA_OPTS="-Xms384M -Xmx384M -Xmanagement:ssl=false,authenticate=false,autodiscovery=true"
JROCKIT_OPTS="-Xgc:genpar -XXcompactRatio:100"
JROCKIT_OPTS="-Xgc:singlecon -Xns32m -XXcompactRatio:100 -XXtlaSize:min=128K,preferred=512K -XXlargeObjectLimit=128K"



jrcmd 0 start_management_server
jrcmd 0 start_rmp_server

wtorek, kwietnia 14, 2009

Proxy na program

#include <windows.h>
#include <process.h>

int WINAPI WinMain (HINSTANCE hThisInstance,
HINSTANCE hPrevInstance,
LPSTR lpszArgument,
int nFunsterStil)

{
char* argv[32];
for (int i=0; i < 32; i++)
argv[i] = 0;

int argp = 2;
char *args = lpszArgument;
while(*args!=0) {
if (*args==' ') {
argv[argp++] = ++args;
args[-1] = 0;
}
}
argv[0] = "AppToFilterArgs.exe";
argv[1] = args;
return execv("AppToFilterArgs", argv);
}

Można prościej z ShellExecute(0, "open", "AppToFilterArgs.exe", args, NULL, SW_SHOW); albo bardziej skomplikowanie z CreateProcess. Pierwszy kod jest pod Windowsem blokujący - proces główny czeka na zakończenie AppToFilterArgs.exe (podobno _execv w oryginalnym VisualStudio 2005+ jest polecane jako zgodne ze standardem POSIX, jak tak dalej pójdzie to nie będzie już można polegać na błędach w oprogramowaniu MS...).

poniedziałek, kwietnia 13, 2009

G DATA AntiVirus 2010

W porównaniu do wersji 2009 zostały zmienione ustawienia silnika BitDefender (włączona analiza behawioralna), w ramach cloud security (czyli heurystyka sieciowa jak w Artemizie) podejrzane pliki wysyłane są do analizy. Zmieniło się GUI.



Oryginalny BitDefender 2009 ma funkcjonalność sprawdzania, czy zainstalowane oprogramowanie (Windows, przeglądarki internetowe, itp.) są w najnowszych załatanych wersjach.



niedziela, kwietnia 12, 2009

Analiza zmian po instalacji

Narzędzie TrackWinstall pozwala na porównanie stanu systemu sprzed instalacji danego programu ze stanem po instalacji. Narzędzie analizuje Rejestr oraz katalogi Windows i Documents and Settings. Żeby porównać inne katalogi można posłużyć się narzędziem junction od SysInternals i w katalogu Windows stworzyć hardlinka.

sobota, kwietnia 11, 2009

Jak włączyć McAfee Artemis w VirusScan Enterprise 8.7

Artemiza to nazwa dla technologii weryfikującej wskazania heurystyki po stronie serwera AVERT Labs. Obecnie włącza się ją oddzielnie dla każego komponentu: skanowanie na żądanie, skanowanie poczty, skanowanie przy dostępie. Pierwsze dwa załatwia zakładka wydajność:


Artemizę dla skanowania On Access włącza się w rejestrze w HKLM/Software/McAfee/VSCore/On Access Scanner:



Jak to działa? 50 klientów dobijało się do serwera z zapytaniem o plik trojan.exe o rozmiarze 256101 z pewną liczbą punktów dostarczoną przez analizę heurystyczną (liczba ta jednak była za mała do zaliczenia pliku do malware). 51 zapytanie dostanie odpowiedź, że to niebezpieczny plik, czyli zagrożenie Generic!Artemis.

SunBelt VIPRE

SunBelt ma własnego antywirusa. Firma twierdzi, że produkt jest szybki, nie wymagający dużo zasobów i ma bardzo dobrą wykrywalność. Subiektywnie rzecz biorąc działającej w tle Ochrony Aktywnej nie czuć, wszystkie komponenty zużywają 36MB RAM-u, zaś definicje wirusowe bazują na przepakowanych bazach Kaspersky'ego (plus wkład własny firmy SunBelt). Wygląda na to, że mamy fajnego antywirusa.




piątek, kwietnia 10, 2009

AntiVirenKit 2009

AVK miał parę lat temu dwa silniki: AVP i RAV. Po wykupieniu firmy GeCAD przez Microsoft, G DATA zmieniło drugi silnik na BitDefendera. I generalnie wszyscy byli/są przekonani że w AntiVirenKicie są silniki Kaspersky'ego i BitDefendera. Okazuje się jednak, że w wersji 2009 jest Avast i BitDefender (nazwane jako AV A i AV B)! Można to zobaczyć w Common Files\G DATA\AVKScanP.



Wersja korporacyjna ma Avasta i F-Prota. Kiedy ostatni raz robiłem testy antywirusów F-Prot był bardzo szybki, dzięki prostym sygnaturom, ale miał słabą heurystykę. BitDefender był pod względem wykrywalności mutacji lepszy. Teoretycznie komputer do pracy biurowej bywa słabszy od domowego, przeznaczonego do gier i dlatego powinien mieć antywirusa mniej spowalniającego system, ale czy wraz ze wzrostem wydajności musi spadać wykrywalność?



Skaner sieciowy (proxy) jest fajny.

Skaner plików ma prawdziwy wielowątkowy silnik pisany pod procesory wielordzeniowe. Domyślny priorytet skanera jest wysoki. W rezultacie na laptopie z odpalonym skanowaniem całego systemu czuć zapach prawie topiącego się plastiku. Szybkie obejście problemu to zmniejszenie priorytetu procesu AVK.exe i ustawienie maski afiniczności CPU za pomocą
Task Managera.

wtorek, kwietnia 07, 2009

BeOS is alive

Haiku pre-alpha. To by było genialne na netbooki.



Działa w VirtualBoksie 2.2, dysk VMDK.

poniedziałek, kwietnia 06, 2009

Jak wywalić JVM

import sun.misc.Unsafe;

public final class EvilCode {

public final static Unsafe getUnsafe () {
try {
Field field = Unsafe.class.getDeclaredField("theUnsafe");
field.setAccessible(true);
return (Unsafe)field.get(null);
}
catch (Exception ex) {
throw new RuntimeException("can't get Unsafe instance", ex);
}
}

public final static void main(String[] args) {
Unsafe u = getUnsafe();
Random r = new Random();
for (int i=0; i < 1000000; i++) {
u.setMemory(r.nextLong(), 1L, (byte)0x0);
}
}
}

#
# An unexpected error has been detected by Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xb7df628a, pid=7635, tid=3084217232
#
# Java VM: Java HotSpot(TM) Client VM (11.0-b16 mixed mode, sharing linux-x86)
# Problematic frame:
# C [libc.so.6+0x7528a] memset+0x1a
#

niedziela, kwietnia 05, 2009

Jak zrobić chmurę Java EE

Ja bym to zrobił tak:
  • Całość w oparciu o maszyny wirtualne VirtualBox odpowiednio z bazą Oracle XE, Postgresem i serwerem aplikacyjnym Apache Geronimo. Wirtualki byłyby tworzone z szablonów.
  • Środowisko deweloperskie (też wirtualne) na OpenSUSE 11.1 dostępne z apletu Javy w oknie przeglądarki bazujące na XRDP.
  • Ponieważ klient mógłby mieć parę wirtualek, to do usprawnienia autoryzacji wszystkie systemy podpięte byłyby do LDAP-a, na tej samej maszynie byłby SVN.
  • Na koncie użytkowika ustawiona by była qouta na fs, cpu, mem.
  • Interfejs do zarządzania infrastrukturą byłby zrobiony w Grailsach.
  • Wirtualki mogłyby wystawiać WebService'y dostępne z zewnątrz poprzez Apache ProxyPass.
  • Sewery: jeden na LDAP + SVN + Grails GUI + ProxyPass, następne hostujące konta użytkowników i maszyny wirtualne.
  • GUI w Grailsach przy okazji wystawiałoby serwisy, z których korzystałby bajerancki plugin do Eclipse'a.
Wersja beta szacowana na 2 osobomiesiące (z czego plugin do Eclipse'a 1 osobomiesiąc).
Skoro to takie proste, to teraz wszyscy zaczną oferować nam chmury...

Aptana Cloud

Wersja najtańsza oferuje 256MB i 5GB na MySQL-a i Tomcata-a. W wersji trial zużycie swapa wynosiło 40%, a z logów tomcata wynikało, że parę razy miał za mało pamięci, żeby wstać. Tną koszty. Całość działa w oparciu o kontenery Solaris-a 11. Mój kolega znający się na serwerach twierdzi, że ten cały cloud computing to nowa nazwa marketingowa na hosting, przy czym hosting jest tańszy. Patrząc na ofertę Aptany, przyznaję mu rację.











środa, kwietnia 01, 2009

Prawie niewidoczna autentykacja NTLM dla Acegi

Zrobiłem plugin NTLM zanim jeszcze SpringSecurity miał obsługę tej autentykacji. Założenie jest proste: korzystając z jCIFS i hasza dostarczonego przez IE logujemy się do kontrolera domeny. Jeśli autentykacja powiodła się to w formatce logowania zamiast hasła ustawiamy specjalny token sprawdzany po drugiej stronie przez plugin. Oprócz NTLM dodatkową autoryzacją jest LDAP (żeby na czyimś koncie windowsowym zalogować się jako inny użytkownik). Udostępniam przykładowy projekt, ponieważ w konfiguracji Grails 1.1 + Acegi 0.5 dostarczona przez Spring-a autoryzacja nie chce działać.