Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Embarcadero RAD Studio XE3

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Открыть новую тему     Написать ответ в эту тему

deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sergionn
 
По поводу US Capital Trivia. Довелось чуть глубже копнуть в профайлере (у Apple он называется Instruments). Реальное использование памяти дошло до 257Mb (real memory 257Mb, virtual memory - 640Mb), после чего crash. Пару раз вылетало предупреждение о высоком размере использования памяти. CPU грузит не сильно - в пределах 6%, но при этом устойчиво входит на 1-е место в top-5 использующих CPU процессов.  
 
Нашел один баг: нажатие кнопки Home на экране с ответом работает как Back, а не Home.  
 
Приложение устойчиво валится не позднее чем через 3 цикла ответов на 20 вопросов!
 
Как то так)
 
P.S Для сравнения запустил оксигеновские приложения на том же дивайсе. Browse500 который показывает картинки с фотохостинга 500px - максимальный размер памяти (real 16.88Mb, virtual memory - 91Mb), max CPU=2%. Для TicTacToe max cpu = 2,3%, max real memory = 8,6Mb, max virtual memory = 110Mb. В top-5 использующих CPU процессов не входили ни разу.
 
P.P.S. Очень похоже на memory leak, поэтому привожу для Capital стартовые данные. На сааамом первом запуске - когда ни одну кнопку не тронул, просто указал профайлеру запустить Capital, показатели такие: real memory = 47Mb, Virtual memory = 217 Mb, cpu=3%. Ответ на первый вопрос поднимает показатели: real memory = 67Mb, virtual memory = 253Mb, cpu=6%.
 
Боюсь на iPad1 с 256Mb памяти и части iPod Touch (ну и старые айфоны) - запускать что то FMX не выйдет в принципе

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 10:40 25-03-2013 | Исправлено: deks, 10:56 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks спасибо за обзор,
все мои опасения подтвердились, и вырисовывается следующая картина, схожая по симптомам c win-версией:
в fmx так и ничего не поменяли, не оптимизировали, не убрали баги,
просто тупо компилят тот говнокод новым (новым ли?) компилятором,
а сама разработка соответственно под ios это просто фэйк, показуха для акционеров....
Xe4, если таковой релиз вообще будет иметь место в апреле - это просто,
как некий инсайдер заметил на delphihaters просто:
"XE3 sales result is just the worse when compared with the last 4 years, Embarcadero needs to release earlier to avoid another layoff before June"
 
Deks, eсли тебя не затруднит не смог бы ты выложить подобный тест-обзор
на g+, сейчас или потом после теста релизной версии (уверен, что ничего кардинально не будет изменено), дабы поспособствовать концу мучений emb с дельфи,
т.к. четко видно, что текущий менеджмент ПРОСТО убивает delphi, и ей срочно нужно спасение в виде новой команды разработчиков, возрождения в новом виде и т.п.

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 12:10 25-03-2013 | Исправлено: sergionn, 12:16 25-03-2013
valgreesh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks
Да уж, цифры неутешительные
 
sergionn

Цитата:
а сама разработка соответственно под ios это просто фэйк, показуха для акционеров....  

 
Какие акционеры? Абракадабра частная же компания.

Всего записей: 292 | Зарегистр. 30-11-2011 | Отправлено: 15:02 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Какие акционеры? Абракадабра частная же компания.

можно грубо (но не совсем правильно) сказать что компания является частной если принадлежит одному человеку или максимум династии (семье),
если же компанией владеют или управляют несколько не связанных между собой людей,
то компания является акционерной - коих львиная доля в мире.
В частности emb владеет частный инвестиционный фонд Thoma Cressey Bravo,
который в свою очередь распоряжается деньгами уже СВОИХ инвесторов.
 
