Własne wtyczki w programie Sherlock


Potem następuje seria dyrektyw input name, zawierających poszczególne elementy składni zapytania. Niektóre elementy mogą zawierać definicję wartości (value). To, jakie wartości mogą znaleźć się w sekcji input name, zależy od konkretnego serwera. Drugim zasadniczym elementem wtyczki jest sekcja interpret z opisem sposobu interpretacji otrzymanych rezultatów wyszukiwania. Serwer zwraca wyniki w postaci zwykłej strony WWW - interpretacja polega więc na wyszukaniu w kodzie HTML odpowiednich znaczników, między którymi znajdują się wpisy poszczególnych "trafień". Może to być dowolny element kodu HTML lub tekstu - nawet część słowa. W naszym przykładzie są to: resultListStart="RealNames" - unikatowy (nie powtarzający się na całej stronie) element, oznaczający początek listy zwróconych trafień - w tym przykładzie słowo RealNames

resultListEnd="Pages: <b>" - unikatowy (nie powtarzający się na całej stronie) element, oznaczający koniec listy - w tym przykładzie Pages

resultItemStart="<dl><dl>" - powtarzający się element, oznaczający początek pojedynczego trafienia - w tym przykładzie element kodu HTML <dl><dl>

resultItemEnd = "</dl>" - powtarzający się element, oznaczający koniec pojedynczego trafienia - w tym przykładzie element kodu HTML </dl>.

I to już wszystko! Wymienione słowa kluczowe to jedyne elementy niezbędne do poprawnej pracy wtyczki.

Piszemy wtyczkę...

Do przygotowywania wtyczek używam znakomitego edytora Alpha (można go zdobyć pod adresemhttp://sunsite.icm.edu.pl/pub/CTAN/systems/oztex/alphalite.hqx), ale nadaje się do tego każdy edytor, który zapisuje w czystym ASCII i najlepiej, gdy potrafi zachować oryginalne ustawienia typu pliku (w przeciwnym razie należy użyć np. ResEdita, aby ustawić typ pliku na issp). Pisanie wtyczki najlepiej rozpocząć, wykorzystując już istniejącą. Wystarczy ją skopiować z teczki

Internet Search Sites i zmienić nazwę pliku. Następnym krokiem jest

uruchomienie przeglądarki WWW i wejście na stronę wyszukiwarki. Wpisujemy jakieś standardowe słowo testowe i po otrzymaniu wyników wyszukiwania zapisujemy tę stronę do pliku, a następnie otwieramy go dowolnym edytorem tekstowym. Oto fragment pliku HTML, będącego odpowiedzią na zapytanie (słowo Linux) skierowane do serwerahttp://infoseek.icm.edu.pl - mieści w sobie wszystkie elementy niezbędne do napisania wtyczki (z wyjątkiem elementów esultListStart, resultListEnd, resultItemStart, resultItemEnd):

[...]

</tr>

</table>

<form method="GET" action="/query.html">

<table cellspacing="0" cellpadding="6" border="3" width="100%">

<tr valign="top">

<td width="67%">

<table rows="1" cols="1" cellspacing="0" cellpadding="6" border="0" width="100%">

<tr valign="top"><td bgcolor="#ffffff">

<table cellspacing="0" cellpadding="1" width="100%">

<tr><td colspan="2"><p><b>Przeszukaj zbiór: </b><input type="hidden" name=col value="Poland">

</td></tr>

<tr valign="top"><td width="60%" nowrap><input type="text" name="qt" size="40" maxlength="512" value="linux">

<input type="hidden" name="qc" value="">

<input type="hidden" name="qm" value="0">

<input type="hidden" name="st" value="1">

<input type="hidden" name="nh" value="25">

<input type="hidden" name="lk" value="1">

<input type="hidden" name="rf" value="0">

<input type="hidden" name="oq" value="linux" maxlength="512">

<input type="hidden" name="rq" value="0">

<input type="submit" value=" Szukaj "></td>

</tr>

</table>

[..]

Proszę porównać powyższy kod ze znajdującą się na płycie CD-ROM wtyczką do polskiego Infoseeka. Powinno to ułatwić zrozumienie jej stosowania. Nowo utworzoną wtyczkę warto wzbogacić przede wszystkim przedstawieniem "celności" trafień. Dokonuje się tego, wpisując dyrektywę relevanceStart relevanceEnd - podobnie jak dyrektywy resultItemStart, przy czym zawsze musi to być liczba z przedziału 0-100.

Zapewne większość użytkowników nie wprowadzi tej dyrektywy, ale istnieje możliwość wyświetlania banera reklamowego - bannerStart/bannerEnd i określenie odsyłacza do strony - bannerLink, która zostanie otwarta w domyślnej przeglądarce systemu po kliknięciu na baner.

Może być również potrzebne określenie strony kodowej, używanej do kodowania znaków diakrytycznych w stronie zwróconej przez wyszukiwarkę. Jest to zazwyczaj standard ISO-8859-1 dla stron anglojęzycznych i ISO-8859-2 dla stron polskojęzycznych. Dostępnych jest jeszcze wiele dyrektyw dodatkowych - zainteresowanych odsyłam do dokumentu Technote 1141. Działanie wtyczki sprawdzamy, kopiując ją do teczki Internet Search Sites, uruchamiamy Sherlocka i jako wykorzystywany serwer zaznaczamy tylko naszą wtyczkę i wpisujemy jakieś proste słowo. Po otrzymaniu odpowiedzi uruchamiamy dowolną przeglądarkę WWW i używając tego samego serwera wyszukujemy to słowo. Po otrzymaniu odpowiedzi porównujemy je z wynikami zwróconymi przez Sherlocka. Powinny być takie same, chociaż niekoniecznie w tej samej kolejności. Po upewnieniu się, że wtyczka dobrze działa, zmieniamy jej znaczek, używając programu Res-Edit lub Resourcerer. Trzeba tylko pamiętać o tym, że znaki graficzne wyszukiwarek są zazwyczaj chronione prawem autorskim i jeśli chcemy rozprowadzać naszą wtyczkę w Internecie, to należy uzyskać najpierw oficjalną zgodę (np. z tego powodu firma Apple musiała usunąć z systemu Mac OS 8.5 wtyczkę do serwisu Hotbot, a na redakcyjnym CD-ROM-ie nie można było umieścić wtyczek do popularnych polskich przeszukiwarek).

Wydaje się, że następnym krokiem w rozwoju Sherlocka powinno być wprowadzenie jakiejkolwiek formy buforowania (cache - podobnie jak w przeglądarkach WWW). Przydałoby się również wprowadzenie obsługi standardowych usług Archie i WAIS. Niezbędne będzie też umożliwienie zmian najważniejszych ustawień, przede wszystkim najdłuższego dopuszczalnego czasu oczekiwania na odpowiedź serwera, określania serwera proxy oraz możliwość kontrolowania (blokowania) procesu automatycznego uaktualniania wtyczek.

Literatura

Podstawowym źródłem jest dokument Technote 1141 - Extending and controlling Sherlock, który można znaleźć pod adresemhttp://developer.apple.com/technotes/tn/tn1141.html, oraz dokument Mac OS - Sherlock - Plug-in Developer Info, który można znaleźć pod adresemhttp://www.apple.com/sherlock/plugindev.html.

Dobrym źródłem wtyczek są strony http://www.apple-donuts.com