<?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=Alexandra</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=Alexandra"/>
		<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/Alexandra"/>
		<updated>2026-04-29T18:23:45Z</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_2018&amp;diff=15542</id>
		<title>Devdays Весна 2018</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_2018&amp;diff=15542"/>
				<updated>2018-04-26T18:35:38Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Чтобы править эту страницу, нужно залогиниться в Sewiki. Тогда сверху будет кнопочка &amp;quot;править&amp;quot;. Если у вас нет учётной записи — напишите Игорю желаемый логин.&lt;br /&gt;
&lt;br /&gt;
Редактировать wiki одновременно нескольким людям стоит осторожно: после внесения правки проверьте, что она действительно сохранилась.&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;
Есть культовая серия игр конца 90-х - первой половины 00-х &amp;quot;Космические рейнджеры&amp;quot;. Один из компонентов игры - текстовые квесты, очень увлекательная и разнообразная штука от простых логических задач в стиле загадки Эйнштейна до симуляторов дальнобойщика и зэка. Было бы здорово портировать эти квесты в телегу, неплохая такая развлекаловка. [https://yadi.sk/i/jb88tQju3UhBMS Презентация проекта в формате pdf]&lt;br /&gt;
&lt;br /&gt;
Кодим на питоне.&lt;br /&gt;
&lt;br /&gt;
Предложил: Чернышев Ярослав&lt;br /&gt;
&lt;br /&gt;
== SpaceChem на Android ==&lt;br /&gt;
&lt;br /&gt;
Есть замечательная игрушка SpaceChem ([http://store.steampowered.com/app/92800/SpaceChem/ страница в Steam]). Цель игры -- программировать реакторы, которые преобразуют одни химические соединения в другие. Каждый уровень игры представляет из себя реактор -- поле 10x8, на котором есть два манипулятора, которые можно программировать, размещая на поле различные команды (подхватить атом, повернуть атом, двигаться в другом направлении, объединить атомы и другие). &lt;br /&gt;
&lt;br /&gt;
Для управления всем, что происходит в игре достаточно одной мыши, на прохождение уровня уходит от нескольких минут до нескольких часов (в зависимости от сложности поставленной задачи), что делает игру подходящей для мобильных платформ (можно посидеть подумать, пока едешь из Парнаса в Автово).&lt;br /&gt;
&lt;br /&gt;
Идея: портировать SpaceChem на Android.&lt;br /&gt;
&lt;br /&gt;
Технологии: Android, Java/Kotlin&lt;br /&gt;
&lt;br /&gt;
Предложил: Новожилов Дмитрий&lt;br /&gt;
&lt;br /&gt;
== Игрушка RogueLike на Python ==&lt;br /&gt;
&lt;br /&gt;
Есть семейство игрушек RogueLike. Игрушек в этом семействе много, они популярны, но не позволяют сохранятся после гибели персонажа.&lt;br /&gt;
Хочется сделать игрушку, которая не будет удалять все сохраненные данные после смерти персонажа.&lt;br /&gt;
&lt;br /&gt;
Предложил: Никулин Данил&lt;br /&gt;
&lt;br /&gt;
== Coverage App ==&lt;br /&gt;
&lt;br /&gt;
Карты путешествий это здорово, но что делать, если ты путешествуешь только не дальше своей страны/города? (Грустно, но бывает.)&lt;br /&gt;
&lt;br /&gt;
Есть ряд приложений, в которых отмечаешь, в каких странах ты был и какие хотел бы посетить. Можно сделать аналог, но в пределах города. Появится возможность отмечать места, где уже был (с комментариями/оценками) и куда хотел бы сходить, а также следить за статистикой в виде процента изучения города --  часть города, где ты когда-либо бывал (мб с градацией по количеству посещений), в масштабе улиц, площадей, домов.&lt;br /&gt;
&lt;br /&gt;
Предложила: Валерия Горячева&lt;br /&gt;
&lt;br /&gt;
== /bin/init на Rust ==&lt;br /&gt;
&lt;br /&gt;
systemd -- ужасающий кусок софта, но он уже захватил все крупные дистрибутивы Линукса. И это объяснимо: его подход к организации сервисов в самом деле довольно удобный по сравнению с теми ad-hoc-решениями, которые принимались раньше.&lt;br /&gt;
&lt;br /&gt;
Можно попытаться сделать легковесный init без ужасных частей systemd, но умеющий разбирать service-файлы. В дополнение к этому, можно его написать на Rust, чтобы не было глупейших уязвимостей с переполнением буфера, которыми славен systemd.&lt;br /&gt;
&lt;br /&gt;
Халанский.&lt;br /&gt;
&lt;br /&gt;
== Парсер dts-файлов на Haskell ==&lt;br /&gt;
&lt;br /&gt;
В ядре Linux для ARM для описания набора доступных на системе устройств используются dts-файлы (Device Tree Source File). Но с ними есть такая проблема, что инструментальной поддержки у них немного. dtc (Device Tree Compiler) откровенно аскетичный, и если в dts синтаксическая ошибка, он скажет что-то не сильно более содержательное, чем &amp;quot;error&amp;quot;. Логические же ошибки он и вовсе не проверяет. Предложение такое: задействовать монадические парсеры и показать суровым ядрописателям, что даже Хаскелль на что-то годен.&lt;br /&gt;
&lt;br /&gt;
Халанский.&lt;br /&gt;
&lt;br /&gt;
== surf с клавиатурой ==&lt;br /&gt;
&lt;br /&gt;
All software sucks. Кроме, конечно, софта от https://suckless.org/. В частности, утверждается, что крохотный браузер https://surf.suckless.org/ does not suck. В самом деле, в подходе suckless есть какая-то логика: чем меньше софта, тем меньше что может suck.&lt;br /&gt;
&lt;br /&gt;
Но понятно также и то, что всё, чем можно управлять только мышкой, -- если это не инструмент рисования диаграмм или пользовательских интерфейсов -- фундаментально sucks. Хочется исправить surf так, чтобы он заслуживал звание suckless и поддерживал базовые keybinding'и, знакомые любому любителю vimperator и иже с ними, а не только мышекликанье.&lt;br /&gt;
&lt;br /&gt;
Уже имеются наработки от сообщества surf, и найти их можно прямо на странице surf, но они обладают рядом важных ограничений, из-за которых без мышки нельзя обойтись даже близко: к примеру, нельзя с клавиатуры переводить фокус на поля ввода; или открывать ссылки в новом окне; продолжать можно долго.&lt;br /&gt;
&lt;br /&gt;
Халанский.&lt;br /&gt;
&lt;br /&gt;
== Консольный stepik ==&lt;br /&gt;
&lt;br /&gt;
Stepik -- сайт с хорошими курсами, это у него не отнять. Но веб-интерфейс у него довольно неудобный. Он очень медленный и ведёт себя местами странно. И многие вещи приятнее делать прямо у себя дома, в родной консоли. К примеру, отсылать задания. Или читать комментарии. Зачем для всего этого нужно ждать, пока все страницы Степика соизволят прогрузиться?&lt;br /&gt;
&lt;br /&gt;
Stepik предоставляет API: https://github.com/StepicOrg/Stepik-API&lt;br /&gt;
&lt;br /&gt;
Оно, на первый взгляд, более-менее полное, раз на нём работают даже мобильные приложения платформы. Также с его помощью уже создали несколько удобных вещей, к примеру, тот же отсылатель кода: https://github.com/StepicOrg/SubmissionUtility. Но всё же хотелось бы вылезать в веб-интерфейс ещё реже. Кажется вполне реальным скачивать видео, отсылать задания, получать комментарии, вообще не пользуясь браузером.&lt;br /&gt;
&lt;br /&gt;
Халанский.&lt;br /&gt;
&lt;br /&gt;
== J на GPU ==&lt;br /&gt;
&lt;br /&gt;
Есть язык J, идейный последователь APL.&lt;br /&gt;
&lt;br /&gt;
APL -- язык, на котором Conway's Game of Life записывается так (надеюсь, я случайно не взломаю wiki, напечатав этот текст):&lt;br /&gt;
&lt;br /&gt;
    life←{                                  ⍝ John Conway's &amp;quot;Game of Life&amp;quot;.&lt;br /&gt;
        ↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵  ⍝ Expression for next generation.&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
J -- язык, на котором эта игра записывается так:&lt;br /&gt;
&lt;br /&gt;
    l=:[:+/(3 4=/[:+/(,/,&amp;quot;0/~i:1)|.])*.1,:]&lt;br /&gt;
&lt;br /&gt;
Суть этих языков в том, что они ориентированы на массивы данных -- как numpy, или R, или GNU Octave, но более радикально и/или консистентно: массивы данных являются *фундаментальной* сущностью в этих языках, такой же фундаментальной, как, к примеру, функции. Более подробно о массиво-ориентированных языках можно почитать тут: http://www.ccs.neu.edu/home/shivers/papers/rank-polymorphism.pdf, но вот базовый пример.&lt;br /&gt;
&lt;br /&gt;
       a =: 5 5 $ i.25   NB. Just a 5x5 matrix&lt;br /&gt;
       a&lt;br /&gt;
     0  1  2  3  4&lt;br /&gt;
     5  6  7  8  9&lt;br /&gt;
    10 11 12 13 14&lt;br /&gt;
    15 16 17 18 19&lt;br /&gt;
    20 21 22 23 24&lt;br /&gt;
       &amp;lt; a     NB. Put the whole matrix into a box&lt;br /&gt;
    ┌──────────────┐&lt;br /&gt;
    │ 0  1  2  3  4│&lt;br /&gt;
    │ 5  6  7  8  9│&lt;br /&gt;
    │10 11 12 13 14│&lt;br /&gt;
    │15 16 17 18 19│&lt;br /&gt;
    │20 21 22 23 24│&lt;br /&gt;
    └──────────────┘&lt;br /&gt;
       &amp;lt; &amp;quot;2 a     NB. Do it for two dimensions (matrix, basically the same as before)&lt;br /&gt;
    ┌──────────────┐&lt;br /&gt;
    │ 0  1  2  3  4│&lt;br /&gt;
    │ 5  6  7  8  9│&lt;br /&gt;
    │10 11 12 13 14│&lt;br /&gt;
    │15 16 17 18 19│&lt;br /&gt;
    │20 21 22 23 24│&lt;br /&gt;
    └──────────────┘&lt;br /&gt;
       &amp;lt; &amp;quot;1 a     NB. Do it for one-dimensional arrays (rows)&lt;br /&gt;
    ┌─────────┬─────────┬──────────────┬──────────────┬──────────────┐&lt;br /&gt;
    │0 1 2 3 4│5 6 7 8 9│10 11 12 13 14│15 16 17 18 19│20 21 22 23 24│&lt;br /&gt;
    └─────────┴─────────┴──────────────┴──────────────┴──────────────┘&lt;br /&gt;
       &amp;lt; &amp;quot;0 a     NB. Do it for zero-dimensional arrays (scalars)&lt;br /&gt;
    ┌──┬──┬──┬──┬──┐&lt;br /&gt;
    │0 │1 │2 │3 │4 │&lt;br /&gt;
    ├──┼──┼──┼──┼──┤&lt;br /&gt;
    │5 │6 │7 │8 │9 │&lt;br /&gt;
    ├──┼──┼──┼──┼──┤&lt;br /&gt;
    │10│11│12│13│14│&lt;br /&gt;
    ├──┼──┼──┼──┼──┤&lt;br /&gt;
    │15│16│17│18│19│&lt;br /&gt;
    ├──┼──┼──┼──┼──┤&lt;br /&gt;
    │20│21│22│23│24│&lt;br /&gt;
    └──┴──┴──┴──┴──┘&lt;br /&gt;
&lt;br /&gt;
То есть map (и, на самом деле, многие другие концепции) получаются естественным образом.&lt;br /&gt;
&lt;br /&gt;
Сейчас на APL пишут мало. На J тоже, но всё же побольше. При этом APL на GPU умеют выполнять, а J -- нет, о чём сообщество J сильно жалеет: в конце концов, ориентированные на массивы языки -- самый очевидный кандидат для выполнения на GPU.&lt;br /&gt;
&lt;br /&gt;
Давайте попробуем исполнять на GPU какое-то подмножество J. Всё не получится: язык слишком крупный http://www.jsoftware.com/docs/help806/dictionary/vocabul.htm и с большим количеством граничных случаев, которые за несколько дней не выйдет покрыть. Но если язык будет парситься по синтаксису J и некоторые операторы будут работать, это уже хорошее начало. Технологии -- C, Rust или их помесь, а также что-нибудь для работы с GPU.&lt;br /&gt;
&lt;br /&gt;
Халанский.&lt;br /&gt;
&lt;br /&gt;
== Игра под NES ==&lt;br /&gt;
&lt;br /&gt;
Иногда так устаёшь сидеть за компьютером, что хочется его выключить и пойти заняться чем-нибудь другим, забыть про все технологии, ощутить единство с природой и отдалиться от любых достижений технологического прогресса. К примеру, поиграть в Денди (aka NES/Famicom). Но, за неимением телевизора, это недостижимо -- остаётся только довольствоваться отголосками мечты.&lt;br /&gt;
&lt;br /&gt;
Отголосок может, в частности, заключаться в создании своей собственной игры, которую можно хотя бы запустить в эмуляторе. Хотя бы, скажем, вот такой: https://www.youtube.com/watch?v=71JNREDtUQM&lt;br /&gt;
&lt;br /&gt;
Технологии: Си, hex-редактор, терпение и спокойствие перед лицом чистого ужаса.&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;
Перед пользователем ставится задача и дается время на ее решение (не больше 30 минут). При этом код необходимо писать в чем-то похожем на Google Docs, то есть нет никакой подсветки синтаксиса либо автодополнения.&lt;br /&gt;
&lt;br /&gt;
Так же есть чат, в котором будет проходить взаимодействие с собеседущим, например, он может спросить о асимптотики решения или может задать вопрос по теории алгоритмов (необходимо ввести название алгоритма, его асимптотику, либо выбрать правильный вариант ответа в тесте). &lt;br /&gt;
&lt;br /&gt;
При этом учитывается, что во время прохождения собеседования пользователь должен постоянно что-либо делать: если пользователь не пишет всевдокод/код, то должен отвечать на вопросы.&lt;br /&gt;
&lt;br /&gt;
Будет возможность скомпилировать решение и проверить на тестах. Задачи можно взять из книги Cracking the Coding Interview, Gayle Laakmann.&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;
== Благотворительность 2.0 == &lt;br /&gt;
&lt;br /&gt;
Люди постоянно тратят деньги на всякий виртуальный стаф. Давайте поможем людям тратить деньги на более полезные вещи. &lt;br /&gt;
Я предлагаю написать небольшое android-приложение, где пользователи в пару кликов смогут пожертвовать на наиболее понравившийся им проект. &lt;br /&gt;
&lt;br /&gt;
Технологии: Java/Kotlin, android &lt;br /&gt;
&lt;br /&gt;
Предложил: Кузиванов Николай.&lt;br /&gt;
&lt;br /&gt;
== Public Channel Viewer ==&lt;br /&gt;
&lt;br /&gt;
В блокируемом, блокируемом, но так и не заблокированном всеми известном мессенджере есть возможность создавать публичные каналы. Иногда это удобно, чтобы не писать одновременно одно и тоже нескольким людям. И тогда все, кто хочет, смогут подписаться и прочитать. Однако, в вашем окружении всегда найдутся люди, которые по тем или иным причинам не могут/не хотят пользоваться этим мессенджером. И чтобы не пересказывать или пересылать все сведения из канала им лично, было бы удобно создать сервис, где можно ввести ссылку и увидеть весь контент этого канала. &lt;br /&gt;
&lt;br /&gt;
Собственно идея: создать сайт/приложение, который по ссылке на публичный канал будет отображать все записи и изображения оттуда без регистрации и смс.&lt;br /&gt;
&lt;br /&gt;
Предложила: Орищенко Александра&lt;/div&gt;</summary>
		<author><name>Alexandra</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13655</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13655"/>
				<updated>2017-11-07T12:28:37Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Идея ==&lt;br /&gt;
&lt;br /&gt;
Хочется реализовать систему, которая позволяет, с одной стороны, вести студентам конспект по алгоритмам в удобном для написания формате markdown документов (писать LaTeX документы на лекции -- это ужасно), а с другой стороны автоматически собирает содержимое написанных лекций в красивый и удобный сайт, с которым повторение прошедших лекций превращается в приятный и увлекательный процесс.&lt;br /&gt;
&lt;br /&gt;
=== Фичи ===&lt;br /&gt;
&lt;br /&gt;
Запланировано и сделано:&lt;br /&gt;
* Поддержка сквозного содержания всех лекций&lt;br /&gt;
* Корректное отображение LaTeX символов на сайте&lt;br /&gt;
* Подсветка синтаксиса во вставках кода&lt;br /&gt;
* Мобильная версия сайта&lt;br /&gt;
* Система баг-репортов (выделил текст, нажал на кнопку -- в репозиторий отправилось issue)&lt;br /&gt;
* Telegram-bot, сообщающий о появлении новой лекции в репозитории&lt;br /&gt;
* Всплывающие подсказки к терминам, содержащие в себе информацию из википедии&lt;br /&gt;
&lt;br /&gt;
Запланировано и не сделано:&lt;br /&gt;
* Подбор ссылок для каждой темы конспекта (neerc, wiki)&lt;br /&gt;
* Подбор подсказок на neerc.ifmo.ru/wiki (алгоритм был реализован, однако работал очень криво, и от его использования было решено отказаться)&lt;br /&gt;
* Искать ключевые слова, делать поиск, лёгкий NLP&lt;br /&gt;
&lt;br /&gt;
Не запланировано, но сделано:&lt;br /&gt;
* Красивые превью ссылки в соцсетях (vk, twitter, facebook, telegram)&lt;br /&gt;
&lt;br /&gt;
== Авторы проекта ==&lt;br /&gt;
&lt;br /&gt;
* Стребежев Игорь: team-лидер; backend: настройка сервиса непрерывной интеграции, реализация telegram-бота; frontend: верстка и логика UI&lt;br /&gt;
* Орищенко Александра: backend: генерация AST и .md файлов, генерация .html файлов и извлечение метаинформации из AST; frontend: выделение подсказок у терминов&lt;br /&gt;
* Новожилов Дмитрий: backend: поиск и генерация информации для подсказок к терминам, объединение отдельных .html файлов с мета-информацией в целостные, готовые к публикации html страницы, генерация содержания конспекта, генерация сообщений для telegram-бота&lt;br /&gt;
&lt;br /&gt;
В процессе разработки каждый из участников поработал над каждой частью проекта, однако благодаря разработанной архитектуре системы, время каждого участника было распределено так, чтобы не мешать другим.&lt;br /&gt;
&lt;br /&gt;
== Известные баги ==&lt;br /&gt;
&lt;br /&gt;
* Подсказки к терминам не всегда генерируются корректно&lt;br /&gt;
* При генерации issue слетает разметка LaTeX формул&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
Репозиторий: https://github.com/demiurg906/au-conspectus&lt;br /&gt;
&lt;br /&gt;
Баг-трекер: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
&lt;br /&gt;
Конспект: https://xamgore.github.io/au-conspectus/&lt;br /&gt;
&lt;br /&gt;
Видео: https://youtu.be/FAAeSM95ws0 (внимание, включите субтитры)&lt;br /&gt;
&lt;br /&gt;
Презентация: https://goo.gl/CvcUcQ&lt;/div&gt;</summary>
		<author><name>Alexandra</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13650</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13650"/>
				<updated>2017-11-07T11:42:24Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Идея ==&lt;br /&gt;
&lt;br /&gt;
Хочется реализовать систему, которая позволяет, с одной стороны, вести студентам конспект по алгоритмам в удобном для написания формате markdown документов (писать LaTeX документы на лекции -- это ужасно), а с другой стороны автоматически собирает содержимое написанных лекций в красивый и удобный сайт, с которым повторение прошедших лекций превращается в приятный и увлекательный процесс.&lt;br /&gt;
&lt;br /&gt;
=== Фичи ===&lt;br /&gt;
&lt;br /&gt;
Запланировано и сделано:&lt;br /&gt;
* Поддержка сквозного содержания всех лекций&lt;br /&gt;
* Корректное отображение LaTeX символов на сайте&lt;br /&gt;
* Подсветка синтаксиса во вставках кода&lt;br /&gt;
* Мобильная версия сайта&lt;br /&gt;
* Система баг-репортов (выделил текст, нажал на кнопку -- в репозиторий отправилось issue)&lt;br /&gt;
* Telegram-bot, сообщающий о появлении новой лекции в репозитории&lt;br /&gt;
* Всплывающие подсказки к терминам, содержащие в себе информацию из википедии&lt;br /&gt;
&lt;br /&gt;
Запланировано и не сделано:&lt;br /&gt;
* Подбор ссылок для каждой темы конспекта (neerc, wiki)&lt;br /&gt;
* Подбор подсказок на neerc.ifmo.ru/wiki (алгоритм был реализован, однако работал очень криво, и от его использования было решено отказаться)&lt;br /&gt;
* Искать ключевые слова, делать поиск, лёгкий NLP&lt;br /&gt;
&lt;br /&gt;
Не запланировано, но сделано:&lt;br /&gt;
* Красивые превью ссылки в соцсетях (vk, twitter, facebook, telegram)&lt;br /&gt;
&lt;br /&gt;
== Авторы проекта ==&lt;br /&gt;
&lt;br /&gt;
* Стребежев Игорь: team-лидер; backend: настройка сервиса непрерывной интеграции, реализация telegram-бота; frontend: верстка и логика UI&lt;br /&gt;
* Орищенко Александра: backend: генерация AST и .md файлов, генерация .html файлов и извлечение метаинформации из AST; frontend: выделение подсказок у терминов&lt;br /&gt;
* Новожилов Дмитрий: backend: поиск и генерация информации для подсказок к терминам, объединение отдельных .html файлов с мета-информацией в целостные, готовые к публикации html страницы, генерация содержания конспекта, генерация сообщений для telegram-бота&lt;br /&gt;
&lt;br /&gt;
В процессе разработки каждый из участников поработал над каждой частью проекта, однако благодаря разработанной архитектуре системы, время каждого участника было распределено так, чтобы не мешать другим.&lt;br /&gt;
&lt;br /&gt;
== Известные баги ==&lt;br /&gt;
&lt;br /&gt;
* Подсказки к терминам не всегда генерируются корректно&lt;br /&gt;
* При генерации issue слетает разметка LaTeX формул&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
Репозиторий: https://github.com/demiurg906/au-conspectus&lt;br /&gt;
&lt;br /&gt;
Баг-трекер: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
&lt;br /&gt;
Конспект: https://xamgore.github.io/au-conspectus/&lt;br /&gt;
&lt;br /&gt;
Видео: https://youtu.be/FAAeSM95ws0 (внимание, включите субтитры)&lt;/div&gt;</summary>
		<author><name>Alexandra</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13649</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13649"/>
				<updated>2017-11-07T11:40:13Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: /* Ссылки */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Идея ==&lt;br /&gt;
&lt;br /&gt;
Хочется реализовать систему, которая позволяет, с одной стороны, вести студентам конспект по алгоритмам в удобном для написания формате markdown документов (писать LaTeX документы на лекции -- это ужасно), а с другой стороны автоматически собирает содержимое написанных лекций в красивый и удобный сайт, с которым повторение прошедших лекций превращается в приятный и увлекательный процесс.&lt;br /&gt;
&lt;br /&gt;
=== Фичи ===&lt;br /&gt;
&lt;br /&gt;
Запланировано и сделано:&lt;br /&gt;
* Поддержка сквозного содержания всех лекций&lt;br /&gt;
* Корректное отображение LaTeX символов на сайте&lt;br /&gt;
* Подсветка синтаксиса во вставках кода&lt;br /&gt;
* Мобильная версия сайта&lt;br /&gt;
* Система баг-репортов (выделил текст, нажал на кнопку -- в репозиторий отправилось issue)&lt;br /&gt;
* Telegram-bot, сообщающий о появлении новой лекции в репозитории&lt;br /&gt;
* Всплывающие подсказки к терминам, содержащие в себе информацию из википедии&lt;br /&gt;
&lt;br /&gt;
Запланировано и не сделано:&lt;br /&gt;
* Подбор ссылок для каждой темы конспекта (neerc, wiki)&lt;br /&gt;
* Подбор подсказок на neerc.ifmo.ru/wiki (алгоритм был реализован, однако работал очень криво, и от его использования было решено отказаться)&lt;br /&gt;
* Искать ключевые слова, делать поиск, лёгкий NLP&lt;br /&gt;
&lt;br /&gt;
Не запланировано, но сделано:&lt;br /&gt;
* Красивые превью ссылки в соцсетях (vk, twitter, facebook, telegram)&lt;br /&gt;
&lt;br /&gt;
== Авторы проекта ==&lt;br /&gt;
&lt;br /&gt;
* Стребежев Игорь: team-лидер; backend: настройка сервиса непрерывной интеграции, реализация telegram-бота; frontend: верстка и логика UI&lt;br /&gt;
* Орищенко Александра: backend: генерация AST и .md файлов, генерация .html файлов и извлечение метаинформации из AST; frontend: выделение подсказок у терминов&lt;br /&gt;
* Новожилов Дмитрий: backend: поиск и генерация информации для подсказок к терминам, объединение отдельных .html файлов с мета-информацией в целостные, готовые к публикации html страницы, генерация содержания конспекта, генерация сообщений для telegram-бота&lt;br /&gt;
&lt;br /&gt;
В процессе разработки каждый из участников поработал над каждой частью проекта, однако благодаря разработанной архитектуре системы, время каждого участника было распределено так, чтобы не мешать другим.&lt;br /&gt;
&lt;br /&gt;
== Известные баги ==&lt;br /&gt;
&lt;br /&gt;
* Подсказки к терминам не всегда генерируются корректно&lt;br /&gt;
* При генерации issue слетает разметка LaTeX формул&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
Репозиторий: https://github.com/demiurg906/au-conspectus&lt;br /&gt;
&lt;br /&gt;
Баг-трекер: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
&lt;br /&gt;
Конспект: https://xamgore.github.io/au-conspectus/&lt;br /&gt;
&lt;br /&gt;
Видео: https://youtu.be/FAAeSM95ws0 (внимание, включите субтитры)&lt;br /&gt;
&lt;br /&gt;
Презентация: https://goo.gl/CvcUcQ&lt;/div&gt;</summary>
		<author><name>Alexandra</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13549</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13549"/>
				<updated>2017-11-03T07:04:27Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Система, генерирующая из набора markdown документов, сайт с конспектом по алгоритмам (слава Смалю), со следующими фичами:&lt;br /&gt;
&lt;br /&gt;
Фичи:&lt;br /&gt;
&lt;br /&gt;
# Оповещалка в telegram о новой главе в конспекте&lt;br /&gt;
# Система багрепортов (выделил текст — отправил issue)&lt;br /&gt;
# Подбор ссылок для каждой темы конеспекта (neerc, wiki)&lt;br /&gt;
# Искать ключевые слова, делать поиск, лёгкий NLP* &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://github.com/demiurg906/au-conspectus&lt;br /&gt;
&lt;br /&gt;
Bug-list: &lt;br /&gt;
&lt;br /&gt;
# Стили написаны не для всех элементов&lt;br /&gt;
# Не всегда корректно работает поиск терминов в википедии и neerc.ifmo.ru/wiki&lt;br /&gt;
# Github pages отказывается хостить страницы (проблема github)&lt;br /&gt;
&lt;br /&gt;
Bugs + future features: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
​* — дополнительные фичи&lt;/div&gt;</summary>
		<author><name>Alexandra</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=13397</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=13397"/>
				<updated>2017-10-26T20:08:23Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: &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;
&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;
== &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;/div&gt;</summary>
		<author><name>Alexandra</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=13396</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=13396"/>
				<updated>2017-10-26T20:07:31Z</updated>
		
		<summary type="html">&lt;p&gt;Alexandra: &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;
&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;
== &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;/div&gt;</summary>
		<author><name>Alexandra</name></author>	</entry>

	</feed>