Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Список размеров картинок и пр.
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Пт, Мар 25 2005 04:01 Цитировать |  |  | 

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

Например: создаем список $LST(size)
Цитата:

*width=[#460-480] & *height=[#55-60]
*width=[#88] & *height=[#31]
*width=[#234] & *height=[#60]
*width=[#100][^%] & *height=[#100][^%]
*width=[#120] & *height=[#120]
*width=[#125] & *height=[#125]
*width=[#120] & *height=[#60]
*width=[#728] & *height=[#90]

и переделываем фильтр Banner Replacer:
Цитата:

Name = "Banner Replacer [exp]"
Active = TRUE
Multi = TRUE
URL = "(^(www.muzprosvet.ru|kulebaki.ru))"
Bounds = "<a\s[^>]++href=*</a>"
Limit = 800
Match = "\0<img (\1border=\w|) \2 src=$AV(*) (\3border=\w|) \4"
"&(*(href|src)=(\"|)$LST(AdKeys)|"
"$LST(size))*"
Replace = "\0<img \1 border="0" \2 src="http://Local.ptron/killed.gif" \3 \4"


Вопрос:можно ли это сделать как-нибудь "изящней"?
(Чтобы список выглядел как "120.60", Или нечто подобное.)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Пт, Мар 25 2005 10:52 Цитировать |  |  | 

Ну, в принципе идея здравая. Только надо сопоставить, сколько фильтров используется с одинаковыми наборами фильтруемых картинок. Насколько я понимаю концепцию нормального конфига, обычно используется один фильтр для графических баннеров и иногда ещё один для счётчиков (на другой размер картинок). Всякая флешь вообще любого размера бывает.. При таком раскладе отдельным блок-листом много не выиграешь.

А для удобства редактирования набора размеров его выделить можно.
Что-то вроде этого:

Блок-лист AdSize:
Код:
(*\swidth=$AV(\7)&*\sheight=$AV(\8))$SET(Size=$TST(\7)x$TST(\8))$TST(Size=$LST(AdSizes))

Блок-лист AdSizes:
Код:
120x60
88x31
...

Использование: $LST(AdSize)
К началу Профиль Сообщение
Bonart
Filter Developer
Filter Developer


Зарегистрирован: 29.11.2004
Сообщения: 78
Откуда: Самара

СообщениеДобавлено: Пт, Мар 25 2005 15:47 Цитировать |  |  | 

2 chAlx
А поподробнее про концепцию нормального конфига можно?
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Пт, Мар 25 2005 18:41 Цитировать |  |  | 

Bonart писал(а):
2 chAlx
А поподробнее про концепцию нормального конфига можно?


Ну, это такой хороший конфиг, безызбыточный, в котором нету кучи почти одинаковых фильтров и всё правильно работает ;) Не отладочный, короче.
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Вт, Мар 29 2005 23:30 Цитировать |  |  | 

Я как-то делал подобную вещь, только все размеры перечислял в фильтре, а не в блоклисте. Отказался я от той идеи - тормозило сильно.
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Ср, Мар 30 2005 00:22 Цитировать |  |  | 

Спасибо за быстрый ответ, но времени, чтобы "помучать" предложенный вариант, все не было и не было.

Пример, был не без ошибок, но задал направление, и был доведен до вида:

Цитата:

(*\swidth=$AV(\7)(^%)&*\sheight=$AV(\8)(^%))
&$SET(Sz=\7,\8)$TST(Sz=$LST(AdSizes))

Список AdSizes, соответственно, вида: 120,60


Испытавался "Banner Replacer".
Разницы в скорости между "красивым" и "некрасивым" - нет.
А вот между решением со списком и без оного - приблизительно трехкратный выигрыш первого.
Хотя, при нынешней производительности PC - это малосущественно.
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Ср, Мар 30 2005 10:07 Цитировать |  |  | 

У меня на двухгигагерцовом процессоре с кучей памяти Proxomitron умудряется подтормаживать систему, забирая в процессе загрузки до 50-80% CPU. Правил понаделал, а оптимизировать совсем не хочется :-)

Это к вопросу о производительности техники и прочем. Любую технику можно нагрузить под завязку.

А некоторое время назад я маньячил, вставляя блок листы к месту и не к месту. Работать было ну совсем невозможно. С тех пор отношусь к этому осторожно и при создания правила замеряю Profile.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Ср, Мар 30 2005 10:45 Цитировать |  |  | 

vital mogilny
Чего-то странное у тебя с процентами этими: разве так можно обрабатывать строки вида width="10%"?

И вобще, все сделанные изменения на вид должны приводить к неработоспособности :). Например, в доке написано, что $SET не раскрывает шаблонные переменные, а устанавливает литеральное соответствие -- просто присваивает строку со слешами.. Оно и правда работает? ;)
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Чт, Мар 31 2005 01:14 Цитировать |  |  | 

2 chAlx
Строки с процентами, как раз обрабатывать не надо. Фильтр пропускает такие тэги.
Можно заменить Sz на стековую переменную. Будет и так работать. Если хочешь - можешь проверить :)
Цитата:

...Это значит, что если \1 содержит "fish" и команда типа $SET(2=\1 food), то \2 не даст в результате "fish food", но будет буквально установлена "\1 food". Однако, она будет расширена в "fish food" когда \2 выводится в текст замены.



2 Partyzan
У меня Pentium III-500, с убитым, и поэтому выключенным навсегда L2 кэшем. Но DialUp, возможно поэтому особых проблем я не испытаваю.
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Чт, Мар 31 2005 08:50 Цитировать |  |  | 

vital mogilny писал(а):
Строки с процентами, как раз обрабатывать не надо. Фильтр пропускает такие тэги.

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

Ладно, май с ним; всё равно проверять надо, а не в голове транслировать. А я не проверял.

Цитата:
...Это значит, что если \1 содержит "fish" и команда типа $SET(2=\1 food), то \2 не даст в результате "fish food", но будет буквально установлена "\1 food". Однако, она будет расширена в "fish food" когда \2 выводится в текст замены.

Ну да, "когда выводится в текст замены" ("..when printed in the replacement section."). А тут никакого риплейсмента, просто $TST(). Хотя, опять же, не проверял: может, это недокументированная фича.

Цитата:
DialUp, возможно поэтому особых проблем я не испытаваю.

Думаю, дело всё-таки в отсутствии кривых фильтров. Одолжи парочку у Partyzan, увидишь, что диалап не спасёт :)
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Чт, Мар 31 2005 09:28 Цитировать |  |  | 

chAlx писал(а):
Одолжи парочку у Partyzan, увидишь, что диалап не спасёт :)


:-)))
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Пт, Апр 01 2005 01:29 Цитировать |  |  | 

