Antyspam z filtrowaniem tytułów i treści
Miałem mniej pisać o UserJS, ale wyszło, jak wyszło ;-) Tym razem (w wersji 2.2) doklepałem kilka nowych rzeczy, przede wszystkim to, o co prosił pecet (któremu przy okazji dziękuję za betatesty). Mowa oczywiście o filtrowaniu wpisów na głównej Joggera z uzwględnieniem ich tytułów i treści – razem ze sprawdzaniem autora, kategorii i tagów jest już komplet funkcjonalności.
Nowości a wydajność
Oczywiście największym problemem przy rozrastającym się skrypcie tego typu jest wydajność, a właściwie wszelkie dolegliwości z nią związane. Niestety, ale JavaScript, głównie z powodu tego, że jest interpretowany po stronie użytkownika, ani też nie jest kompilowany, wykonuje się stosunkowo powoli.
Na szczęście wpadłem na pomysł, by ulżyć trochę osobom, które miały dość rozbudowane kryteria filtrowania. W ogólnym skrócie, poparte testami: zamiast sprawdzania wszystkich elementów tablicy po kolei dla każdego wpisu, tworzone jest jedno wyrażenie regularne, które załatwia sprawę. Szkoda tylko, że różnicę widać dopiero przy długich listach reguł. Natomiast przepisanie skryptu na wersję niewykorzystującą jQuery (które i tak już jest załadowane na stronie), to naprawdę sporo roboty. Inna sprawa, że kod byłby znacznie mniej przejrzysty.
Aha, są też mniej znaczące ficzery w postaci ukrywania zbyt krótkich wpisów (limit znaków jest możliwy do zdefiniowania w konfiguracji skryptu) oraz możliwości wyłączenia okienka ze statystykami i za jednym zamachem przycisków do przełączania widoczności wpisów (jeśli z tego nie korzystasz, to prostu wyłącz – skrypt będzie działał szybciej). Jak zwykle znalazło się też miejsce na jakieś drobne poprawki. Lista zmian, ale wypunktowana, jest w komentarzach wewnątrz skryptu.
Konfiguracja
Na koniec jeszcze słówko o sposobie wypisywania reguł, bo z tym bywają problemy: tablica meta zastąpiła words z poprzedniej wersji (chciałem uniknąć mylącego nazewnictwa), ale działa wciąż na tej samej zasadzie. Analogicznie ma się tablica content. Można używać wyrażeń regularnych, ale wystarczą też zwykłe ciągi znaków (uwaga na znaki specjalne; wielkość liter nie ma znaczenia). Czyli na przykład:
// (…) meta: [ 'polityka', '(mini|tech)blog', 'jakieś słowo \\w+' ], // (…)
Jeszcze łatwiej jest w przypadku list użytkowników (blacklist, whitelist) – po prostu wpisujemy nick (pobierany z adresu joggera) danego użytkownika, czyli na przykład tak:
// (…) blacklist: [ 'blog', 'utopiony-w-joggerze', 'anotherone' ], // (…)
Co ważne, po ostatnim elemencie listy nie może być przecinka (akurat w tej kwestii JavaScript jest dość kapryśny). Pozostałe opcje antyspamu są dość oczywiste, wystarczy zerknąć na komentarze w skrypcie ;-)
Pobieranie
Dla przypomnienia: użytkownicy Greasemonkey muszą pobrać plik na dysk, zmienić mu rozszerzenie na .user.js, a następnie przeciągnąć na okno Firefoksa. Ludzie z Operą powinni wiedzieć, co należy zrobić ;-)
Komentarze – jak zwykle – mile widziane, sugestie na pewno się przydadzą.

Wasacz, blog – 04 lipca 2009 o 22:32:10
Antyspam dla JoggerPL, wersja 3.1 Turbo
Ostatnią oficjalną wersję antyspamu dla Joggera opublikowałem jeszcze w poprzednim roku. To wcale nie znaczy, że zaprzestałem rozwijać mój ulubiony skrypt; przeciwnie – wziąłem się za porządną reorganizację kodu. Skończyło się na [...]