Мероприятия Добавить мероприятие Спикеры Доклады Коллекции Выход
 
Продолжительность 30:57
16+
Воспроизвести
Видео

Blueprint vs. C++ в UE4

Леонид Горбачёв
CTO в OctoBox Interactive
  • Видео
  • Тезисы
  • Видео
DevGAMM Minsk 2017
17 ноября 2017, Минск, Беларусь
DevGAMM Minsk 2017
Запросить Q&A
Видеозапись
Blueprint vs. C++ в UE4
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
В избранное
11,21 K
Мне понравилось 0
Мне не понравилось 0
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
  • Описание
  • Расшифровка
  • Обсуждение

О спикере

Леонид Горбачёв
CTO в OctoBox Interactive

Леонид работал над MMO-шутером “Project Echo” в качестве ведущего технического специалиста, и был продюсером VR шутера “High Noon” в студии OctoBox Interactive. При Build-процессе Леонид использовал движок UE4 и методологию гибкой разработки Kanban. Ранее Леонид работал в качестве геймдизайнера в компании Nival.

Перейти в профиль

О докладе

Использование визуального скриптового языка Blueprint в UE4 является частым вопросом. С одной стороны, некоторые из разработчиков не верят в визуальный скриптинг, с другой стороны, блупринты очень необычны для геймдизайнеров.  В данном докладе, Леонид поделиться интересным опытом своей команды по оптимальному использованию обоих языков.

Поделиться

Леонид Горбачев главный человек в разработке студии octobox interactive расскажи-ка нам Versus Battle блюпринты против всех ПЛЮСПЛЮС vanrell Всем привет А сегодня я как сказал скажу про сравнение препаратов и плюс про меня коротко я действительно Работаю в такси в санкт-петербурге ранее был просто программиста Андрея потом сетевого сейчас я больше выполняю прадедушки задачи поэтому не судите меня строго что такое технический доклад но всё серьёзно будем

потеть будем думать 20 слайдов надо значит моя цель как бы помочь разработчикам наносили среднего уровня выбрать между плюсом и бинтами вовремя эту грань Потому что когда мы 2015 году начали разрабатывать Наш первый игру на Ангеле четвёртом для нас всегда было загадкой где вот эта грань Где нам нужно написать код на плюсах и приходи комплименты или наоборот В чём компромисс Собственно как я уже говорил моя команда работает на адрес 2015 года а у нас есть несколько проектов разработки это мультиплеерный шутер High noon VR он недавно зарядился на стене

и Project Echo это большое мама проект сессионные бои в онлайне он очень большой очень сложный Значит сразу скажу вайнгарт сделано Блин так на 95% а Project где-то на 75% Что такое Я хочу просто познакомиться аудиторию Чтобы понимать насколько мне подробно что рассказывать поэтому Поднимите руки кто работает на Android же не постоянно вот понятно А кто надоел инженер принтами пользуется активно Поднимите руки Ага значит хорошо тогда я буду говорить детали деталь значит что

такое blueprint это идеологически Наследник Andreas crypto is Unreal Engine 3 и кислота это он объединяет в себе чем свойства скриптового языка которого нужен был После долгих разработок Андреева Андреева 3 он нужен для того чтобы быстро для того чтобы быстро под типировать и он нужен в первую очередь всем кроме программистов потому что он обслуживает необходимости простого пользователя То есть он как например вот в каком-нибудь Яндексе в Гугле это прикладной язык чтобы решать задачу сесть и решить просто вот такая у него идеология

это в первую очередь резак объектно-ориентированный язык событийно-ориентированных визуальные То есть он объединяет в себе парадигмы Казалось бы даже не очень совместимые сделана потому что я чуть позже расскажу почему как мне кажется А да интересное сравнение я ни разу ни у кого этого не слышал в том числе и не слышал это от Epic Games но я хоть поэтому я так хотел доклад общем я ранее учился в санкт-петербурге на кафедре технологии это мы изучали язык verilog и весь день для того чтобы программировать вообще этот

язык имеет нотацию текстовую его можно написать просто открытым текстом Но в основном все дизайны в логове зверя они все как на картинке слева а справа увидим blueprint яркий пример то есть в языках программирования аппаратуры визуальное программирование было уже давно и оно прижилось она там работает да некоторые используют обжектив си но не все а си для аппаратуры это 5050 таким образом я хочу сказать что вообще вот визуальное программирование давняя мечта недавно засыплют снобизм он

