Мой курс «Хардкорная веб-разработка» - course.to.digital Вжух!
@Emagnarium4 жыл бұрын
Спасибо за ликбез по мультипоточности ядер) "Немножко" дополню/скорректирую в режиме зануды: 1:00 Процесс и поток на процессоре может быть один, когда нет ОС. Это кучу МК (микроконтроллеров) и им подобных процов. Даже на х86 можно запустить монопроцесс и, обычно, вы его пускаете. BIOS Based I/O system не редко однопоточна+однопроцессна (но может мои данные устарели) 1:20 я бы прям в начале уточнил разницу между "работает" и "выполняется" ("исполняется"). Состояния ожидания тоже работа (это вам не зомби) и одновременно реально работать без переключений могут сотни процессов, а вот с выполнением да, только один в один фрейм исполнения. Хотя кому-то наоборот "программа исполняется" это существование процесса, а "программа работает" это греет воздух, трасформируя данные 3:20 строго говоря у программы может быть и 0 (ноль) потоков/процессов. Пример -- скрипты, которые не оперируют потоками/процессами, а исполняются родительским интерпретатором. 3:40 программа != процесс, 4:00 потоки так-то бывают разные и на сколько я знаю у потоков могут быть свои адресные пространства, но не уверен. Надо изучить что в каких ОС 4:36 гонки потоков можно, как избегать рядом подходов в мультипоточном прог-ии, так и исключать, так что проблема не совсем понятно, зачем сюда внесена, но при этом даже о законе Абеля ни слова( Часть про простаивающие ядра оставляю на совести автора, там у меня нет знаний, за тем и смотрел =) 12:43 асинхронность, а точнее асихронное программирование либо асихронное выполнение это *один из* способов решить проблему, как достичь большой отдачи на малом числе ядер/потоков. В принципе можно и 10к дескрипторов потоков создать и нихай ОС сама их рулит, если поток умеет переходить в ожидание, то даже разрулит) 14:10 высокоэффективные ли? Если замерять RPS, то с высокой верятностью при идентичной задаче JS можно отточить не лучше питона, тот не лучше явы (иногда питон быстрее даже правильно "сваренной" явы), а эти ребята всё равно уступят Go/RUST/C++/Fortran (я счас о пределе, который можно выжать, а не о качестве библиотек, которые делают разрыв обычно ещё сильнее) Эффективно на тех же JS/Python писать ёмкий код (мало строк, много логики и смысла), но тут ни JIT, ни процессоры, ни ОС ни при чём 14:50 это упрощение сродни Пи = 3, простите. EL исполняет задачи из очереди на исполнение по мере завершения исполнения текущих задач (в частности для JS это по одной задаче), а задачи, завершаемые не выходом, а переходом в ожидание, по мере удовлетворения ожидания, перекладывает в очередь ожидания и взятием из очереди на исполнение следующей задачи На этом всё, надеюсь уточнения кто-то дочитает, а не в в воздух это...
@danilakim51262 жыл бұрын
Немного сложновато, хотелось бы увидеть это ПРЯМ НА РЕАЛЬНОМ ПРИМЕРЕ! Прям наглядно увидеть многопоточность, сам ПОТОК/ПРОЦЕСС. Вот есть компьютер, и что мне делать чтобы увидеть этот поток, процесс?! Запустить программу что-ли? (Понятное дело что и сама ос что-то да выполняет, но как увидеть ожидание процесса, как увидеть что работает многопоточность НА РЕАЛЬНОМ ПРИМЕРЕ?!) МОЖЕТ МОЖНО ПРОГРАММУ НАПИСАТЬ И НАГЛЯДНО УВИДЕТЬ?!? Подскажите пожалуйста, буду благодарен!
@Emagnarium2 жыл бұрын
@@danilakim5126 простейший варик: запускаете live-образ линукс-based (проще говоря убунты), ставите там htop, запускаете его. Там можно наглядно увидеть нити (posix-based threads, по-нашему потоки) и их родительские процессы. Можно изучить и препарировать их, если будет желание. Ещё вариант тот же Process Explorer вместо классического Task Manager виндового способен показать потоки виндовых процессов (не моя специфика, не знаю на сколько глубоко там можно копать) А так, на хабре том же найти реально)
@captainkryuk1899 Жыл бұрын
Братан ты бы вышел на улицу воздухом подышал, пивка попил
@Rulezzz32 ай бұрын
Ты классный зануда, побольше бы таких. Накинул материала нормально.Алкаша сверху, который про пиво говорит не слушай)
@Emagnarium2 ай бұрын
@@Rulezzz3 не, я просто писал сидя на верандочке) С кальянчиком)
@79fz2707044 жыл бұрын
Тема интересная, ждем продолжения.
@RuchejAlex4 жыл бұрын
Сделаю паузу и скажу. Когда увлекался своим ZX-Spectrum-ом, изучал ассемблер. Благодаря этому, не плохо понимаю тему прерываний, т.к. там это было оооочень хорошо видно. Изначально, на zx работает только одна прога. По учебнику, делал на машинных кодах часы, которые работали в фоне в системе. Для это создаётся прерывание, у которого есть свой номер, как сейчас сказали бы, свой ID. Когда сделал эти часы, которые висят и не пропадают, был в восторге)
@quasar-lv6pp4 жыл бұрын
А по какому учебнику учился? Интересно, т.к. сам на спектруме ассемблер познавал в 90-х
@vryaboshapko4 жыл бұрын
У меня было наоборот: понимание устройства event loop помогло разобраться с прерываниями на ардуино)))
@Enerdzizer3 жыл бұрын
Господа,а можно поподробнее про прерывания? Прерывание разве можно создавать? Прерывания в zx spectrum это аналог программы или это всё таки ближе к callback функции?
@RuchejAlex3 жыл бұрын
@@Enerdzizer в спектруме, прерывание задаётся в каком-то регистре и вроде указывается адрес перехода. Уже не помню
@mvo5450 Жыл бұрын
Когда набираю в поиске какую-то тему, и в ленте вижу твоë видео об этом - для меня это как явная подсветка - "Здесь точно будет качественное разъяснение." И так и получается.
@t0digital Жыл бұрын
Спасибооо!
@toomanof4 жыл бұрын
Продолжай в тоже духе! Хороших лекторов не так уж много!
@t0digital4 жыл бұрын
Спасибо!
@SueBeatMaker Жыл бұрын
@@t0digital Поддерживаю
@russiancat20114 жыл бұрын
Пересмотрел кучу лекций и подкастов про многопроцессность, многопоточность и асинхронность. Но все было очень сложно и заурядно. Здесь просто и понятно. Спасибо огромное за видео, у тебя талант объяснять!
@t0digital4 жыл бұрын
Спасибо большое, очень приятно! Буду продолжать
@ITPROSTA Жыл бұрын
Наверное самое лучшее видео по этой теме на ютубе! Все четко и понятно!
@t0digital Жыл бұрын
Спасибооо!
@MrVindor4 жыл бұрын
Спасибо за видео! Важная тема, давно жду ее)
@vladimirkirdan2 жыл бұрын
Ты очень круто всё объясняешь! Очень нравится структура твоих видео! Нет никакой воды из разряда «что бы установить пакет, используйте пип инсталл…» но в тоже время нет «эээ ну тут просто переписываете ядро». Всё очень понятно, доступная информация
@myroslavzadoian45494 жыл бұрын
Ждём следующее видео! Тема очень интересная, интересно услышать твои мысли!
@t0digital4 жыл бұрын
Спасибо!
@smig66524 жыл бұрын
Сейчас это точно лучший канал о программировании в Русскоязычном ютюбе!
@t0digital4 жыл бұрын
Очень приятно получать такую оценку работы, спасибо!
@Yogamassagekzn Жыл бұрын
Супер! Как раз по чуть чуть нахватал и так удачно залетел на это видео! Спокойно четко понятно. Спасибо.
@VB-s4p4 жыл бұрын
Благодарю за ваш труд!
@АлмазАндуков4 жыл бұрын
Не ожидал, от канал с таким количеством подписчиков, такого качества видео, продолжайте в том же духе!
@t0digital4 жыл бұрын
Спасибо! Подписчики тоже понемногу растут, что приятно🙏
@ЖанЖак-м7м Жыл бұрын
Спасибо за подробное и понятное описание!
@victorgasiul58134 жыл бұрын
Отличный способ подачи, без заумных фраз, но и без ненужного разжевывания простых вещей, жду ещё
@t0digital4 жыл бұрын
Спасибо, рад, что понравилось!
@bagasayn4 жыл бұрын
Супер, самая не скучная лекция :)
@АлександрКозлов-о7к4 жыл бұрын
Алексей! Спасибо за ваши видео! Почаще бы.
@НаильХайруллин-э2к4 жыл бұрын
Комментарий ради большего раскрытия асинхронности
@t0digital4 жыл бұрын
Спасибо :)!
@mrMarseleene4 жыл бұрын
Как же приятно тебя слушать! Спасибо и удачи в развитии!
@iforin4 жыл бұрын
Классный Канал , Рад что познакомился с Автором. Очень интересно
@t0digital4 жыл бұрын
Спасибооо! Приятно
@dmitrytsmyh59714 жыл бұрын
Спасибо за видео! Хотелось бы услышать о: 1) Работе кода при нескольких процессах (multiprocessing) и меньшего количества ядер. 2) Subprocess и их особенности. 3) Сравнение asyncio, multiprocessing и threads, например на I/O на практике. Спасибо!
@SerhiiNekrasov-j2n4 жыл бұрын
16 минут прошли незаметно. Очень интересно!
@t0digital4 жыл бұрын
Рад, что интересно:)!
@ЕлизаветаДымченко-ж6ъ4 жыл бұрын
никогда не пишу комментарии, то здесь просто не смогла удержаться. Качество видео на высшем уровне, очень редко встретишь такое. Информация разложена по полочкам, максимально понятно))
@t0digital4 жыл бұрын
Спасибо, очень приятно!
@FillerWorld4 жыл бұрын
Всё предельно ясно и по полочкам, спасибо большое!
@t0digital4 жыл бұрын
Рад, что полезно! Спасибо!
@ВладимирКолмаков-в3м4 жыл бұрын
Уважение за видео, было интересно))
@t0digital4 жыл бұрын
Спасибо!
@XXzoroXy3 жыл бұрын
Хорошая подача! Спасибо за информацию, подписался на канал! Было бы неплохо ввести какие-то графические схемы - визуализация помогла бы лучше понять слова и зависимость понятий поток/процесс/ядро/асинхронность
@MS-fu3zf4 жыл бұрын
Здорово. Отличный ввод в многопоточность и асинхронность. Спасибо.
@t0digital4 жыл бұрын
Рад, что полезно!
@romanigorevich50214 жыл бұрын
Алекс! Это было самое понятное объяснение на тему GIL и async которое я видел :) Продолжай снимать!
@t0digital4 жыл бұрын
Спасибо:)!
@egoruzh4 жыл бұрын
Интересные все видео. Спасибо. Много полезного, без понтов, доступно и профессионально.
@t0digital4 жыл бұрын
Спасибо! Рад, что полезно
@avorion-ru2 жыл бұрын
Ну наконец то нашел нормальное объяснение, спасибо Вам огромное!!
@lavrlad4 жыл бұрын
Полугодовой предмет ВУЗа в 16 минутах, понятным языком. Вот что значит Питонист вещает)
@romanwednesday44014 жыл бұрын
Ну это всего лишь вводный материал, хотя и достаточно качественный. В ВУЗ-ах часто смотрят более углубленно в проблемы и применения многопоточности, асинхронности(Если это нормальный ВУЗ с хорошим преподавательским составом). Не стоит полностью обесценивать знания которые дает учебное заведение, если оно хорошее(а студент нет). Обидно, если за пол года в учебном заведении тебе действительно рассказали только эти вещи. Такие вузы я называю шарагами
@SyperMonster Жыл бұрын
@@romanwednesday4401шёл 2024, похоже остались одни шараги)
@AndreiSokolov-k7j7 ай бұрын
@@romanwednesday4401 вуз это полное гавно
@arendaru32604 жыл бұрын
Интересная тема, жду продолжения и желательно с реальным примером, ну например по описанной задаче обработки http-запросов, трансляци их к субд и выдаче результата клиенту
@t0digital4 жыл бұрын
всё будет:)
@ИльяКрасняк-ц8б4 жыл бұрын
Шик, как раз то о чём я просил в комментариях)) Классная лекция! Было бы круто добавить визуализацию, какие-нибудь простые анимированные схемы, но может это я зажрался просто)
@t0digital4 жыл бұрын
Спасибо! Вот появится если у нас монтажёр, тогда будут красивости, у меня времени не хватает на анимации, к сожалению
@ZHeKKa4 жыл бұрын
Поддерживаю. Визуализация каждой отдельной подтемы еще больше бы добавила информативности такому хорошему ролику.
@andreybelyaev57034 жыл бұрын
Спасибо.. Внятно, понятно и без воды.. Талант педагога налицо!
@t0digital4 жыл бұрын
Спасибооо!
@haykvardevanyan953 жыл бұрын
Очень понятно все разложил, спасибо большое, как раз пытаюсь учить питон, Я пока на синтаксисе, но думаю уже с этих пор нужно понимать какие технологии испольовать в коде, чтобы на выходе получить нормальное приложение, с высокой эффективностью,однозначно, лайк
@ИгорьБотухов4 жыл бұрын
Невероятно интересно! Спасибо за то что объясняете все таким простым и понятным языком!!!
@t0digital4 жыл бұрын
Спасибо! Рад, что нравится:)
@АртемЕршов-р9е2 ай бұрын
Всё детально и ясно. Спасибо!
@benya43964 жыл бұрын
Отличный пример отличия async от thread, и ведь знал что оно так происходит, но когда спрашивали про разницу, лез куда-то вглубь, не задумываясь об этом моменте
@MooonRoll4 ай бұрын
Спасибо тебе, добрый человек, спустя 4 года.
@dimilian47194 жыл бұрын
Спасибо за каждое видео, очень приятно слушать и смотреть! И темы всегда прям то, что надо!
@АлексейКалинин-ш1с4 жыл бұрын
Самое чёткое и ясное введение в тему какое только встречал!
@kutsokon2 жыл бұрын
Пересматриваю этот видос в 3 раз. Он как хороший фильм или книга, каждый раз понимаю его по новому
@t0digital2 жыл бұрын
Рад, что полезно! Спасибо!
@kutsokon2 жыл бұрын
@@t0digital вам спасибо :)
@mvxmvl4 жыл бұрын
На одном дыхании посмотрел) Очень классно, продолжай)
@t0digital4 жыл бұрын
Спасибо! На бусти уже есть продолжение, скоро появится и на канале
@ser_yk4 жыл бұрын
Просто красавчик!
@ansor97754 жыл бұрын
Круто получилось - просто и понятно. Ждем подобные разборки. Спасибо )
@t0digital4 жыл бұрын
Спасибо!
@НикитаПашков-ш9ж4 жыл бұрын
спасибо большое за простое но в то же время содержательное видео!
@StoGigovo4 жыл бұрын
Алексей, спасибо, смотрю все твои видео подряд, старые еще надо закончить смотреть. ) Невероятно полезно, особенно Джуну. ) Продолжай дальше!
@t0digital4 жыл бұрын
Будем продолжать!
@zshfan4 жыл бұрын
Отличная тема! Было бы интересно ещё о GUI посмотреть на примере PyQT/Tk/PySympleGUI
@cyrilanisimov4 жыл бұрын
Спасибо! Ждём обзор способов межпоточного и межпроцессного взаимодействия
@s_ivanov1792 жыл бұрын
Очень интересный материал, хотелось бы больше услышать про то, как происходит работа процессора на физическом уровне!
@dmytroznak88434 жыл бұрын
Каждый раз слушаю с большим интересом) спасибо)
@t0digital4 жыл бұрын
Спасибооо!
@ДанисХ-з9ш2 жыл бұрын
Без лишней воды. Спасибо огромное за инфо.
@webxcryptoit73082 жыл бұрын
Все очень круто, отличный формат и подача! Спасибо, большое!
@t0digital2 жыл бұрын
Спасибооо!
@ПавелКуликов-и3м4 жыл бұрын
спасибо за "асинхронность"!видео с темой
@kostya88774 жыл бұрын
Просто лучшее объяснение из всех, что я смотрел, все четко и структурированно. Спасибо огромное!
@sergekozlov98764 жыл бұрын
Спасибо большое, ждём продолжения
@t0digital4 жыл бұрын
спасибо, скоро продолжение, на бусти уже кое-что есть:)
@s1mplo755 Жыл бұрын
Классно рассказываешь, приятная атмосфера
@t0digital Жыл бұрын
Спасибо!
@EvgeniySakharov2 жыл бұрын
Подписался, лайк поставлен, колокольчик нажат. Всё потому что, более простого и понятного с ПЕРВОГО раза разъяснения я не видел ни разу. Даже наш преподаватель объясняет хоть и подробно но сбивчиво. Нет, она отличный преподаватель, просто она хочет объяснить все за одно предложение. Такое впечатление складывается.))) Но Вы, молодой человек (мне 49), все в вышей степени всё отлично рассказали. Спасибо большое. И удачи Вам. Делайте больше подобного контента.
@t0digital2 жыл бұрын
Спасибо, приятно! Рад, что вам понравилось!
@alexandershurakoff95063 жыл бұрын
Клевое видео для погружения в тему!
@irinalivra67894 жыл бұрын
Очень доступно ^_^ спасибо!
@t0digital4 жыл бұрын
Юхууу, спасибо! 🙏
@MadMike934 жыл бұрын
Опа))) пол года назад собирался для себя рисёрч делать по этому вопросу, задавал вопросы парням в чатах в телеге, но так достаточно времени на это и не выделил. Спасибо)))
@t0digital4 жыл бұрын
Прокачаем эту тему еще глубже в следующих видео:)
@MadMike934 жыл бұрын
@@t0digital Ну что же))) Москва не сразу строилась))) спасибо за труд)))
@DP_AS8 ай бұрын
Спасибо! Вы отлично объясняете! Ценный материал!
@jagudinfelix44704 жыл бұрын
Добрый день, видео интересное и познавательное и вызывает ещё больше вопросов😁. Буду ждать следуещее видео)
@t0digital4 жыл бұрын
Спасибо!
@моёимямояфамилия-ь2б4 жыл бұрын
Спасибо! Мега крутой теоритический видос! Осталось разобраться с практикой
@t0digital4 жыл бұрын
Спасибо! Скоро будет практика
@mikhailpetrov19484 жыл бұрын
Большое спасибо за доступное объяснение таких важных вещей!
@t0digital4 жыл бұрын
Спасибо, рад, что понравилось!
@Konushbai9 ай бұрын
Спасибо! Ждем больше примеров на практике
@ДаниилШестаков-щ8к2 жыл бұрын
Спасибо , надеюсь разберусь в теме асинхронности с нуля до полного понимания благодаря вашим роликам. Перехожу к следующему )
@angls1944 жыл бұрын
Алексей, молодец! Здорово рассказываешь, просто о сложном! Интересная тема и все по полочкам.
@t0digital4 жыл бұрын
Спасибо!
@FILA22094 жыл бұрын
Круто! Все очень доступно и понятно изложено! Спасибо!
@kubenet4 жыл бұрын
Крутое видео!) Жду продолжения с разбором примеров работы многопоточности и асинхронности)
@copycat7744 жыл бұрын
Супер-информативное видео. Новичкам сэкономит много времени. Наконец-то понял, что такое логические ядра. Благодарю.
@t0digital4 жыл бұрын
Рад, что полезно!
@777777Philipp2 жыл бұрын
Супер! Очень интересно и доходчиво
@genych933 жыл бұрын
Объяснил сложные вещи доступным языком! Спасибо!
@t0digital3 жыл бұрын
Спасибо!
@alexanderthegreat4894 жыл бұрын
Спасибо за видео! Очень интересно и хочется побольше примеров и практики))
@t0digital4 жыл бұрын
Да, в следующих видео будут примеры и практика
@ВадимКозячий4 жыл бұрын
наконец-то хоть где-то нормально рассказали об асинхронность. Ждём следующего видео.
@t0digital4 жыл бұрын
Спасибо! Продолжение следует:)
@mgm_smile4 жыл бұрын
Отличное видео! Жду продолжения =)
@t0digital4 жыл бұрын
Скоро будет:)
@SavitskyVadim4 жыл бұрын
Говоришь быстро, но подача отличная). Спасибо!
@t0digital4 жыл бұрын
Спасибо!
@fransdeston84044 жыл бұрын
Чертовски хорошо рассказываете! Легко, Просто, а главное Доходчиво! Автор ниже прав, Хороших Лекторов хрен где найдешь! В таком формате я бы с удовольствие в Универе учился, если бы мне так преподавали! Я бы, с удовольствие, осилил и 2 часа такого видео!) Спасибо Автору, пошел смотреть дальше!)
@t0digital4 жыл бұрын
Спасибо большое за такой отзыв, приятно!
@volfsonic2 жыл бұрын
Благодаря таким авторам, хочется изучать тему. Спасибо! Смотрим дальше
@banji3564 жыл бұрын
Спасибо тебе! Ты мегакрут! Если я еще не опоздал с просьбами, то хотелось бы услышать опыт и правильное применение асинка и тредов не только в вебе, но и в других кейсах. И еще раз спасибо и удачи!
@t0digital4 жыл бұрын
Спасибо! А в каких задачах еще было бы интересно про треды и асинки?
@banji3564 жыл бұрын
@@t0digital Ну например я сейчас работаю над мессенджером, и на каждое входящее сообщение создаётся отдельный поток, который скачивает этот файл, и отправляет на другой сервер. Что лучше в таком случае подойдёт асинк или потоки? Второй пример как получить переменную из потока, над которой он работает в обычной функции используется ретурн, а что делать в случае с потоками непонятно, или бд, или запись в файл, но вроде как это костыли. Возможно ли внутри потока использовать асинк и целесообразно ли это?
@frx16923 жыл бұрын
Спасибо большое за ваши поучительные материалы
@thequarkie4 жыл бұрын
Отличное видео, спасибо!
@dimusss4 жыл бұрын
Крутое видео, очень интересно слушать! Будет интересно затронуть обзор реализации асинхронности в только что вышедшей Django 3.1 - что можно с ее помощью делать, что нельзя (напр., пока нет асинхронного ORM, вебсокетов), как отличается деплой, ощущается ли разница в скорости работы с обычным синхронным подходом.
@t0digital4 жыл бұрын
планирую такой материал, да
@fransdeston84042 жыл бұрын
Год назад смотрел видео))) Сейчас пересматриваю, и понимаю значительно больше уже) Короче, я на этих видео понял суть программирования! Спасибо большое, это значительно упростило мне жизнь!)))
@envy16164 жыл бұрын
поразительно качественный контент! спасибо!
@t0digital4 жыл бұрын
Спасибооо! Приятно:)
@Badn0884 жыл бұрын
Подписки растут быстрым темпом! Отлично)
@t0digital4 жыл бұрын
Дааа:) Спасибо!
@Dastan19103 жыл бұрын
Спасибо большое, теперь наконец-то стало понятно! )
@СергейЛеонов-ж3эАй бұрын
Мёд для ушей Спасибо за лекции!
@t0digitalАй бұрын
спасибооо!
@МишаАлексеев-я1ч4 жыл бұрын
Присоединяюсь к остальным комментариям, тема очень интересная, так как в Python очень много асинхронных возможностей. Мне например не хватая уровня английского, чтобы читать официальные документации в оригинале не хватает понимания в теме корутины, генераторы, asincio и всё в том духе, информации в интернете много, но всё обо всём да ни о чем, надеюсь у Вас получится наиболее точно осветить эти темы. Давно наблюдаю за каналом, очень нравится как Вы объясняете.
@user-yr7qn1dt5t4 жыл бұрын
Спасибо за ваш контент!
@Sherisher-u8g4 жыл бұрын
Спасибо. Видео на одном дыхании посмотрел. Очень интересно. Жду продолжения. Когда будет инфа по курсам?
@t0digital4 жыл бұрын
Спасибо! Инфа по курсам будет скоро:)!
@ВячеславДолинский-г7ы4 жыл бұрын
На С++ писал свой фреймворк для многопоточного обмена сообщениями между разными модулями системы (похоже на модель акторов). Интересное видео! Жду продолжения.
@t0digital4 жыл бұрын
Спасибо!
@ГерманФедотов-ж4ж3 жыл бұрын
Очень крутой материал!
@gladiator-56744 жыл бұрын
Очень важная тема. Ждем пример реализации на python P.S спасибо Вам за ваши обучающие видео. Рассказываете все очень доступным и понятным языком
@t0digital4 жыл бұрын
Спасибо! Да, в следующих видео будет реализация!
@Python20613 жыл бұрын
Без лишней воды. Спасибо огромное за такие ценные рассуждения.
@Qwad434 ай бұрын
Спасибо за труд!
@Python-i2z3 ай бұрын
Здравствуйте, спасибо за полезное видео, объяснили все доступно и понятно
@Zhekazhe14 жыл бұрын
Понятно и познавательно. Спасибо за полезную информацию!