Парадигмы эмо-программирования

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Парадигмы эмо-программирования

Сообщение RayShade » 06.04.2009 (Пн) 11:24

Amed писал(а):Вон с российской эстрады!

На*** с пляжа! :)
I don't understand. Sorry.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 06.04.2009 (Пн) 15:39

Фу, как нецивилизовано, надо проявлять больше толерастии! :mrgreen:

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 07.04.2009 (Вт) 17:16

А-а-а! Жесть! В недрах моей нездоровой фантазии был рожден данный эмоциональный код. Запускаем и плавно фигеем :shock:

Код: Выделить всё
#Compile Exe
#Dim All

Function PBMain () As Long
  Local R As Long

  Randomize Cvs(Chr$(4,250,69,45))
     For  r = 1 To 6
         Print Chr$(Rnd(65,88));
     Next r
     Print " "

    Randomize Cvs(Chr$(1,64,241,237))
      For  r = 1 To 5
           Print Chr$(Rnd(65,83));
       Next r
     Print " "
 
   Randomize Cvs(Chr$(2,210,122,195))
      For  r = 1 To 6
           Print Chr$(Rnd(65,88));
       Next r
      Print " "
  WaitKey$

End Function


Кто-нибудь хочет об этом поговорить? Объяснить суть явления...
Вложения
RND.zip
(5.46 Кб) Скачиваний: 74

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 07.04.2009 (Вт) 20:10

Вот тут товарищ, называет это методом Денисова, с таким же успехом, можно назвать методом Jange.
Поскольку до этой "светлой" идеи, додумался самостоятельно. Мысли у дураков сходятся :mrgreen:

http://samara.chat.ru/
Я не математик, так что извините, если что не так :) Метод был придуман в начале 90-х годов Денисовым В.Е. И первая реализация была осуществлена коллективом ТОО "Гамма-фильм тем самым, чьи игры выходили из издательства Gamos.
Идея метода проста - представить последовательность байт a1,a2,?an. Как результат работы некоторой функции F(x1,x2,..xn).
То есть:
F1(x1...xn)=a1
F2(x1..xn)=a2
и т.д. в итоге Fn(x1..xn)=an. Если набор аргументов x1..xn в памяти компьютера занимает объём меньше чем a1..an то на лицо происходит сжатие данных.
В качестве функции был взят генератор случайных чисел, который по Кнуту имеет вид:
Хn=(a*Xn-1 +с) mod m.
Данная функция давала возможность при использовании аргументов получать последовательности по размеру больше размера аргументов. Первоначально данный метод применялся на 286-х для сжатия картинок. Тогда он полностью провалился, так как либо подбор аргументов происходил слишком долго, либо коэффициент сжатия был слишком низкий. Да и идеальная картинка для этого метода должна выглядеть как набор случайных пикселей. В таком случае последовательности достигали длинны в 70-80 байт притом, что в качестве аргументов использовались 4-х байтные числа. А подбор таких последовательностей шёл несколько суток.
Прошло 10 лет и вот долго собираясь, решил я проверить этот метод на моём PII-450.
И так метод является методом ?сжатия? без потерь. Идеально должен работать на файлах с минимальным кол-вом повторяющихся элементов - я пробовал на *.png.
В качестве первого приближения взял в качестве генератора стандартный перловский rand.
Алгоритм такой:
1) Задаётся $KS отвечающее за коэффициент сжатия и соответственно за время работы
2) Из исходного файла берём $KS байт
3) Генерируем случайным образом начальное значение $Start
4) Генерируем последовательности длинной $KS с srand($Start)
5) Если последовательности совпадают, записываем $Start в конечный файл, иначе возвращаемся в пункт 3
6) Если не конец файла возвращаемся в пункт 2
На выходе имеем файл, состоящий из начальных значений.
Результаты тестирования такие:
Последовательность в 3 байта ($KS=3) подбирается от 20с до 2 -х минут при длине $Start в 2 байта. На более длинные последовательности у меня не хватает терпения:)

Где можно применять данный метод?