Про проценты наконец дошло :)
Но как показало вскрытие, если в сайз-листе нет процентов, то результат соотв. отрицательный по умолчаниию.
Пятое колесо, понимаешь, обнаружилось такое.

По поводу $SET
Создаем новый фильтр:
Цитата:

[Patterns]
Name = "[size]"
Active = TRUE
Multi = TRUE
Bounds = "<a\s*/a>"
Limit = 800
Match = "*"
"&*\swidth=$AV(\7)&*\sheight=$AV(\8)"
"&$SET(9=\7,\8)"
Replace = "\7 \8 \9"


И вставляем в его тестовое окно, например:
<a href="/culture/20050329_cher.html" class=alink><img src="/images/dot.gif" width="100" height="100" alt="" title="" border=0><font size="-1" color="#73736B">bla-bla-bla</font></a>

У меня получается 100 100 100,100
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Пт, Апр 01 2005 08:56 Цитировать |  |  | 

vital mogilny писал(а):

По поводу $SET
[..]
У меня получается 100 100 100,100

Ну да, в этом тесте ты как раз поле Replace заполняешь результатом, где он и разворачивается из шаблонов в текст. А изначальные варианты фильтра (других пока не было) предполагают, что это значение там же (в Match, точнее даже в блок-листе, вызванном из Match) проверяется командой $TST(). Будет ли оно рвзворачиваться в поле Match -- вот в чём вопрос.
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Сб, Апр 02 2005 00:44 Цитировать |  |  | 