появился после того как многие разочаровались вообще во всех визуальных языков которые появлялись в это время там был неудачные Microsoft Office Кириши были неудачные решения других компаний эти решения Не приживались потому что они были как бы не для программистов они для программистов Это слишком сложно и постепенно вот отношение к Израилю Ну ты его ещё хуже хуже показалось что это ну нереально и тем не менее тем не менее значит в Epic Games решили что вот такой она должна работать и в принципе вот Судя по

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

обрабатывает Ну на скорости буквально Света Да и здесь больше нужен подход Когда у вас есть множество входов и выходов разных сигналов разных событий и вас языки событийно-ориентированных становятся более актуальна нежели функциональные Когда у вас и строго заданной последовательности коротко сразу скажу Какие плюсы Мы наблюдаем препринты за эти город что у нас очень быстро компенсация за счёт которой мы можем легко писать код и легко протипировать минусы оказались в том что

эти скрип тяжело мерзнуть это можно исправить частично архитектурой или perform и тяжело рефакторить так называемый фантомные боли это наши вокальный термин Я ведь про него могу чуть позже рассказать про написание на Блин так из-за того что это визуальный язык чтобы его хорошо читать хорошо раскладывать это хорошо Значит расставлять Пинки Вот и этот такой момент когда спагетти код состоящий из спагетти кодом вы это плохой пример вот так делать это не читаем

iqosa такой кот мы скриптор объём программисты стараются тоже так не делать Вот пример хорошего кода на бриллиантах и все-все-все на одной прямой в спинке разве не так чтобы они пересекались как нужно количество Как можно меньшее количество раз и таким образом такой кот очень легко читать Вот ещё Хорош Вот такой кот Но в основном пишет вот реальный кот из наших проектов и блюпринты не всегда хорошо читаются когда я У нас есть переборы фуруичи это не очень хорошо и у вас таких безумных случаях Когда нужно

Казалось бы сделать Триггер который включается как выключается но выглядит немножко безумной и первый раз Прочитав ты не происходит хотя на самом деле просто на Input приходит в стике число от нуля до единицы и когда приходит единица нужно просто нажать как бы сказать три гаража назад а потом отпустить чтобы там вот пути и onclick приходил единожды а для нашей команды это всё Мы на нём стараемся делать все задачи для того чтобы когда мы передавали эти скрипты

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

дополнительным функционалом он весь в макросах есть значит дополнительных атрибутах там есть огромное количество модулей плагинов которые решают практически все задачи связанные с гендером не нужно управлять при этом Память то есть вот у эпиков хороший пример как с Шарпа переехать на плюс И вот все Шарыпово сауна говоря Unity C Sharp на плюсы андрюшки и этот гад он очень легко читается легко воспринимается Потому что если нет управление память это всё это становится намного проще понять нету никакого синтетического сахара Ну и что нету там

Юнгов Нет с каких-нибудь Ленку которому жарко очень быстро привыкаешь у него что отвыкнуть а всё остальное Почти то же самое нужно только заправлять атрибуты и немножко перестроиться ну и конечно самое главное Point между полюсами и притом что на плюсах Блин ты можно очень сильно расширять добавлять что-то изменять И они не связаны очень сильно насчёт этого аята пример обычного кода на плюсах это хедер в котором объявлен класс вейпом инстанс это класс

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

своя система у него есть выбор А в плагинах плагины можно очень крутые писать на плюсах и так принято делать а файлах на плюсах гораздо проще Блин ты можно сравнить там сравнял к она Неплохо Теперь работает Например год назад с ней было тяжело полтора года назад Мне было очень сложно работать но постоянно падал какой-то Капец ты быстрее на плитах просто пой нажал всё заработало всё прекрасно на плюсах чуть дальше нужно две-три секунды на секунду ну вот выбираю рефакторинг Значит на плитах есть проблема с рефакторинга в том смысле что

если у вас диппер факторинг когда переделывает интерфейсы переделывай эти все варианты начинать вот сильно меняет всю структуру угли принято начинается фантомные боли потому что кэш запоминаю что там какой-то блин был уже собран и всё с ним хорошо а на самом деле всё плохо и перекомпиляция на другой именно Build сервере всё падает и вы про это не знаете до тех пор пока она там где-нибудь когда-нибудь не упадёт плюсах опять же рефакторинг проще У нас есть чудесные тузы wi-fi есть решарпер который этот рефакторинг делает очень быстрым делал

