<?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=Gumerov</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=Gumerov"/>
		<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/Gumerov"/>
		<updated>2026-04-10T14:44:07Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13406</id>
		<title>Devdays Осень 2017</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13406"/>
				<updated>2017-10-27T02:26:22Z</updated>
		
		<summary type="html">&lt;p&gt;Gumerov: /* Создание ликбеза по языкам программирования */&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;
&lt;br /&gt;
== Depth map from single view ==&lt;br /&gt;
&lt;br /&gt;
Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта.&lt;br /&gt;
Другими словами, если имеется некотороые изображение, то матрица глубины говорит о том, какого расстояние до каждого нарисованного объекта.&lt;br /&gt;
&lt;br /&gt;
Хочется строить матрицу глубины с '''одного''' изображения, без использования бинокулярного зрения или радаров.&lt;br /&gt;
&lt;br /&gt;
Предложил: Никулин Данил&lt;br /&gt;
&lt;br /&gt;
== Доработать децентрализованный мессенджер RetroShare ==&lt;br /&gt;
&lt;br /&gt;
Децентрализованные мессенджеры представляют интерес тем (для любителей паранои :)), что не используют при своей работе подконтрольные третьим лицам центральные серверы. Для &amp;quot;регистрации&amp;quot; в сети пользователь создаёт пару открытый/закрытый ключ и передаёт открытый ключ тем, с кем хочет общаться. Находить IP собеседника достаточно эффективно можно с помощью [https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0 DHT].&lt;br /&gt;
&lt;br /&gt;
Мессенджеров, которые работаю по такому принципу, оказывается, не так и много -- я видел только [https://github.com/RetroShare RetroShare] и [https://tox.chat/ Tox] . Я Пробовал пользоваться RetroShare: там всё хорошо, но есть некоторые недоработки, например нет индикатора, дошло ли сообщение до собеседника, удобного диалога сохранения файла и т.д.&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;
Как я это вижу: где-то в облаке крутится сервер. Пользователь может поставить расширение для браузера, которое добавляет ко всем постам с музыкой кнопку &amp;quot;загрузить в облако&amp;quot;. Дальше пользователь с мобильного приложения коннектится к этому облаку, где хранятся все сохраненные посты, которые можно сортировать по исполнителям и жанрам, которые вытаскиваются из тегов внутри поста. Каждую песню или пост можно либо слушать с подключением к интернету, либо скачать, чтобы слушать в оффлайне (как в старом приложении контакта, только с удобной каталогизацией).&lt;br /&gt;
&lt;br /&gt;
Технологии: Java/Kotlin (для облака и мобильного приложения), js для расширения (кажется, что оно будет маленьким, так что js по минимуму)&lt;br /&gt;
&lt;br /&gt;
Предложил: Новожилов Дмитрий&lt;br /&gt;
&lt;br /&gt;
== Квантовый форсаж ==&lt;br /&gt;
&lt;br /&gt;
Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка.&lt;br /&gt;
&lt;br /&gt;
Идея: написать простенькую 2D игру, где будет использоваться понятие неопределенности Гейзенберга. &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;
== Vassal online ==&lt;br /&gt;
Давайте напишем легковесный движок в вебе для разработки настольных игр. &lt;br /&gt;
Предложил: Кузиванов Николай&lt;br /&gt;
&lt;br /&gt;
== DroidTuner ==&lt;br /&gt;
Есть программы, которые позволяют тонко настраивать телефон, например - при считывании NFC-метки менять аудиопрофиль, запускать приложения, отправлять сообщения, заказывать ужин в ресторане и так далее. Проблема в том, что они либо хорошие, красивые, и даже предлагают свой язык для описания сценариев использования, но платные, либо имеют мало возможностей и не особо развиваются/мертвы. &lt;br /&gt;
Давайте напишем бесплатную_без_смс_оупенсоурс версию такого приложения, и, конечно, не хуже, чем у алчных конкурентов. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== AnonyMesh ==&lt;br /&gt;
Предлагается реализовать аналог двача, но без использования сети интернет - то есть по Bluetooth или Wifi-Direct. Вы создаете чат, к которому подключаются другие устройства поблизости и вместе обсуждаете насущные проблемы без возможности идентифицировать себя. Пример использования - анонимное голосование при принятии какого-либо решения в группе людей в дали от интернет-инфраструктуры. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== Добрый CryptoLocker ==&lt;br /&gt;
Петя боится вирусов-вымогателей (ransomware). Но Петя при этом очень неосторожный человек и любит открывать письма с вложениями от неизвестных отправителей, поэтому уже выплатил злоумышленникам 10 биткойнов, чтобы расшифровать свои файлы. &lt;br /&gt;
А ещё Петя - параноик. Он хочет зашифровать свои файлы, чтобы хакеры не смогли узнать его секреты, но при этом он сам смог в нужный момент их расшифровать. Помогите Пете написать программу - аналог CryptoLocker-а, но только добрый, для динамического шифрования собственных документов.&lt;br /&gt;
&lt;br /&gt;
Для справки:&lt;br /&gt;
CryptoLocker - это простейший вирус-вымогатель, который шифрует файлы с определёнными расширением (обычно офисные и pdf-ки) с помощью криптосистемы с открытым ключом. Закрытый ключ хранится на сервере злоумышленника.&lt;br /&gt;
После попадания в систему вирус связывается с сервером, и с помощью полученного от него открытого ключа шифрует файлы нужного расширения. Затем выводится окно со счастливой новостью о заражении и ссылкой на сайт, где после оплаты можно расшифровать свои файлы. &lt;br /&gt;
&lt;br /&gt;
Задачи:&lt;br /&gt;
1) Собственно сам шифровальщик (лучше минимально защититься от простейшего реверс-инжиниринга, например, генерить имя домена командного сервера, а не хранить его в строке)&lt;br /&gt;
2) Командный сервер с бд + сервер с сервисом расшифровки.&lt;br /&gt;
3) Также нужно, чтобы шифровальщик делал некоторые действия с OS (автозапуск + сбор информации), но это в идеале&lt;br /&gt;
&lt;br /&gt;
Технологии:  Более актуально для Windows. Но под Linux тоже можно будет попробовать. Язык - я за Python).&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;
https://en.wikipedia.org/wiki/Burn_down_chart&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;
Есть много библиотек, которые позволяют использовать на веб-страницах шаблоны, которые затем заполняются через JavaScript. К примеру, текст &amp;quot;&amp;lt;nowiki&amp;gt;{{user.isLoggedIn}}&amp;lt;/nowiki&amp;gt;&amp;quot;, размещённый где угодно на веб-странице, может превратиться в сложное дерево DOM-объектов, которое будет обновляться каждый раз, когда будет меняться значение переменной user.isLoggedIn. Известные примеры таких библиотек -- React и Vue.js.&lt;br /&gt;
&lt;br /&gt;
Этот же подход можно применять и к тому, чтобы расширять набор средств отображения сведений на веб-странице. Простой пример, который и предлагается в качестве работы, -- это описание в тексте веб-страницы графа, вершинами которого могут быть произвольные DOM-объекты. В текстовых браузерах должно быть видно текстовое представление графа, в графических -- интерактивный граф.&lt;br /&gt;
&lt;br /&gt;
Уже есть некоторые разработки по генерации графов из текстовых описаний -- к примеру, http://ushiroad.com/jsviz/ -- но нигде не было обнаружено такое, чтобы можно было представлять граф в виде обычного текста и при этом иметь в качестве вершин произвольные объекты DOM.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== Плагин к Coq на kakoune / kakoune-mode к Emacs ==&lt;br /&gt;
&lt;br /&gt;
Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется.&lt;br /&gt;
&lt;br /&gt;
kakoune -- современный текстовый редактор, убийца vim, последователь vi, который создавался с целью исправить ставшие за многие годы очевидными ошибки остальных модальных текстовых редакторов. Я пересел на kakoune после трёх лет очень активного использования vim и не пожалел.&lt;br /&gt;
http://kakoune.org/&lt;br /&gt;
&lt;br /&gt;
Coq -- самый популярный язык с зависимыми типами, который предназначен для доказательства математических утверждений с помощью компьютера, который запрещает пользователю доказать что-то, в чём компьютер не может быть уверен полностью.&lt;br /&gt;
&lt;br /&gt;
При этом на Coq удобнее всего работать в emacs. Который после kakoune не кажется удобным вообще никак.&lt;br /&gt;
&lt;br /&gt;
Возникает две возможные задачи. Первая -- написать для kakoune плагин, добавляющий поддержку Coq. Вторая -- написать для emacs плагин, который позволяет писать в нём так же, как в kakoune. Первая задача заключается в написании всеми любимых shell-скриптов (потому что kakoune управляется ими), вторая -- в написании кода на Emacs Lisp, который, пусть и в силу Emacs неудачный, всё же Lisp.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== CRM-система для преподавателей и студентов ==&lt;br /&gt;
&lt;br /&gt;
Цель проекта - объединить в единую экосистему аспекты взаимодействия участников образовательного процесса: электронный журнал, размещение домашних заданий, контролер дедлайнов и прочий функционал.&lt;br /&gt;
&lt;br /&gt;
Доступ к системе с помощью веб-интерфейса (и мобильного приложения?). &lt;br /&gt;
&lt;br /&gt;
Предполагаемый стэк технологий: фронтенд Angular2, бекенд NodeJS + Sequelize+ PostgreSQL (или полуфабрикат типа Firebase)&lt;br /&gt;
&lt;br /&gt;
Предложил Чернышев Ярослав.&lt;br /&gt;
&lt;br /&gt;
== Синхронизация звукового потока ==&lt;br /&gt;
&lt;br /&gt;
Часто возникает такая ситуация, когда вы хотите послушать музыку или посмотреть лекцию со Stepik’а со своими товарищами с одного телефона. Однако при этом не хотите мешать другим людям вокруг своим звуком или сидеть только с одним наушником. Поэтому я предлагаю разработать приложение для Android, которое будет синхронизировать звуковые потоки на нескольких устройствах.&lt;br /&gt;
&lt;br /&gt;
По идее, всё должно работать так: одно из приложений будет некоторым сервером. Остальные, как клиенты, будут к нему подключаться (например по Bluetooth). После этого сервер будет передавать звуковой поток устройствам клиентов, каждый из которых сможет отдельно воспроизводить его. &lt;br /&gt;
&lt;br /&gt;
Предложила Орищенко Александра.&lt;br /&gt;
&lt;br /&gt;
== Конспект по алгоритмам ==&lt;br /&gt;
&lt;br /&gt;
На данный момент мы с Димой Новожиловым пишем конспекты по алгоритмам в формате markdown документов (с вставкой latex формул) и это не очень:&lt;br /&gt;
&lt;br /&gt;
* Нет синхронизации — каждый ведёт конспект у себя на своей машине&lt;br /&gt;
* Трудно читать сырой markdown, а сгенерированные PDF'ки слишком широкие&lt;br /&gt;
* Дима забивает на пары по алгоритмам, а мне лень вести конспект&lt;br /&gt;
&lt;br /&gt;
Хочется сделать так, чтобы мы (и другие люди) вели работу через git, а при выполнении &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; автоматически из markdown документов генерировался сайт с мобильной версией и хостился где-то в интернете.&lt;br /&gt;
&lt;br /&gt;
# [https://pandoc.org/ Pandoc] умеет конвертировать файлы (нужно научиться его настраивать)&lt;br /&gt;
# Git может запустить какой-нибудь скрипт, когда вы выполняете комманду &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; (здесь генерируется структура сайта)&lt;br /&gt;
# Можно настроить github так, что когда в репозиторий делают push, происходит какая-нибудь полезная работа (здесь сайт выкладывается в публичный доступ)&lt;br /&gt;
&lt;br /&gt;
Таким образом нам надо будет разобраться с Pandoc, Git hooks, Travis CI, HTML, CSS. Это всё довольно легко, за три дня можно управиться. Основная цель — поработать в команде, распараллелить задачи, получить рабочий проект.&lt;br /&gt;
&lt;br /&gt;
Предложил Стребежев Игорь.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Горячий&amp;quot; поиск билетов ==&lt;br /&gt;
&lt;br /&gt;
Всем иногда приходится покупать авиабилеты. Причем иногда приходится покупать их за один-два дня до предполагаемой даты вылета. Очевидно, что билетов в такой ситуации может и не быть (или они будут по не очень приемлемой цене). В такой ситуации среднестатистическому пользователю ПК приходится судорожно следить за любыми изменениями в списке доступных билетов на ближайший день т.к. существует ненулевая вероятность того, что появится билет &amp;quot;вашей мечты&amp;quot; (например, кто-нибудь сдаст билет и т.д.).&lt;br /&gt;
&lt;br /&gt;
В связи с чем предлагается написать программу/бота который в фоновом режиме следил бы за доступными билетами и в случае появления подходящего билета информировал об этом на телефон/e-mail или выводил большущее сообщение прямо на рабочий стол.&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;
Данных очень много поэтому обрабатывать их хочется автоматически. При этом хочется вначале разделить все множество сигналов на группы количество которых совпадает с количеством предполагаемых источников.&lt;br /&gt;
&lt;br /&gt;
В связи с этим предлагается написать программу которая:&lt;br /&gt;
- умела бы обрабатывать множество входных данных (осциллограмм) и выделять из них полезные сигналы&lt;br /&gt;
- Кластеризировала бы полученные сигналы на заданное количество множеств (например, методом k-средних или каким-либо другим методом кластеризации)&lt;br /&gt;
- Либо сепарировала бы данные используя различные методы кластеризации, а потом выдавала вердикт по предполагаемому количеству источников&lt;br /&gt;
&lt;br /&gt;
Для таких целей скорее подойдет python, но предполагается написать это на с++. Хотя можно на чем угодно, что подходит.&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;
Хотелось бы написать игру так, чтобы в неё можно было играть в телеграме, но я не уверен, можно ли будет в этом случае поддержать многопользовательский режим. Если что, можно придумать что-то хорошее и для игры соло. Ну или на крайний случай можно написать эту игру под андроид.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Codeforces bot ==&lt;br /&gt;
&lt;br /&gt;
Светозар ''учится'' в АУ и усердно ''изучает'' алгоритмы. Он верит, что рано или поздно станет важной персоной в мире спортивного программирования, и сейчас его цель — продвинуться в топ на платформе Codeforces, на которой он зависает часами. Но есть одна проблема — Светозар очень много времени проводит в телеграме, так как постоянно либо общается на тему алгоритмов, либо спрашивает совет насчет операционных систем и питона, либо оценивает новые стикеры. Если на пк еще можно как-то быстро переключаться между приложениями, на телефоне это делать сложнее, поэтому ему было бы удобно, чтобы какие-то вещи, касаемые Codeforces, можно было делать прямо в телеграме. За те десять минут, которые Светозар смог выделить на поиск имеющихся решений, он не нашел ничего подходящего (все имеющиеся боты неактивны), и он пришел к выводу, что нужно написать бот самому.&lt;br /&gt;
&lt;br /&gt;
Так как все мы немного Светозар (по крайней мере ''сейчас''), возможно, эта идея покажется интересной.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Java(assembly? postgresql?) jupyter kernel ==&lt;br /&gt;
Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Плагин для документации ==&lt;br /&gt;
Idea позволяет глянуть inline документацию для некоторых языков и этого зачастую достаточно для того, чтобы понять что делает метод. Но как быть с языками, для которых этой фичи нет?&lt;br /&gt;
Приходится лезть в документацию. Чтобы не открывать сайт с документацией, есть [ https://zealdocs.org zealdox] и [https://kapeli.com/dash dash], последним я пользуюсь сам. Но человек я очень ленивый и хотелось бы выгружать документацию прямо в IDE в один клик.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Расшаривание ссылок на private репозитории ==&lt;br /&gt;
У всех есть приватные репозитории на GitHub/Bitbucket/GitLab и иногда их все-таки нужно показывать. Самый частый сценарий: вы устраиваетесь на работу, хочется показать какой-то pet-project, но добавлять каждого интервьюера в collaborators несколько накладно. Проще, наверное, было бы отправить ссылку, по которой только он может посмотреть ваш репозиторий.&lt;br /&gt;
&lt;br /&gt;
Функционал такой, увы, не реализован, но можно попробовать сделать его самим.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Just do eat ==&lt;br /&gt;
&lt;br /&gt;
Если ты очень крутой (или наоборот) программист, то тебе некогда думать о своем рационе питания и о том, что ты ешь, насколько это полезно, сколько там витаминов и т.д. Но ТЫЖПРОГРАММИСТ, поэтому можно написать приложение, которое будет делать это за тебя.&lt;br /&gt;
&lt;br /&gt;
Примерное описание: приложение должно быть в курсе, что из продуктов у тебя есть и что ты ешь. При запросе будет выдавать список блюд/продуктов из имеющихся, которые желательно съесть на данный момент, чтобы твое питание было наиболее сбалансированным. Если это блюдо - то можно сразу получить рецепт/ссылку на рецепт. Можно также создать режим для похудения/набора веса.&lt;br /&gt;
&lt;br /&gt;
Возможно, это немного уменьшит наши страдания.&lt;br /&gt;
&lt;br /&gt;
Можно реализовать как приложение на Android, можно как приложение на ПК.&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;
Идея - создать трекер привычек, который позволит довести повседневную жизнь во время учебы до автоматизма - полное расписание каждого дня, которое включает не только пары и время на дз, но и время подъема, отбоя, выделенное время похода в магазин, напоминалка о стирке вещей и другие повседневности. Вместо отсыпания на выходных - подъем каждый день в одно и то же время и так далее. Не важно, не можешь ли ты уснуть в 3 утра из-за мыслей о надвигающихся дедлайнах или просто приуныл - приложение говорит, что сейчас нужно делать. Расчет идет на то, что организм привыкнет и придется меньше заботиться о повседневностях.&lt;br /&gt;
&lt;br /&gt;
Аналогов море, но я не смог найти приложение, которое бы заставляло делать что-то каждую минуту.&lt;br /&gt;
Нет смысла делать убер швейцарский перочинный нож для спортсменов / программистов / студентов / преподавателей. Но и хардкодить расписание пар в код никто не собирается.&lt;br /&gt;
&lt;br /&gt;
Приложение должно иметь минимальный необходимый функционал с возможностью подцепить полезные фичи, опять же не нагромождая велосипедов в сам код (например, я не хочу ботать алгоритмы конкретный день 4 часа подряд, а хочу разбить это домашнее задание на 6 часов с перерывами каждые полчаса - ок, цепляю модуль и ставлю галку &amp;quot;делать в режиме помидор&amp;quot;; python же наоборот - можно делать не отрываясь часа 2-3 - собственно некоторое дефолтное поведение). Также большой проблемой подобных приложений является предварительная настройка (я настраивал trello весь день, совмещая с другими делами). Для студентов можно сделать внешний модуль (или просто какой-нибудь JSON) со всем необходимым (расписание, мягкие/жесткие дедлайны, дополнительные активности, не вписывающиеся в еженедельный ритм, например devdays), чтобы в течении получаса можно было полностью откалибровать приложение под себя.&lt;br /&gt;
&lt;br /&gt;
Технологии: вырисовывается мобильное приложение, чтобы всегда имелось под рукой, начальная идея с telegram ботом уже не кажется такой привлекательной.&lt;br /&gt;
&lt;br /&gt;
Предложил: Тагир Гумеров&lt;br /&gt;
&lt;br /&gt;
== Создание ликбеза по языкам программирования ==&lt;br /&gt;
&lt;br /&gt;
Проблема: по большинству языков сложно вести конспект, иногда из-за интенсивного повествования, иногда из-за веры в рассылку pdf преподавателями после пар. &lt;br /&gt;
Происходит что-то в духе &amp;quot;у нас было 10 ipynb документов, 5 исходников на haskell, около сотни header и source файлов и целая россыпь pdf с семинаров, лекций и дз&amp;quot;.&lt;br /&gt;
Несколько рабочих столов или вкладок решают, но глобальный поиск все равно не запустишь.&lt;br /&gt;
&lt;br /&gt;
Задача: создать справочник по яп, которые мы проходим. Не документация, но и не stackoverflow. В точности то, что нам преподается.&lt;br /&gt;
Можно автоматизировать парсинг pdf файлов и так далее.&lt;br /&gt;
&lt;br /&gt;
Реализация - все, что кажется в повседневном использовании удобнее, чем 3-4 файла pdf и парочка открытых папок с исходниками. Скорее всего десктоп, может веб.&lt;br /&gt;
&lt;br /&gt;
Предложили: Тагир Гумеров, Наталья Мурычева&lt;/div&gt;</summary>
		<author><name>Gumerov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13405</id>
		<title>Devdays Осень 2017</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13405"/>
				<updated>2017-10-27T01:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gumerov: /* Темы проектов */&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;
&lt;br /&gt;
== Depth map from single view ==&lt;br /&gt;
&lt;br /&gt;
Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта.&lt;br /&gt;
Другими словами, если имеется некотороые изображение, то матрица глубины говорит о том, какого расстояние до каждого нарисованного объекта.&lt;br /&gt;
&lt;br /&gt;
Хочется строить матрицу глубины с '''одного''' изображения, без использования бинокулярного зрения или радаров.&lt;br /&gt;
&lt;br /&gt;
Предложил: Никулин Данил&lt;br /&gt;
&lt;br /&gt;
== Доработать децентрализованный мессенджер RetroShare ==&lt;br /&gt;
&lt;br /&gt;
Децентрализованные мессенджеры представляют интерес тем (для любителей паранои :)), что не используют при своей работе подконтрольные третьим лицам центральные серверы. Для &amp;quot;регистрации&amp;quot; в сети пользователь создаёт пару открытый/закрытый ключ и передаёт открытый ключ тем, с кем хочет общаться. Находить IP собеседника достаточно эффективно можно с помощью [https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0 DHT].&lt;br /&gt;
&lt;br /&gt;
Мессенджеров, которые работаю по такому принципу, оказывается, не так и много -- я видел только [https://github.com/RetroShare RetroShare] и [https://tox.chat/ Tox] . Я Пробовал пользоваться RetroShare: там всё хорошо, но есть некоторые недоработки, например нет индикатора, дошло ли сообщение до собеседника, удобного диалога сохранения файла и т.д.&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;
Как я это вижу: где-то в облаке крутится сервер. Пользователь может поставить расширение для браузера, которое добавляет ко всем постам с музыкой кнопку &amp;quot;загрузить в облако&amp;quot;. Дальше пользователь с мобильного приложения коннектится к этому облаку, где хранятся все сохраненные посты, которые можно сортировать по исполнителям и жанрам, которые вытаскиваются из тегов внутри поста. Каждую песню или пост можно либо слушать с подключением к интернету, либо скачать, чтобы слушать в оффлайне (как в старом приложении контакта, только с удобной каталогизацией).&lt;br /&gt;
&lt;br /&gt;
Технологии: Java/Kotlin (для облака и мобильного приложения), js для расширения (кажется, что оно будет маленьким, так что js по минимуму)&lt;br /&gt;
&lt;br /&gt;
Предложил: Новожилов Дмитрий&lt;br /&gt;
&lt;br /&gt;
== Квантовый форсаж ==&lt;br /&gt;
&lt;br /&gt;
Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка.&lt;br /&gt;
&lt;br /&gt;
Идея: написать простенькую 2D игру, где будет использоваться понятие неопределенности Гейзенберга. &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;
== Vassal online ==&lt;br /&gt;
Давайте напишем легковесный движок в вебе для разработки настольных игр. &lt;br /&gt;
Предложил: Кузиванов Николай&lt;br /&gt;
&lt;br /&gt;
== DroidTuner ==&lt;br /&gt;
Есть программы, которые позволяют тонко настраивать телефон, например - при считывании NFC-метки менять аудиопрофиль, запускать приложения, отправлять сообщения, заказывать ужин в ресторане и так далее. Проблема в том, что они либо хорошие, красивые, и даже предлагают свой язык для описания сценариев использования, но платные, либо имеют мало возможностей и не особо развиваются/мертвы. &lt;br /&gt;
Давайте напишем бесплатную_без_смс_оупенсоурс версию такого приложения, и, конечно, не хуже, чем у алчных конкурентов. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== AnonyMesh ==&lt;br /&gt;
Предлагается реализовать аналог двача, но без использования сети интернет - то есть по Bluetooth или Wifi-Direct. Вы создаете чат, к которому подключаются другие устройства поблизости и вместе обсуждаете насущные проблемы без возможности идентифицировать себя. Пример использования - анонимное голосование при принятии какого-либо решения в группе людей в дали от интернет-инфраструктуры. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== Добрый CryptoLocker ==&lt;br /&gt;
Петя боится вирусов-вымогателей (ransomware). Но Петя при этом очень неосторожный человек и любит открывать письма с вложениями от неизвестных отправителей, поэтому уже выплатил злоумышленникам 10 биткойнов, чтобы расшифровать свои файлы. &lt;br /&gt;
А ещё Петя - параноик. Он хочет зашифровать свои файлы, чтобы хакеры не смогли узнать его секреты, но при этом он сам смог в нужный момент их расшифровать. Помогите Пете написать программу - аналог CryptoLocker-а, но только добрый, для динамического шифрования собственных документов.&lt;br /&gt;
&lt;br /&gt;
Для справки:&lt;br /&gt;
CryptoLocker - это простейший вирус-вымогатель, который шифрует файлы с определёнными расширением (обычно офисные и pdf-ки) с помощью криптосистемы с открытым ключом. Закрытый ключ хранится на сервере злоумышленника.&lt;br /&gt;
После попадания в систему вирус связывается с сервером, и с помощью полученного от него открытого ключа шифрует файлы нужного расширения. Затем выводится окно со счастливой новостью о заражении и ссылкой на сайт, где после оплаты можно расшифровать свои файлы. &lt;br /&gt;
&lt;br /&gt;
Задачи:&lt;br /&gt;
1) Собственно сам шифровальщик (лучше минимально защититься от простейшего реверс-инжиниринга, например, генерить имя домена командного сервера, а не хранить его в строке)&lt;br /&gt;
2) Командный сервер с бд + сервер с сервисом расшифровки.&lt;br /&gt;
3) Также нужно, чтобы шифровальщик делал некоторые действия с OS (автозапуск + сбор информации), но это в идеале&lt;br /&gt;
&lt;br /&gt;
Технологии:  Более актуально для Windows. Но под Linux тоже можно будет попробовать. Язык - я за Python).&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;
https://en.wikipedia.org/wiki/Burn_down_chart&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;
Есть много библиотек, которые позволяют использовать на веб-страницах шаблоны, которые затем заполняются через JavaScript. К примеру, текст &amp;quot;&amp;lt;nowiki&amp;gt;{{user.isLoggedIn}}&amp;lt;/nowiki&amp;gt;&amp;quot;, размещённый где угодно на веб-странице, может превратиться в сложное дерево DOM-объектов, которое будет обновляться каждый раз, когда будет меняться значение переменной user.isLoggedIn. Известные примеры таких библиотек -- React и Vue.js.&lt;br /&gt;
&lt;br /&gt;
Этот же подход можно применять и к тому, чтобы расширять набор средств отображения сведений на веб-странице. Простой пример, который и предлагается в качестве работы, -- это описание в тексте веб-страницы графа, вершинами которого могут быть произвольные DOM-объекты. В текстовых браузерах должно быть видно текстовое представление графа, в графических -- интерактивный граф.&lt;br /&gt;
&lt;br /&gt;
Уже есть некоторые разработки по генерации графов из текстовых описаний -- к примеру, http://ushiroad.com/jsviz/ -- но нигде не было обнаружено такое, чтобы можно было представлять граф в виде обычного текста и при этом иметь в качестве вершин произвольные объекты DOM.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== Плагин к Coq на kakoune / kakoune-mode к Emacs ==&lt;br /&gt;
&lt;br /&gt;
Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется.&lt;br /&gt;
&lt;br /&gt;
kakoune -- современный текстовый редактор, убийца vim, последователь vi, который создавался с целью исправить ставшие за многие годы очевидными ошибки остальных модальных текстовых редакторов. Я пересел на kakoune после трёх лет очень активного использования vim и не пожалел.&lt;br /&gt;
http://kakoune.org/&lt;br /&gt;
&lt;br /&gt;
Coq -- самый популярный язык с зависимыми типами, который предназначен для доказательства математических утверждений с помощью компьютера, который запрещает пользователю доказать что-то, в чём компьютер не может быть уверен полностью.&lt;br /&gt;
&lt;br /&gt;
При этом на Coq удобнее всего работать в emacs. Который после kakoune не кажется удобным вообще никак.&lt;br /&gt;
&lt;br /&gt;
Возникает две возможные задачи. Первая -- написать для kakoune плагин, добавляющий поддержку Coq. Вторая -- написать для emacs плагин, который позволяет писать в нём так же, как в kakoune. Первая задача заключается в написании всеми любимых shell-скриптов (потому что kakoune управляется ими), вторая -- в написании кода на Emacs Lisp, который, пусть и в силу Emacs неудачный, всё же Lisp.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== CRM-система для преподавателей и студентов ==&lt;br /&gt;
&lt;br /&gt;
Цель проекта - объединить в единую экосистему аспекты взаимодействия участников образовательного процесса: электронный журнал, размещение домашних заданий, контролер дедлайнов и прочий функционал.&lt;br /&gt;
&lt;br /&gt;
Доступ к системе с помощью веб-интерфейса (и мобильного приложения?). &lt;br /&gt;
&lt;br /&gt;
Предполагаемый стэк технологий: фронтенд Angular2, бекенд NodeJS + Sequelize+ PostgreSQL (или полуфабрикат типа Firebase)&lt;br /&gt;
&lt;br /&gt;
Предложил Чернышев Ярослав.&lt;br /&gt;
&lt;br /&gt;
== Синхронизация звукового потока ==&lt;br /&gt;
&lt;br /&gt;
Часто возникает такая ситуация, когда вы хотите послушать музыку или посмотреть лекцию со Stepik’а со своими товарищами с одного телефона. Однако при этом не хотите мешать другим людям вокруг своим звуком или сидеть только с одним наушником. Поэтому я предлагаю разработать приложение для Android, которое будет синхронизировать звуковые потоки на нескольких устройствах.&lt;br /&gt;
&lt;br /&gt;
По идее, всё должно работать так: одно из приложений будет некоторым сервером. Остальные, как клиенты, будут к нему подключаться (например по Bluetooth). После этого сервер будет передавать звуковой поток устройствам клиентов, каждый из которых сможет отдельно воспроизводить его. &lt;br /&gt;
&lt;br /&gt;
Предложила Орищенко Александра.&lt;br /&gt;
&lt;br /&gt;
== Конспект по алгоритмам ==&lt;br /&gt;
&lt;br /&gt;
На данный момент мы с Димой Новожиловым пишем конспекты по алгоритмам в формате markdown документов (с вставкой latex формул) и это не очень:&lt;br /&gt;
&lt;br /&gt;
* Нет синхронизации — каждый ведёт конспект у себя на своей машине&lt;br /&gt;
* Трудно читать сырой markdown, а сгенерированные PDF'ки слишком широкие&lt;br /&gt;
* Дима забивает на пары по алгоритмам, а мне лень вести конспект&lt;br /&gt;
&lt;br /&gt;
Хочется сделать так, чтобы мы (и другие люди) вели работу через git, а при выполнении &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; автоматически из markdown документов генерировался сайт с мобильной версией и хостился где-то в интернете.&lt;br /&gt;
&lt;br /&gt;
# [https://pandoc.org/ Pandoc] умеет конвертировать файлы (нужно научиться его настраивать)&lt;br /&gt;
# Git может запустить какой-нибудь скрипт, когда вы выполняете комманду &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; (здесь генерируется структура сайта)&lt;br /&gt;
# Можно настроить github так, что когда в репозиторий делают push, происходит какая-нибудь полезная работа (здесь сайт выкладывается в публичный доступ)&lt;br /&gt;
&lt;br /&gt;
Таким образом нам надо будет разобраться с Pandoc, Git hooks, Travis CI, HTML, CSS. Это всё довольно легко, за три дня можно управиться. Основная цель — поработать в команде, распараллелить задачи, получить рабочий проект.&lt;br /&gt;
&lt;br /&gt;
Предложил Стребежев Игорь.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Горячий&amp;quot; поиск билетов ==&lt;br /&gt;
&lt;br /&gt;
Всем иногда приходится покупать авиабилеты. Причем иногда приходится покупать их за один-два дня до предполагаемой даты вылета. Очевидно, что билетов в такой ситуации может и не быть (или они будут по не очень приемлемой цене). В такой ситуации среднестатистическому пользователю ПК приходится судорожно следить за любыми изменениями в списке доступных билетов на ближайший день т.к. существует ненулевая вероятность того, что появится билет &amp;quot;вашей мечты&amp;quot; (например, кто-нибудь сдаст билет и т.д.).&lt;br /&gt;
&lt;br /&gt;
В связи с чем предлагается написать программу/бота который в фоновом режиме следил бы за доступными билетами и в случае появления подходящего билета информировал об этом на телефон/e-mail или выводил большущее сообщение прямо на рабочий стол.&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;
Данных очень много поэтому обрабатывать их хочется автоматически. При этом хочется вначале разделить все множество сигналов на группы количество которых совпадает с количеством предполагаемых источников.&lt;br /&gt;
&lt;br /&gt;
В связи с этим предлагается написать программу которая:&lt;br /&gt;
- умела бы обрабатывать множество входных данных (осциллограмм) и выделять из них полезные сигналы&lt;br /&gt;
- Кластеризировала бы полученные сигналы на заданное количество множеств (например, методом k-средних или каким-либо другим методом кластеризации)&lt;br /&gt;
- Либо сепарировала бы данные используя различные методы кластеризации, а потом выдавала вердикт по предполагаемому количеству источников&lt;br /&gt;
&lt;br /&gt;
Для таких целей скорее подойдет python, но предполагается написать это на с++. Хотя можно на чем угодно, что подходит.&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;
Хотелось бы написать игру так, чтобы в неё можно было играть в телеграме, но я не уверен, можно ли будет в этом случае поддержать многопользовательский режим. Если что, можно придумать что-то хорошее и для игры соло. Ну или на крайний случай можно написать эту игру под андроид.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Codeforces bot ==&lt;br /&gt;
&lt;br /&gt;
Светозар ''учится'' в АУ и усердно ''изучает'' алгоритмы. Он верит, что рано или поздно станет важной персоной в мире спортивного программирования, и сейчас его цель — продвинуться в топ на платформе Codeforces, на которой он зависает часами. Но есть одна проблема — Светозар очень много времени проводит в телеграме, так как постоянно либо общается на тему алгоритмов, либо спрашивает совет насчет операционных систем и питона, либо оценивает новые стикеры. Если на пк еще можно как-то быстро переключаться между приложениями, на телефоне это делать сложнее, поэтому ему было бы удобно, чтобы какие-то вещи, касаемые Codeforces, можно было делать прямо в телеграме. За те десять минут, которые Светозар смог выделить на поиск имеющихся решений, он не нашел ничего подходящего (все имеющиеся боты неактивны), и он пришел к выводу, что нужно написать бот самому.&lt;br /&gt;
&lt;br /&gt;
Так как все мы немного Светозар (по крайней мере ''сейчас''), возможно, эта идея покажется интересной.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Java(assembly? postgresql?) jupyter kernel ==&lt;br /&gt;
Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Плагин для документации ==&lt;br /&gt;
Idea позволяет глянуть inline документацию для некоторых языков и этого зачастую достаточно для того, чтобы понять что делает метод. Но как быть с языками, для которых этой фичи нет?&lt;br /&gt;
Приходится лезть в документацию. Чтобы не открывать сайт с документацией, есть [ https://zealdocs.org zealdox] и [https://kapeli.com/dash dash], последним я пользуюсь сам. Но человек я очень ленивый и хотелось бы выгружать документацию прямо в IDE в один клик.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Расшаривание ссылок на private репозитории ==&lt;br /&gt;
У всех есть приватные репозитории на GitHub/Bitbucket/GitLab и иногда их все-таки нужно показывать. Самый частый сценарий: вы устраиваетесь на работу, хочется показать какой-то pet-project, но добавлять каждого интервьюера в collaborators несколько накладно. Проще, наверное, было бы отправить ссылку, по которой только он может посмотреть ваш репозиторий.&lt;br /&gt;
&lt;br /&gt;
Функционал такой, увы, не реализован, но можно попробовать сделать его самим.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Just do eat ==&lt;br /&gt;
&lt;br /&gt;
Если ты очень крутой (или наоборот) программист, то тебе некогда думать о своем рационе питания и о том, что ты ешь, насколько это полезно, сколько там витаминов и т.д. Но ТЫЖПРОГРАММИСТ, поэтому можно написать приложение, которое будет делать это за тебя.&lt;br /&gt;
&lt;br /&gt;
Примерное описание: приложение должно быть в курсе, что из продуктов у тебя есть и что ты ешь. При запросе будет выдавать список блюд/продуктов из имеющихся, которые желательно съесть на данный момент, чтобы твое питание было наиболее сбалансированным. Если это блюдо - то можно сразу получить рецепт/ссылку на рецепт. Можно также создать режим для похудения/набора веса.&lt;br /&gt;
&lt;br /&gt;
Возможно, это немного уменьшит наши страдания.&lt;br /&gt;
&lt;br /&gt;
Можно реализовать как приложение на Android, можно как приложение на ПК.&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;
Идея - создать трекер привычек, который позволит довести повседневную жизнь во время учебы до автоматизма - полное расписание каждого дня, которое включает не только пары и время на дз, но и время подъема, отбоя, выделенное время похода в магазин, напоминалка о стирке вещей и другие повседневности. Вместо отсыпания на выходных - подъем каждый день в одно и то же время и так далее. Не важно, не можешь ли ты уснуть в 3 утра из-за мыслей о надвигающихся дедлайнах или просто приуныл - приложение говорит, что сейчас нужно делать. Расчет идет на то, что организм привыкнет и придется меньше заботиться о повседневностях.&lt;br /&gt;
&lt;br /&gt;
Аналогов море, но я не смог найти приложение, которое бы заставляло делать что-то каждую минуту.&lt;br /&gt;
Нет смысла делать убер швейцарский перочинный нож для спортсменов / программистов / студентов / преподавателей. Но и хардкодить расписание пар в код никто не собирается.&lt;br /&gt;
&lt;br /&gt;
Приложение должно иметь минимальный необходимый функционал с возможностью подцепить полезные фичи, опять же не нагромождая велосипедов в сам код (например, я не хочу ботать алгоритмы конкретный день 4 часа подряд, а хочу разбить это домашнее задание на 6 часов с перерывами каждые полчаса - ок, цепляю модуль и ставлю галку &amp;quot;делать в режиме помидор&amp;quot;; python же наоборот - можно делать не отрываясь часа 2-3 - собственно некоторое дефолтное поведение). Также большой проблемой подобных приложений является предварительная настройка (я настраивал trello весь день, совмещая с другими делами). Для студентов можно сделать внешний модуль (или просто какой-нибудь JSON) со всем необходимым (расписание, мягкие/жесткие дедлайны, дополнительные активности, не вписывающиеся в еженедельный ритм, например devdays), чтобы в течении получаса можно было полностью откалибровать приложение под себя.&lt;br /&gt;
&lt;br /&gt;
Технологии: вырисовывается мобильное приложение, чтобы всегда имелось под рукой, начальная идея с telegram ботом уже не кажется такой привлекательной.&lt;br /&gt;
&lt;br /&gt;
Предложил: Тагир Гумеров&lt;br /&gt;
&lt;br /&gt;
== Создание ликбеза по языкам программирования ==&lt;br /&gt;
&lt;br /&gt;
Проблема: по большинству языков сложно вести конспект, иногда из-за интенсивного повествования, иногда из-за веры в рассылку pdf преподавателями после пар. &lt;br /&gt;
Происходит что-то в духе &amp;quot;у нас было 10 ipynb документов, 5 исходников на haskell, около сотни header и source файлов и целая россыпь pdf с семинаров, лекций и дз&amp;quot;.&lt;br /&gt;
Несколько рабочих столов или вкладок решают, но глобальный поиск все равно не запустишь.&lt;br /&gt;
&lt;br /&gt;
Задача: создать справочник по яп, которые мы проходим. Не документация, но и не stackoverflow. В точности то, что нам преподается.&lt;br /&gt;
Можно автоматизировать парсинг pdf файлов и так далее.&lt;br /&gt;
&lt;br /&gt;
Реализация - все, что кажется в повседневном использовании удобнее, чем 3-4 файла pdf и парочка открытых папок с исходниками. Скорее всего десктоп, может веб.&lt;br /&gt;
&lt;br /&gt;
Предложил: Тагир Гумеров&lt;/div&gt;</summary>
		<author><name>Gumerov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13404</id>
		<title>Devdays Осень 2017</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13404"/>
				<updated>2017-10-27T01:28:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gumerov: /* Темы проектов */&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;
&lt;br /&gt;
== Depth map from single view ==&lt;br /&gt;
&lt;br /&gt;
Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта.&lt;br /&gt;
Другими словами, если имеется некотороые изображение, то матрица глубины говорит о том, какого расстояние до каждого нарисованного объекта.&lt;br /&gt;
&lt;br /&gt;
Хочется строить матрицу глубины с '''одного''' изображения, без использования бинокулярного зрения или радаров.&lt;br /&gt;
&lt;br /&gt;
Предложил: Никулин Данил&lt;br /&gt;
&lt;br /&gt;
== Доработать децентрализованный мессенджер RetroShare ==&lt;br /&gt;
&lt;br /&gt;
Децентрализованные мессенджеры представляют интерес тем (для любителей паранои :)), что не используют при своей работе подконтрольные третьим лицам центральные серверы. Для &amp;quot;регистрации&amp;quot; в сети пользователь создаёт пару открытый/закрытый ключ и передаёт открытый ключ тем, с кем хочет общаться. Находить IP собеседника достаточно эффективно можно с помощью [https://ru.wikipedia.org/wiki/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0 DHT].&lt;br /&gt;
&lt;br /&gt;
Мессенджеров, которые работаю по такому принципу, оказывается, не так и много -- я видел только [https://github.com/RetroShare RetroShare] и [https://tox.chat/ Tox] . Я Пробовал пользоваться RetroShare: там всё хорошо, но есть некоторые недоработки, например нет индикатора, дошло ли сообщение до собеседника, удобного диалога сохранения файла и т.д.&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;
Как я это вижу: где-то в облаке крутится сервер. Пользователь может поставить расширение для браузера, которое добавляет ко всем постам с музыкой кнопку &amp;quot;загрузить в облако&amp;quot;. Дальше пользователь с мобильного приложения коннектится к этому облаку, где хранятся все сохраненные посты, которые можно сортировать по исполнителям и жанрам, которые вытаскиваются из тегов внутри поста. Каждую песню или пост можно либо слушать с подключением к интернету, либо скачать, чтобы слушать в оффлайне (как в старом приложении контакта, только с удобной каталогизацией).&lt;br /&gt;
&lt;br /&gt;
Технологии: Java/Kotlin (для облака и мобильного приложения), js для расширения (кажется, что оно будет маленьким, так что js по минимуму)&lt;br /&gt;
&lt;br /&gt;
Предложил: Новожилов Дмитрий&lt;br /&gt;
&lt;br /&gt;
== Квантовый форсаж ==&lt;br /&gt;
&lt;br /&gt;
Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка.&lt;br /&gt;
&lt;br /&gt;
Идея: написать простенькую 2D игру, где будет использоваться понятие неопределенности Гейзенберга. &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;
== Vassal online ==&lt;br /&gt;
Давайте напишем легковесный движок в вебе для разработки настольных игр. &lt;br /&gt;
Предложил: Кузиванов Николай&lt;br /&gt;
&lt;br /&gt;
== DroidTuner ==&lt;br /&gt;
Есть программы, которые позволяют тонко настраивать телефон, например - при считывании NFC-метки менять аудиопрофиль, запускать приложения, отправлять сообщения, заказывать ужин в ресторане и так далее. Проблема в том, что они либо хорошие, красивые, и даже предлагают свой язык для описания сценариев использования, но платные, либо имеют мало возможностей и не особо развиваются/мертвы. &lt;br /&gt;
Давайте напишем бесплатную_без_смс_оупенсоурс версию такого приложения, и, конечно, не хуже, чем у алчных конкурентов. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== AnonyMesh ==&lt;br /&gt;
Предлагается реализовать аналог двача, но без использования сети интернет - то есть по Bluetooth или Wifi-Direct. Вы создаете чат, к которому подключаются другие устройства поблизости и вместе обсуждаете насущные проблемы без возможности идентифицировать себя. Пример использования - анонимное голосование при принятии какого-либо решения в группе людей в дали от интернет-инфраструктуры. Предложил Макеев Владимир&lt;br /&gt;
&lt;br /&gt;
== Добрый CryptoLocker ==&lt;br /&gt;
Петя боится вирусов-вымогателей (ransomware). Но Петя при этом очень неосторожный человек и любит открывать письма с вложениями от неизвестных отправителей, поэтому уже выплатил злоумышленникам 10 биткойнов, чтобы расшифровать свои файлы. &lt;br /&gt;
А ещё Петя - параноик. Он хочет зашифровать свои файлы, чтобы хакеры не смогли узнать его секреты, но при этом он сам смог в нужный момент их расшифровать. Помогите Пете написать программу - аналог CryptoLocker-а, но только добрый, для динамического шифрования собственных документов.&lt;br /&gt;
&lt;br /&gt;
Для справки:&lt;br /&gt;
CryptoLocker - это простейший вирус-вымогатель, который шифрует файлы с определёнными расширением (обычно офисные и pdf-ки) с помощью криптосистемы с открытым ключом. Закрытый ключ хранится на сервере злоумышленника.&lt;br /&gt;
После попадания в систему вирус связывается с сервером, и с помощью полученного от него открытого ключа шифрует файлы нужного расширения. Затем выводится окно со счастливой новостью о заражении и ссылкой на сайт, где после оплаты можно расшифровать свои файлы. &lt;br /&gt;
&lt;br /&gt;
Задачи:&lt;br /&gt;
1) Собственно сам шифровальщик (лучше минимально защититься от простейшего реверс-инжиниринга, например, генерить имя домена командного сервера, а не хранить его в строке)&lt;br /&gt;
2) Командный сервер с бд + сервер с сервисом расшифровки.&lt;br /&gt;
3) Также нужно, чтобы шифровальщик делал некоторые действия с OS (автозапуск + сбор информации), но это в идеале&lt;br /&gt;
&lt;br /&gt;
Технологии:  Более актуально для Windows. Но под Linux тоже можно будет попробовать. Язык - я за Python).&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;
https://en.wikipedia.org/wiki/Burn_down_chart&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;
Есть много библиотек, которые позволяют использовать на веб-страницах шаблоны, которые затем заполняются через JavaScript. К примеру, текст &amp;quot;&amp;lt;nowiki&amp;gt;{{user.isLoggedIn}}&amp;lt;/nowiki&amp;gt;&amp;quot;, размещённый где угодно на веб-странице, может превратиться в сложное дерево DOM-объектов, которое будет обновляться каждый раз, когда будет меняться значение переменной user.isLoggedIn. Известные примеры таких библиотек -- React и Vue.js.&lt;br /&gt;
&lt;br /&gt;
Этот же подход можно применять и к тому, чтобы расширять набор средств отображения сведений на веб-странице. Простой пример, который и предлагается в качестве работы, -- это описание в тексте веб-страницы графа, вершинами которого могут быть произвольные DOM-объекты. В текстовых браузерах должно быть видно текстовое представление графа, в графических -- интерактивный граф.&lt;br /&gt;
&lt;br /&gt;
Уже есть некоторые разработки по генерации графов из текстовых описаний -- к примеру, http://ushiroad.com/jsviz/ -- но нигде не было обнаружено такое, чтобы можно было представлять граф в виде обычного текста и при этом иметь в качестве вершин произвольные объекты DOM.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== Плагин к Coq на kakoune / kakoune-mode к Emacs ==&lt;br /&gt;
&lt;br /&gt;
Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется.&lt;br /&gt;
&lt;br /&gt;
kakoune -- современный текстовый редактор, убийца vim, последователь vi, который создавался с целью исправить ставшие за многие годы очевидными ошибки остальных модальных текстовых редакторов. Я пересел на kakoune после трёх лет очень активного использования vim и не пожалел.&lt;br /&gt;
http://kakoune.org/&lt;br /&gt;
&lt;br /&gt;
Coq -- самый популярный язык с зависимыми типами, который предназначен для доказательства математических утверждений с помощью компьютера, который запрещает пользователю доказать что-то, в чём компьютер не может быть уверен полностью.&lt;br /&gt;
&lt;br /&gt;
При этом на Coq удобнее всего работать в emacs. Который после kakoune не кажется удобным вообще никак.&lt;br /&gt;
&lt;br /&gt;
Возникает две возможные задачи. Первая -- написать для kakoune плагин, добавляющий поддержку Coq. Вторая -- написать для emacs плагин, который позволяет писать в нём так же, как в kakoune. Первая задача заключается в написании всеми любимых shell-скриптов (потому что kakoune управляется ими), вторая -- в написании кода на Emacs Lisp, который, пусть и в силу Emacs неудачный, всё же Lisp.&lt;br /&gt;
&lt;br /&gt;
Предложил Халанский Дмитрий.&lt;br /&gt;
&lt;br /&gt;
== CRM-система для преподавателей и студентов ==&lt;br /&gt;
&lt;br /&gt;
Цель проекта - объединить в единую экосистему аспекты взаимодействия участников образовательного процесса: электронный журнал, размещение домашних заданий, контролер дедлайнов и прочий функционал.&lt;br /&gt;
&lt;br /&gt;
Доступ к системе с помощью веб-интерфейса (и мобильного приложения?). &lt;br /&gt;
&lt;br /&gt;
Предполагаемый стэк технологий: фронтенд Angular2, бекенд NodeJS + Sequelize+ PostgreSQL (или полуфабрикат типа Firebase)&lt;br /&gt;
&lt;br /&gt;
Предложил Чернышев Ярослав.&lt;br /&gt;
&lt;br /&gt;
== Синхронизация звукового потока ==&lt;br /&gt;
&lt;br /&gt;
Часто возникает такая ситуация, когда вы хотите послушать музыку или посмотреть лекцию со Stepik’а со своими товарищами с одного телефона. Однако при этом не хотите мешать другим людям вокруг своим звуком или сидеть только с одним наушником. Поэтому я предлагаю разработать приложение для Android, которое будет синхронизировать звуковые потоки на нескольких устройствах.&lt;br /&gt;
&lt;br /&gt;
По идее, всё должно работать так: одно из приложений будет некоторым сервером. Остальные, как клиенты, будут к нему подключаться (например по Bluetooth). После этого сервер будет передавать звуковой поток устройствам клиентов, каждый из которых сможет отдельно воспроизводить его. &lt;br /&gt;
&lt;br /&gt;
Предложила Орищенко Александра.&lt;br /&gt;
&lt;br /&gt;
== Конспект по алгоритмам ==&lt;br /&gt;
&lt;br /&gt;
На данный момент мы с Димой Новожиловым пишем конспекты по алгоритмам в формате markdown документов (с вставкой latex формул) и это не очень:&lt;br /&gt;
&lt;br /&gt;
* Нет синхронизации — каждый ведёт конспект у себя на своей машине&lt;br /&gt;
* Трудно читать сырой markdown, а сгенерированные PDF'ки слишком широкие&lt;br /&gt;
* Дима забивает на пары по алгоритмам, а мне лень вести конспект&lt;br /&gt;
&lt;br /&gt;
Хочется сделать так, чтобы мы (и другие люди) вели работу через git, а при выполнении &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; автоматически из markdown документов генерировался сайт с мобильной версией и хостился где-то в интернете.&lt;br /&gt;
&lt;br /&gt;
# [https://pandoc.org/ Pandoc] умеет конвертировать файлы (нужно научиться его настраивать)&lt;br /&gt;
# Git может запустить какой-нибудь скрипт, когда вы выполняете комманду &amp;lt;code&amp;gt;git commit&amp;lt;/code&amp;gt; или &amp;lt;code&amp;gt;git push&amp;lt;/code&amp;gt; (здесь генерируется структура сайта)&lt;br /&gt;
# Можно настроить github так, что когда в репозиторий делают push, происходит какая-нибудь полезная работа (здесь сайт выкладывается в публичный доступ)&lt;br /&gt;
&lt;br /&gt;
Таким образом нам надо будет разобраться с Pandoc, Git hooks, Travis CI, HTML, CSS. Это всё довольно легко, за три дня можно управиться. Основная цель — поработать в команде, распараллелить задачи, получить рабочий проект.&lt;br /&gt;
&lt;br /&gt;
Предложил Стребежев Игорь.&lt;br /&gt;
&lt;br /&gt;
== &amp;quot;Горячий&amp;quot; поиск билетов ==&lt;br /&gt;
&lt;br /&gt;
Всем иногда приходится покупать авиабилеты. Причем иногда приходится покупать их за один-два дня до предполагаемой даты вылета. Очевидно, что билетов в такой ситуации может и не быть (или они будут по не очень приемлемой цене). В такой ситуации среднестатистическому пользователю ПК приходится судорожно следить за любыми изменениями в списке доступных билетов на ближайший день т.к. существует ненулевая вероятность того, что появится билет &amp;quot;вашей мечты&amp;quot; (например, кто-нибудь сдаст билет и т.д.).&lt;br /&gt;
&lt;br /&gt;
В связи с чем предлагается написать программу/бота который в фоновом режиме следил бы за доступными билетами и в случае появления подходящего билета информировал об этом на телефон/e-mail или выводил большущее сообщение прямо на рабочий стол.&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;
Данных очень много поэтому обрабатывать их хочется автоматически. При этом хочется вначале разделить все множество сигналов на группы количество которых совпадает с количеством предполагаемых источников.&lt;br /&gt;
&lt;br /&gt;
В связи с этим предлагается написать программу которая:&lt;br /&gt;
- умела бы обрабатывать множество входных данных (осциллограмм) и выделять из них полезные сигналы&lt;br /&gt;
- Кластеризировала бы полученные сигналы на заданное количество множеств (например, методом k-средних или каким-либо другим методом кластеризации)&lt;br /&gt;
- Либо сепарировала бы данные используя различные методы кластеризации, а потом выдавала вердикт по предполагаемому количеству источников&lt;br /&gt;
&lt;br /&gt;
Для таких целей скорее подойдет python, но предполагается написать это на с++. Хотя можно на чем угодно, что подходит.&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;
Хотелось бы написать игру так, чтобы в неё можно было играть в телеграме, но я не уверен, можно ли будет в этом случае поддержать многопользовательский режим. Если что, можно придумать что-то хорошее и для игры соло. Ну или на крайний случай можно написать эту игру под андроид.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Codeforces bot ==&lt;br /&gt;
&lt;br /&gt;
Светозар ''учится'' в АУ и усердно ''изучает'' алгоритмы. Он верит, что рано или поздно станет важной персоной в мире спортивного программирования, и сейчас его цель — продвинуться в топ на платформе Codeforces, на которой он зависает часами. Но есть одна проблема — Светозар очень много времени проводит в телеграме, так как постоянно либо общается на тему алгоритмов, либо спрашивает совет насчет операционных систем и питона, либо оценивает новые стикеры. Если на пк еще можно как-то быстро переключаться между приложениями, на телефоне это делать сложнее, поэтому ему было бы удобно, чтобы какие-то вещи, касаемые Codeforces, можно было делать прямо в телеграме. За те десять минут, которые Светозар смог выделить на поиск имеющихся решений, он не нашел ничего подходящего (все имеющиеся боты неактивны), и он пришел к выводу, что нужно написать бот самому.&lt;br /&gt;
&lt;br /&gt;
Так как все мы немного Светозар (по крайней мере ''сейчас''), возможно, эта идея покажется интересной.&lt;br /&gt;
&lt;br /&gt;
Предложил Александр Кузнецов&lt;br /&gt;
&lt;br /&gt;
== Java(assembly? postgresql?) jupyter kernel ==&lt;br /&gt;
Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Плагин для документации ==&lt;br /&gt;
Idea позволяет глянуть inline документацию для некоторых языков и этого зачастую достаточно для того, чтобы понять что делает метод. Но как быть с языками, для которых этой фичи нет?&lt;br /&gt;
Приходится лезть в документацию. Чтобы не открывать сайт с документацией, есть [ https://zealdocs.org zealdox] и [https://kapeli.com/dash dash], последним я пользуюсь сам. Но человек я очень ленивый и хотелось бы выгружать документацию прямо в IDE в один клик.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Расшаривание ссылок на private репозитории ==&lt;br /&gt;
У всех есть приватные репозитории на GitHub/Bitbucket/GitLab и иногда их все-таки нужно показывать. Самый частый сценарий: вы устраиваетесь на работу, хочется показать какой-то pet-project, но добавлять каждого интервьюера в collaborators несколько накладно. Проще, наверное, было бы отправить ссылку, по которой только он может посмотреть ваш репозиторий.&lt;br /&gt;
&lt;br /&gt;
Функционал такой, увы, не реализован, но можно попробовать сделать его самим.&lt;br /&gt;
&lt;br /&gt;
Предложил Алексей Зубаков&lt;br /&gt;
&lt;br /&gt;
== Just do eat ==&lt;br /&gt;
&lt;br /&gt;
Если ты очень крутой (или наоборот) программист, то тебе некогда думать о своем рационе питания и о том, что ты ешь, насколько это полезно, сколько там витаминов и т.д. Но ТЫЖПРОГРАММИСТ, поэтому можно написать приложение, которое будет делать это за тебя.&lt;br /&gt;
&lt;br /&gt;
Примерное описание: приложение должно быть в курсе, что из продуктов у тебя есть и что ты ешь. При запросе будет выдавать список блюд/продуктов из имеющихся, которые желательно съесть на данный момент, чтобы твое питание было наиболее сбалансированным. Если это блюдо - то можно сразу получить рецепт/ссылку на рецепт. Можно также создать режим для похудения/набора веса.&lt;br /&gt;
&lt;br /&gt;
Возможно, это немного уменьшит наши страдания.&lt;br /&gt;
&lt;br /&gt;
Можно реализовать как приложение на Android, можно как приложение на ПК.&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;
Идея - создать трекер привычек, который позволит довести повседневную жизнь во время учебы до автоматизма - полное расписание каждого дня, которое включает не только пары и время на дз, но и время подъема, отбоя, выделенное время похода в магазин, напоминалка о стирке вещей и другие повседневности. Вместо отсыпания на выходных - подъем каждый день в одно и то же время и так далее. Не важно, не можешь ли ты уснуть в 3 утра из-за мыслей о надвигающихся дедлайнах или просто приуныл - приложение говорит, что сейчас нужно делать. Расчет идет на то, что организм привыкнет и придется меньше заботиться о повседневностях.&lt;br /&gt;
&lt;br /&gt;
Аналогов море, но я не смог найти приложение, которое бы заставляло делать что-то каждую минуту.&lt;br /&gt;
Нет смысла делать убер швейцарский перочинный нож для спортсменов / программистов / студентов / преподавателей. Но и хардкодить расписание пар в код никто не собирается.&lt;br /&gt;
&lt;br /&gt;
Приложение должно иметь минимальный необходимый функционал с возможностью подцепить полезные фичи, опять же не нагромождая велосипедов в сам код (например, я не хочу ботать алгоритмы конкретный день 4 часа подряд, а хочу разбить это домашнее задание на 6 часов с перерывами каждые полчаса - ок, цепляю модуль и ставлю галку &amp;quot;делать в режиме помидор&amp;quot;; python же наоборот - можно делать не отрываясь часа 2-3 - собственно некоторое дефолтное поведение). Также большой проблемой подобных приложений является предварительная настройка (я настраивал trello весь день, совмещая с другими делами). Для студентов можно сделать внешний модуль (или просто какой-нибудь JSON) со всем необходимым (расписание, мягкие/жесткие дедлайны, дополнительные активности, не вписывающиеся в еженедельный ритм, например devdays), чтобы в течении получаса можно было полностью откалибровать приложение под себя.&lt;br /&gt;
&lt;br /&gt;
Технологии: вырисовывается мобильное приложение, чтобы всегда имелось под рукой, начальная идея с telegram ботом уже не кажется такой привлекательной.&lt;br /&gt;
&lt;br /&gt;
Предложил: Тагир Гумеров&lt;/div&gt;</summary>
		<author><name>Gumerov</name></author>	</entry>

	</feed>