Т.е. грубо: акционерами emb теперь уже являются люди и компании доверившие свои бабосы в управление фонду Thoma Cressey Bravo.
Из этого и получаются все эти говнорелизы, маркетинговые трюки, призваны только для одного - показать акционерам бурную деятельность на конкретный момент, с обещанием будущих прибылей так и текущих продаж основанных на нереальных ОБЕЩАНИЯХ. Отсюда и бессовестные лозунги про разработку под win8 и басня про mobile studio!
И боссам этого фонда сугубо пофигу как на сам дельфи так и на его судьбу - важны краткосрочные цифры, а если тема не пошла, то просто выбросят из портфеля инвестиций - т.е. продадут пока фирма еще чего то стоит........
Этим и объясняется след фраза "XE3 sales result is just the worse when compared with the last 4 years, Embarcadero needs to release earlier to avoid another layoff before June",
т.е. чтобы избежать увольнений им нужно, внимание!:
ТУПО восполнить недополученные вследствии плохих продаж XE3 фин.результаты!
Я даже не могу представить насколько сырой продукт xe4 нам будут втюхивать!
Т.е. босы emb таким способом просто пытаются как можно больше удержаться на плаву до грядущих чисток на собрании в июне!
И главными фичами xe4 видимо хотят нам представить это недо-ios и возможно устранение каких то багов!

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 15:33 25-03-2013 | Исправлено: sergionn, 16:13 25-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sergionn
 
Да фиг с ними, с акционерами ЭМРО - как нибудь разберутся со своей конторкой!
 
Я бы вернулся к FMX. Let's be technical.  
 
Проведенное исследование довольно ясно показывает - FMX довольно тяжеловесная оболочка. "Вес" происходит оттого, что мы "все свое берем с собой". То есть принципиально никто архитектуру не менял - в FMX.iOS лежит полностью кастомный код GUI, легких "оберток" сверху я не видел. Видимо, перерисовки этого кастомного уровня и грузят процессор. Следует отметить, что загрузка процессора хоть и выше в 2-3 раза, чем на нативных приложениях, но все равно приемлемая на свежих устройствах! Старых устройств под руками нету, так что затестить не получится.
 
Более серьезная проблема - довольно длительное время старта приложения, может быть это связано с инициализацией всего подкапотного зоопарка. Это опасно: если приложение стартует в районе 30 секунд, то системный демон может его прихлопнуть (так обламывался апгрейд некоторых приложений, у которых большая база данных была на устройстве - не успевала обновляться, как ее прихлопывал демон).  Capital стартует секунд 10! Боюсь думать, как будет стартовать более серьезное приложение.
 
И самая главная проблема - почему эта фигня так кушает память?? Это уже реальная засада. Одно дело, если memory leak. Их пофиксят (к XE5, возможно). но если сам FMX требовательный? Где данные хранить? Или ждем-с когда по спекам iOS будет догонять Android с 2Gb RAM? Кто в курсе - чего в FMX на iOS может жрать память?
 
Добавлено:
Решил тут затестить еще одно имеющееся в Store приложение от ЭМРО на FMX: часики (_http://blogs.embarcadero.com/ao/2013/03/22/39421). Весят часики 17Mb, и это немало, например, оксигеновские browse500 - 800Kb, а TicTacToe - 8,1Mb.  
 
Результаты замеров. cpu load в обычном режиме около 4-6% (опять top-1). Если включить smooth mode в часиках (обновление не раз в секунду, а плавное - до40-50fps), то cpu load = 48-60%. Я такое на real racing видел)) ну и использованием памяти. real memory 100Mb, virtual 270Mb. Роста потребления памяти не наблюдаю, так что графическая часть FMX "не течет". Часики немного фейлят режим retina screen на iPhone5 (изображение тупо растянуто), а также фейлят splash screen при загрузке (размер splash не подходит для retina screen). В обычном приложении iOS ресурсы для разных типов экранов делаются отдельными картинками, что и порождает довольно большой обьем приложения.
 