Да, будет. Я же проверял :)
Я чайник, но практик.
Вот полный фильтр:
Цитата:

[Patterns]
Name = "Banner Replacer [size]"
Active = TRUE
Multi = TRUE
URL = ""
Bounds = "<a\s[^>]++href=*</a>"
Limit = 800
Match = "\0<img (\1border=\w|) \2 src=$AV(*) (\3border=\w|) \4"
"&*((href|src)=(\"|)$LST(AdKeys)*|"
"(*\swidth=$AV(\7)&*\sheight=$AV(\8))"
"&$SET(Sz=\7,\8)$TST(Sz=$LST(AdSizes)))"
Replace = "\0<img \1 border="0" \2 src="http://Local.ptron/killed.gif" \3 \4"


Создай список со строчкой 100,100 и сам проверь, если не лень.
Поварьируй ширину и высоту.

Цитата:

<a href="/culture/20050329_cher.html" class=alink><img src="/images/dot.gif" width="100" height="100" alt="" title="" title="" border=0><font size="-1" color="#73736B">bla-bla-bla</font></a>
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Пн, Апр 04 2005 09:08 Цитировать |  |  | 

vital mogilny писал(а):
сам проверь, если не лень.

Зачем, ты же всё отписал ;)
Я бы давно проверил, но сейчас без Прокса приходится обходиться.. :(
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пн, Апр 04 2005 10:36 Цитировать |  |  | 

chAlx писал(а):

Я бы давно проверил, но сейчас без Прокса приходится обходиться.. :(

Как так?
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Вт, Апр 05 2005 03:57 Цитировать |  |  | 

2 chAlx

Это удивительно. Не то, что прокса нет (это грустно), но придумывать фильтры в теории... Здесь есть чему позавидовать :)

Может быть тебе удастся разрешить такую задачу:
Это по поводу WebWarper'а,
а точнее редиректа.
Мы получили 302 ответ, и нужно заблокировать работу исходящего фильтра, срабатывание которого приведет нас точно к такой же ситуации. И, соответственно, будет повторяться бесконечное число раз.
Единственное, что может выключить фильтр (с моей точки зрения) - это нечто, добавленное к URL. Но URL искажен и не может правильно обработан сервером, а приведение URL к "нормальному" виду приводит к срабатыванию редиректа.
Приведенный пример просто выключает фильтрацию исходящих заголовков. Можно ли найти решение этой проблемы?

Цитата:

In = TRUE
Out = FALSE
Key = "Location: WW Redirect (in) [warp]"
URL = "www.webwarper.net/ww/"
Match = "(^http://www.webwarper.net/ww/*)&($RESP(302*))&(http://\1)"
Replace = "http://bout..\1"
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2627
Откуда: SPb

СообщениеДобавлено: Вт, Апр 05 2005 09:06 Цитировать |  |  | 

vital mogilny писал(а):
Может быть тебе удастся разрешить такую задачу:
Это по поводу WebWarper'а,

Думаешь, я на оффтоп лучше реагирую? ;) Пиши лучше о Варпере в родной теме; там я и на это отвечу.
К началу Профиль Сообщение
vital mogilny
Advanced Member
Advanced Member


Зарегистрирован: 24.03.2005
Сообщения: 89

СообщениеДобавлено: Ср, Апр 06 2005 01:27 Цитировать |  |  | 

Сорри. Ночь, знаете ли, и все такое.
К началу Профиль Сообщение
Partyzan
Platinum Member
Platinum Member


Зарегистрирован: 15.02.2005
Сообщения: 319

СообщениеДобавлено: Пт, Апр 08 2005 09:03 Цитировать |  |  | 

chAlx писал(а):

А для удобства редактирования набора размеров его выделить можно.
Что-то вроде этого:

Блок-лист AdSize:
Код:
(*\swidth=$AV(\7)&*\sheight=$AV(\8))$SET(Size=$TST(\7)x$TST(\8))$TST(Size=$LST(AdSizes))

Блок-лист AdSizes:
Код:
120x60
88x31
...

Использование: $LST(AdSize)


Надо будет попробовать погонять по скорости. После соседнего топика эта конструкция выглядит привлекательнее :-)
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3