ImgLikeOpera: filter, regexp

12th February 2005 - 00:01

Это опрос.™

Неправильно подошёл к вопросу фильтров в ImgLikeOpera, хочется исправиться.

Дано: URL вида http://example.com/my-iMg.php?id=4+5

Два варианта создания фильтра пользователем:

  • бездумное вбивание чего-нибудь вроде .com/my-iMg.php?id и дальнейшее преобразование этого «бездумия» в процессе работы расширения экранированием специальных символов: /\.com\/my\-iMg\.php\?id/i
  • вдумчивое написание полноценного регулярного выражения \.com\/my\-iMg\.php\?id и дальнейшее преобразование: /\.com\/my\-iMg\.php\?id/i

Понятно, что второй вариант хоть и более трудоёмок, но зато более гибок.

Можно наизобретать «третьих» вариантов. Например, оговариваем необходимость написания регулярных выражений полностью (/pattern/[i]), но обязательно найдутся люди, которые будут вводить /p.at+h1/p-ath2/ и удивляться. Специально для этих случаев смотрим наличие отсутствия граничных слэшей, экранирование специальных символов внутри патэрна и пытаемся додумывать то, что хочет получить пользователь на самом деле.

С одной стороны, подобное додумывание лично мне не по душе. Со стороны другой, я прекрасно понимаю, что не все знают о существовании регулярных выражений. Как быть?

Update: ага, ясно откуда я это «придумал». Прикрутить-то прикрутил, а как работает, видимо, только в подкорке отложилось. Я себе удивляюсь в последнее время; совершенно непонятно куда смотрю и о чём думаю (поэтому и прикрутил совсем не так, как должно быть):

Adblock supports two types of filters: simple, and Regular Expression.

adblock.mozdev.org

Categories: Usability | comments: (8)

Комментарии

1. Владимир Котульский 12th February 2005 - 10:42

Если чесно я не совсем понял суть вопроса.
Ведь можно сделать так, чтобы в настройкох можно было выбрать использоватьрегулярные выражения или нет.
А вот насчет специальных символов я думаю логично и толерантно по отношению к пользователю было бы экранировать их автоматом не заставляя пользователя думать об этом.

Mash:

Вопрос уже снят, но за комментарий спасибо, т.к. он является подтверждением ответа. :)

В Adblock предусмотрены два варианта фильтра: простой (например, */*some.thing*) и на основе полноценных регулярных выражений, дающих большую гибкость тем, кто их знает. Просто я этого не знал и всё сделал неправильно, на днях переделаю.

2. kukutz 12th February 2005 - 16:56

Мне в AdBlock на 100% хватает их «простого» варианта, в котором есть только *.

Mash:

Наверняка найдутся те, кому захочется написать
/(\Wadv|banner|promo)s?(\.\w+\.\w{2,3}(\.\w{2,2})?/|\W\w*\d+x\d+\.)/

За мнение пользователя, знакомого с regexp, отдельное спасибо.

3. tibalt 13th February 2005 - 19:38

я бы сделал два поля ввода, одно обычное, другое для регексп=)

кстати, уважаемый, вы вроде собирались иконку/текст вместо цветного квадратика присобачить? советую (чтоп не мучицца) — забабахать ту же иконку, что и в опере, людям сразу понятно будет, что за кныпочка…
кстати взять её можно в директории оперы:
Opera\skin\standard_skin.zip\buttons\images_all(cached,none).png

Mash:

Будет следующим образом: если по границам строки стоят слэши, значит ввели regexp; в противном случае — «simple filter».

А платить Opera Software ASA сразу или когда попросят?

4. tibalt 17th February 2005 - 13:57

2Mash «А платить Opera Software ASA сразу или когда попросят?»:
я просто скачал подобный плагин Show/Hide Images или типа того, он намного тормознее и менее функциональнее, чем ILO, и там используются именно эти иконки, вот я и подумал, что легально поди=)

5. Владимир Котульский 19th February 2005 - 10:51

Если честно, так и не заставил работать фильтры
Скажи, что надо написать, чтобы фильтр работал для домена http://enom.com, https://enom.com, http://www.enom.com и любых его субдоменов??

Mash:

*enom.com*

Правда, есть один нюанс: с текущей версией работать не будет, т.к. на этом сайте есть скрипт, подгружающий графику, а этот момент я упустил из виду. Уже исправляю, жди обновлений.

6. Владимир Котульский 20th February 2005 - 16:34

*enom.com* заработало, спасибо.
Правда тут другой глюк или фича проявились.
1) Когда захожу на сайт енома картинка на тулбаре не изменяется, тоесть текущей политики для этого сайта не видно.
2) Если картинки с этого сайта уже удалены из кеша и я хочу подгрузить их наново перещелкивание политики для этого сайта кнопкой в тулбаре непомогают, единственный выход это на каждой картинке щелкнуть правой кнопкой и выбрать опцию догрузить.
3) Нехватает в настройках фильтров опции принудительный кеш. Так, чтобы я мог для каждого сайта отдельно назначить политику обновления кеша (ну это я наверное совсем разогнался)

Mash:

Во-первых, странно, что заработало, потому что я ничего не делал. :) И в отношении именно этого конкретного сайта тольку от этого фильтра пока мало, т.к. был один баг. Я его уже исправил, но версию расширения пока что не обновил.

Во-вторых, это не глюк, это действительно фича.

1) И не должна. Сама суть этих фильтров не предполагает привязки к какому-либо конкретному сайту (например, *banner*).

2) Рекомендую посмотреть на это под другим углом: что мешает ходить на тот же enom без всяких фильтров, с политикой «cached only»? Выставляем принудительное кэширование на максимальное время и ничего нового грузиться не будет. Фильтры-то в принципе нужны либо для резки «заранее известного» нежелательного контента (обычно это реклама), либо для пропуска приемлемого содержимого (как уже приводили в пример локальные сайты).

3) Хотя мне самому и не приходилось испытывать потребности в этой фишке, я допускаю, что она может кому-то понадобиться. Другое дело, что (сейчас, по крайней мере) мне совершенно не хочется вводить подобные улучшения, т.к. они будут тормозить работу расширения, а его быстродействие и так оставляет желать лучшего.

7. Владимир Котульский 23rd February 2005 - 18:26

Решение в пункте описанное тобой для 2 пункта хорошее, но для этого надо чтобы я мог выставлять политику принудительного кеша отдельно для каждого домена или в фильтрах

8. Владимир Котульский 23rd February 2005 - 18:27

намутил :))
сорри, в спешке писал

Комментарии временно отключены.