ImgLikeOpera: filter, regexp
Это опрос.™
Неправильно подошёл к вопросу фильтров в 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.
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
намутил :))
сорри, в спешке писал