Я пока вижу две области:
1) прямое назначение - компрессия. Но применять его надо поверх любого алгоритма, который уменьшает кол-во повторяющихся элементов, например LZW.
2) Криптография - представим, что в формуле из Кнута начальное X0 достаточно длинное число, например в 256 бит, тогда изъяв его из конечного файла, мы получаем файл, раскрыть который достаточно сложно, тем более что на входе мы работаем не с исходными данными, а обработанными и приведёнными к виду с наименьшим числом повторений.
3) При применении повторно снова можно получать компресиию. В теории вообще получается что если неоднократно применять данный метод то можно получить в конечном итоге одно стартовое значение, кожффициент сжатия и кол-во применений алгоритма к файлу.

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

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 07.04.2009 (Вт) 23:54

Вероятно с помощью этого алгоритма, можно сжать "Войну и Мир", в одно число :)

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Парадигмы эмо-программирования

Сообщение Debugger » 08.04.2009 (Ср) 8:48

Конечно.
Сжатие до 1 числа - это такой бред. Попробуйте запихнуть rar-ку в rar-ку и так далее. Сжатие будет сильнее? Сомневаюсь.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Парадигмы эмо-программирования

Сообщение iGrok » 08.04.2009 (Ср) 9:50

Debugger писал(а):Конечно.
Сжатие до 1 числа - это такой бред. Попробуйте запихнуть rar-ку в rar-ку и так далее. Сжатие будет сильнее? Сомневаюсь.

И правильно делаешь. А вот с помощью этого алгоритма ДЕЙСТВИТЕЛЬНО можно сжать войну и мир в одно число.
Только вот процесс "сжатия" займёт несколько лет...
label:
cli
jmp label

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 9:52

Debugger писал(а):Конечно.
Сжатие до 1 числа - это такой бред. Попробуйте запихнуть rar-ку в rar-ку и так далее. Сжатие будет сильнее? Сомневаюсь.


Ты приводишь пример из классических алгоритмов сжатия, основанных на ликвидации избыточности в тексте.
В моем случае, совершенно иной случай. Собственно, это просто 4 байтовое стартовое число, для генератора псевдослучайных чисел.
Думаю что, при наличии неограниченных вычислительных ресурсов (квантовый компьютер например), можно найти такое стартовое число, и такой генератор, который выдаст гамму, которая является романом "Война и Мир"...
Cамый прикол этого метода, ему совершенно пофигу информационная энтропия сообщения. Сжатие может быть практически бесконечным (если удасться подобрать генератор и стартовое число для него).

Вот ниже примерчик, при 8 байтах входных параметров, генератор выдает 10 байтную строчку HELLO WORLD
Это уже компрессия! Причем подбирается такая последовательность всего пару минут.
Можно вообще сжимать - уже сжатый архив, который обычными методами, невозможно уменьшить даже на 1 бит (!)
А этому алгоритму по-фигу, он просто ищет нужную последовательность гаммы, перебирая сотни миллионов вариантов входных параметров для генератора.
Единственное, что нужно для создания такого супер архиватора - неисчерпаемые вычислительные ресурсы, т.е. квантовый компьютер.
Но если это удасться сделать, это будет как полет со сверхсветовой скоростью...

Код: Выделить всё
#Compile Exe
#Dim All

Function PBMain () As Long
  Local R As Long
      Randomize Cvs(Chr$(1,122,19,22))
        For  r = 1 To 5
           Print Chr$(Rnd(65,88));
        Next r
        Print " " ;

      Randomize Cvs(Chr$( 1,  74,  137,  195))
        For  r = 1 To 5
           Print Chr$(Rnd(65,88));
        Next r
        Print " "
  WaitKey$
End Function
Вложения
hello.zip
(5.36 Кб) Скачиваний: 58

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 9:59

можно найти такое стартовое число, и такой генератор,
Дык, сладкий мой, "генератор" это то же информация, которая то же имеет объем.
Сразу чувствуется гуманитарный склад ума - ни малейшей попытки анализа.
Тут уж определись - что будет в твоем "архиве"? Затравка генератора, или еще и сам генератор?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: Парадигмы эмо-программирования

Сообщение alibek » 08.04.2009 (Ср) 10:02

jangle писал(а):Единственное, что нужно для создания такого супер архиватора - неисчерпаемые вычислительные ресурсы, т.е. квантовый компьютер.

Ты просто фразу где-то услышал "квантовый компьютер", или как?
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 10:05

ANDLL писал(а):генератор" это то же информация, которая то же имеет объем.
Сразу чувствуется гуманитарный склад ума - ни малейшей попытки анализа.
Тут уж определись - что будет в твоем "архиве"? Затравка генератора, или еще и сам генератор?


