Перейти к публикации
  • Сейчас на странице   Всего пользователей: 4   (0 пользователей, 4 гостя)

Rooster

Программирование[11]

var  

265 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

(изменено)
Ember_Xinit написал 23 минуты назад:

3) В Си в отличии от Cxx не принято на все случаи жизни использовать стандартную библиотеку и вполне вероятно в критичных по перфу местах будет написан свой сорт.

:onneponimaet:

Что мешает в плюсах написать в критичных по перфу местах свой сорт?

Ember_Xinit написал 23 минуты назад:

Инстанциация на каждый компаратор отдельная

:onneponimaet:

Если ты о инстаниации темплейтов, и разные типы сортишь, то конечно

Если ты о создании объекта компаратор, то не обязательно, ты сам решаешь

Ember_Xinit написал 23 минуты назад:

Компилятор инлайнит колбэки.

:onneponimaet:

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

https://godbolt.org/z/4jYTe9hvo

image.png.8e9a0ae658e393cc8022e2ab5ee7cf73.png

 


Изменено пользователем GoldRobot

ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 5 минут назад:
Ember_Xinit написал 28 минут назад:

3) В Си в отличии от Cxx не принято на все случаи жизни использовать стандартную библиотеку и вполне вероятно в критичных по перфу местах будет написан свой сорт.

Что мешает в плюсах написать в критичных по перфу местах свой сорт?

А что мешает на плюсах в стиле си писать? Гайдлайны и тысячи зомбированных программистов.

 

GoldRobot написал 10 минут назад:

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

https://godbolt.org/z/4jYTe9hvo

А кто говорил что не инлайнится. Речь про то что если компилятор посчитает нужным он заинлайнит компаратор в qsort.

 

GoldRobot написал 11 минут назад:
Ember_Xinit написал 34 минуты назад:

Инстанциация на каждый компаратор отдельная

:onneponimaet:

Если ты о инстаниации темплейтов, и разные типы сортишь, то конечно

Если ты о создании объекта компаратор, то не обязательно, ты сам решаешь

Да, речь о разных типах с собственным компаратором.

Поделиться сообщением


Ссылка на сообщение
Ember_Xinit написал 2 минуты назад:

А что мешает на плюсах в стиле си писать? Гайдлайны и тысячи зомбированных программистов.

А что мешает переехать на плюсы и писать в стиле си? Религия и тысячи зомбированных программистов.

Поделиться сообщением


Ссылка на сообщение
CriErr написал Только что:
Ember_Xinit написал 4 минуты назад:

А что мешает на плюсах в стиле си писать? Гайдлайны и тысячи зомбированных программистов.

А что мешает переехать на плюсы и писать в стиле си? Религия и тысячи зомбированных программистов.

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

А так мешает то что плюсы гораздо сложнее, если речь об опенсорс, то меньше смогут мейнтейнить.

Всё что делает C++ реально полезным поддерживается тремя компиляторами.

Си компилится в 10-100 раз быстрее.

Если мы выбрасываем ещё и компайл тайм чтобы быстрее комплилось то плюсы абсолютно бесполезны.

Поделиться сообщением


Ссылка на сообщение
(изменено)
Ember_Xinit написал 8 часов назад:
13uRn1nG написал 20 часов назад:
besteady написал 15.04.2023 в 21:45:
13uRn1nG написал 15.04.2023 в 15:15:

?

В плюсах в том же stl множетсов неочевидных моментов, которые могут повлиять на перф и которые ты никогда не допустишь в си, просто потому что их под капот не засунешь

 

 

Не знаю надо какой-нибудь пример привести конкретный, но мне чет лень

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

 

1) If the algorithm fails to allocate memory, std::bad_alloc is thrown. Ты либо пишешь с исключениями либо у тебя краш на нехватку памяти. Сразу этот сорт идёт мимо Эмбедед, ядра и любого юзермода без исключений.
2) Инстанциация на каждый компаратор отдельная если ты сортишь по 50 элементов каждым сортом то бирарь раздуешь бессмысленно и общий перфоманс проиграет из за кэша кода.
3) В Си в отличии от Cxx не принято на все случаи жизни использовать стандартную библиотеку и вполне вероятно в критичных по перфу местах будет написан свой сорт.
4) Компилятор инлайнит колбэки.
5) RVO есть в си.
6) В си мув семантика не нужна, есть указатели.
image.png.fd3adb0141f346ebac80af95aefe335a.png

 

