Devdays Весна 2017

Материал из SEWiki
Версия от 21:34, 27 апреля 2017; Sil (обсуждение | вклад) (Yet another OpenCL memory optimizations & architecture features)

Перейти к: навигация, поиск

Темы проектов

Чтобы править эту страницу, нужно залогиниться в Sewiki. Тогда сверху будет кнопочка "править". Если у вас нет учётной записи - напишите Мише Кольцову желаемый логин.

Редактировать wiki одновременно нескольким людям стоит осторожно: после внесения правки проверьте, что она действительно сохранилась.

Проекты нумеруются автоматически. Можно вписывать свои идеи проектов в порядке, отличном от "первый вписал - меньше номер".

Сделаем чит-программу или бота для старой компьютерной игры

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

-ботов, которые играют за тебя;

-примочки, которые помогают в игре, типа дополнительных кнопок;

-альтернативные игровые клиенты, которые позволяют игрокам подключаться к альтернативным серверам;

-читерские программы, которые позволяют получать преимущество в игре (стрелять точно во врагов, видеть всю карту, ...);

-crack-и, которые подбирают серийные номера для бесплатной игры.

Все эти программы запускаются отдельно от игры, но каким-то образом влияют на происходящее в игре. Мне интересно понять, как это вообще происходит.

Идея такая: давайте возьмём какую-нибудь старую игру. Скажем, года до 2003, а то в современных играх античит системы накручивают сильно. Плюс, некоторые старые игры имеют открытый исходный код движка.

И сделаем для этой игры какую-нибудь программу, которая позволяет получить преимущество в игре (например: wallhack\speedhack для counter-strike 1.6, maphack для warcraft 3, бот для diablo 2).

Предложил: Михаил Кольцов

Анализ данных применительно к игре Dota 2

Недавно на kaggle я наткнулся на датасет с матчами многопользовательской игры Dota 2. В нём для каждого матча есть информация об игроках, о ходе игры, чат и всякое разное. Можно попробовать поанализировать, какие факторы влияют на успех\неуспех игрока.

Или посмотреть, как соотносятся фразы игрока в чате с его реальной пользой в игре: верно ли, что человек, который всех кроет матом, на самом деле играет лучше других?

Ожидаемый результат работы: какая-то новая информация про поведение игроков. Год назад меня поразила статья Masters of Control: Behavioral Patterns of Simultaneous Unit Group Manipulation in StarCraft 2, которая указывает на факторы, отделяющие хороших игроков от плохих. Я уверен, что тут море возможностей.

Замечу, что уже есть сайт, собирающий статистику по играм: dotabuff.

Предложил: Михаил Кольцов

WebAssembly 2027

Сейчас разрабатывается стандарт WebAssembly, который позволит (как многие надеятся) достичь скорости native-кода (считай, ассемблер) прямо в браузере. Недавно был достигнут консенсус между разработчиками популярных браузеров насчёт того, как будет выглядеть этот стандарт.

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

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

Ожидаемый результат: проект сервиса или сервисов, которые будут функционировать в 2027 году, и которые станут возможными благодаря скорости WebAssembly.

Предложил: Михаил Кольцов

GitHub security assessment

Есть такой сайт - HackerOne. На нём компании размещают свои страницы, а пользователи могут туда посылать security-related баги в продуктах этих компаний. Компании платят деньги пользователям, которые нашли крутые баги.

Там же есть страница у GitHub. На странице указано, за какие баги можно получить награду. Например, DDoS и social engineering запрещены.

Давайте посидим и за хакатон найдём какой-нибудь баг в гитхабе. Получим долларов пачку. Почему именно гитхаб? Я думаю, это близкий для каждого разработчика продукт. От его работоспособности зависят многие люди. Например, если будет какая-то уязвимость, позволяющая удалять из чужого репозитория что-нибудь -- это очень серьёзно. Чем серьёзнее проблема, тем больше денег дают.

Хочется подойти к проблеме с программистской стороны. Многие начинающие хакеры используют существующие утилиты для проведения экспериментов (например, для автоматического сканирования сайта). Более продвинутые хакеры пишут скрипты на python. А мы с вами можем написать всё что угодно на том же python!

Ожидаемый результат: найденный баг в github, одобренный представителями компании.

Предложил: Михаил Кольцов

Derived class debugging

Solving YoYo problem. Предлагается взять код из некоторой иерархии наследования, где логика разнесена по разным уровням наследования. Разработать некоторый фреймворк (на крайний случай, пара скриптов на модификацию исходников и пара на то, как как их встроить в популярные IDE) который позволяет видеть весь код на одном экране, без прыгания по уровням иерархии наследования.

Предложил: Кравцун Андрей


Генерация сложных тестов к олимпиадным задачам

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

Генерировать генетическими алгоритмами. Нужно будет написать всё для запуска решений участников.

Предложил: Антон Гардер

Бронирование места на ближайшей платной парковке

Просто много покодить.

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

Java/Python, Android

Предложил: Антон Гардер

Some considerations about NUMA & HPC

Non-uniform memory access (NUMA/ccNUMA) - интересная архитектура, значительно облегчающая масштабирование. Однако, когда дело доходит до высокопроизводительных вычислений, она может стать узким местом.

Хотелось бы иметь библиотеку, позволяющую абстрактно 1. определять положение устройства и памяти 2. производить аллокации и явные трансферы памяти на указанных узлах 3. облегчающие менеджмент потоков (миграции потоков между узлами нарушает локальность памяти) 4. (опционально) довести этот же функционал на уровень устройств в OpenCL

tags: c/c++, PCIe topology, linux api, processor affinity, (+OpenCL)

P.S. необходимо найти сервер с NUMA/эмулятор для тестирования.

Автор: Павел Бегунков

Yet another OpenCL memory optimizations & architecture features

OpenCL для NVidia является прямым конкурентом (e.g. CUDA), поэтому NVidia придерживает различные архитектурные фичи для CUDA. Хотялось бы протянуть некоторые возможности видеокарт NVidia для использования в OpenCL. На повестке: 1. некоторые инструкции из их ISA (group operations, butterfly, etc). Необходимо проверить, необходимо ли оно в связи с их новым beta драйвером с OpenCL 2.0. 2. GPUDirect. (https://streamcomputing.eu/blog/2015-04-18/gpudirect-and-directgma-direct-gpu-gpu-communication/)

tags: Cuda, OpenCL, c/c++

P.S. По поводу (1) слышал, что можно внедрить их IL в OpenCL с помошью inline asm. Понятия не имею реализуемо ли (2).

Автор: Павел Бегунков