Jeśli jesteś właścicielem tej strony, możesz wyłączyć reklamę poniżej zmieniając pakiet na PRO lub VIP w panelu naszego hostingu już od 4zł!

Str. główna i mapa serwisu

Konfiguracja Hamstera – lokalnego serwera news

Opis dotyczy wersji Classic. Inne wersje mogą cechować się odmiennym sposobem funkcjonowania.

Uwaga: z powodu całkowitego braku dokumentacji informacje podane poniżej oparte są wyłącznie na moich własnych obserwacjach oraz podstawowych eksperymentach i mogą być obarczone niewielkimi błędami. Zalecane jest staranne przetestowanie reguł tworzonych na podstawie poniższego opisu, by uniknąć błędnych dopasowań wzorców filtrów.

Hamster jako taki nie używa żadnych kodowań i nie wymaga żadnej konfiguracji, by jakiekolwiek znaki narodowe i specjalne były wysłane lub odebrane prawidłowo (nie dotyczy niektórych skryptów i współpracujących programów, które mogą wymagać indywidualnej konfiguracji, np. Korrnews). Jedynie w przypadku punktowania (score) program może dekodować nagłówki (głównie nadawca i temat) z kodowania transportowego na postać 8-bitową i konwertować z róznych charsetów na charset użyty na komputerze użytkownika Hamstera, by następnie dopasować je do wzorców również zawierających znaki 8-bitowe. Znaki spoza US-ASCII mogą być zakodowane na wiele sposobów – w przypadku języka polskiego powszechnie wykorzystywane są trzy charsety (ISO-8859-2, UTF-8Windows-1250, dalsze dwa pojawiają się sporadycznie (ISO-8859-13Windows-1257), każdy charset może pojawić się w jednej z czterech postaci kodowania transportowego – QP i trzy możliwe postacie B64. Dzięki dekodowaniu można na przykład łatwo odfiltrować listy zawierajace w temacie ciąg „u nas znajdziesz najtańszą ofertę” jedną regułą bez konieczności uwzględniania wszystkich dwudziestu możliwych kombinacji charsetu i kodowania transportowego użytych do zakodowania liter ą, ę i ń. Hamster od wersji 2.0.4.0 korzysta z tablic przekodowań zawartych w plikach konwersji, pliki .cnv w obecnej postaci wykorzystywane są od wersji 2.1.0.0. Pakiet dystrybucyjny Hamstera zawiera jedynie tablice przekodowań z kodowań zachodnich (ISO-8859-1, ISO-8859-15) i podzbioru unikodu na Windows-1252 (kodowanie języków zachodnioeuropejskich), co uniemożliwia skorzystanie z tej funkcji posiadaczom systemów ustawionych na język z innej grupy językowej (używający charsetu innego niż Windows-1252) oraz do punktowania listów pisanych w językach innych niż z grupy zachodnioeuropejskiej, np. po polsku. Plik z regułami filtrowania jest kodowany 8-bitowo (kodowanie systemowe, w przypadku polskiego Windowsa jest to Windows-1250).

Przygotowane zostały pliki konwersji z następujących charsetów:

(Dodatkowo Hamster potrafi odkodować ciągi zakodowane QP i B64 w Windows-1250, do czego nie wymaga pliku przekodowania).

Z wyjątkiem konwersji z ISO-8859-2 dokonywana jest częściowa konwersja – nie wszystkie znaki w charsecie wyjściowym istnieją w Windows-1250, znaki nieistniejące zamieniane są na znaki podkreślenia. W przypadku wszystkich charsetów ISO oraz US-ASCII dodatkowo na znaki podkreślenia zamieniane są znaki niezdefiniowane w danym charsecie (128 – 159 we wszystkich ISO, 128 – 255 w US-ASCII).

Z uwagi na stwierdzony całkowity brak listów kodowanych ISO-8859-16 brak jest tabeli przekodowań dla tego charsetu.

Aby móc korzystać z plików konwersji, należy w Hamsterze otworzyć ustawienia (Konfiguracja ⇒ Ustawienia ogólne; ang. ConfigurationGeneral settings) i na zakładce Różne wpisać jako lokalną stronę kodową Windows-1250:

Należy też rozpakować archiwum z plikami konwersji na Windows-1250 do katalogu Hamstera, w którym będą już analogiczne pliki konwersji do kodowania Windows-1252 (o rozszerzeniu .cnv).

Wzorce zawierające znaki należące do kodowania Windows-1250 będą mogły zostać dopasowane, gdy dany list będzie prawidłowo zakodowany w jednym z obsługiwanych kodowań. W przypadku listów nieprawidłowych technicznie (nagłówki zawierające znaki 8-bitowe, brak deklaracji charsetu, znaki narodowe reprezentowane przez encje – to ostatnie to częsty problem różnych webmaili i bramek www ⇔ news) znaki narodowe nie zostaną zdekodowane. Dekodowanie uaktywnia się poprzedzając nazwę nagłówka tyldą. Należy też pamiętać, że wielkość liter z ogonkami ma znaczenie.

Technikalia

Struktura plików konwersji jest bardzo prosta: w każdej linii umieszcza się numer dziesiętny znaku z kodowania wejściowego, a następnie po znaku równości numer znaku (również dziesiętny) w kodowaniu lokalnym (w naszym przypadku Windows­-1250). Można pominąć znaki, które w obu kodowaniach mają te same numery — w tym wszystkie znaki o numerach poniżej 128. Ponieważ konwersja dokonywana jest w kolejności od początku do konca pliku, należy zwrócić uwagę, by wpisy były w prawidłowej kolejności, inaczej dokonana zostanie podwójna (czasami nawet potrójna) konwersja i filtrowanie nie będzie działało poprawnie. Na przykład w przypadku konwersji z ISO­-8859-2 do Windows­-1250 konieczne jest przeprowadzenie konwersji znaku nr 185 na pozycję 154, a dopiero potem znaku nr 177 na pozycję 185, w przeciwnym wypadku zarówno znak nr 185, jak i 177, zostaną w efekcie końcowym przekonwertowane na 154.

Uwagi:

  1. Jeżeli wzorzec ma zawierać znak podkreślnika, należy w plikach .cnv zamienić wszystkie ciągi =95 na inne, odpowiadające kodowi innego znaku który zostanie znakiem zastępczym. Jedynie nie należy ruszać linii 95=95 (o ile takowa występuje).
  2. Jeżeli okaże się konieczne traktowanie kodowań ISO-8859-1US-ASCII jako Windows-1252, należy usunąć pliki cs_iso-8859-1_windows-1250.csv oraz cs_us-ascii_windows-1250.csv i zastąpić je kopiami pliku cs_windows-1252_windows-1250.csv, nadając każdej kopii nazwę jednego z usuniętych plików.

Podziękowanie

Do zestawienia dwóch Hamsterów, dzięki czemu można było sprawdzić działanie reguł punktowania i poprawność przekodowywania bez korzystania z zewnętrznego serwera news, wykorzystane zostały informacje zawarte w pliku „Ham2Ham - małżeństwo prawie doskonałe dwóch Hamsterów” ze strony Nuty link do str. zewnętrznej – dziękuję.

Rozwiązania przetestowane na programie Hamster Classic w wersji 2.1.0.11 pod Windows 2000 SP4 English.

licznik