1. Так тут же поинт не в конкретной реализации sort, а в том что мы получаем перфоманс благодаря инлайну предикатов. Функторы и лямбды имба, в Си их нет. Напиши эксепшн сейфти или noexcept sort если нужно, в чем проблема то? Ну и жизнь за пределами эмбедед и ядра линукса тоже есть если чё, не обязательно всё сводить именно к нему.
2. Лямбда или функтор занимают меньше памяти чем чистая функция(возможно, точно не помню по крайней мере в моём маленьком тесте программа делающая простую компорацию двух чисел на плюсах вышла меньше на 4 байта, если удалось заинлайнить сишную функцию размер одинаковый) и тем более указатель, если надо найду пример где чел писал  разные варианты делитеров для смартпоинтера и чекал его размер потом. Через указатель на функцию он был самый жирный, поэтому собстна мы и не любим такие штуки как std::function. Опять же я может этот тезис не правильно понял, если так то поясни что ты имел ввиду.

3. Это всё фигня. Просто стандартная библиотека Си маленькая и мало что умеет поэтому по большому счёту похуй есть она, нет её, сравнивать её с полноценной библиотекой с алгоритмами, контейнерами, тредами  и тд это смешно просто.  Плюсовую библиотеку тоже например переписывали дофига раз под свои нужды, переписывание класса строки вообще уже помоему бородатый мем. Можно быть шизом как Столяров и говорить что эти ваши std и бусты  не нужны например и писать всё на ванильном cpp кто мешает? Вопрос в целесообразности такого подхода.

4. Я попытался заинлайнить компаратор в qsort, получил ошибку линковки:
image.png.093f1aba3edd13450c50408bb640c861.png

 

5 и 6. Ну я скорее к тому что сообщество осознает сильные стороны языка и учится абузить их по полной. RVO и мув семантика это же про то как нам перфоманс сохранить будучи как бэ языком высокого уровня. Пофиг что там есть в Си, важнее то чего там нет: классов, нормального скоупа, шаблонов, перегрузки и т.д. А у нас есть, и чем больше времени проходит тем больше появляется годных практик как это всё использовать без ущерба, Сишка тем временем так и зафризилась в 89 стандарте и только багами обрастает: https://habr.com/ru/articles/592233/

 

Ember_Xinit написал 7 часов назад:
CriErr написал 7 часов назад:
Ember_Xinit написал 7 часов назад:

А что мешает на плюсах в стиле си писать? Гайдлайны и тысячи зомбированных программистов.

А что мешает переехать на плюсы и писать в стиле си? Религия и тысячи зомбированных программистов.

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

А так мешает то что плюсы гораздо сложнее, если речь об опенсорс, то меньше смогут мейнтейнить.

Всё что делает C++ реально полезным поддерживается тремя компиляторами.

Си компилится в 10-100 раз быстрее.

Если мы выбрасываем ещё и компайл тайм чтобы быстрее комплилось то плюсы абсолютно бесполезны.

Ну компайл тайм можно отнести к минусам да


Изменено пользователем 13uRn1nG

Поделиться сообщением


Ссылка на сообщение
13uRn1nG написал 1 час назад:

4. Я попытался заинлайнить компаратор в qsort, получил ошибку линковки:

 

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

Поделиться сообщением


Ссылка на сообщение
(изменено)

ядро линукса переносили на С11 стандарт не знаю завершили они это или нет, не слежу. c2x на подходе с констекспрами и аналогом expected. Debloated c++ или cи с плюсами но без минусов.
Что значит обрастает багами? Багами стандарта языка? Багами компилятора?

Перегрузки - мусор. Я их вообще не уважаю. гораздо лучше и понятней когда функция в имени типы содержит.
Классы - сахар.
неймспейсы - не сказал бы что это прям огромная проблема.

3) А что их сравнивать ? Сишная не бросает. C++ бросает. Все преимущества STL улетучиваются.

Точно так же придётся всё писать своё. Раст не бросает это мне нравится.

2) Я имел ввиду что если qsort не заинлайнится. То всё что у тебя будет - 1 qsort и множество предикатов для каждого типа.
А std::sort по инстанциации под каждый тип с компаратором что для маленького кол-ва элементов медленней.
 


Шаблоны - да неплохо. Правда могут они всё еще недостаточно чтобы макросы заменить. Мне недавно нужно было строку(string_view) передать в функцию в компайл тайме и распарсить ей в этой функции, так вот сделать это можно только очень костыльно как тут сделано. https://github.com/unterumarmung/fixed_string/
Сила же макросов безгранична.

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0424r2.pdf
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2484r0.html
есть только пропозалы, а пока вот так приходится делать.

template<std::size_t Size>
    class TemplateString
    {
    public:
        std::array<char, Size> characters{};

        constexpr TemplateString(const char(&Str)[Size]) noexcept
        {
            std::ranges::copy(Str, characters.begin());
        }
  ...

 


Изменено пользователем Ember_Xinit

Поделиться сообщением


Ссылка на сообщение
Ember_Xinit написал 10 минут назад:

Перегрузки - мусор. Я их вообще не уважаю. гораздо лучше и понятней когда функция в имени типы содержит.

:corona::corona::corona:

Ember_Xinit написал 12 минут назад:

3) А что их сравнивать ? Сишная не бросает. C++ бросает. Все преимущества STL улетучиваются.