скорость исполнения плюсы сутки быстрее плинтов по размерам от 10 до 8 раз но в реальной архитектуре Отмыть всё правильно отстраивать однокомпонентной системы на винтах этого не происходит прототипирование ранних версий на плитах гораздо проще делать и порог вхождения программиста куплинов вышел при этом наблюдается проблема что если человек что-то знал программирования то есть использовал прикладной язык типа питона объяснить Ему блин блюпринты бывает сложнее Это не совсем функциональный язык нужно перестраиваться сейчас сходит с ума

противоречит кроссворд противоречие в ипотеку перестраивается что у него события в Люберцах этой функции Void пастухи которые ничего не возвращают событий не имеет выхода из таймлайна при этом событии Блин так это ещё и обычные как вот эти шорты и они при встрече новопокровском только в одних случаях на плюсах это сам телефон сел а в других случаях это честные диспетчер ивенты как вот все шарпе Один в один фунт сохранить локальную переменную события не может ходить вокальный перемену Вот то самое функция вольт а

Функция может события события песни диспетчер то есть они существуют отдельно списочек их можно вызывать бенди так далее Ну вот вот это вот безумие для программистов она особенно некоторое время вызывает когнитивный искажения в Люберцах любые события можно передать через делегат Да но при этом событии которое функцию тоже можно передать через делегатами принтах ну то есть вроде бы Из точки зрения программирования функционального всё нормально что мы можем место по посылке вызывать Но поскольку мы знаем что это не совсем

те же самые события в общем возникают всякие странные вопросы и непонимание A3000 + 30 как Котопёс В общем нету такого что в Тунисе чёткие четкое разделение если есть проблема в плюсах то она сейчас кажется на принтах и наоборот всему принтом накосячили такое программа продолжить неработающим блохи у них общее и проблемы общие общие правила которыми пользуется примерно такие Суперкласс и так всё ещё плохо Ну то есть никаких никакой разницы нет Тем более если у нас теперь всё медленнее в 10 раз это

немножко для совместной работы нужен строгий полюсе как и плюсах и минусах Нужно следить чтобы после блиндаж тем более Нужно следить чтобы поле соблюдалась Потому что если кто-то не может Пинки в Ровно расставить нормальными провести Ну потом сложение с этим работать а то мы там активно используется по три компонента и мы там активно используется события Потому что так проще развязывать код интерфейсы и полиморфизм и там и там удобно использовать Ну хотя в том всех интерфейса как таковые не

совсем есть Ну тем не менее в Люберцах интерфейса есть они довольно удобно и вот в нашем случае мы придерживаемся политики максимальной открытости как бы инкапсуляции в некотором смысле мы стараемся максимально открывать все поля и обезопашивать их я расскажу в следующем вот для того чтобы вам было удобнее вот понимать как вот короче как мы строим пайплайн разработки военных вещей epicgames pipeline другой Там они просто дают геймдизайнером виппринт они долго долго долго долго программируют элемента какую-то Жуть потом они to revisit говорят вот этот

наш mvp её забирает программисты и потом программисты упаковка несколько месяцев до того чтобы довести эту игру дома они просто всё refactored что значит плюсы какие-то блюпринты переделывают А мы себе такую роскошь позволить не можем потому что у нас очень мало вообще в СНГ геймдизайнеров которая умеет хорошо программировать тем более люблю поэтому у нас на другой план у нас программисты закладывает какую-то базу на плюсах чтобы все важные классы были в Клинцах продукт могу потом рассказать зачем

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

то есть мы наследуем переписываю на плитах и делаем все базовые связки сразу ну программистами делаются вот он показан смотрите вот этот пример вот там говорит Вы можете его расширять дальше-то передаём scriptorama геймдизайнером и дальше Анюта с этим кодом работают таким образом программист где-то там в течение месяца всю базу вот этого Project Echo нашего фестивального шутером не трогали на кот 3 месяца и 3 месяца открыт другим дизайнеры делали разных цехов

практическим и не вмешивались разработку очень сложно геймплейных свечи абилок сложных оружий которые мы сами себе не придумывали просто сделали гибкую систему и вот мы её выкатили enablement А кто-то работает ну просто как в обратную сторону никак в Epic Games всё-таки не стоит вначале они геймдизайнеры к сожалению вот это собственно всё что я хотел вам рассказать на сегодня а меня зовут Ирина Горбачёва время задавать Спасибо за интересную так он у меня такой вопрос Как обставить звонили дела с переходом между версиями с ними Это хороший вопрос Спасибо большое

