Devdays Весна 2017 — различия между версиями
Sil (обсуждение | вклад) (→compiler improvements) |
(→Темы проектов) |
||
Строка 137: | Строка 137: | ||
Предложил: Миша Чернявский | Предложил: Миша Чернявский | ||
+ | |||
+ | |||
+ | == Фурье - термометр == | ||
+ | Когда вы наливаете воду в чашечку, она журчит, причем журчит по-разному, в зависимости от температуры. Интересно, с какой точностью можно измерить температуру воды по звуку ее выливания в какую-нибудь полость. | ||
+ | |||
+ | Реализовать предлагается в виде приложеньки на андроиде. | ||
+ | |||
+ | Предложил: Симиютин Борис |
Версия 22:34, 27 апреля 2017
Содержание
- 1 Темы проектов
- 1.1 Сделаем чит-программу или бота для старой компьютерной игры
- 1.2 Анализ данных применительно к игре Dota 2
- 1.3 WebAssembly 2027
- 1.4 GitHub security assessment
- 1.5 Derived class debugging
- 1.6 Генерация сложных тестов к олимпиадным задачам
- 1.7 Бронирование места на ближайшей платной парковке
- 1.8 Some considerations about NUMA & HPC
- 1.9 Yet another OpenCL memory optimizations & architecture features
- 1.10 compiler improvements
- 1.11 Фильтрация заполненных пауз в видеозаписях
- 1.12 Фурье - термометр
Темы проектов
Чтобы править эту страницу, нужно залогиниться в 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).
Автор: Павел Бегунков
compiler improvements
Как-то давно заметил, что мейнстримовые c/c++ компиляторы не умеют оптимизировать записи по out-dependency даже в самых простых случаях. Можно было бы законтрибутить (точнее попробовать) в один из них (i.e. gcc or clang) подобную фичу. Также можно обратить внимание на некоторые оптимизации техник rvo/nrvo.
tags: с/с++, compiler, clang/gcc
Автор: Павел Бегунков
Фильтрация заполненных пауз в видеозаписях
Существует множество статей, посвященных задаче распознавания заполненных (хезитационных?) пауз в речи. Хотелось бы найти и приспособить одно из существующих решений для фильтрации видеозаписей, воспроизводимых из браузера.
Что конкретно хочется сделать:
- Либо найти готовую библиотеку, которая умеет распознавать звуки-паразиты в аудиодорожке, либо самому построить "распознаватель" по материалам из статей. Найти что-то готовое у меня почему-то не вышло, но зато в каждой второй статье по данной теме указывается, на каком из открытых корпусов обучались авторы.
- Реализовать сервер, который бы принимал ссылку на видео с того же ютуба, кусками скачивал его аудиодорожку (при помощи этого, например), размечал её и отправлял разметку пользователю. Результаты запросов кешируются, а разметки, относящиеся к разным кускам одного и того же видео склеваются.
- Небольшой плагин для хрома, который бы общался с сервером и скипал раздражающие куски видео, эксплуатируя api ютуба.
Предложил: Миша Чернявский
Фурье - термометр
Когда вы наливаете воду в чашечку, она журчит, причем журчит по-разному, в зависимости от температуры. Интересно, с какой точностью можно измерить температуру воды по звуку ее выливания в какую-нибудь полость.
Реализовать предлагается в виде приложеньки на андроиде.
Предложил: Симиютин Борис