powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный бунт
25 сообщений из 73, страница 1 из 3
Пятничный бунт
    #39270993
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интегрируя набежавшее в разных темах, призываю - сжечь еретиков!

Если ты пишешь на ассемблере - ты видишь прямой результат твоего кода,

Если ты пишешь на Си, С-- ты представляешь в уме прямой результат твоего кода.

Если ты пишешь на С с классами, Obj Pascal, Oberon - ты представляешь в уме прямой результат твоего кода с поправкой на косвенные вызовы.

Если ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.

// Навеяно Майерсом.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39270998
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl// Навеяно Майерсом.
Не могу всерьез воспринимать советы по программированию от человека с прической солиста диско-группы 70-х
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271000
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Советы надо рассматривать критически.

Одним из ярких примеров сокрытия сложности является "легкость" алгоритма сортировки на функциональном языке. Где накладные расходы превышали выгоду алгоритма
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271053
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФП не очень пригодны для написания утилитарных вещей. А я сортировку
считаю больше утилитой чем алгоритмом.

Согласно классификации Душкина само ФП предназначено для синтаксических
трансляторов, эквивалентных преобразований программ, различного рода DSL и
описателей, и для доказательств существования какого-то свойства программы.

Тоесть сортировка в ФП - (как впрочем и расчет факториала и "Ханойские башни") это просто
неудачный наглядный пример.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271535
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.Ну, как бы, что-то получаем взамен чего-то.
Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271634
alexy_black
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.так не используйте!
мне это кажестя глупым. ведь именно в этом суть абстракции - черный ящик. тут нужно выбрать - либо ты пишешь на машинных кодах и знаешь все, либо ты используешь абстракцию и намеренно скрываешь от себя какие-то знания, чтоб сосредоточится на чем-нибудь другом. намеренно - если ты хочешь скрыть от себя детали, нужна абстракция, если хочешь углубится в детали - абстракция не нужна, лезь в детали. она так работает.

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

например: type_traits в результируем файле нет, он просто определяет когда какую специализацию использовать. а вот std::basic_string будет там, код будет одинаков, только за разницей используемого типа, вот и все.

у вас так часто возникает ситуация когда нужно лезть в ассемблер чтобы понять что не так? или просто интересно знать что сделал компилятор?
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271674
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbSiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.Ну, как бы, что-то получаем взамен чего-то.
Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора.
Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя.

alexy_blackSiemarglЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.так не используйте!
мне это кажестя глупым. ведь именно в этом суть абстракции - черный ящик. тут нужно выбрать - либо ты пишешь на машинных кодах и знаешь все, либо ты используешь абстракцию и намеренно скрываешь от себя какие-то знания, чтоб сосредоточится на чем-нибудь другом. намеренно - если ты хочешь скрыть от себя детали, нужна абстракция, если хочешь углубится в детали - абстракция не нужна, лезь в детали. она так работает.

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

например: type_traits в результируем файле нет, он просто определяет когда какую специализацию использовать. а вот std::basic_string будет там, код будет одинаков, только за разницей используемого типа, вот и все.

у вас так часто возникает ситуация когда нужно лезть в ассемблер чтобы понять что не так? или просто интересно знать что сделал компилятор?
У шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =)

Производительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто.
Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп).
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271688
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglCEMbпропущено...
Ну, как бы, что-то получаем взамен чего-то.
Пользуясь пультом дистанционного управления, мы можем только гадать, что там происходит в итоге внутри телевизора.
Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя.
подразумевалось, что, например, при переключении программ, не надо вручную менять частоту принимаемого сигнала, и вообще ничего про частоту и внутренности знать не надо. На выходе нам важно получить изображение текущего канала и знать какие кнопки нажимать. Всё, чистый ООП.SiemarglУ шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =)typedef?SiemarglПроизводительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто.
Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп).1. не использовать смартпоинтеры
2. move
3. explicit, delete(оператора и конструктора)
?
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271701
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbSiemarglпропущено...