Для сравнения с совсем левым приложением - клиент instagram жрет 48Mb real memory и 177Mb virtual.  

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 17:28 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks
трудно быть оракулом не видя кода, но по аналогии с виндой:
1) долгая загрузка:
компилятся все стандартные шейдеры: shadow, glow и тп.,
на вин-osx они уже скомпилированы, на ios идут в виде текста и компилятся на лету,
2) Много памяти: если отталкиваться от исходников в xe3 - то это просто мрак: в память грузятся одни и те же переменные по нескольку раз, те же шейдеры в виде строк передаются из функции в функцию, битмапы-текстуры сидят как в оперативной памяти, так и дублируются в видео память, причем в некоторых местах по многу раз.
Также возможно, это конечно глупо но, в память могут грузиться и шейдеры от dx9-10, как это сделано на windows, см файлы: FMX.Filter.Standard.pas, FMX.Materials.pas, FMX.Filter.Custom.pas, FMX.Filter.Effects.pas - под виндой грузятся в память шейдеры для osx и ios - видимо просто было лень сделать отдельные файлы?
Также постоянно в fmx нарушается золотое правило - повторяющиеся блоки оформлять в виде функций - имеет место быть многократные повторения кода.
3) Медленная работа: все анимации, биндинги и т.п. устанавливаются через rtti по имени property, т.е. обезьяна не хранит ссылку на конкретное свойство, а ищет их каждый раз его по ИМЕНИ! Мало того что установка через rtti медленна сама по себе, так тут еще и постоянный поиск имен!
Функции вызываются по нескольку раз вложенно, даже там где можно сократить. Идут постоянные копирования в переменные, которые тут же, ниже по коду переписываются другими данными - т.е. оптимизацией как таковой не пахнет вообще!
Еще есть работа со стилями, я так понял автор ее делал на подобии того как это реализовано во флеше, но реализовал он ее через жопу - я даже не стал в них разбираться - мне хреново стало, там тоже идет постоянный поиск по строкам и другие ужасы........  
Классы до отказа забиты полями на все случаи жизни, к примеру TControl, который несет в себе контекст для отображения, используется как основа для всех элементов на экране, даже тех которые вообще не требует возможностей этого класса! Каретка перед тем как прорисоваться на экране ищется по ИМЕНИ в списке анимаций среди стилей - этакая пирамида. Отрисовка дочерних элементов - это просто жуть, складывается такое ощущение, что автор потерял целостное видение иерархии отображения, и везде где что то не отрисовывалось - понавставлял кодовых костылей, в итоге получилось что некоторые элементы отрисовываются по нескольку раз, и даже тогда года их вообще не задевают!
 
Это так все на вскидку - если разбирать все подробно то просто мрак.
Но если если потратить месяц-другой на оптимизацию, то из обезьяны получился бы толковый фреймворк, но я так понял, что не срослось у них что-то и они погнали в другом направлении - за цифрами..........

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 17:59 25-03-2013 | Исправлено: sergionn, 18:28 25-03-2013
HeMet

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
понавставлял кодовых костылей, в итоге получилось что некоторые элементы отрисовываются по нескольку раз

Подтверждаю: все дочерние элементы рисуются два раза. Причина куча копипасты и кривая работа с ClipChildren: делаем дырки по форме и положению дочерних контролов в родителе, рисуем родителя, тут же рисуем дочерние элементы (они не рисуются ибо приходятся прям на дырки), убираем дырки, рисуем дочерние элементы.
В том же коде костыль для ClipChildren, который ограничивает вырезание дырок только первым дочерним элементом. Причина: метода для наложения дырок по форме произвольной кривой нет, а если накладывать по примитивам, то глючит рендеринг под Direct2D. У меня сходу исправить это не получилось (нужно, по-хорошему расширять интерфейс TCanvas), так что пока оставил.
Ещё один интересный момент: кол-во эффектов на контрол ограничено одним. Используется первый в списке, а остальные игнорируются. Вероятно, сваять рендеринг нескольких эффектов в текстуру сходу у них не получилось (у меня, кстати, тоже ).

Всего записей: 212 | Зарегистр. 05-09-2007 | Отправлено: 19:34 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Используется первый в списке, а остальные игнорируются.

не знаю как теперь в fmx2, но в первой версии они не игнорировались, просто почти все эффекты архитектурно не могут процессить контрол в определенных комбинациях,
 это было мое первое удивление которое я излил на форуме _https://forums.embarcadero.com/thread.jspa?messageID=413875&#413875,
