<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A.mukhina</id>
		<title>SEWiki - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://mit.spbau.ru/sewiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=A.mukhina"/>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/A.mukhina"/>
		<updated>2026-04-30T00:42:33Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2017&amp;diff=11108</id>
		<title>Devdays Весна 2017</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2017&amp;diff=11108"/>
				<updated>2017-04-27T22:42:06Z</updated>
		
		<summary type="html">&lt;p&gt;A.mukhina: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Темы проектов =&lt;br /&gt;
&lt;br /&gt;
Чтобы править эту страницу, нужно залогиниться в Sewiki. Тогда сверху будет кнопочка &amp;quot;править&amp;quot;. Если у вас нет учётной записи - напишите Мише Кольцову желаемый логин.&lt;br /&gt;
&lt;br /&gt;
Редактировать wiki одновременно нескольким людям стоит осторожно: после внесения правки проверьте, что она действительно сохранилась.&lt;br /&gt;
&lt;br /&gt;
Проекты нумеруются автоматически. Можно вписывать свои идеи проектов в порядке, отличном от &amp;quot;первый вписал - меньше номер&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Сделаем чит-программу или бота для старой компьютерной игры ==&lt;br /&gt;
&lt;br /&gt;
Для популярных компьютерных игр энтузиасты делают всякие программы: &lt;br /&gt;
  &lt;br /&gt;