Вот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя.
подразумевалось, что, например, при переключении программ, не надо вручную менять частоту принимаемого сигнала, и вообще ничего про частоту и внутренности знать не надо. На выходе нам важно получить изображение текущего канала и знать какие кнопки нажимать. Всё, чистый ООП.SiemarglУ шаблонов С++ другая проблема - это такой уровень абстракции, что ты как собака Павлова, должен запомнить команды - типы которые нужны передавать в библиотеки. Офигенное абстрагирование =)typedef?SiemarglПроизводительность шаблоны сами по себе практически не портят (так, 2% всего), но вот реализации с их помощью - запросто.
Для STL это и принуждение к счетчикам ссылок, и постоянное копирование туда-сюда и неявное преобразование типов (конструктора копирования итп).1. не использовать смартпоинтеры
2. move
3. explicit, delete(оператора и конструктора)
?
Не так просто. Телевизор у меня еще ютуб и торренты умеет.

typedef'у нужно выучить написать те же самые требуемые типы.

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

Ок, давай попробуем засунуть более-менее сложный класс с запрещенными конструктором и деструктором куда нибудь, например в set и пробежаться меняющим алгоритмом.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271702
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglВот я воспользовался другими методами и выяснил, что у меня в телевизоре - Андроид. И стало понятно, чего он так тормозит на определенных операциях. Я недоволен результатом такого "абстрагирования" производителя.

Я подозреваю что у тебя современная плазма типа Smart-TV. Если ты подключен на цифру - то тормоз
при переключении каналов никак не связан с Андроидом. Это лаг передающего оборудования. Я могу
предположить что оно в 1 момент времени транслирует тебе всего 1 канал и чтобы переключить на другой
его надо скоммутировать на другой источник и в соотв с "их" протоколами подождать "наполнения буфера".
0.5 - 2 сек в зависимости от качеста ИМХО. Я подчеркну что я на самом деле не знаю как работают
современные провайдеры цифрового ТВ. И это есть моё предположение. Но если-бы ты требовал гарантий
быстрого переключения между Fox и Sport к примеру (ну пока идёт реклама на матче - ты быринько смотришь
новую серию "Наруто") то в таком случае ТВ-провайдер должен транслировать тебе СРАЗУ 2 сетевых потока.
Думаю это технически реализуемо но ИХ сетевое слегка ОФИГЕЕТ и просядет от такой услуги. Ну да бох с ним.

А если ты счастливый обладатель старого доброго аналогового ТВ (антена на балконе) то фактически все OVER
100 каналов принимаешь одновременно и лаг между переключениями связан просто с "гашением экрана"
в современных ТВ тюнерах я думаю это для предотрващения неприятного эффекта "дёргания" кадровой
развертки и вообще для кошерности и красивости. Данный артефакт почти незаметен. Ну я по крайней
мере его вообще не замечаю.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271707
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для проверки насколько Андроид вреден - можно ради прикола найти еще более старый цифровик
где всместо андроида "фирменная прошивка" от производителя - жлобский интерфейс который
показывает "вырвиглазную табличку" и список каналов и попробовать попереключать.

Я думаю лаг будет точно такой-же.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271711
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

полминуты на запуск апплета "yuotube"
и еще секунд 15 до этого на загрузку панельки апплетов
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271714
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglmayton,

полминуты на запуск апплета "yuotube"
и еще секунд 15 до этого на загрузку панельки апплетов
Это хреново чел. А кликни версию Андроида.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271717
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargltypedef'у нужно выучить написать те же самые требуемые типы.
непонимание. Там ты один раз тип определяешь как шаблон, потом ты забываешь про тип, который в шаблоне использовал. Хотя я что-то не догоняю точно, у меня не было проблем с "запоминанием" типа шаблона, так как он получается из головы по контексту. о__о
Смартпойнтеры приходится использовать из-за неконтролируемого процесса копирования внутрях. Без них будет копироваться по значению - еще "лучше". Вместе с move() это как раз костыли, подпирающие абстракцию, просто не чугунные а алюминиевые.
можно же определить конструктор копирования и оператор присваивания.
Ок, давай попробуем засунуть более-менее сложный класс с запрещенными конструктором и деструктором куда нибудь, например в set и пробежаться меняющим алгоритмом.ну если не присваивать прям экземпляры класса, то всё ок должно быть?
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271925
teo609
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли ты используешь STL, boost итп - ты уже вторичен, - ты можешь только гадать, что получится в итоге.

STL не проблема, да и boost наверное тоже (он слишком большой чтобы я говорил за него весь)

Но в целом, тенденция развития языка мне совершенно не нравится. Слишком редко применяемые фичи добавляются. Но это не boost и STL, это абстранирование большее. Вот например недавно на хабре статья про DI: https://habrahabr.ru/company/infopulse/blog/248879/.