Ты здоровый нет?

Не будет никто в каждой залупе проверять выделилась там память на сортировке или нет.

 

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

 

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

13uRn1nG понравилось это

ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
GoldRobot написал 1 минуту назад:
Ember_Xinit написал 25 минут назад:

Перегрузки - мусор. Я их вообще не уважаю. гораздо лучше и понятней когда функция в имени типы содержит.

:corona::corona::corona:

Ember_Xinit написал 25 минут назад:

3) А что их сравнивать ? Сишная не бросает. C++ бросает. Все преимущества STL улетучиваются.

Ты здоровый нет?

Не будет никто в каждой залупе проверять выделилась там память на сортировке или нет.

 

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

 

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

В расте сделали на ретёрн кодах всю либу и довольны, проверяют.

Эксепшны и перегрузки наоборот убивают читабильность, остальное субъективность. Эксепшны очень нетрививальны. Я при том что дохуя времени в дебагере провёл не идеально помню как там c++ на SEH ложится со своими исключениями а это всего лишь одна имплементация. Линуксовые я вообще не знаю как работают.
Что уж говорить про обычных людей. А в С++ важно представлять во что будет код компилиться когда пишешь.

Поделиться сообщением


Ссылка на сообщение
13uRn1nG написал 4 часа назад:

Лямбда или функтор занимают меньше памяти чем чистая функци

Лямбда это же анонимный класс с методом`()`

Он явно не может весить меньше, чем чистая функция. 

13uRn1nG написал 4 часа назад:

Сишка тем временем так и зафризилась в 89 стандарте и

? стандарт си и плюсов развиваются и даже довольно параллельно 


 

zqHT9JA.png

IFVau8G.png

AohP0ps.png

Поделиться сообщением


Ссылка на сообщение

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

Хуй знает кому там надо отлизать и куда чтобы иметь возможность комментарии оставлять. 

Эти псевдоэлитарные сообщества. А ещё не так давно там даже зарегаться нельзя было.

Vova и Sage_ понравилось это

Поделиться сообщением


Ссылка на сообщение
Index написал 18 минут назад:

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

Хуй знает кому там надо отлизать и куда чтобы иметь возможность комментарии оставлять. 

Эти псевдоэлитарные сообщества. А ещё не так давно там даже зарегаться нельзя было.

это наживка для хиры  чи шо?


1x.webp

Поделиться сообщением


Ссылка на сообщение

Не это просто мое возмущение что кармодрочеры как в басне крылова про кукушку и петуха варятся в своем манямирке.

Даже нельзя написать что их решение говно. 

Поделиться сообщением


Ссылка на сообщение

да ты посмотри что они тут пишут, какой хабр

совсем кукухой поехали, в 2к23 неиронично пытаться доказывать, что с > с++

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


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

Фронтенд - это хуйня уровня паверпоинта :zemlyapuhom:как там такие зпшки всё ещё - я не понимаю, годик практики открыл глаза. Крч струячу в питониста походу, пожелай мне удачи в бою пожилаааай мне


 

Лучший

556253444__2022-05-05_175742556.png.9145729cd287d346bfdfa627f9d4fbed.png

Поделиться сообщением


Ссылка на сообщение
Ember_Xinit написал 10 часов назад:

В расте сделали на ретёрн кодах всю либу и довольны, проверяют.

:agaaga:

Ember_Xinit написал 10 часов назад:

Эксепшны и перегрузки наоборот убивают читабильность

Блять что ты несешь

Вот у меня 30 строк выдергивания полей из джсона, мне что, каждую из них проверять? Стоп не только из джсона выдергивание, но еще и когда аллоцирую стрингу, вектор пытаясь сохранить это поле. Ты здоровый?

Вон, rapidjson, в итоге каждый обертку/хэлперы делает еще поверх него что бы эксепшены кидались при не совпадении типов.

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

Ember_Xinit написал 10 часов назад:

А в С++ важно представлять во что будет код компилиться когда пишешь.

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

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


ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение

я вас всех найду сука. ебаные крестоёбы.

:ugomonis:

13uRn1nG и madvlaydin понравилось это

Saying that Java is nice because it works on all OS's is like saying that anal sex is nice because it works on all genders.
 

Поделиться сообщением


Ссылка на сообщение

Теперь это топик по Си, я тут смотрящий.

GoldRobot написал 1 час назад:

:agaaga:

Ты мне пишешь всё ли у меня впорядке с головой, при этом на полном серьёзе пытаешься доказать что самая помойная фича языка Си Плюс это ваще топчик и мастхев читабильность и без неё нельзя 30 ифов надо ебашить. На минуту это говно забанено почти в любой большой и популярной кодовой базе, такой как LLVM и chromium. При том что ты по сути даже не можешь ошибку вернуть с конструктора без эксепшнов. Они даже с этим смирились лишь бы это говно не использовать. И делают полноценные конструкторы. Лично я это обхожу приватными конструкторами и friend фактори функцией.
Называть читабельностью прыжки на киломерт по стеку вызовов это полный пиздец. К тому же чтобы этим говном нормально пользоваться тебе нужна вторая в списке говна фича - RTTI чтобы динапик_кастить эксепшны в кэтче.

Если у тебя 30 вызовов и нет смысла продолжать если хоть 1 зафейлил ебаш 30 ифов или and_then()

Kant написал 7 часов назад:

да ты посмотри что они тут пишут, какой хабр

совсем кукухой поехали, в 2к23 неиронично пытаться доказывать, что с > с++

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

Да никого не ебёт че они там хотят, чё не хотят. У анальников работа софт быстрый и хороший пользователям доставлять. А не говно на котлине.

GoldRobot и ural1qqq понравилось это

Поделиться сообщением


Ссылка на сообщение
Ember_Xinit написал 44 минуты назад:

Называть читабельностью прыжки на киломерт по стеку вызовов это полный пиздец.

Тебе в общем случае вообще поебать должно откуда это приходит. Это первое.

Второе, я в трейсе скорее всего увижу где реально ошибка произошла, нежели в твоей сишной функции на 3к строк (как батя кармак велел) с тремя сотнями ретурнов.

Ember_Xinit написал 42 минуты назад:

На минуту это говно забанено почти в любой большой и популярной кодовой базе, такой как LLVM и chromium.

:onneponimaet:

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

Не говоря о том что LLVM старше половины вкатывальщиков которые к нам сюда залетают.

Ало, у тебя там половина разработчиков на слове throw флешбеки вьетнамские ловят об утечках, потому что половина их кода является говнокодом обмазаным new/delete/malloc/free, RAII это песня дьявола, а умные указатели змей искуситель который хочет замедлить их код.

 

CriErr, Kant и 13uRn1nG понравилось это

ward написал 04.01.2022 в 02:54:

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

mazt3r написал 20.09.2019 в 11:27:

ласт оф ас - хуета для лисят и прочих мальчиков с вагиной между ног.

 

Поделиться сообщением


Ссылка на сообщение
(изменено)
GoldRobot написал 1 час назад:
Ember_Xinit написал 2 часа назад:

Называть читабельностью прыжки на киломерт по стеку вызовов это полный пиздец.

Тебе в общем случае вообще поебать должно откуда это приходит. Это первое.

Второе, я в трейсе скорее всего увижу где реально ошибка произошла, нежели в твоей сишной функции на 3к строк (как батя кармак велел) с тремя сотнями ретурнов.

Ember_Xinit написал 2 часа назад:

На минуту это говно забанено почти в любой большой и популярной кодовой базе, такой как LLVM и chromium.

:onneponimaet:

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

Не говоря о том что LLVM старше половины вкатывальщиков которые к нам сюда залетают.

Ало, у тебя там половина разработчиков на слове throw флешбеки вьетнамские ловят об утечках, потому что половина их кода является говнокодом обмазаным new/delete/malloc/free, RAII это песня дьявола, а умные указатели змей искуситель который хочет замедлить их код.

 

Ах оказывается LLVM и хромиум это неподходящие примеры у которых совершенно "другие цели". Я тебе привёл конкретные существующие проекты. Ты же не привёл ничего кроме абстрактных проектов, а все остальные "НИТАКИЕ" и преследуют "другие цели".

UE "Такой" или "Нитакой" ?

SourceEngine такой или нитакой, просто локальный движок игровой компании с закрытым кодом написанный весьма посредственно весьма медленный, на старом стандарте, чёто в ликах не могу найти ни одново слова try и throw?

Это общепризнанная практика не использовать говно. Ты же живёшь в каком то абстрактном мире, где C++ берут просто чтобы срать не хотелось. А не для хай перформанс приложений. На C++ не пишут "Такие" проекты, для "Таких" проектов есть джава котлин пайтон C# javascript swift и так далее. Там как раз не нужно знать во что скомпилится код, делай абстрактное ридабилити сколько тебе влезет. Там вообще про существование стека можно  не знать, достаточно мыслить языковыми конструкциями. "Ну ЩАС я эту функцию оберну в try и если что то не так в catch прилетит Птичка"

Какая разница сколько лет LLVM сейчас на базе llvm сделан компилятор который генерит самый быстрый код для си подобных языков. В этот проект вкладывают деньги многие крупные компании как гугл. Платят зарплату мейнтейнерам этих проектов. Вполне современная кодовая база на 17 стандарте.


Изменено пользователем Ember_Xinit

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

×
×
  • Создать...