сам автор fmx посоветовал мне плодить детей-контролов, и затем применять эффекты каждому контролу отдельно,
что у меня тоже не очень хорошо получилось, а если бы получилось то память бы такой трюк с новым контролом жралась немеряно!
Поэтому я и пошел своим путем (все с нуля), и сделал все как положено:
теперь у меня каждый объект может иметь любое количество эффектов, в любой комбинации друг с другом, будь то шейп или битмап............
_http://s019.radikal.ru/i624/1303/5d/b8afbc4a4c7c.jpg
на пинокио наложены: blur, contrast, у него есть shadow, reflection + он скошен немного
у кота тень, поворот, у текста отражение, тень...........

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 20:15 25-03-2013 | Исправлено: sergionn, 20:34 25-03-2013
HeMet

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
не знаю как теперь в fmx2

Очень просто:  

Код:
 
      Canvas.SetMatrix(AbsoluteMatrix);
      for I := 0 to FChildren.Count - 1 do
        if (TFmxObject(FChildren[I]) is TEffect) and (TEffect(FChildren[I_]).Enabled) then
        begin
          Effect := TEffect(FChildren[I_]);
          EffectRect := Effect.GetRect(RectF(0, 0, Width, Height));
          Canvas.DrawBitmap(FEffectBitmap, RectF(0, 0, FEffectBitmap.Width, FEffectBitmap.Height), EffectRect, AbsoluteOpacity, RotationAngle = 0);
          Break;
        end;
    end;
 

 
Эта ветка if для уже просчитанного эффекта, но в соседней тоже самое.
 

Цитата:
Поэтому я и пошел своим путем (все с нуля), и сделал все как положено:

И много работы вышло?

Всего записей: 212 | Зарегистр. 05-09-2007 | Отправлено: 20:40 25-03-2013 | Исправлено: HeMet, 20:42 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Очень просто:  

я стараюсь как можно меньше без необходимости этот быдлокод лицезреть - у меня настроение портится.........

