/* jak na snoopdos 3.0 to troszke chyba za dlugie... mozna uciac sporo lania wody, nawet ja bym sie zmiescil w 5kb -> jarek */ SNOOPDOS 3.0 Kamil Iskra SnoopDOS jest programem, sîuûâcym do "podglâdania". Umoûliwia on monitorowanie niektórych czynnoôci, wykonywanych przez inne programy. Zacznijmy moûe jednak od krótkiego "rysu historycznego". Na poczâtku byî Chaos. Programy, aby sië uruchomiê, potrzebowaîy przeróûnych zewnëtrznych plików. Gdy tych plików nie znajdowaîy, po prostu sië nie uruchamiaîy, nie informujâc uûytkownika, czego im brak, czasami na dodatek zawieszajâc komputer. Uûytkownicy klëli, na czym ôwiat stoi... Aû znalazî sië w koïcu Jeden Sprawiedliwy. Wpadî on na tyleû genialny, co banalny pomysî. Jak chyba wszyscy wiedzâ, system Amigi to przede wszystkim biblioteki, zawierajâce funkcje. Dostëp do tych funkcji jest rozwiâzany za pomocâ tzw. tablic skoków. Sprytny program moûe "wskoczyê" we fragment takiej tablicy, odpowiedzialny za wywoîywanie pewnej funkcji systemu operacyjnego, i wykrywaê próby uûycia tej funkcji przez inne programy. Tym sprytnym programem byî wîaônie SnoopDOS, a "Sprawiedliwym" -- jego autor, Eddy Carroll z Irlandii. SnoopDOS w wersjach 1.x byî programem bardzo prostym: wyôwietlaî w oknie typu CON: informacje o wîaônie wykonywanych funkcjach biblioteki dos.library, która jest odpowiedzialna za wszelkie operacje na plikach, katalogach itp. Program byî prymitywny, miaî znikome moûliwoôci konfiguracyjne. Zaczëîy wiëc powstawaê pisane przez Naôladowców programy-monitory, podobne do SnoopDOS-a, ale bardziej rozbudowane i wygodniejsze w obsîudze. Bardzo popularny staî sië np. DOSTrace, napisany przez Petera Stuera. Program ten miaî okno z gadûetem przewijania, dziëki któremu moûna byîo sië cofnâê do wczeôniej wykonywanych funkcji. Konkurencja byîa wiëc dla uûytkowników, jak to zwykle bywa, korzystna. Oprócz Naôladowców pojawili sië jednak równieû Podszywacze. Ûycie uîatwiaî im fakt, ûe SnoopDOS byî rozpowszechniany wraz z kodem úródîowym -- wystarczyîo wiëc zmieniê numer wersji, dopisaê w dokumentacji jakieô bzdury o tym, co sië w programie zmieniîo, i "wypuôciê" go w ôwiat jako najnowszâ wersjë. Co gorsza, te "nowe wersje" czësto byîy "wyposaûone" w róûne zîoôliwe wirusy. To spowodowaîo, ûe nigdy nie pojawiîa sië wersja oznaczona symbolem "2" -- po 1.7 nastâpiîa od razu 3.0. No, nie tak od razu, bo prace nad niâ trwaîy niemal rok (a prace nad wersjâ 1.0 -- niecaîy tydzieï). Wersjë 3.0 znalazîem w Aminecie, w katalogu "util/moni". Archiwum o nazwie "snoopdos30.lha" zajmuje 128 KB. Pomimo niemiîych doôwiadczeï z przeszîoôci, autor postanowiî opublikowaê równieû kod úródîowy -- znajduje sië on w archiwum "snoopdos30_src.lha" o dîugoôci 228 KB. Program ten nie jest juû wîaôciwie nowoôciâ -- liczy sobie ponad rok -- nie widziaîem jednak dotychczas ûadnej wzmianki na jego temat... Muszë przyznaê, ûe po rozpakowaniu archiwum byîem przeraûony -- dokumentacja programu liczy bowiem 238 KB! Po pierwszym uruchomieniu programu zrozumiaîem jednak, dlaczego. Jego moûliwoôci sâ olbrzymie! SnoopDOS 3.0 zostaî napisany zgodnie z obecnie panujâcymi w ôrodowisku Amigi trendami -- program wymaga OS 2.0, ma GUI przystosowujâce sië do uûywanej na ekranie czcionki, dokumentacjë w standardzie AmigaGuide, jest zlokalizowany jëzykowo (w pakiecie "WFMH Locale PL" znalazîem wykonany przez Konrada Dubiela polski "catalog"). Po uruchomieniu otwiera sië okno, jak na rysunku 1. Przewaûajâca jego czëôê jest zapeîniona informacjami o wykonanych bâdú wîaônie wykonywanych funkcjach systemowych. W tym wypadku wyôwietlane byîy nastëpujâce informacje: liczba porzâdkowa, nazwa procesu wywoîujâcego funkcjë, nazwa funkcji, nazwa obiektu, dla jakiego funkcja zostaîa wywoîana (np. nazwa pliku do skasowania), opcje (np. czy plik ma byê otwarty do odczytu, czy do zapisu) oraz rezultat wykonania funkcji. Przeznaczenie wiëkszoôci gadûetów, znajdujâcych sië poniûej, jest chyba oczywiste -- nie jest zresztâ moim celem opisanie obsîugi programu, a raczej wskazanie cech wyróûniajâcych go spoôród innych tego tupu. Warto wiëc zwróciê uwagë na gadûet Pauza. Jego uûycie pozwala monitorowaê programy krok po kroku. Program wywoîujâcy którâô z monitorowanych przez SnoopDOS funkcji jest zatrzymywany, w oknie jest wypisywane, co program usiîuje zrobiê. Dopiero po naciôniëciu spacji SnoopDOS wykonuje danâ czynnoôê -- bywa to bardzo przydatne, gdy chcemy spokojnie przeôledziê, co program "kombinuje", albo gdy np. program jest tak úle napisany, ûe przy braku jakiegoô pliku natychmiast resetuje komputer -- bez Pauzy nie zobaczylibyômy, jakiego pliku mu brak... Interesujâcâ moûliwoôciâ jest równieû tworzenie tzw. logu -- bieûâcego raportu z pracy. Moûna go skierowaê zarówno do pliku, jak i na drukarkë bâdú do portu szeregowego. SnoopDOS jest w bardzo szerokim stopniu konfigurowalny, co przedstawia rysunek 2. Aby zmieôciê wszystkie okna naraz, musiaîem zwiëkszyê rozdzielczoôê ekranu, zmniejszajâc równoczeônie czcionkë. Konfiguracja dzieli sië na dwie czëôci: Ustawienia i Funkcje. Pierwsza czëôê umoûliwia skonfigurowanie ôrodowiska pracy. Szczególnie interesujâce wydajâ sië byê tu dwie opcje: moûliwoôê wybrania czcionki dla tekstów wyôwietlanych w gîównym oknie (opîaca sië wybraê czcionkë maîâ, aby jak najwiëcej informacji na raz w oknie sië zmieôciîo) oraz moûliwoôê ustawienia formatu wyôwietlanych informacji. Dla komfortowego przeprowadzenia tej drugiej czynnoôci mamy zresztâ specjalne okno -- Edytor formatu. Umoûliwia ono ustalenie, jakie informacje chcemy mieê wyôwietlane (szerokâ gamë moûliwoôci widaê na rysunku, niektóre z nich mogâ byê przydatne przede wszystkim programistom) i jakâ szerokoôê majâ mieê poszczególne pola. Ja zdecydowaîem sië usunâê liczbë porzâdkowâ, gdyû mnie przynajmniej wydaîa sië ona zbëdna. Dziëki temu mogîem jeszcze trochë poszerzyê pole Nazwa obiektu. Okno Funkcje uîatwia ustalenie, co ma byê monitorowane. Wersja 3.0 SnoopDOS umoûliwia nie tylko monitorowanie funkcji z biblioteki dos.library, ale równieû kilku funkcji z innych bibliotek (exec.library, intuition.library, icon.library i rexxsyslib.library). Szczególnie monitorowanie icon.library bywa przydatne -- umoûliwia wykrycie, jakich to tooltype'ów poszukujâ programy... Na ustaleniu, które funkcje majâ byê monitorowane, rola okna Funkcje sië nie koïczy. Gadûet Filtr programów umoûliwia ustalenie nazw procesów, które majâ byê monitorowane -- program akceptuje standardowy pattern AmigaDOS-u, umoûliwiajâc tym samym monitorowanie kilku wybranych procesów naraz: "(proces1|proces2|proces3)" bâdú niemonitorowanie jakiegoô procesu: "~(proces)". Bardzo przydatne jest równieû to, ûe standardowo wyîâczone jest monitorowanie ROM-u i Workbencha/Shella -- zmniejsza to znacznie liczbë informacji, wyôwietlanych przez program. Jeôli komuô jednak na tym szczególnie zaleûy, moûe to, oczywiôcie, wîâczyê. Dla ludzi czësto uûywajâcych programów, które korzystajâ z ixemul.library (a wiëc zwykle róûnych programów przeniesionych z Unixa, jak np. kompilatora GNU C), przydatna moûe byê takûe moûliwoôê monitorowania pakietów. ixemul.library komunikuje sië z systemem zapisu bez poôrednictwa dos.library, bezpoôrednio za pomocâ tzw. pakietów. Powoduje to, ûe inne programy monitorujâce "nie widzâ", co robiâ programy korzystajâce z IXEmul -- w SnoopDOS wystarczy zaznaczyê jeden gadûet, aby problem zniknâî. Dla tych, którym monitorowanie trzynastu funkcji dos.library nie wystarcza, autor dodaî równieû tzw. debugger pakietów -- umoûliwia on podglâdanie wszelkiego rodzaju aktywnoôci, zwiâzanej z systemami zapisu. Trzeba jednak byê niezîym guru, aby coô z tego zrozumieê, gdyû program wyôwietla informacje w formie niewiele mówiâcych liczb bâdú adresów pamiëci. Ciekawe moûliwoôci konfiguracyjne moûna znaleúê równieû w górnym menu. Szczególnie cenna wydaje sië moûliwoôê wyrównywania nazw obiektów do lewej bâdú do prawej krawëdzi. Choêbyômy nie wiem ile miejsca przeznaczyli na pole Nazwa obiektu, to i tak znajdâ sië nazwy dîuûsze -- zwykle zaleûy nam na zobaczeniu koïca ôcieûki dostëpu, wiëc ustawiamy wyrównywanie do prawej krawëdzi. Gdy chcemy jednak zobaczyê poczâtek ôcieûki dostëpu do jakiegoô "tasiemca", to wystarczy przeîâczenie jednej opcji w górnym menu i juû widzimy to, co chcemy widzieê. Moûna równieû, co zresztâ widaê na rysunku 2., wyîâczyê pokazywanie tzw. linii stanu i gadûetów -- wtedy caîa przestrzeï gîównego okna jest przeznaczona na cenne informacje o monitorowanych programach... Osobne menu Bufor umoûliwia równieû zapisanie zawartoôci bufora z informacjami o monitorowanych funkcjach bâdú tylko widocznego w danym momencie jego fragmentu do pliku lub do clipboardu, jak równieû wyczyszczenie bufora. SnoopDOS ma równieû rozbudowany interfejs ARexxa z ponad 100 komendami. Z tego artykuîu nietrudno sië chyba zorientowaê, ûe uwaûam SnoopDOS za wspaniaîy program. Bardzo cennâ jego cechâ jest pewnoôê dziaîania. Podczas kilkugodzinnych eksperymentów, które z nim przeprowadzaîem, czytajâc równoczeônie instrukcjë i robiâc piëê innych rzeczy, jak to mam w zwyczaju, system operacyjny pozostawaî w doskonaîej stabilnoôci, a SnoopDOS ani razu nie zachowaî sië niezgodnie z oczekiwaniami. Jest to po prostu doskonale przetestowany program. Jedynâ, moim zdaniem, jego wadâ jest wielkoôê -- program zajmuje niemal 100 KB. Nie jest to duûo, zwaûywszy na jego moûliwoôci, ale trudno nie oprzeê sië wraûeniu, ûe mógîby byê znacznie krótszy, gdyby nie miaî interfejsu ARexxa (którego przydatnoôê w tego typu programie jest bardzo dyskusyjna), nie zaszkodziîoby teû, gdyby caîa czëôê konfigurujâca byîa wydzielona w osobnym programie. SnoopDOS jest (IMHO) rolls-roycem wôród programów monitorujâcych, tak samo jak Directory Opus wôród manipulatorów plikowo-katalogowych i MUI wôród interfejsów uûytkownika. Takie programy majâ to do siebie, ûe polaryzujâ opinie: zwykle albo sië je uwielbia, albo sië ich nie cierpi. Ja zaliczyîbym siebie do mniej radykalnego skrzydîa tej pierwszej grupy.