Очень это больно но это нужно делать Вот если вас долгосрочный проект не короткий как вот High noon at High noon VR который показывал он в разработке будет 4 месяца мы заморозили Ивана смотрели и больше печенье добавляли и на версию Не переезжали потому что для релиза всё-таки опасный переезжать очень много нужно тестировать для проекта Project Echo который может длиться 2 года если там он будет хорошо продаваться он ещё два года будешь жить потом ещё два года ты мы стараемся обновляться

или через версию иногда это превращается в человека нас есть такой специальный обычный чай который часто занимается именно переезда Ion 2 недели занимается тем что правит функции проверяет исправляет баги самое жёсткое Что за это время была Ну тогда был переезду восьмёрка девятка десятка там вообще всё было очень сложно плохо но это было скорее нашего неумения А вот сейчас с жёсткого что препаратах есть но у неё переменной по его прийти переменной по умолчанию меняется скажем и все блюпринты где это надо использовать их всех нужно найти и везде проверить что она работает

правильно плохой пример когда всё очень больно Конечно если восход на плюсах всё чуть-чуть попроще но тем не менее есть теперь ты этот функции которые всё равно нужно менять Они меняют потом у нас есть свой класс Мурман то синхронизирующиеся он не унаследован в виду того что сам Мурманск пиковский он очень сложный но очень мы его как бы взяли скопировали очень сильно переписали И теперь каждую версию мы занимаемся сравнением что они улучшили и улучшаем свой по такому же принципу Ну как бы пользу но при этом

унаследовать мы не можем потому что там всё-всё-всё очень тяжело наследуется из-за того что Потому что сам бы компонентами что сложно Ну так или иначе Да это больно но в больших проектах это просто необходимо Потому что так или иначе тип речи которые добавляются в более поздних версиях они просто Ким Чен Ира не меняет всё они позволяют вам что-то проще делать они ускоряют в сетку они правят важные бумаги и отказываться от просто очень грустно Хотя вот

мы два года назад написали сведения плагин сведения Они могли принта и вот только вот через 2 года Эпики добавили свой Такой же но это не плагин Правда он в движке заложен но как бы всё равно есть функции которые догоняют И последнее вот советы У вас есть какая-то маленькая фича например для кредитора который очень нужна советую написать на плюсах её и сделать план потому что плагины меньше зависит от версии с плагинами легче переезжать плагина отваливаются по

одному они не уронят вам весь проект А мне вот интересуют вопросы связанные с контролем версию Tasty Blue Print и не очень хорошо с китом дружит И как вы это разруливать и то же самое тяжело просто хотел рассказать но времени очень много у нас есть время ещё перерыв Так что можно шикарно Ну смотрите у нас используются гид потому что он простой Бесплатный потому что А большинство из нас им пользовались и мне лично как-то нравится его идеология но понятно что там есть бинарные

файлы файлы не вяжется как мы исправляем эквивалентах их очень много значит мы во-первых справляемся архитектурой пакости Как делают игры мы разводим на множество маленьких гигантов персонал это хорошо или разрядности кода это система контроля версий То есть если есть какая-то функция которая скажем делает прыжок скорее всего так компоненты Jump это отдельно beprint Ты очень просто да и некоторых значит студиях принято использовать perforce и всё можно закачать

файл но это тоже не серебряная пуля потому что ну вот какой ветке ты закончил файл в туалете которой ты работал ты заочно Фатых который ты работал но ты не замучилась остальных клетках и так или иначе всё равно будет конфликт поэтому самая большая проблема на самом деле реальная проблема Это мерш суперкласса принта это худ контроллер и так далее То есть большие классы их Мы в общем через discord там нас в дискорде вообще им пишем я забираю код на сегодня и всё и все знаешь что хоть завтра

и если это будет конфликт он имеет authorization взять и переписать свою потому что он закончил как бы публично этот ход Ну и люди договариваются любом случае достаточно сложная поэтому даже плюсового кода требует обсуждения что кто сделал Как это лучше переложить как-то лучше смерть и то же самое происходит в Ты что сделал Давай Скопируй Здесь перенесём мы в конце концов есть лайфхак я в презентации не показывал Можно ваш конфликт вы открываете Андрей если у вас включён

plugin git вы говорите он сравнивает текущую предыдущую версию принтом так вот этой сравнивал Кем работает копипаст можно скопировать предыдущий там кусочек кода которого не хватает controls закрыть компа зайти в этот блюпринты сделать контровое сказать сохраняй Вот так это вот иногда идеально срабатывает но тем не менее в некоторых классах например раньше выйдем инстансе нельзя было провести сравнение либо падал либо просто не включал сравнение такой вот ответ Серёжа вот тут

