• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Система ротации баннеров

  • Автор темы Holger Dee Assuran
  • Дата начала
H

Holger Dee Assuran

Идея такова - каждому сайту со временем необходима эффективная система ротации и управления баннерами. У меня есть набросок такой системы - общие идеи таковы:
1. Файлы баннеров могут быть трех типов:
1.1. Flash
1.2. GIF
1.3. HTML
2. Все баннеры имеют набор данных:
2.1. Указатель
2.2. Заголовок
2.3. Описание
2.4. Адрес ссылки
3. Для Flash-баннера может быть загружена GIF-заглушка
4. Баннеры привязываются к местам на странице. При этом указываются:
4.1. Место на странице
4.2. Указатель баннера
4.3. Дата начала показа
4.4. Дата конца показа
4.5. Процент показов
4.6. Ограничение числа показов
4.7. Ограничение числа кликов
4.8. Число показов
4.9. Число кликов
Баннеры могут быть привязаны к нескольким местам на странице. Если баннер не привязан ни к одному месту - он не выводится.
5. Каждый баннер может быть привязан к одной или нескольким страницам. При этом указываются:
5.1. Указатель страницы
5.2. Место на странице
5.3. Указатель баннера
5.4. Дата начала показа
5.5. Дата конца показа
5.6. Процент показов
5.7. Ограничение числа показов
5.8. Ограничение числа кликов
5.9. Число показов
5.10 Число кликов
Эти значения полностью перекрывают ограничения связи с местом. Если баннер не привязан ни к одной странице - он выводится на всех страницах.

Понадобится сценарий обеспечивающий загрузку, установки значений и привязки баннеров к местам и страницам. Так же понадобится функция вызываемая из кода страниц с передачей параметра означающего место баннера.
1. Функция ищет в базе привязки баннеров, не привязанных к страницам, к месту на странице
2. Ищет в базе привязки баннеров, привязанных к открытой странице, к месту на странице.
3. Объединяет листы баннеров, перекрывая значения совпадающих элементов первого, значениями второго
4. Перерасчитывает процент показов исходя из условий, что сумма значений процента показов в листе баннеров равна 100 и пропорции после перерасчета должны быть неизменны.
5. Выбирает случайный баннер из листа. Выбор происходит с учетом пересчитанного процента показа.
6. Выводит баннер, учитывая его тип.

Во всей этой системе вроде-бы ничего сложного не наблюдается. Одна загвоздка - выбор случайного баннера с учетом процента показа.

У меня есть одна идейка как это можно реализовать - мне не очень нравится, но сначала расскажу:
1. Каждое место под баннер снабжается счетчиками "показы списка" и "показы баннера"
2. Каждое место на конкретной странице снабжается такими же счетчиками, перекрывающими значения первых
3. При каждой привязке нового баннера к месту и/или странице и при достижении нулевых значений счетчиками "показы списка" - их значение переустанавливается на 100
4. При каждом показе баннера значения счетчиков уменьшаются. Баннеры со счетчиком показов равным 0 - исключаются.

Минус этой идеи в том, что по началу она будет давать примерно одинаковое количество показов для всех баннеров списка. По мере уменьшения счетчиков файлы будут исключаться из обработки и со временем возникнет ситуация, когда все счетчики листа, кроме одного, пусты и на страницу выводится один и тот же баннер. И так до тех пор пока счетчик "показы листа" не достигнет 0 и показы листа не будут пересчитаны. После этого опять будут выводиться все баннеры листа в одинаковых пропорциях.

Может у кого есть идеи как избавиться от этого лага? Или как учесть процент показа другим способом...

ЗЫ: Я описывал кусочек этой идеи в теме "Выбор случайной строки из файла". Думаю тот пост можно убить.
 
G

GOsha

<!--QuoteBegin-Holger Dee Assuran+15:03:2007, 18:34 -->
<span class="vbquote">(Holger Dee Assuran @ 15:03:2007, 18:34 )</span><!--QuoteEBegin-->ЗЫ: Я описывал кусочек этой идеи в теме "Выбор случайной строки из файла". Думаю тот пост можно убить.
[snapback]59159" rel="nofollow" target="_blank[/snapback]​
[/quote]
Ага.. и все это на фалй насадить? Не проще на мускульную базу?
 
A

Artexoid

Для: Holger Dee Assuran

Я немного не понял с этими процентами показа баннера. Если можно пожалуйста подробней что нужно сделать с этими процентами показа.

А насчёт ситуации когда будет отображаться только один баннер, вот на ходу придумал решения подобной проблемы:

А зачем вообще рандом? Почему бы просто не показывать их по очереди исключая их из показа сразу же? То есть Вывелся->исключился. После исключения последнего баннера включаются все и это всё повторяется вновь. Каждый раз после исключения последнего баннера (после полного прохода) можно инкрементировать некий счётчик, запоминая кол-во полных проходов списка. На основе этого счётчика можно еще что-нибудь выполнять. Единственный минус этого варианта - на каждом проходе баннеры показываются в строгой последовательности но в любом случае это лучше чем один и тот же баннер 10 раз подряд будет показан.

Если так уж хочется рандом, опять же это можно предусмотреть для этого способа, осообенно легко если выборка идёт не из файла (если из файла то сложней), а из MySQL например.