Там, в частности, приводится код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
auto my_int = []{};                   
       
struct c {                            
    BOOST_DI_INJECT(c                 
        , (named = my_int) int i)     
        : i(i)                        
    { }                               
       
    int i = 0;                        
};     
       
int main() {                          
  auto injector = di::make_injector(  
    di::bind<int>.named(my_int).to(42)
  );   
       
  return injector.create<c>().i;      
}     


и тут же говорится что это аналог
Код: plaintext
1.
return 42;



Но ведь можно же просто написать return 42; !

Шаблоны как явление вовсе не плохи, сами по себе, плохо (имхо) когда они нагромождаются один на другой, и чтобы понять где падает (или просто не то значение в отладчике видно), надо изучить огромную массу кода, чтобы понять, что править. Пока не поймешь не знаешь, надо где-то в цепочке шаблонов другой флаг поставить, или алгоритм переделывать. Причем код этот часто неочевидный, не простой, и изучить его быстро практически нереально. При нехватке времени начинается импровизация и костылирование.
Все эти навороты вроде бы и оправданы чем-то, но поднимают требования к способностям головы, а она не молодеет, да и тупо затрудняют визуальное восприятие. Мысль читается легко, когда она краткая. А это ничего не кратко.

Хотел написать об этом раньше, но подумал, что может быть это мало кому проблема. Мне все-таки уже 40, нередко говорят, что возраст для профессии непригоден. Думаю, что преодолевать нагромождения на пустом месте да, уже не интересно, нет былого задора. Я не представляю себе увеличения объема исходного кода вдвое, причем кода логики, не вижу оправданий. Впрочем, может быть это опять же мое личное, еще в студенчестве отказался изучать Паскаль после Си сразу после знакомства с begin и end - зачем язык, который тратит 8 символов на то, что можно сделать в 2.
Мой первый код на С++ был на Borland 3.1. В начале 2000х столкнулся с ATL и лично наткнулся на то, что быстро исправить код на ней не могу, мне надо понимать все, что скрыто за шаблонами, а это долго.

То что предлагается сейчас, это еще больший масштаб раздувания кода. И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать. Все эти годы я был уверен, что С++ это круто, и я бы знакомил с ним детей как с передовым. А после этой статьи возникло ощущение, что я не хочу этим грузить сына. Потому что не хочу грузить его фигней. Потому что сплошное шаблонизирование это уже над-С++-ный язык, обладающий совсем иными свойствами. Это не то, что я брался изучать 20 лет назад и с чем работал и работаю.

Мне кажется, возможности шаблонов используются идеологически не для того что было задумано изначально. И что это нехорошо не только для меня, но и для языка в целом. Неправильный это путь. Огромная мощь была в небольшом количестве фич, каждую из которых можно было многократно повторить и программно решить любую задачу, оставаясь с логически краткой и понятной программой и высокой производительностью. А сейчас создается много фичек, каждая из которых служит весьма узкой цели, но значительно раздувают и язык и исходный код. И было бы идеологически неправильно массово применять такие фичи в разработке.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271980
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609Но в целом, тенденция развития языка мне совершенно не нравится. Слишком редко применяемые фичи добавляются. Но это не boost и STL, это абстранирование большее. Вот например недавно на хабре статья про DI: https://habrahabr.ru/company/infopulse/blog/248879/.
Причем здесь левая статья на хабре к развитию языка в целом?

teo609Мой первый код на С++ был на Borland 3.1. В начале 2000х столкнулся с ATL и лично наткнулся на то, что быстро исправить код на ней не могу, мне надо понимать все, что скрыто за шаблонами, а это долго.
Если человека в молодости били и насиловали, то у него тоже будет некоторое мнение об окружающих, но несколько скажем так далекое от действительности.

teo609И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать.
А мне, к 40 годам наоборот, все больше нравится.
Вывод: дело не в возрасте, а в том что наверно не тем занимаетесь ))
...
Рейтинг: 0 / 0
Пятничный бунт
    #39271989
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне с самого начала не нравится что плавает сам предмет спора. Оба полюса мнений
касаются С++ и С++. Хотя по сути спор идёт в разрезе С++ и Процессор шаблонов в С++.
По сути все нарекания касаются не самого С++ а его ПРОЦЕССОРА ШАБЛОНОВ
и ЮЗКЕЙСОВ которые были созданы на его базе за всю историю существования языка.