Ты же не пересылаешь дистрибутив WinRar`a вместе с каждым архивом. У получателя информации уже установлен архиватор (генератор). По каналу связи - передаем стартовое число для генератора. Получатель генерирует с его помощью гамму - которая собственно и является передаваемым сообщением.
По моему, тут все логично.

Ты просто фразу где-то услышал "квантовый компьютер", или как?


Статья в википедии

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 10:47

Ты же не пересылаешь дистрибутив WinRar`a вместе с каждым архивом. У получателя информации уже установлен архиватор (генератор). По каналу связи - передаем стартовое число для генератора. Получатель генерирует с его помощью гамму - которая собственно и является передаваемым сообщением.
То есть генератор(функция) будет один для всех последовательностей? А передавать будешь одну лишь затравку?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 10:56

ANDLL писал(а):То есть генератор(функция) будет один для всех последовательностей? А передавать будешь одну лишь затравку?


Ну да, к примеру передаем по каналу связи 4 байта: 1, 122, 19, 22

Они становятся стартовыми параметрами для генератора:
Код: Выделить всё
Randomize Cvs(Chr$(1,122,19,22))


Затем генерируем гамму из 5 байтов:
Код: Выделить всё
For  r = 1 To 5: Print Chr$(Rnd(65,88)):Next r


И получем строку: HELLO

В итоге, по каналу связи нам передали 4 байта, а мы восстановили из них 5 байт.

karlex
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 138
Зарегистрирован: 30.03.2009 (Пн) 20:25
Откуда: Пермский край, г.Кунгур

Re: Парадигмы эмо-программирования

Сообщение karlex » 08.04.2009 (Ср) 11:10

jangle писал(а):Вероятно с помощью этого алгоритма, можно сжать "Войну и Мир", в одно число :)

Одно число понятие растяжимое, сколько циферок будет в этом числе?
Так же можно и результат сжатия RAR'ом назвать "одним числом", почему бы и нет?
Все гениальное — просто!
-------------------------------------
Кто ищет — тот всегда найдет!
-------------------------------------
Лень — двигатель прогресса.
Прогресс — двигатель лени.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 11:24

Ну да, к примеру передаем по каналу связи 4 байта
А развер "числа" всегда фиксированный или каждый раз разный?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 11:29

karlex писал(а):Одно число понятие растяжимое, сколько циферок будет в этом числе?
Так же можно и результат сжатия RAR'ом назвать "одним числом", почему бы и нет?


Думаю, чем сложнее внутренняя логика генератора, тем короче стартовое число для получения нужной гаммы.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 11:36

Вопрос был
А размер "числа"(для данного конкретного генератора) всегда фиксированный или каждый раз разный?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 11:36

ANDLL писал(а):А развер "числа" всегда фиксированный или каждый раз разный?


Допустим фиксированный размер, всегда из 4 байтов - будем восстанавливать только 6 байтов сообщения.

В 4 байта, можно уместить 4,294,967,295 вариантов стартового числа для генератора. Т.е. с высокой степенью вероятности, можно сказать, что например для любого слова из 6 букв на английском языке (27 символов в алфавите), есть 4-байтовое стартовое число которое сгенерирует его.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 11:39

То есть ты предлагаешь алгоритм сжатия шести байт в четыре?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 11:48

ANDLL писал(а):То есть ты предлагаешь алгоритм сжатия шести байт в четыре?


Cжатие 6 байт в 4 - это уже 25% компрессия. Но поскольку данному алгориму плевать на энтропию, он может сжимать уже пожатые тексты. Например, сначала сжимаем текст самым лучшим классическим LZW алгоритмом, а потом уже этим.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 12:43

Я надеюсь понятно, что алгоритма который сжимает произвольные 6 байтов в 4 не существует в природе?
То есть некоторые "шестерки" байтов ты будешь сжимать до четырех, а некоторые - не будешь сжимать.
Вопрос - с чего ты взял что в исходных данных(которые скажем zip-архив) "сжимаемых" шестерок окажеться сколько нибудь существенное количество?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

pronto
Постоялец
Постоялец
 
Сообщения: 597
Зарегистрирован: 04.12.2005 (Вс) 6:20
Откуда: Владивосток

Re: Парадигмы эмо-программирования