-'''ботов''', которые играют за тебя;  &lt;br /&gt;
&lt;br /&gt;
-примочки, которые помогают в игре, типа дополнительных кнопок;&lt;br /&gt;
&lt;br /&gt;
-альтернативные игровые клиенты, которые позволяют игрокам подключаться к альтернативным серверам;&lt;br /&gt;
&lt;br /&gt;
-'''читерские программы''', которые позволяют получать преимущество в игре (стрелять точно во врагов, видеть всю карту, ...);&lt;br /&gt;
&lt;br /&gt;
-crack-и, которые подбирают серийные номера для бесплатной игры.&lt;br /&gt;
&lt;br /&gt;
Все эти программы запускаются отдельно от игры, но каким-то образом влияют на происходящее в игре. Мне интересно понять, как это вообще происходит.&lt;br /&gt;
&lt;br /&gt;
Идея такая: давайте возьмём какую-нибудь '''старую игру'''. Скажем, года до 2003, а то в современных играх античит системы накручивают сильно. Плюс, некоторые старые игры имеют открытый исходный код движка.&lt;br /&gt;
&lt;br /&gt;
И сделаем для этой игры какую-нибудь программу, которая позволяет получить преимущество в игре (например: wallhack\speedhack для counter-strike 1.6, maphack для warcraft 3, бот для diablo 2).&lt;br /&gt;
&lt;br /&gt;
Предложил: Михаил Кольцов&lt;br /&gt;
&lt;br /&gt;
== Анализ данных применительно к игре Dota 2 ==&lt;br /&gt;
&lt;br /&gt;
Недавно на kaggle я наткнулся на датасет с [https://www.kaggle.com/devinanzelmo/dota-2-matches матчами] многопользовательской игры Dota 2. В нём для каждого матча есть информация об игроках, о ходе игры, чат и всякое разное. Можно попробовать поанализировать, какие факторы влияют на успех\неуспех игрока.&lt;br /&gt;
&lt;br /&gt;
Или посмотреть, как соотносятся фразы игрока в чате с его реальной пользой в игре: '''верно ли, что человек, который всех кроет матом, на самом деле играет лучше других?'''&lt;br /&gt;
&lt;br /&gt;
Ожидаемый результат работы: какая-то новая информация про поведение игроков. Год назад меня поразила статья &lt;br /&gt;
[http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.735.7018&amp;amp;rep=rep1&amp;amp;type=pdf Masters of Control: Behavioral Patterns of Simultaneous Unit Group Manipulation in StarCraft 2], которая указывает на факторы, отделяющие хороших игроков от плохих. Я уверен, что тут море возможностей.  &lt;br /&gt;
&lt;br /&gt;
Замечу, что уже есть сайт, собирающий статистику по играм: [https://ru.dotabuff.com/ dotabuff].&lt;br /&gt;
&lt;br /&gt;
Предложил: Михаил Кольцов&lt;br /&gt;
&lt;br /&gt;
== WebAssembly 2027 == &lt;br /&gt;
&lt;br /&gt;
Сейчас разрабатывается стандарт [http://webassembly.org/ WebAssembly], который позволит (как многие надеятся) достичь скорости native-кода (считай, ассемблер) прямо в браузере. Недавно был достигнут консенсус между разработчиками популярных браузеров насчёт того, как будет выглядеть этот стандарт.&lt;br /&gt;
&lt;br /&gt;
Выглядит это многообещающе. Я считаю, что в будущем очень много сервисов, которыми мы пользуемся с помощью desktop-приложений, перейдут в браузер. Браузер станет новой операционной системой для обычных людей.&lt;br /&gt;
&lt;br /&gt;
Давайте подумаем, что можно сделать с помощью этой новой технологии. Посмотрим незашоренным взглядом в будущее, в 2027 год: что нас ждёт?&lt;br /&gt;
&lt;br /&gt;
Ожидаемый результат: '''проект сервиса или сервисов''', которые будут функционировать в 2027 году, и которые станут возможными благодаря скорости WebAssembly.&lt;br /&gt;
&lt;br /&gt;
Предложил: Михаил Кольцов&lt;br /&gt;
&lt;br /&gt;
== GitHub security assessment ==&lt;br /&gt;
&lt;br /&gt;
Есть такой сайт - [https://hackerone.com/ HackerOne]. На нём компании размещают свои страницы, а пользователи могут туда посылать security-related баги в продуктах этих компаний. Компании платят деньги пользователям, которые нашли крутые баги.&lt;br /&gt;
&lt;br /&gt;
Там же есть страница у [https://hackerone.com/github GitHub]. На странице указано, за какие баги можно получить награду. Например, DDoS и social engineering запрещены.&lt;br /&gt;
&lt;br /&gt;
Давайте посидим и за хакатон '''найдём какой-нибудь баг в гитхабе'''. Получим долларов пачку. Почему именно гитхаб? Я думаю, это близкий для каждого разработчика продукт. От его работоспособности зависят многие люди. Например, если будет какая-то уязвимость, позволяющая удалять из чужого репозитория что-нибудь -- это очень серьёзно. Чем серьёзнее проблема, тем больше денег дают.&lt;br /&gt;
&lt;br /&gt;
Хочется подойти к проблеме с программистской стороны. Многие начинающие хакеры используют существующие утилиты для проведения экспериментов (например, для автоматического сканирования сайта). Более продвинутые хакеры пишут скрипты на python. А мы с вами можем написать всё что угодно на том же python! &lt;br /&gt;
&lt;br /&gt;
Ожидаемый результат: найденный баг в github, одобренный представителями компании.&lt;br /&gt;
&lt;br /&gt;
Предложил: Михаил Кольцов&lt;br /&gt;
&lt;br /&gt;
== Derived class debugging == &lt;br /&gt;
Solving [https://en.wikipedia.org/wiki/Yo-yo_problem YoYo problem]. Предлагается взять код из некоторой иерархии наследования, где логика разнесена по разным уровням наследования. Разработать некоторый фреймворк (на крайний случай, пара скриптов на модификацию исходников и пара на то, как как их встроить в популярные IDE) который позволяет видеть весь код на одном экране, без прыгания по уровням иерархии наследования.&lt;br /&gt;
&lt;br /&gt;
Предложил: Кравцун Андрей&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Генерация сложных тестов к олимпиадным задачам == &lt;br /&gt;
Берём из какого-нибудь официального соревнования по программированию какую-нибудь задачу с тестами, чекером и подходами участников. Пытаемся сгенерировать тест, на котором упадёт как можно больше решений. Будет круто, если какое-то AC решение упадёт. Ещё круче, если авторское решение упадёт.&lt;br /&gt;
&lt;br /&gt;
Генерировать генетическими алгоритмами. Нужно будет написать всё для запуска решений участников.&lt;br /&gt;
&lt;br /&gt;
Предложил: Антон Гардер&lt;br /&gt;
&lt;br /&gt;
== Бронирование места на ближайшей платной парковке ==&lt;br /&gt;
Просто много покодить.&lt;br /&gt;
&lt;br /&gt;
Хотим сделать сеть платных парковок. Через веб-интерфейс владелец парковки может добавлять-удалять свои парковки, менять им параметры.&lt;br /&gt;
В мобильном приложении предлагаются ближайшие парковки с свободными местами, можно оплатить и забронировать место.&lt;br /&gt;
&lt;br /&gt;
Java/Python, Android&lt;br /&gt;
&lt;br /&gt;
Предложил: Антон Гардер&lt;br /&gt;
&lt;br /&gt;
== Some considerations about NUMA &amp;amp; HPC ==&lt;br /&gt;
&lt;br /&gt;
Non-uniform memory access (NUMA/ccNUMA) - интересная архитектура, значительно облегчающая масштабирование. Однако, когда дело доходит до высокопроизводительных вычислений, она может стать узким местом.&lt;br /&gt;
&lt;br /&gt;
Хотелось бы иметь библиотеку, позволяющую абстрактно&lt;br /&gt;
* 1. определять положение устройства и памяти&lt;br /&gt;
* 2. производить аллокации и явные трансферы памяти на указанных узлах&lt;br /&gt;
* 3. облегчающие менеджмент потоков (миграции потоков между узлами нарушает локальность памяти)&lt;br /&gt;
* 4. (опционально) довести этот же функционал на уровень устройств в OpenCL&lt;br /&gt;
&lt;br /&gt;
tags: c/c++, PCIe topology, linux api, processor affinity, (+OpenCL)&lt;br /&gt;
&lt;br /&gt;
P.S. необходимо найти сервер с NUMA/эмулятор для тестирования.&lt;br /&gt;
&lt;br /&gt;
Автор: Павел Бегунков&lt;br /&gt;
&lt;br /&gt;
== Yet another OpenCL memory optimizations &amp;amp; architecture features ==&lt;br /&gt;
&lt;br /&gt;
OpenCL для NVidia является прямым конкурентом (e.g. CUDA), поэтому NVidia придерживает различные архитектурные фичи для CUDA.&lt;br /&gt;
Хотялось бы протянуть некоторые возможности видеокарт NVidia для использования в OpenCL. На повестке:&lt;br /&gt;
* 1. некоторые инструкции из их ISA (group operations, butterfly, etc). Необходимо проверить, необходимо ли оно в связи с их новым beta драйвером с OpenCL 2.0.&lt;br /&gt;
* 2. GPUDirect. (https://streamcomputing.eu/blog/2015-04-18/gpudirect-and-directgma-direct-gpu-gpu-communication/)&lt;br /&gt;
&lt;br /&gt;
tags: Cuda, OpenCL, c/c++&lt;br /&gt;
&lt;br /&gt;
P.S. По поводу (1) слышал, что можно внедрить их IL в OpenCL с помошью inline asm. Понятия не имею реализуемо ли (2).&lt;br /&gt;
&lt;br /&gt;
Автор: Павел Бегунков&lt;br /&gt;
&lt;br /&gt;
== compiler improvements ==&lt;br /&gt;
Как-то давно заметил, что мейнстримовые c/c++ компиляторы не умеют оптимизировать записи по out-dependency даже в самых простых случаях. Можно было бы законтрибутить (точнее попробовать) в один из них (i.e. gcc or clang) подобную фичу. Также можно обратить внимание на некоторые оптимизации техник rvo/nrvo.&lt;br /&gt;
&lt;br /&gt;
tags: с/с++, compiler, clang/gcc&lt;br /&gt;
&lt;br /&gt;
Автор: Павел Бегунков&lt;br /&gt;
&lt;br /&gt;
== Фильтрация заполненных пауз в видеозаписях == &lt;br /&gt;
Существует [http://bfy.tw/BTOD множество] статей, посвященных задаче распознавания заполненных (хезитационных?) пауз в речи.&lt;br /&gt;
Хотелось бы найти и приспособить одно из существующих решений для фильтрации видеозаписей, воспроизводимых из браузера.&lt;br /&gt;
&lt;br /&gt;
Что конкретно хочется сделать:&lt;br /&gt;
* Либо найти готовую библиотеку, которая умеет распознавать звуки-паразиты в аудиодорожке, либо самому построить &amp;quot;распознаватель&amp;quot; по материалам из статей. Найти что-то готовое у меня почему-то не вышло, но зато в каждой второй статье по данной теме указывается, на каком из открытых корпусов обучались авторы.&lt;br /&gt;
* Реализовать сервер, который бы принимал ссылку на видео с того же ютуба, кусками скачивал его аудиодорожку (при помощи [https://github.com/rg3/youtube-dl этого], например), размечал её и отправлял разметку пользователю. Результаты запросов кешируются, а разметки, относящиеся к разным кускам одного и того же видео склеваются.&lt;br /&gt;
* Небольшой плагин для хрома, который бы общался с сервером и скипал раздражающие куски видео, эксплуатируя api ютуба.&lt;br /&gt;
&lt;br /&gt;
Предложил: Миша Чернявский&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Фурье - термометр ==&lt;br /&gt;
Когда вы наливаете воду в чашечку, она журчит, причем журчит по-разному, в зависимости от температуры. Интересно, с какой точностью можно измерить температуру воды по звуку ее выливания в какую-нибудь полость. &lt;br /&gt;
&lt;br /&gt;
Реализовать предлагается в виде приложеньки на андроиде.&lt;br /&gt;
&lt;br /&gt;
Предложил: Симиютин Борис&lt;br /&gt;
&lt;br /&gt;
== Game Network Engine ==&lt;br /&gt;
Есть ряд статей на тему реал тайма, физики +  мультиплеер  http://gafferongames.com/. Предлагается на основе этих статей написать собственную библиотеку и провести сравнительный анализ с уже существующими библиотеками.&lt;br /&gt;
&lt;br /&gt;
tags: c/c++, multithreadings, network, os&lt;br /&gt;
&lt;br /&gt;
Предложил: Доронин Олег&lt;br /&gt;
&lt;br /&gt;
== Textbook to TeX ==&lt;br /&gt;
Уверена, что среди нас остались люди, кто по прежнему домашку в тетради может написать быстрее, чем в ТеХе. Но условия часто требуют именно ТеХ формат. Для таких людей, оказавшихся в такой ситуации, подойдёт конвертатор из фотографии решения в исходник теха (чтобы можно было вставить в свой ТеХ файл, что-то подправить и т.д.). Знаю, что я не первопроходец в этой теме, и существует много решений (например https://github.com/falvaro/seshat ), распознающих математический язык -- но хорошего приложения по сути нет. Или можно даже сделать телеграм-бота. Ты ему фото домашки по матлогике - он тебе код в ТеХе!&lt;br /&gt;
&lt;br /&gt;
Предложила: Лапицкая Людмила&lt;br /&gt;
&lt;br /&gt;
== Литературный Питер ==&lt;br /&gt;
Мы живем в городе, который был много раз описан в произведениях великих классиков; проходим мимо зданий, мостов и парков, увековеченных поэтами; гуляем по улицам, по которым гуляли герои произведений Пушкина, Гоголя, Достоевского и прочих. Проблема в том, что среднестатистический обыватель об этом может не знать. Идея такая: написать приложение, которое в зависимости от вашего местоположения будет выдавать на карте метки, связанные с &amp;quot;литературным&amp;quot; прошлом города: может быть эта местность была описана в каком-то произведении, или где-то жил или работал кто-то из классиков, и т. п. Все эти метки хотелось бы уметь автоматически объединять в маршруты (вдохновлена я была маршрутом от Яндекса https://tjournal.ru/37074-yandeks-nanyos-na-kartu-peterburga-mesta-deistviya-romana-prestuplenie-i-nakazanie), а так же учитывать предпочтения пользователя, подкидывать ему &amp;quot;интересные&amp;quot; маршруты. &lt;br /&gt;
Хотелось бы как-то автоматизировать процесс поиска и нанесения на карту маршрутных меток (например поиск в текстах произведения ключевых слов, пример: Летний сад А.Ахматовой), а так же поддерживать ручное редактирование и добавление их (так как не из всех литературных произведений можно автоматически выявить точные географические места).&lt;br /&gt;
&lt;br /&gt;
Java, Android (для мобильного приложения, но можно и десктопную версию, тогда JavaScript)&lt;br /&gt;
&lt;br /&gt;
Предложила: Тищенко Олеся&lt;br /&gt;
&lt;br /&gt;
== Программирование - детям ==&lt;br /&gt;
Все мы знаем, что без программирования - никуда, более того, даже совсем маленькие дети это знают. Пройдет десяток лет, и программировать люди будут учиться примерно тогда же, когда читать(если не раньше). Однако, объяснить детям какие-то сложные парадигмы ЯП - задача довольно трудная (наверное, многие школьные учителя с ней сталкиваются). Предполагается, что дети лучше усваивают информацию в виде игры. Идея: придумать игру для обучения детей программированию.&lt;br /&gt;
&lt;br /&gt;
Вдохновлена я была LegoMindstorms(https://www.lego.com/ru-ru/mindstorms), где написание команд для робота предполагает по сути комбинацию прямоугольников, стрелочек и прочих примитивов и не требует умения программировать вообще. Но, конечно, не каждый учитель сможет притащить на урок лего-робота, да и к основной цели (понимать код) это не приведет. Поэтому это должно быть визуальное приложение - легкая игра, в которой ребенок задает героя, задает ему навыки, и так далее визуально или на командами на естественном языке: а результаты его действий в виде кода на заранее заданном ЯП отображаются в окошке рядом (тут я имела ввиду что-то вроде RoboCode http://robocode.sourceforge.net/ по оформлению, только адаптированного специально для образовательных целей). Для учителя должна быть возможность добавлять к приложению уроки: задания, тесты, и так далее. Начать предлагается с какого-то одного ЯП - на ваш выбор.&lt;br /&gt;
&lt;br /&gt;
Предложила: Тищенко Олеся&lt;br /&gt;
&lt;br /&gt;
== Больше рефакторинга к трону C++ ==&lt;br /&gt;
&lt;br /&gt;
Во время работы над дз по C++ я столкнулась с багами в автоматически сгенерированном QtCreator'ом коде. Например, QtCreator не умеет по-человечески  выносить определение метода за пределы класса (генерируется некорректный код). У Clion, насколько я поняла, в принципе нет такого типа рефакторинга. Предлагается написать плагин, реализующий адекватный рефакторинг для этого и/или каких-нибудь других use case'ов.  &lt;br /&gt;
&lt;br /&gt;
Автор: Аня Явейн&lt;br /&gt;
&lt;br /&gt;
== Автоматическая векторизация кода на Python или R ==&lt;br /&gt;
&lt;br /&gt;
Автоматическая векторизация кода -- оптимизация, применяемая в компиляторах, например, в Clang (http://llvm.org/devmtg/2014-02/slides/golin-AutoVectorizationLLVM.pdf). R и Python обладают большими возможностями, связанными с векторизованными вычислениями. Некоторый код можно бесплатно и безболезненно векторизовать, тем самым улучшив его производительность. Задача состоит в статической обработке кода и поиске мест (циклов), к которым можно было бы применить данную оптимизацию.&lt;br /&gt;
&lt;br /&gt;
Автор: Святослав Грязнов (делегировано Ане Явейн)&lt;br /&gt;
&lt;br /&gt;
== Агрегатор рецептов == &lt;br /&gt;
Часто ли вам приходилось бороздить просторы интернета в поисках рецепта, в котором было бы все, что есть на данный момент у вас в холодильнике? В последнее время не очень часто, конечно :). Но вспомните те времена, когда это было актуально, и как бы было удобно держать под рукой удобное приложение, которое и рецепт бы предложило, и перевело бы все эти страшные граммы (страшные, когда весов под рукой нет) в удобоваримые меры, а еще включало бы в себя таймер, предлагало бы альтернативы тем продуктам, которые указаны в рецепте, и еще очень много полезного.&lt;br /&gt;
&lt;br /&gt;
Предложила: Мухина Анжелика&lt;/div&gt;</summary>
		<author><name>A.mukhina</name></author>	</entry>

	</feed>