Хочется спросить. Ну если не процессор шаблонов то ЧТО ?
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272012
д0k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonМне с самого начала не нравится что плавает сам предмет спора. Оба полюса мнений
касаются С++ и С++. Хотя по сути спор идёт в разрезе С++ и Процессор шаблонов в С++.
По сути все нарекания касаются не самого С++ а его ПРОЦЕССОРА ШАБЛОНОВ
и ЮЗКЕЙСОВ которые были созданы на его базе за всю историю существования языка.

Хочется спросить. Ну если не процессор шаблонов то ЧТО ?

А мне кажется что коллеги Siemargl и
Anatoly Moskovsky и тд по топику берут формулы
вычисления площади абстрактной дыры абстракции из разных справочников и доказывают друг другу
чья формула круче...

)
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272028
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
д0k,

Все в рамках темы ))

Но вообще конечно реальных альтернатив С++ не существует.
Иначе бы при таком количестве ворчунов все они на эти альтернативы уже бы перешли.
Но вместо этого они ходят по С++ форумам и плачутся, как им трудно с С++
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272029
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teo609То что предлагается сейчас, это еще больший масштаб раздувания кода. И на этой статье, впервые за 20 лет, я ощутил, что С++ становится настолько не моим, что это уже не интересно разгрызать. Все эти годы я был уверен, что С++ это круто, и я бы знакомил с ним детей как с передовым. А после этой статьи возникло ощущение, что я не хочу этим грузить сына. Потому что не хочу грузить его фигней.
Не хочешь - не грузи. Загрузи чем считаешь нужным, с остальным сам разберется. Лично я недавно узнал что то что я называл С++ оказывается называется С с классами, а С++ целиком мне просто не надо. Вместо плюсов есть куча других высокоуровневых ЯП, куда можно сделать вставки на голом С, если надо производительность или низкий уровень (WinAPI и т.д.).
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272052
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglполминуты на запуск апплета "yuotube"
и еще секунд 15 до этого на загрузку панельки апплетов
Андроид тут не причем.
У тебя просто слабая аппаратная начинка для используемого апплета YouTube.
У меня на телефоне когда-то давно YT запускался почти мгновенно. А теперь запускается секунд 10, а потом еще минуту видео идет с лагами. Телефон один и тот же, просто сам YouTube обновился и для комфортной работы требует более мощное железо.
Так что проблема с долгим запуском YouTube решается (на пару лет) заменой телевизора на современный.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272061
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня где-то валяется Minix Android Box. Это внешняя smart-tv приставка.

Похожа на эту. Щас не помню точно модель но вроде X7.
MINIX NEO X7
Процессор:
Rockchip RK3188, ARM Cortex-A9 Quad core, 1.6-1.8GHZ;
GPU: Quad Core Mali 400 (Open GL ES2.0/1.1, Open VG1.1, Flash 11.1)
Операционная система:
Google Android 4.2.2
Оперативная память (ОЗУ):
2 GB, DDR3
Встроенная память:
16 GB


Я к чему это. Во первых давайте сравним ARM Cortex-A9 с вашими бортовыми Intel. Я не спец
по процессорам но КМК архитектура и тактовая частота будет существенно отставать.

Видео H264 воспроизводится? Ну дай бох. А что вам еще надо от эконом-проца? Или вы
хотите толкать Intel в каждый утюг?

И вообще разумны ли обвинения которые Зямя предъявляет в адрес Андроид? Я не знаю.
По мне так это обычный себе Линукс.

А видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности
там или вызовов OS API.

Что мы ругаем? Что ругаем-то?
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272067
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonА видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности
там или вызовов OS API.
Если не путаю: видеокодеки вообще воплощают в железе. Я к тому что это не то пример чтобы сравнивать ОСы и ЯП.
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272076
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tвидеокодеки вообще воплощают в железе.
а топологию и микропрограммы - дух святой приносит
...
Рейтинг: 0 / 0
Пятничный бунт
    #39272079
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TmaytonА видео-кодеки все равно пишут на сях и портируют с изменниями в 1% в части разрядности
там или вызовов OS API.
Если не путаю: видеокодеки вообще воплощают в железе. Я к тому что это не то пример чтобы сравнивать ОСы и ЯП.
Ну а если завтра будет устаканен H266 то нам придется выкинуть на свалку наши Смарт-Телевизоры.
...
Рейтинг: 0 / 0
25 сообщений из 73, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничный бунт
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]