Сообщение pronto » 08.04.2009 (Ср) 12:48

Сжимаемых "шестерок" будет ровно 2^32?
O, sancta simplicitas!

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 13:07

По крайней мере их не может быть больше
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Парадигмы эмо-программирования

Сообщение Debugger » 08.04.2009 (Ср) 13:15

Интересно.
Когда я писал MD5 брутер, я столкнулся с одной неожиданной вещью. Закодировав одну строчку (длинную) и сбрутив ее перебором, я получил совсем другую. Причем ее хэш равнялся хэшу первоначальной строчки.
А теперь докажи, что твои 4 байта будут обязательно раскодированы как определенные 6. ИМХО, есть вероятность, что результат раскодирования будет не равен исходному. Подумаем логикой. Если ко всем 6-байтным последовательностям повесить уникальные номерки, то их количество нельзя запихать в 4 байта.
P.S. Представил себе такое: седой jangle передает дискетку в 1 Мб своим внукам и говорит: "Вот, детки, я закодировал все русскую литературу своим знаменитым алгоритмом. Это последняя копия "Войны и мира". Я поместил все сюда". Детки втыкаю дискетку и начинают раскодировать (тогда уже будут "квантовые компьютеры"). На каком-то этапе раскодирования произойдет сбой, о котором говорилось выше. И бедные детки получат не книжку, а беспорядочный набор символов.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 13:43

ANDLL писал(а):Я надеюсь понятно, что алгоритма который сжимает произвольные 6 байтов в 4 не существует в природе?


Ну конечно, нельзя закодировать 6 байтов (0..255) - 4 байтами (0..255). Это понятно

То есть некоторые "шестерки" байтов ты будешь сжимать до четырех, а некоторые - не будешь сжимать.
Вопрос - с чего ты взял что в исходных данных(которые скажем zip-архив) "сжимаемых" шестерок окажеться сколько нибудь существенное количество?


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

А вот несжатый текст типа: AAAAAA, BBBBBB, CCCCCC, DDDDDD - практически нереально подобрать

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Re: Парадигмы эмо-программирования

Сообщение RayShade » 08.04.2009 (Ср) 13:48

Сложность реализации этой задачи не соответствует пользе от ее разрешения :) Сейчас уже архиваторы-то по моему и не так нужны, кругом и места и пропускной способности навалом :) Не то что раньше -- запихни побольше файлов на 1.44 дискету :)
I don't understand. Sorry.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 13:53

Debugger писал(а):Интересно.
А теперь докажи, что твои 4 байта будут обязательно раскодированы как определенные 6. ИМХО, есть вероятность, что результат раскодирования будет не равен исходному. Подумаем логикой. Если ко всем 6-байтным последовательностям повесить уникальные номерки, то их количество нельзя запихать в 4 байта.


Тут и доказывать нечего. Псевдослучайный генератор, при одинаковых стартовых условиях, всегда выдаст одну и ту же гамму. Он поэтому и называется "псевдослучайным".


Кстати подобрал свой ник! Из 4 байтов 1,153,128,181 генерируется 6 байтовое слово - JANGLE :)

Код: Выделить всё
#Compile Exe
#Dim All

Function PBMain () As Long
  Local R As Long
      Randomize Cvs(Chr$(1,153,128,181))
        For  r = 1 To 6
           Print Chr$(Rnd(65,78));
        Next r
        Print " " ;
  WaitKey$

End Function

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Парадигмы эмо-программирования

Сообщение Debugger » 08.04.2009 (Ср) 14:06

А ты напиши лучше универсальную программу. Вводишь 4 числа, вводишь длинну (кстати, это больше 4 байт тогда) и он выдает строчку.

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Re: Парадигмы эмо-программирования

Сообщение ANDLL » 08.04.2009 (Ср) 15:19

Сжатые данные - очень похожи по статистическому распределению на псевдослучайную последовательность.
Хотелось бы увидеть обоснование
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Re: Парадигмы эмо-программирования

Сообщение jangle » 08.04.2009 (Ср) 15:24

Хотелось бы увидеть обоснование


Cсылку искать лень, но это так.
-----------------------------------------------------------------------------------------------------
Подумал я тут немного, идея оказывается дурацкая и глупая. Короче говоря, забудьте все, что я тут написал

Пред.След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 40

    TopList