Здравствуйте Леонид класс вы обмолвились о том что разница между кодом на плюсах и blueprint достигает 8 кратный Да на высокой сложности Да понятно О'кей вы сказали что Можно как-то это исправить и уменьшить эту Дельту расскажите немножко об этом принц или наоборот замедлить плюсы что блин быстрее не убрать То есть то что медленно выполняется на больших сложных операциях она медленно выполняется но чаще всего сложные операции в наших я не встречал общем таких операций которые нельзя было бы оптимизировать посредством архитектуры Ну то есть вот самый Я у меня было

собеседование со скриптом он не жаловался что у него всё медленно и открыл его кот он насчёт БТИ делал вообще всё Ну просто всё и такой вот я таблица всё будет хорошо Да не будет всё хорошо если ты всегда синяки будешь делать уверена плюсах будет тормозить вот мы делаем всё на ивентах есть Эванс есть действия а в 99% случаев это разгружает всю систему если всё работает очень ровно так грубо говоря добавление асинхронности позволяет это ускорить это виртуальный синхронность Ну то есть она

даже не настоящие просто выполняются то что сейчас нужно в этом тики и всё отлично Спасибо большое Здравствуйте у вас была там строчка что в репринт события воет не возвращает значение самом деле можно вернуть значение хорошо Каким образом расскажете сделать ссылку на указатель можно сделать ссылку на указателе это просто записать переменную но не вернусь значение Это не это не выход из функции поэтому и говорю что он возвращает значение это условно говоря не riperam ну как по ссылке Ну по ссылке можно

что можно создать глобальные переменные писать и сочным и так и делаю и в состоянии объекта Можно ли сказать что меняет состояние они выполняют ресторан Ну возможно но мне так сложно сказать у меня немножко Вот так ну и в плане производительности грубо говоря если мы пишем очень Мне кажется про функцию kik в плите можно забыть очень тяжёлая естественно Естественно но тем не менее от неё иногда бывает сложно драться Ну ты извини не могу вспомнить такого такого яркого примера где прямо надо всегда открываю блюпринты там своих коллег и этики всегда

что-нибудь маленькое какая-то понятно что там Если бы там лежали какие-то вычисления или перебор массива внутри массива Я бы забежал на чаще всего там какие-нибудь вызовы там там проверить что всполох закончил отыгрываться это поменять функция актёра через при этом всё пропитывается там очень сложно там подтёки или вызовов в 10 пока он пойдёт Да блин ну очень правила такое если у вас молодой сотрудник вы ему сразу может сказать всё будет плохо и это как бы четвёрка дисциплинирует овощи переживает уточняет в конце концов вы достигаете взаимопонимание как это правильно делать

Так это последний вопрос потому что перерыв уже начался коротенький А какой самый простой способ поделиться с ней потом другой раз коллега вот с текстом с кодом Я могу просто скинуть А вот везде где пример я встречал обычно это просто скриншот Но это медленно достаточно если что в лентах скриншота из Даже сервис который сохраняет помимо скриншота есть возможность сделать Control C Control V потому что копирование принтом редакторе в буфере выглядит кокаин текст Вы можете сохранить blueprint в текстовый файл и отправить

коллеги у нас даже есть шутливые вот эти тесты которые неприличными словами Ты вставляешь этом пинками нарисована что-нибудь некрасиво вот если ты недоволен коллега Он же не видит что там зашито вставляет и видит как

Комментарии для сайта Cackle

Купить этот доклад

Доступ к видеозаписи доклада «Blueprint vs. C++ в UE4»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Доступ ко всем записям докладов мероприятия

Доступ к записям всех докладов «DevGAMM Minsk 2017»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Билет

Интересуетесь тематикой «ИТ и технологии»?

Возможно, вас заинтересуют видеозаписи с этого мероприятия

11-13 октября 2019
Киев
68
218
аутсорс, ит, маркетинг, менеджмент, планирование, проекты, ресурсы, стратегия, управление, энтерпрайс

Похожие доклады

Валентин Симонов
Field Engineer в Unity Technologies
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Олег Чумаков
CEO в Luden.io
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Кирилл Надеждин
Ведущий программист в Kumo Kairo
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Купить это видео

Видеозапись

Доступ к видеозаписи доклада «Blueprint vs. C++ в UE4»
Доступно
В корзине
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно
Бесплатно

Conference Cast

ConferenceCast.tv — архив видеозаписей докладов и конференций.
С этим сервисом вы можете найти интересные лекции специально для вас!

Conference Cast
1276 конференций
39998 докладчиков
16995 часов контента