Цитата:
И много работы вышло?

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

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 20:50 25-03-2013 | Исправлено: sergionn, 21:59 25-03-2013
SolidSnakeRU

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И какой ключевой вывод?
Серверную часть на делфи х64, а клиентские приложения под ios и android на
HTML5 + CSS + Javascript упакованное в нативное приложение? (_http://www.appmobi.com/)
Не стоит ждать мобайл студию?

Всего записей: 248 | Зарегистр. 27-08-2008 | Отправлено: 23:53 25-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
HTML5 + CSS + Javascript упакованное в нативное приложение?

это будет тоже хрень, только в другой руке,
во многих этих фреймворках рендеринг идет через webkit - запусти хром с простецким сайтом - посмотри как он здорово кушает память, ест батарею и т.п. + javascript с его динамической типизацией - в итоге хрен редьки не слаще.........
хотя возможно _http://www.appmobi.com как пишут использует какую-то сильно "прокачанную" канву для рендеринга, нужно просто попробовать позапускать сделанные прложения на нем сравнить с адобовским phonegap, sencha desktop, и node-webkit, но последний мне не очень понравился, сильно тормозной он вышел, такой же как хром.......
 
deks посмотри на этот сайт _http://www.pixate.com,
у них свой движок который отрисовывает ui как через битмапы так и через векторную графику, позволяя стилизовать ios gui-элементы на лету,
вот их демка _https://itunes.apple.com/us/app/pixate-playground/id578676382?mt=8  
- она делает именно то, что делает fmx, только в качестве стилей использует не из воздуха выдуманный формат стилей, а стилизацию на css3,
именно так и должна была работать fmx если бы у наших горе-программистов были прямые руки и светлая голова..........

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 00:16 26-03-2013 | Исправлено: sergionn, 00:28 26-03-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Capital стартует секунд 10! Боюсь думать, как будет стартовать более серьезное приложение.   

 
сли дело в FMX - то примерно столько же. А дальше может сработать Microsoft Way - за время, нужно для оптимизации, проще дождаться, пока железо подрастёт
 
RemObjects сейчас могли бы тупо реализовывать все демки Эмбы на своей платформе, если она такая хорошая, и демонстрировать преимущество. Причем такой сюжет могли бы осветить и яблочные журналисты, не только паскальные

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 00:43 26-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
а клиентские приложения под ios и android на  
HTML5 + CSS + Javascript  

 
Не стоит этого делать! Facebook, будучи апологетом HTML5 приложений, таки признала, что нативное приложение круче и переписала клиент Facebook для iOS как нативное приложение. Аналогично делает Google: их клиент для GMail представлял собой контейнер для HTML5 приложения. Так они купили Sparrow, которая нативный почтовый клиент сделала!  
 
Ну и если не на примерах, а попытаться объяснить.. Зачем делать биндинг к возможностям платформы через браузер? Не самый прямой способ, а учитывая JavaScript - не самый быстрый. Проще взять нативный код и получить доступ к возможностям платформы.
 

Цитата:
pixate

 
Понравилось. но это не самостоятельный GUI, это скиновый движок. Они тюнингуют стандартные элементы управления своими стилями на CSS. Кэшируют битмэпы. Выглядит шустро. Покручу демку под отладчиком - посмотрим на потребление памяти и cpu. Отпишусь по результатам.
 

Цитата:
RemObjects


Цитата:
на своей платформе

 
Отмечу: у Ремобджектов НЕТ своей платформы - это тот же Objective-C с паскалевским синтаксисом и возможностью вызова паскалевского кросс-платформенного кода. Щас вся правка багов заключается в том, чтобы сделать паскалевский код неотличимым от родного Objective-C с полной интероперабельностью.
 
А демки, да, можно переписать и посмотреть на расход памяти и cpu. но стоит таки увидеть исходный код этих демок! Я вот лично с хода так и не понял - куда в Capital прикручен Interbase. Нафига он там? Табличка с 50-ю записями о столицах штатов? Почему не список в памяти, инициализированный статическим массивом?
 
 
Добавлено:

Цитата:
Capital стартует секунд 10


Цитата:
дело в FMX - то примерно столько же

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

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 10:00 26-03-2013
valgreesh



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks

Цитата:
Я вот лично с хода так и не понял - куда в Capital прикручен Interbase. Нафига он там?

 
Proof of concept очевидно.

Всего записей: 292 | Зарегистр. 30-11-2011 | Отправлено: 10:28 26-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valgreesh
 
Логичнее было бы FishFact портануть! Там то БД используется классическим способом

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 10:31 26-03-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
но прога совсем не айфонная

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 11:31 26-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 
Ну вот и показали бы - как нужно портировать приложения на iOS! Типа, для десктопа один интерфейс, а для iOS путем стилей - превращается, превращается!...  
 
Ну или просто показали как делать кросс-платформенное приложение! А то я ума не приложу - как FMX сможет сделать кросс-платформенный интерфейс)

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 12:08 26-03-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Весь вопрос ради кого эти демки делаются. Дельфистов уже, кажется, не надуешь, они en masse от FMX шарахаются
 
Значит ради ай-фонистов. А для них унылые программки "рыбка в банке" не аргумент, вот гламурные часики со стразами - то да...

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 15:46 26-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья, вы еще не поняли, все эти говнодемки делаются для показухи:
наши программы в апсторе и все тут: отслюнявте очередные бонусы для боссов,
и не отрывайте от кормушки, все точка!,
Не будет ни каких нормальных программ на fmx для ios!
тем более не будет никакого нормально работающего софта под андроид - будет ограниченно (пара-тройка фич) работать ровно на планшетах и смартфонах - на тех которые есть у разработчиков!  
Если все же, кто-то самый отважный, все таки попытается сделать коммерцию на этом горе-фреймворке,
то после первых же отзывов РЕАЛЬНЫХ пользователей, его погонят грязными тряпками из всех апстров и плеев!

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 15:53 26-03-2013 | Исправлено: sergionn, 16:06 26-03-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Embarcadero RAD Studio XE3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru