<?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=Novozhilov</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=Novozhilov"/>
		<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/Novozhilov"/>
		<updated>2026-04-09T15:08:48Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15684</id>
		<title>Visual bytecode</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15684"/>
				<updated>2018-05-07T10:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Инструкция по установке */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Страница проекта visual bytecode для devdays весна 2018&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/demiurg906/asm-bytecode-intellij Ссылка на проект]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Учатники/роли ====&lt;br /&gt;
* Зубаков Алексей — человек-байткод, тимлид&lt;br /&gt;
* Голышев Роман — человек-стэк-машина jvm&lt;br /&gt;
* Новожилов Дмитрий — человек-плагин-для-IntelliJ-IDEA&lt;br /&gt;
&lt;br /&gt;
==== Список известных багов ====&lt;br /&gt;
* не поддерживается байткод, сгенерированный компилятором kotlin&lt;br /&gt;
* нет защиты от дурака при некорректных вызовах действия &amp;quot;Run to cursor&amp;quot; (возможен бесконечный цикл)&lt;br /&gt;
&lt;br /&gt;
==== Не сделано====&lt;br /&gt;
*  касты&lt;br /&gt;
* вызовы функций&lt;br /&gt;
* jump, зависящие от типов(в процессе)&lt;br /&gt;
* работа со ссылками&lt;br /&gt;
&lt;br /&gt;
==== Демо ====&lt;br /&gt;
[https://www.youtube.com/watch?v=1-366UGL-oc Видео] (не забудьте включить субтитры)&lt;br /&gt;
&lt;br /&gt;
==== Инструкция по установке ====&lt;br /&gt;
* Скачать архив с плагином из [https://github.com/demiurg906/asm-bytecode-intellij/releases/tag/1.0 репозитория]&lt;br /&gt;
* Установить в Intellij IDEA плагин с помощью Settings -&amp;gt; Plugins -&amp;gt; Install plugin from disk&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15683</id>
		<title>Visual bytecode</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15683"/>
				<updated>2018-05-07T10:46:17Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Страница проекта visual bytecode для devdays весна 2018&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/demiurg906/asm-bytecode-intellij Ссылка на проект]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Учатники/роли ====&lt;br /&gt;
* Зубаков Алексей — человек-байткод, тимлид&lt;br /&gt;
* Голышев Роман — человек-стэк-машина jvm&lt;br /&gt;
* Новожилов Дмитрий — человек-плагин-для-IntelliJ-IDEA&lt;br /&gt;
&lt;br /&gt;
==== Список известных багов ====&lt;br /&gt;
* не поддерживается байткод, сгенерированный компилятором kotlin&lt;br /&gt;
* нет защиты от дурака при некорректных вызовах действия &amp;quot;Run to cursor&amp;quot; (возможен бесконечный цикл)&lt;br /&gt;
&lt;br /&gt;
==== Не сделано====&lt;br /&gt;
*  касты&lt;br /&gt;
* вызовы функций&lt;br /&gt;
* jump, зависящие от типов(в процессе)&lt;br /&gt;
* работа со ссылками&lt;br /&gt;
&lt;br /&gt;
==== Демо ====&lt;br /&gt;
[https://www.youtube.com/watch?v=1-366UGL-oc Видео] (не забудьте включить субтитры)&lt;br /&gt;
&lt;br /&gt;
==== Инструкция по установке ====&lt;br /&gt;
* Скачать архив с плагином из [репозитория]&lt;br /&gt;
* Установить в Intellij IDEA плагин с помощью Settings -&amp;gt; Plugins -&amp;gt; Install plugin from disk&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15680</id>
		<title>Visual bytecode</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15680"/>
				<updated>2018-05-07T09:09:30Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Список известных багов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Страница проекта visual bytecode для devdays весна 2018&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/demiurg906/asm-bytecode-intellij Ссылка на проект]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Учатники/роли ====&lt;br /&gt;
* Зубаков Алексей — человек-байткод, тимлид&lt;br /&gt;
* Голышев Роман — человек-стэк-машина jvm&lt;br /&gt;
* Новожилов Дмитрий — человек-плагин-для-IntelliJ-IDEA&lt;br /&gt;
&lt;br /&gt;
==== Список известных багов ====&lt;br /&gt;
* не поддерживается байткод, сгенерированный компилятором kotlin&lt;br /&gt;
* нет защиты от дурака при некорректных вызовах действия &amp;quot;Run to cursor&amp;quot; (возможен бесконечный цикл)&lt;br /&gt;
&lt;br /&gt;
==== Не сделано====&lt;br /&gt;
*  касты&lt;br /&gt;
* вызовы функций&lt;br /&gt;
* jump, зависящие от типов(в процессе)&lt;br /&gt;
* работа со ссылками&lt;br /&gt;
&lt;br /&gt;
==== Демо ====&lt;br /&gt;
[https://www.youtube.com/watch?v=1-366UGL-oc Видео] (не забудьте включить субтитры)&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15679</id>
		<title>Visual bytecode</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15679"/>
				<updated>2018-05-07T09:07:48Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Список известных багов */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Страница проекта visual bytecode для devdays весна 2018&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/demiurg906/asm-bytecode-intellij Ссылка на проект]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Учатники/роли ====&lt;br /&gt;
* Зубаков Алексей — человек-байткод, тимлид&lt;br /&gt;
* Голышев Роман — человек-стэк-машина jvm&lt;br /&gt;
* Новожилов Дмитрий — человек-плагин-для-IntelliJ-IDEA&lt;br /&gt;
&lt;br /&gt;
==== Список известных багов ====&lt;br /&gt;
* не поддерживается байткод, сгенерированный компилятором kotlin&lt;br /&gt;
* нет защиты от дурака при некорректных вызовах действия &amp;quot;Run to cursor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== Не сделано====&lt;br /&gt;
*  касты&lt;br /&gt;
* вызовы функций&lt;br /&gt;
* jump, зависящие от типов(в процессе)&lt;br /&gt;
* работа со ссылками&lt;br /&gt;
&lt;br /&gt;
==== Демо ====&lt;br /&gt;
[https://www.youtube.com/watch?v=1-366UGL-oc Видео] (не забудьте включить субтитры)&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15678</id>
		<title>Visual bytecode</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=Visual_bytecode&amp;diff=15678"/>
				<updated>2018-05-07T09:06:38Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Страница проекта visual bytecode для devdays весна 2018&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://github.com/demiurg906/asm-bytecode-intellij Ссылка на проект]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Учатники/роли ====&lt;br /&gt;
* Зубаков Алексей — человек-байткод, тимлид&lt;br /&gt;
* Голышев Роман — человек-стэк-машина jvm&lt;br /&gt;
* Новожилов Дмитрий — человек-плагин-для-IntelliJ-IDEA&lt;br /&gt;
&lt;br /&gt;
==== Список известных багов ====&lt;br /&gt;
* не поддерживается байткод, сгенерированный компилятором kotlin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Не сделано====&lt;br /&gt;
*  касты&lt;br /&gt;
* вызовы функций&lt;br /&gt;
* jump, зависящие от типов(в процессе)&lt;br /&gt;
* работа со ссылками&lt;br /&gt;
&lt;br /&gt;
==== Демо ====&lt;br /&gt;
[https://www.youtube.com/watch?v=1-366UGL-oc Видео] (не забудьте включить субтитры)&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15549</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=15549"/>
				<updated>2018-04-27T08:56:22Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* SpaceChem на Android */&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;
== Opus Magnum на Android ==&lt;br /&gt;
&lt;br /&gt;
Есть замечательная игрушка Opus Magnum ([https://store.steampowered.com/app/558990/Opus_Magnum/ страница в Steam]). Цель игры -- программировать реакторы, которые преобразуют одни химические соединения в другие. Каждый уровень игры представляет из себя бесконечное гексагональное поле на котором можно размещать манипуляторы, которые можно программировать, размещая на поле различные команды (подхватить атом, повернуть атом, двигаться в другом направлении, объединить атомы и другие). &lt;br /&gt;
&lt;br /&gt;
Для управления всем, что происходит в игре достаточно одной мыши, на прохождение уровня уходит от нескольких минут до нескольких часов (в зависимости от сложности поставленной задачи), что делает игру подходящей для мобильных платформ (можно посидеть подумать, пока едешь из Парнаса в Автово).&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=Uj689znjxpg/ ссылка на видео]&lt;br /&gt;
&lt;br /&gt;
Идея: портировать Opus Magnum на 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;
== Download Hell ==&lt;br /&gt;
&lt;br /&gt;
Часто мы качаем что-то с интернета и оно попадает в папку Downloads, и эта папка со временем превращается в помойку, но при этом часть файлов может быть всё-таки нужной, но искать их среди кучи хлама - не всегда приятно. &lt;br /&gt;
Давайте попробуем &amp;quot;умным&amp;quot; образом автоматизировать это дело -- программа будет пытаться автоматически распихивать новые файлы по директориям, основываясь на истории предыдущих перемещений (хотелось бы чуть менее тривиально, чем просто группировать по формату файла - существующие известные мне решения так и делают).&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;
&lt;br /&gt;
== Smart-contract authorization module == &lt;br /&gt;
&lt;br /&gt;
Сейчас модно говорить о блокчейне и смарт-контрактах, как это круто и полезно, что за этим будущее, и что технология имеет кучу применений в различных сферах.&lt;br /&gt;
Одним из полезных и жизненных применений смарт-контакта является аутентификация пользователей - абсолютно анонимно и практически неугоняемо злоумышленниками. &lt;br /&gt;
Так как технология относительно новая, все пилят свой велосипед.&lt;br /&gt;
Было бы здорово сделать готовый модуль (например, для Django), который позволял бы из коробки сделать на сайте смарт-авторизацию.&lt;br /&gt;
&lt;br /&gt;
Технологии: Python, Javascript, Solidity&lt;br /&gt;
&lt;br /&gt;
Предложила: Шеметова Екатерина&lt;br /&gt;
&lt;br /&gt;
== Password patterns == &lt;br /&gt;
&lt;br /&gt;
Известный факт - если пароль составлен по какому-либо правилу (даты, имена, 3 буковки + 4 цифры и т.д.), то можно существенно облегчить перебор и соответственно быстрее взломать аккаунт.&lt;br /&gt;
С точки зрения &amp;quot;светлой стороны&amp;quot; - при соответствии пароля паттерну можно сообщить пользователю о ненадёжности такого пароля.&lt;br /&gt;
Давайте используем наши новые знания по ML, проанализируем базы слитых паролей разных ресурсов и попробуем поискать такие паттерны.&lt;br /&gt;
&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;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Метки ==&lt;br /&gt;
&lt;br /&gt;
Мы снимаем видео занятий. Но нам нужно научиться фиксировать время, когда преподаватель переключает слайды или переходит к другой теме. Тогда научимся:&lt;br /&gt;
&lt;br /&gt;
* генерировать «contents» в описании на ютюбе&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;
&lt;br /&gt;
Игорь&lt;br /&gt;
&lt;br /&gt;
== Голосование ==&lt;br /&gt;
&lt;br /&gt;
Когда мы группой устраиваем опросы в телеграме, то используем &amp;lt;code&amp;gt;@vote&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;@pollrBot&amp;lt;/code&amp;gt;, которые позволяют выбрать только один вариант. Но что если половина группы хочет Пепси, половина — Колу. Но все не против чая?&lt;br /&gt;
&lt;br /&gt;
[https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4_%D0%A8%D1%83%D0%BB%D1%8C%D1%86%D0%B5 Метод Шульце] более точно отразит, чего мы хотим — в этом примере победит чай, который всех устраивает. Предлагается попить чаёк, поразбирать математику и написать нового бота.&lt;br /&gt;
&lt;br /&gt;
Игорь&lt;br /&gt;
&lt;br /&gt;
[[Файл:Schulze.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Ar shooter ==&lt;br /&gt;
&lt;br /&gt;
Предлагается написать шутер с дополненной реальностью.&lt;br /&gt;
Есть библиотека Openpose, позволяющая распозновать узловые точки тела человек, работает достаточно быстро и точно, но не достаточно быстро что бы работать на мобильных устройствах.&lt;br /&gt;
Предлагается написать мобильное приложение и серверную часть, которая будет разворачиваться на локальной машине игроков и обрабатывать потоковое видео/картинки с мобильных приложений.&lt;br /&gt;
&lt;br /&gt;
Openpose: https://github.com/CMU-Perceptual-Computing-Lab/openpose&lt;br /&gt;
&lt;br /&gt;
Лапко Данила&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15511</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=15511"/>
				<updated>2018-04-24T11:04:34Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Благотворительность 2.0 */&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;
Перед пользователем ставится задача и дается время на ее решение (не больше 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;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15500</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=15500"/>
				<updated>2018-04-23T19:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* SpaceChem на Android */&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;
== 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;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=Devdays_%D0%92%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=15499</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=15499"/>
				<updated>2018-04-23T19:08:06Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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;
== 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;
Предложил: Новожилов Дмитрий&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;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8_5SE_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14954</id>
		<title>Формальные языки 5SE весна 2018</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=%D0%A4%D0%BE%D1%80%D0%BC%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8_5SE_%D0%B2%D0%B5%D1%81%D0%BD%D0%B0_2018&amp;diff=14954"/>
				<updated>2018-03-05T07:14:59Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Практика Вербицкая */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Лекции ==&lt;br /&gt;
Преподаватель: Дворкин Михаил Эдуардович ('''mikhail.dvorkin@gmail.com''')&lt;br /&gt;
&lt;br /&gt;
== Практика Слабодкин ==&lt;br /&gt;
&lt;br /&gt;
Преподаватель: Слабодкин Михаил ('''slabodkinm@gmail.com ''')&lt;br /&gt;
&lt;br /&gt;
== Практика Вербицкая ==&lt;br /&gt;
&lt;br /&gt;
Преподаватель: Вербицкая Екатерина ('''kajigor@gmail.com''')&lt;br /&gt;
&lt;br /&gt;
Префикс для темы писем с домашками: [FL_SPbAU]&lt;br /&gt;
&lt;br /&gt;
== Ссылки ==&lt;br /&gt;
&lt;br /&gt;
* Важная книга: Хопкрофт, Мотвани, Ульман. Введение в теорию автоматов, языков и вычислений.&lt;br /&gt;
* [http://neerc.ifmo.ru/wiki/index.php?title=Теория_формальных_языков]&lt;br /&gt;
* [http://www.ics.uci.edu/~goodrich/teach/cs162/notes/]&lt;br /&gt;
* [http://www.eecs.wsu.edu/~ananth/CptS317/]&lt;br /&gt;
* [http://users.utu.fi/jkari/automata/fullnotes.pdf]&lt;br /&gt;
* [http://yeputons.net/spbau/term4/formal_languages-lectures.pdf]&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13656</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13656"/>
				<updated>2017-11-07T12:29:36Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Идея */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Идея ==&lt;br /&gt;
&lt;br /&gt;
Хочется реализовать систему, которая позволяет, с одной стороны, вести студентам конспект по алгоритмам в удобном для написания формате markdown документов (писать LaTeX документы на лекции -- это ужасно), а с другой стороны автоматически собирает содержимое написанных лекций в красивый и удобный сайт, с которым повторение прошедших лекций превращается в приятный и увлекательный процесс.&lt;br /&gt;
&lt;br /&gt;
[https://xamgore.github.io/au-conspectus/ Посмотреть конспект]&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>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13639</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13639"/>
				<updated>2017-11-07T09:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13634</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13634"/>
				<updated>2017-11-07T08:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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;
Баг-трекер: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
Конспект: https://xamgore.github.io/au-conspectus/&lt;br /&gt;
Видео: https://youtu.be/FAAeSM95ws0 (внимание, включите субтитры)&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13617</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13617"/>
				<updated>2017-11-06T23:27:00Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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;
Баг-трекер: https://github.com/xamgore/au-conspectus/issues&lt;br /&gt;
Конспект: https://xamgore.github.io/au-conspectus/&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13555</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13555"/>
				<updated>2017-11-03T13:06:32Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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;
# Термины в сплывающих окошках не всегда соответствуют действительности и зачастую смешные, а не полезные&lt;br /&gt;
# Не работает крутая кнопочка &amp;quot;report mistake&amp;quot;&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>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13546</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13546"/>
				<updated>2017-11-03T05:35:06Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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 отказывается хостить страницы&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>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13545</id>
		<title>AU-conspectus</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=AU-conspectus&amp;diff=13545"/>
				<updated>2017-11-03T05:27:33Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &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: 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>Novozhilov</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=13407</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=13407"/>
				<updated>2017-10-27T05:08:39Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: /* Конспект по алгоритмам */&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>Novozhilov</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=13362</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=13362"/>
				<updated>2017-10-25T09:22:28Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: Новая страница: «= Темы проектов =  Чтобы править эту страницу, нужно залогиниться в Sewiki. Тогда сверху буде…»&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;
&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;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=13361</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=13361"/>
				<updated>2017-10-25T09:10:23Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Учебная информация =&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1ptfSS41rO5LyCCUhdhyS0sO1Zmacn1pLZQwWj6NFOOE/edit?usp=sharing Программа обучения. 1-3 курсы (набор 2014)]&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/11qKdUZ1UCS2YbMQI8rvCFmpiigWLCh5dWqqufBPMUQQ/edit?usp=sharing Программа обучения. 1-2 курсы (набор 2015)]&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vQzDshp_R887ftaYeG0L4s7BZTpH1gf5h7w-MDGlzNh5h2zRh1yfeRAg5dY4AQ8B2AH4ULa4uQLTB1x/pubhtml# Расписание (осень 2017)]&lt;br /&gt;
&lt;br /&gt;
== 1 курс ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1bCTXQSemGX9Owdb_XEyTqvnBxV_xLapfPZ_cZrhzdpE/edit?usp=sharing Распределение по группам, математика]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1yRhAlqBRNVReAE4Zh1rDMKNzvvaeVAMRqwadyIRWQmI/edit?usp=sharing Распределение по группам, С++]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1brWQ7gS_8jXiragOKjizv7zYnzR6EmZ5Ytt8wNK4Elk/edit?usp=sharing Распределение по группам, алгоритмы]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_1MIT_осень2017|Алгебра]]&lt;br /&gt;
# [[Алгоритмы_1MIT_осень2017| Алгоритмы]]&lt;br /&gt;
# [[Парадигмы_1MIT_осень2017| Парадигмы и языки программирования]]&lt;br /&gt;
# [[Мат.Анализ_1MIT_осень2017|Математический анализ]]&lt;br /&gt;
# [[Основы_ДМ_и_МЛ_1MIT_осень2017|Основы дискретной математики и математической логики]]&lt;br /&gt;
# [[С++_1MIT_осень2017|С++]]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_phys_1_осень_2017|Алгебра (для студентов-физиков)]]&lt;br /&gt;
&lt;br /&gt;
== 2 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Java_2MIT_осень_2017| Java]]&lt;br /&gt;
# [[Алгебра_2MIT_осень_2017|Алгебра]]&lt;br /&gt;
# [[Алгоритмы_2MIT_осень_2017|Алгоритмы]]&lt;br /&gt;
# [[ФП_2MIT_осень_2017|Функциональное программирование]]&lt;br /&gt;
# [[Мат_анализ_2MIT_осень_2017|Математический анализ]]&lt;br /&gt;
# [[Архитектура_ЭВМ_2MIT_осень_2017|Архитектура ЭВМ]]&lt;br /&gt;
# [[Дискретная_математика_2MIT_осень_2017|Дискретная математика]]&lt;br /&gt;
# [[Проект_Java_2MIT_осень_2017| Проект Java]]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_phys_2_осень_2017|Алгебра (для студентов-физиков)]]&lt;br /&gt;
&lt;br /&gt;
== 3 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Software_Engineering_3MIT_осень_2017|Software Engineering]]&lt;br /&gt;
# [[Алгоритмы_3_3MIT_осень_2017|Алгоритмы]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Дифференциальные_уравнения_3MIT_осень_2017|Дифференциальные уравнения]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Формальные_языки_3MIT_осень_2017|Формальные языки]]&lt;br /&gt;
# [[Linux_kernel_3MIT_осень_2017|Программирование в ядре Linux]]&lt;br /&gt;
# [[Алгоритмы_для_NP_трудных_задач_осень_2017|Алгоритмы для NP трудных задач]]&lt;br /&gt;
# [[Методы_оптимизации_3MIT_осень_2017|Методы оптимизации]]&lt;br /&gt;
# [[Мат_статистика_3MIT_осень_2017|Математическая статистика]]&lt;br /&gt;
# [[Программирование_в_ROS_осень_2017|Программирование в ROS]]&lt;br /&gt;
&lt;br /&gt;
== 4 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Компьютерная_графика_осень_2017|Компьютерная графика]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[Вычислительная_геометрия_осень_2017|Вычислительная геометрия]]&lt;br /&gt;
# [[Метавычисления_4MIT_осень_2017|Метавычисления]]&lt;br /&gt;
# [[Программирование_с_зависимыми_типами_осень_2017|Программирование с зависимыми типами]]&lt;br /&gt;
# [[Логическое_и_реляционное_программирование_4MIT_осень_2017|Логическое и реляционное программирование]]&lt;br /&gt;
# [[Алгоритмы_для_NP_трудных_задач_осень_2017|Алгоритмы для NP трудных задач]]&lt;br /&gt;
# [[Криптографические_протоколы_4MIT_осень_2017|Криптографические протоколы]]&lt;br /&gt;
# [[Deep_learning_осень_2017|Глубинное обучение]]&lt;br /&gt;
# [[Программирование_в_ROS_осень_2017|Программирование в ROS]]&lt;br /&gt;
# [[Машинное_обучение_2_осень_2017|Машинное обучение-2]]&lt;br /&gt;
# [[Графические_интерфейсы_осень_2017|Графические интерфейсы]]&lt;br /&gt;
# [[Информационный_поиск_осень_2017|Информационный поиск]]&lt;br /&gt;
# [[VM_осень_2017|VM]]&lt;br /&gt;
&lt;br /&gt;
== 5 курс ==&lt;br /&gt;
# [[Unix_и_скриптовые_языки_5SE_осень_2017|Unix и скриптовые языки]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[Алгоритмы_и_структуры_данных_5SE_осень_2017|Алгоритмы и структуры данных]]&lt;br /&gt;
# [[ФП_5SE_осень_2017|Функциональное программирование]]&lt;br /&gt;
# [[OS_5SE_осень_2017|Операционные системы]]&lt;br /&gt;
# [[Основы_программной_инженерии_5SE_осень_2017|Основы программной инженерии]]&lt;br /&gt;
# [[Комбинаторика_и_теория графов_5SE_осень_2017|Комбинаторика и теория графов]]&lt;br /&gt;
# [[CPP_5SE_осень_2017|C++]]&lt;br /&gt;
&lt;br /&gt;
== 6 курс ==&lt;br /&gt;
# [[Компьютерная_графика_осень_2017|Компьютерная графика]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Вычислительная_геометрия_осень_2017|Вычислительная геометрия]]&lt;br /&gt;
# [[Параллельные_и_распределенные_вычисления_6SE_осень_2017|Параллельные и распределенные вычисления]]&lt;br /&gt;
# [[Программирование_с_зависимыми_типами_осень_2017|Программирование с зависимыми типами]]&lt;br /&gt;
# [[Java-II_6SE_осень_2017|Java-II]]&lt;br /&gt;
# [[Deep_learning_осень_2017|Глубинное обучение]]&lt;br /&gt;
# [[Машинное_обучение_2_осень_2017|Машинное обучение-2]]&lt;br /&gt;
# [[Графические_интерфейсы_осень_2017|Графические интерфейсы]]&lt;br /&gt;
# [[Информационный_поиск_осень_2017|Информационный поиск]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[VM_осень_2017|VM]]&lt;br /&gt;
&lt;br /&gt;
= Всякая информация =&lt;br /&gt;
&lt;br /&gt;
Открытые исходящие порты в AcademFree/WirelessForAll: 22, 25, 80, 110, 443, 465, 993, 4244, 5190, 5222, 5242&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Важные ссылки =&lt;br /&gt;
&lt;br /&gt;
== [[Практики и НИР|Практики и НИР]] ==&lt;br /&gt;
== [[Дипломные работы|Дипломные работы]] ==&lt;br /&gt;
== [[Devdays_Осень_2017|Дни разработчика (Осень 2017)]] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Архив =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:hide}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Учебная информация за прошлые семестры==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Осень_2017|Осенний семестр 2017]]&lt;br /&gt;
* [[Весна_2017|Весенний семестр 2017]]&lt;br /&gt;
* [[Осень_2016|Осенний семестр 2016]]&lt;br /&gt;
* [[Весна_2016|Весенний семестр 2016]]&lt;br /&gt;
* [[Осень_2015|Осенний семестр 2015]]&lt;br /&gt;
* [[Весна_2015|Весенний семестр 2015]]&lt;br /&gt;
* [[Осень_2014|Осенний семестр 2014]]&lt;br /&gt;
* [[Весна_2014|Весенний семестр 2014]]&lt;br /&gt;
* [[Осень_2013|Осенний семестр 2013]]&lt;br /&gt;
* [[Весна_2013|Весенний семестр 2013]]&lt;br /&gt;
* [[Осень_2012|Осенний семестр 2012]]&lt;br /&gt;
* [[Весна_2012|Весенний семестр 2012]]&lt;br /&gt;
* [[Осень_2011|Осенний семестр 2011]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:show}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Дни разработчика==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Devdays2h2012| Дни разработчика (Осень 2012)]]&lt;br /&gt;
* [[Devdays1h2013| Дни разработчика (Весна 2013)]]&lt;br /&gt;
* [[devdays_fall_2013| Дни разработчика (Осень 2013)]]&lt;br /&gt;
* [[devdays_spring_2014| Дни разработчика (Весна 2014)]]&lt;br /&gt;
* [[ prpojects_fall_2013|Странички проектов (Осень 2013)]]&lt;br /&gt;
* [[ prpojects_spring_2014|Страничка проектов (Весна 2014)]]&lt;br /&gt;
* [[devdays_fall_2014|Дни разработчика (Осень 2014)]]&lt;br /&gt;
* [[projects_fall_2014|Страничка проектов (Осень 2014)]]&lt;br /&gt;
* [[devdays_spring_2015|Дни разработчика (Весна 2015)]]&lt;br /&gt;
* [[Devdays_Весна_2017|Дни разработчика (Весна 2017)]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:hide}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Студенты==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[2010|Набор 2010-го года]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
* [[2012|Набор 2012-го года]]&lt;br /&gt;
* [[2013|Набор 2013-го года]]&lt;br /&gt;
* [[2014|Набор 2014-го года]]&lt;br /&gt;
* [[2015|Набор 2015-го года]]&lt;br /&gt;
* [[2016|Набор 2016-го года]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Дополнительно = &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=13360</id>
		<title>SE Wiki</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=SE_Wiki&amp;diff=13360"/>
				<updated>2017-10-25T09:09:36Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Учебная информация =&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/1ptfSS41rO5LyCCUhdhyS0sO1Zmacn1pLZQwWj6NFOOE/edit?usp=sharing Программа обучения. 1-3 курсы (набор 2014)]&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/11qKdUZ1UCS2YbMQI8rvCFmpiigWLCh5dWqqufBPMUQQ/edit?usp=sharing Программа обучения. 1-2 курсы (набор 2015)]&lt;br /&gt;
&lt;br /&gt;
* [https://docs.google.com/spreadsheets/d/e/2PACX-1vQzDshp_R887ftaYeG0L4s7BZTpH1gf5h7w-MDGlzNh5h2zRh1yfeRAg5dY4AQ8B2AH4ULa4uQLTB1x/pubhtml# Расписание (осень 2017)]&lt;br /&gt;
&lt;br /&gt;
== 1 курс ==&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1bCTXQSemGX9Owdb_XEyTqvnBxV_xLapfPZ_cZrhzdpE/edit?usp=sharing Распределение по группам, математика]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1yRhAlqBRNVReAE4Zh1rDMKNzvvaeVAMRqwadyIRWQmI/edit?usp=sharing Распределение по группам, С++]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/document/d/1brWQ7gS_8jXiragOKjizv7zYnzR6EmZ5Ytt8wNK4Elk/edit?usp=sharing Распределение по группам, алгоритмы]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_1MIT_осень2017|Алгебра]]&lt;br /&gt;
# [[Алгоритмы_1MIT_осень2017| Алгоритмы]]&lt;br /&gt;
# [[Парадигмы_1MIT_осень2017| Парадигмы и языки программирования]]&lt;br /&gt;
# [[Мат.Анализ_1MIT_осень2017|Математический анализ]]&lt;br /&gt;
# [[Основы_ДМ_и_МЛ_1MIT_осень2017|Основы дискретной математики и математической логики]]&lt;br /&gt;
# [[С++_1MIT_осень2017|С++]]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_phys_1_осень_2017|Алгебра (для студентов-физиков)]]&lt;br /&gt;
&lt;br /&gt;
== 2 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Java_2MIT_осень_2017| Java]]&lt;br /&gt;
# [[Алгебра_2MIT_осень_2017|Алгебра]]&lt;br /&gt;
# [[Алгоритмы_2MIT_осень_2017|Алгоритмы]]&lt;br /&gt;
# [[ФП_2MIT_осень_2017|Функциональное программирование]]&lt;br /&gt;
# [[Мат_анализ_2MIT_осень_2017|Математический анализ]]&lt;br /&gt;
# [[Архитектура_ЭВМ_2MIT_осень_2017|Архитектура ЭВМ]]&lt;br /&gt;
# [[Дискретная_математика_2MIT_осень_2017|Дискретная математика]]&lt;br /&gt;
# [[Проект_Java_2MIT_осень_2017| Проект Java]]&lt;br /&gt;
&lt;br /&gt;
# [[Алгебра_phys_2_осень_2017|Алгебра (для студентов-физиков)]]&lt;br /&gt;
&lt;br /&gt;
== 3 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Software_Engineering_3MIT_осень_2017|Software Engineering]]&lt;br /&gt;
# [[Алгоритмы_3_3MIT_осень_2017|Алгоритмы]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Дифференциальные_уравнения_3MIT_осень_2017|Дифференциальные уравнения]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Формальные_языки_3MIT_осень_2017|Формальные языки]]&lt;br /&gt;
# [[Linux_kernel_3MIT_осень_2017|Программирование в ядре Linux]]&lt;br /&gt;
# [[Алгоритмы_для_NP_трудных_задач_осень_2017|Алгоритмы для NP трудных задач]]&lt;br /&gt;
# [[Методы_оптимизации_3MIT_осень_2017|Методы оптимизации]]&lt;br /&gt;
# [[Мат_статистика_3MIT_осень_2017|Математическая статистика]]&lt;br /&gt;
# [[Программирование_в_ROS_осень_2017|Программирование в ROS]]&lt;br /&gt;
&lt;br /&gt;
== 4 курс ==&lt;br /&gt;
&lt;br /&gt;
# [[Компьютерная_графика_осень_2017|Компьютерная графика]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[Вычислительная_геометрия_осень_2017|Вычислительная геометрия]]&lt;br /&gt;
# [[Метавычисления_4MIT_осень_2017|Метавычисления]]&lt;br /&gt;
# [[Программирование_с_зависимыми_типами_осень_2017|Программирование с зависимыми типами]]&lt;br /&gt;
# [[Логическое_и_реляционное_программирование_4MIT_осень_2017|Логическое и реляционное программирование]]&lt;br /&gt;
# [[Алгоритмы_для_NP_трудных_задач_осень_2017|Алгоритмы для NP трудных задач]]&lt;br /&gt;
# [[Криптографические_протоколы_4MIT_осень_2017|Криптографические протоколы]]&lt;br /&gt;
# [[Deep_learning_осень_2017|Глубинное обучение]]&lt;br /&gt;
# [[Программирование_в_ROS_осень_2017|Программирование в ROS]]&lt;br /&gt;
# [[Машинное_обучение_2_осень_2017|Машинное обучение-2]]&lt;br /&gt;
# [[Графические_интерфейсы_осень_2017|Графические интерфейсы]]&lt;br /&gt;
# [[Информационный_поиск_осень_2017|Информационный поиск]]&lt;br /&gt;
# [[VM_осень_2017|VM]]&lt;br /&gt;
&lt;br /&gt;
== 5 курс ==&lt;br /&gt;
# [[Unix_и_скриптовые_языки_5SE_осень_2017|Unix и скриптовые языки]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[Алгоритмы_и_структуры_данных_5SE_осень_2017|Алгоритмы и структуры данных]]&lt;br /&gt;
# [[ФП_5SE_осень_2017|Функциональное программирование]]&lt;br /&gt;
# [[OS_5SE_осень_2017|Операционные системы]]&lt;br /&gt;
# [[Основы_программной_инженерии_5SE_осень_2017|Основы программной инженерии]]&lt;br /&gt;
# [[Комбинаторика_и_теория графов_5SE_осень_2017|Комбинаторика и теория графов]]&lt;br /&gt;
# [[CPP_5SE_осень_2017|C++]]&lt;br /&gt;
&lt;br /&gt;
== 6 курс ==&lt;br /&gt;
# [[Компьютерная_графика_осень_2017|Компьютерная графика]]&lt;br /&gt;
# [[Альтернативные_языки_для_JVM_осень_2017|Альтернативные языки для JVM]]&lt;br /&gt;
# [[Вычислительная_геометрия_осень_2017|Вычислительная геометрия]]&lt;br /&gt;
# [[Параллельные_и_распределенные_вычисления_6SE_осень_2017|Параллельные и распределенные вычисления]]&lt;br /&gt;
# [[Программирование_с_зависимыми_типами_осень_2017|Программирование с зависимыми типами]]&lt;br /&gt;
# [[Java-II_6SE_осень_2017|Java-II]]&lt;br /&gt;
# [[Deep_learning_осень_2017|Глубинное обучение]]&lt;br /&gt;
# [[Машинное_обучение_2_осень_2017|Машинное обучение-2]]&lt;br /&gt;
# [[Графические_интерфейсы_осень_2017|Графические интерфейсы]]&lt;br /&gt;
# [[Информационный_поиск_осень_2017|Информационный поиск]]&lt;br /&gt;
# [[Базы_данных_(Барашев)_осень_2017|Базы Данных (Барашев)]]&lt;br /&gt;
# [[Базы_данных_(Чернышев)_осень_2017|Базы Данных (Чернышев)]]&lt;br /&gt;
# [[VM_осень_2017|VM]]&lt;br /&gt;
&lt;br /&gt;
= Всякая информация =&lt;br /&gt;
&lt;br /&gt;
Открытые исходящие порты в AcademFree/WirelessForAll: 22, 25, 80, 110, 443, 465, 993, 4244, 5190, 5222, 5242&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;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:hide}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Учебная информация за прошлые семестры==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Осень_2017|Осенний семестр 2017]]&lt;br /&gt;
* [[Весна_2017|Весенний семестр 2017]]&lt;br /&gt;
* [[Осень_2016|Осенний семестр 2016]]&lt;br /&gt;
* [[Весна_2016|Весенний семестр 2016]]&lt;br /&gt;
* [[Осень_2015|Осенний семестр 2015]]&lt;br /&gt;
* [[Весна_2015|Весенний семестр 2015]]&lt;br /&gt;
* [[Осень_2014|Осенний семестр 2014]]&lt;br /&gt;
* [[Весна_2014|Весенний семестр 2014]]&lt;br /&gt;
* [[Осень_2013|Осенний семестр 2013]]&lt;br /&gt;
* [[Весна_2013|Весенний семестр 2013]]&lt;br /&gt;
* [[Осень_2012|Осенний семестр 2012]]&lt;br /&gt;
* [[Весна_2012|Весенний семестр 2012]]&lt;br /&gt;
* [[Осень_2011|Осенний семестр 2011]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:show}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Дни разработчика==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[Devdays2h2012| Дни разработчика (Осень 2012)]]&lt;br /&gt;
* [[Devdays1h2013| Дни разработчика (Весна 2013)]]&lt;br /&gt;
* [[devdays_fall_2013| Дни разработчика (Осень 2013)]]&lt;br /&gt;
* [[devdays_spring_2014| Дни разработчика (Весна 2014)]]&lt;br /&gt;
* [[ prpojects_fall_2013|Странички проектов (Осень 2013)]]&lt;br /&gt;
* [[ prpojects_spring_2014|Страничка проектов (Весна 2014)]]&lt;br /&gt;
* [[devdays_fall_2014|Дни разработчика (Осень 2014)]]&lt;br /&gt;
* [[projects_fall_2014|Страничка проектов (Осень 2014)]]&lt;br /&gt;
* [[devdays_spring_2015|Дни разработчика (Весна 2015)]]&lt;br /&gt;
* [[Devdays_Весна_2017|Дни разработчика (Весна 2017)]]&lt;br /&gt;
* [[Devdays_Осень_2017|Дни разработчика (Осень 2017)]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; data-expandtext=&amp;quot;{{int:show}}&amp;quot; data-collapsetext=&amp;quot;{{int:hide}}&amp;quot; style=&amp;quot;width:45em;&amp;quot;&amp;gt;&lt;br /&gt;
==Студенты==&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [[2010|Набор 2010-го года]]&lt;br /&gt;
* [[2011|Набор 2011-го года]]&lt;br /&gt;
* [[2012|Набор 2012-го года]]&lt;br /&gt;
* [[2013|Набор 2013-го года]]&lt;br /&gt;
* [[2014|Набор 2014-го года]]&lt;br /&gt;
* [[2015|Набор 2015-го года]]&lt;br /&gt;
* [[2016|Набор 2016-го года]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Дополнительно = &lt;br /&gt;
* [[Q&amp;amp;A]]&lt;br /&gt;
* [[Мероприятия]]&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	<entry>
		<id>http://mit.spbau.ru/sewiki/index.php?title=OS_5SE_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13356</id>
		<title>OS 5SE осень 2017</title>
		<link rel="alternate" type="text/html" href="http://mit.spbau.ru/sewiki/index.php?title=OS_5SE_%D0%BE%D1%81%D0%B5%D0%BD%D1%8C_2017&amp;diff=13356"/>
				<updated>2017-10-24T13:43:07Z</updated>
		
		<summary type="html">&lt;p&gt;Novozhilov: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Преподаватель: Кринкин Кирилл Владимирович&lt;br /&gt;
&lt;br /&gt;
Контакты: &amp;lt;code&amp;gt;[mailto:os-au@osll.ru os-au@osll.ru]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Live: https://slides.com/kirillkrinkin/deck/live&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''[https://github.com/OSLL/os-au-2017 Репозиторий курса на гитхабе]'''&lt;br /&gt;
** [https://github.com/OSLL/os-au-2017/tree/master/docs Презентации]&lt;br /&gt;
** [https://docs.google.com/spreadsheets/d/1dERdQc56nA9FXQKO6xW11bQ6osA41NofZSQbmU_i86o/edit Успеваемость]&lt;br /&gt;
&lt;br /&gt;
* '''[https://stepik.org/course/3636/syllabus Лабораторные работы]'''&lt;br /&gt;
** [http://mit.spbau.ru/sewiki/images/d/da/Os-dev-jos.pdf Русскоязыяное описание лабораторных работ]&lt;br /&gt;
** [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/lecture-notes-and-readings/ Задания лабораторных работ]:&lt;br /&gt;
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab1.pdf C, Assembly, Tools, and Bootstrapping]&lt;br /&gt;
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab2.pdf Memory Management]&lt;br /&gt;
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab3.pdf User Environments]&lt;br /&gt;
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab4.pdf Preemptive Multitasking]&lt;br /&gt;
**# [https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-828-operating-system-engineering-fall-2012/labs/MIT6_828F12_lab5.pdf Spawn and Shell]&lt;br /&gt;
&lt;br /&gt;
* '''Учебные материалы''' (дополнительные модули содержат хорошие источники):&lt;br /&gt;
** [https://stepik.org/course/1780/syllabus «Операционные системы»]&lt;br /&gt;
** [https://stepik.org/course/253/syllabus «Введение в архитектуру ЭВМ. Элементы операционных систем»]&lt;br /&gt;
** [https://stepik.org/course/548/syllabus «Основы программирования для Linux»]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Как запустить vagrant, qemu, и запатчить решение&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    sudo vagrant up --provider=docker&lt;br /&gt;
    sudo vagrant ssh default&lt;br /&gt;
&lt;br /&gt;
Содержимое &amp;lt;code&amp;gt;conf/env.mk&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    QEMU=/usr/bin/qemu-system-i386&lt;br /&gt;
    QEMUEXTRA=-curses&lt;br /&gt;
&lt;br /&gt;
Параметр &amp;lt;code&amp;gt;QEMUEXTRA&amp;lt;/code&amp;gt; можно не ставить (и так даже лучше); вместо этого нужно запускать &amp;lt;code&amp;gt;QEMU&amp;lt;/code&amp;gt; с помощью &amp;lt;code&amp;gt;make qemu-nox&amp;lt;/code&amp;gt; - тогда &amp;lt;code&amp;gt;QEMU&amp;lt;/code&amp;gt; запустится прямо в вашей консоли и вы не будете страдать. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Если вам не хочется потом каждый раз удалять переменную &amp;lt;code&amp;gt;QEMUEXTRA&amp;lt;/code&amp;gt; из гит-диффа, можете создать линку на исполняемый файл под именем &amp;lt;code&amp;gt;qemu&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
    sudo ln /usr/bin/qemu-system-i386 /usr/bin/qemu&lt;br /&gt;
&lt;br /&gt;
После этого все будет находиться.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
При проблемах с gdb (типа &amp;lt;code&amp;gt;warning: File &amp;quot;/home/vagrant/lab/.gdbinit&amp;quot; auto-loading has been declined by your `auto-load safe-path' set to &amp;quot;$debugdir:$datadir/auto-load:/vagrant/lab/.gdbinit&amp;quot;.&amp;lt;/code&amp;gt;) действовать так, как он укажет: добавить в файл &amp;lt;code&amp;gt;/home/vargant/.gdbinit&amp;lt;/code&amp;gt; одну из двух строк: &lt;br /&gt;
&lt;br /&gt;
    add-auto-load-safe-path /home/vagrant/lab/.gdbinit  &lt;br /&gt;
    set auto-load safe-path / &lt;br /&gt;
&lt;br /&gt;
И так, и так работает.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Если у вас проблемы с дублированием букв внутри &amp;lt;code&amp;gt;QEMU&amp;lt;/code&amp;gt;, не паникуйте - просто проверьте команды &amp;lt;code&amp;gt;help&amp;lt;/code&amp;gt; и &amp;lt;code&amp;gt;kerninfo&amp;lt;/code&amp;gt; - скорее всего удваивание букв будет проигнорировано, и команды выполнятся.&lt;br /&gt;
&lt;br /&gt;
Для выхода из &amp;lt;code&amp;gt;QEMU&amp;lt;/code&amp;gt; используюйте сочетание клавиш &amp;lt;code&amp;gt;ctrl-a x&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Для создания файла с патчем работает следующая схема:&lt;br /&gt;
    &lt;br /&gt;
    sudo touch patch&lt;br /&gt;
    sudo chmod a+rw patch&lt;br /&gt;
    git diff &amp;gt; patch&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Совы не то, чем кажутся или The desc field contains the line number and the value contains the code address for the start of that source line:&lt;br /&gt;
http://www.sourceware.org/gdb/onlinedocs/stabs.html#Line-Numbers&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
При отправке патчей проверять сначала на своих репозиториях и следить за тем, чтобы концы строк были не ос-специфичными (типа \r\n на винде). С такими различиями патчи не применяются и падают с ошибкой&lt;br /&gt;
&lt;br /&gt;
Можно избежать проблемы с концами строк, если трансферить патч следующим образом: &lt;br /&gt;
&lt;br /&gt;
    vagrant ssh -c  &amp;quot;cat /home/vagrant/lab/patch&amp;quot; | dos2unix &amp;gt; patch&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Если вам лень вручную переносить изменения из виртуальной машины в файлы в вашем форкнутом репозитории, можете воспользоваться утилитой &amp;lt;code&amp;gt;patch&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
    cd solutions/${вставь_свою_фамилию}/lab1&lt;br /&gt;
    patch &amp;lt; your_patch_file&lt;br /&gt;
&lt;br /&gt;
Скорее всего, программа не поймет, где именно лежат ваши измененные файлы, и попросит указать пути к ним. Но это всяко лучше, чем руками копировать все это.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h5&amp;gt;Как припилить CLion и дебаггер&amp;lt;/h5&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Потребуется немного модифицировать Vagrantfile: нужно прокинуть порты (можно и директорию между хостовой и гостевой системами, но необязательно). Порт должен совпадать с тем, что указано в файле &amp;lt;code&amp;gt;lab/.gdbinit&amp;lt;/code&amp;gt;, в строке &amp;lt;code&amp;gt;target remote localhost:26000&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;ruby&amp;quot;&amp;gt;&lt;br /&gt;
# -*- mode: ruby -*-&lt;br /&gt;
# vi: set ft=ruby :&lt;br /&gt;
&lt;br /&gt;
Vagrant.configure(2) do |config|&lt;br /&gt;
  config.vm.network :forwarded_port, guest: 26000, host: 26000, host_ip: &amp;quot;127.0.0.1&amp;quot;, protocol: &amp;quot;tcp&amp;quot;, auto_correct: true&lt;br /&gt;
  config.vm.synced_folder &amp;quot;lab&amp;quot;, &amp;quot;/home/vagrant/lab&amp;quot;&lt;br /&gt;
  config.vm.provider &amp;quot;docker&amp;quot; do |d|&lt;br /&gt;
   d.has_ssh = true&lt;br /&gt;
   d.image = &amp;quot;osll/os_mooc:v1&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Файл:Clion debug os.png|300px|thumb|caption|Run → Edit configuration → «+»]]&lt;br /&gt;
&lt;br /&gt;
Далее нужно настроить сам Clion как на картинке справа + добавить CMakeLists.txt со следующим содержимым (список файлов придётся изменять с каждой новой лабой):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 3.9)&lt;br /&gt;
project(kernel)&lt;br /&gt;
&lt;br /&gt;
set(CMAKE_C_STANDARD 11)&lt;br /&gt;
&lt;br /&gt;
include_directories(.)&lt;br /&gt;
&lt;br /&gt;
set(SOURCE_FILES&lt;br /&gt;
        boot/boot.S&lt;br /&gt;
        boot/main.c&lt;br /&gt;
        boot/sign.pl&lt;br /&gt;
        inc/assert.h&lt;br /&gt;
        ...&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
add_executable(kernel ${SOURCE_FILES})&lt;br /&gt;
target_include_directories(kernel PRIVATE ${CMAKE_SOURCE_DIR})&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Дальше нужно запускать &amp;lt;code&amp;gt;make qemu-nox-gdb&amp;lt;/code&amp;gt;, ставить точку останова в clion и запускать debug. Если нет подключения к GDB, то неправильно настроены порты или неверно указан &amp;lt;code&amp;gt;Symbol file&amp;lt;/code&amp;gt; (он указывает на скомпилированный образ ядра). Если GDB запускается, но ничего не выводит, то можно приостновить дебаггер (pause), во вкладке &amp;quot;GDB&amp;quot; запустить &amp;lt;code&amp;gt;list cprintf&amp;lt;/code&amp;gt;, и GDB покажет, какой файл он ищет и не может найти; в соответствии с этим нужно настроить маппинг.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Novozhilov</name></author>	</entry>

	</feed>