<!--QuoteBegin-GOsha @ 15.03.2007+ 19:09-->
<span class="vbquote">(GOsha @ 15.03.2007 @ 19:09)</span><!--QuoteEBegin-->Ага.. и все это на фалй насадить? Не проще на мускульную базу?[/quote]GOsha, полностью с Вами согласен. Вообще давно пора отказаться от хранения информации в файлах, Куча ведь целая SQL баз которые использовать можно! Сейчас даже некоторые бесплатные хосты MySQL предоставляют :blink:!
 
H

Holger Dee Assuran

Ага.. и все это на файл насадить? Не проще на мускульную базу?
Я, собственно, и имел в виду базу MySQL. Прошу прощения, что не сказал этого...
Если можно пожалуйста подробней что нужно сделать с этими процентами показа.
Поясню.

Допустим, после объединения списков, перерасчета процентов показа и исключения баннеров с нулевыми значениями, у нас остался примерно такой список:
Код:
'Banner1.gif'->'40%';
'Banner2.gif'->'25%';
'Banner3.swf'->'25%';
'Banner4.swf'->'10%';
В результате первый баннер должен выводиться в 40%, второй - в 25%, третий - в 25% и четвертый в 10% случаев. Собственно именно это и обозначает процент показа.

Еще один момент - чем болше посещений у ресурса, тем чаще переустанавливаются значения счетчиков "показы списка" и "показы баннера". Соответственно, чем болше посещаемость ресурса - тем менее заметен лаг с циклическим опустошением списка выводимых баннеров.
 
G

GOsha

Короче народ идем на Red.BY и смотим на такую систему.
 
H

Holger Dee Assuran

Короче народ идем на Red.BY и смотим на такую систему.
И чем мне поможет этот сайт? Я же не могу их код просмотреть. В баннерообмене участвовать не хочу.
Интересно на сайте полноценную систему управления сделать.
 
G

GOsha

Для: Holger Dee Assuran
Скачай в нете и не парься.
В гугле пишешь Скрипт Баннерообменной системы или Управление Баннерами.
Получи пачку, и не говори, что все платные... Точнее платные, но можно и бесплатно найти.
 
K

katarios

Идея такова - каждому сайту со временем необходима эффективная система ротации и управления баннерами. У меня есть набросок такой системы - общие идеи таковы:
1. Файлы баннеров могут быть трех типов:
1.1. Flash
1.2. GIF
1.3. HTML
2. Все баннеры имеют набор данных:
2.1. Указатель
2.2. Заголовок
2.3. Описание
2.4. Адрес ссылки
3. Для Flash-баннера может быть загружена GIF-заглушка
4. Баннеры привязываются к местам на странице. При этом указываются:
4.1. Место на странице
4.2. Указатель баннера
4.3. Дата начала показа
4.4. Дата конца показа
4.5. Процент показов
4.6. Ограничение числа показов
4.7. Ограничение числа кликов
4.8. Число показов
4.9. Число кликов
Баннеры могут быть привязаны к нескольким местам на странице. Если баннер не привязан ни к одному месту - он не выводится.
5. Каждый баннер может быть привязан к одной или нескольким страницам. При этом указываются:
5.1. Указатель страницы
5.2. Место на странице
5.3. Указатель баннера
5.4. Дата начала показа
5.5. Дата конца показа
5.6. Процент показов
5.7. Ограничение числа показов
5.8. Ограничение числа кликов
5.9. Число показов
5.10 Число кликов
Эти значения полностью перекрывают ограничения связи с местом. Если баннер не привязан ни к одной странице - он выводится на всех страницах.

Понадобится сценарий обеспечивающий загрузку, установки значений и привязки баннеров к местам и страницам. Так же понадобится функция вызываемая из кода страниц с передачей параметра означающего место баннера.
1. Функция ищет в базе привязки баннеров, не привязанных к страницам, к месту на странице
2. Ищет в базе привязки баннеров, привязанных к открытой странице, к месту на странице.
3. Объединяет листы баннеров, перекрывая значения совпадающих элементов первого, значениями второго
4. Перерасчитывает процент показов исходя из условий, что сумма значений процента показов в листе баннеров равна 100 и пропорции после перерасчета должны быть неизменны.
5. Выбирает случайный баннер из листа. Выбор происходит с учетом пересчитанного процента показа.
6. Выводит баннер, учитывая его тип.

Во всей этой системе вроде-бы ничего сложного не наблюдается. Одна загвоздка - выбор случайного баннера с учетом процента показа.

У меня есть одна идейка как это можно реализовать - мне не очень нравится, но сначала расскажу:
1. Каждое место под баннер снабжается счетчиками "показы списка" и "показы баннера"
2. Каждое место на конкретной странице снабжается такими же счетчиками, перекрывающими значения первых
3. При каждой привязке нового баннера к месту и/или странице и при достижении нулевых значений счетчиками "показы списка" - их значение переустанавливается на 100
4. При каждом показе баннера значения счетчиков уменьшаются. Баннеры со счетчиком показов равным 0 - исключаются.

Минус этой идеи в том, что по началу она будет давать примерно одинаковое количество показов для всех баннеров списка. По мере уменьшения счетчиков файлы будут исключаться из обработки и со временем возникнет ситуация, когда все счетчики листа, кроме одного, пусты и на страницу выводится один и тот же баннер. И так до тех пор пока счетчик "показы листа" не достигнет 0 и показы листа не будут пересчитаны. После этого опять будут выводиться все баннеры листа в одинаковых пропорциях.

Может у кого есть идеи как избавиться от этого лага? Или как учесть процент показа другим способом...

ЗЫ: Я описывал кусочек этой идеи в теме "Выбор случайной строки из файла". Думаю тот пост можно убить.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!