Devdays Осень 2017 — различия между версиями
(→Конспект по алгоритмам) |
Anstreth (обсуждение | вклад) (→Публичный онлайн буффер обмена) |
||
(не показана 21 промежуточная версия 12 участников) | |||
Строка 1: | Строка 1: | ||
+ | = Общее = | ||
+ | |||
+ | [https://docs.google.com/spreadsheets/d/1VZr-beNDC437FnFNnh6Nrsj7GoTynWpdj9smb-iiqng/edit?usp=sharing Голосовалка] | ||
+ | |||
= Темы проектов = | = Темы проектов = | ||
Строка 7: | Строка 11: | ||
== Depth map from single view == | == Depth map from single view == | ||
+ | [[http://mit.spbau.ru/sewiki/index.php/Devdays_%D0%9E%D1%81%D0%B5%D0%BD%D1%8C_2017/depth_map Страничка проекта]] | ||
Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта. | Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта. | ||
Строка 40: | Строка 45: | ||
== Квантовый форсаж == | == Квантовый форсаж == | ||
+ | |||
+ | [[Квантовый форсаж]] | ||
Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка. | Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка. | ||
Строка 108: | Строка 115: | ||
== Плагин к Coq на kakoune / kakoune-mode к Emacs == | == Плагин к Coq на kakoune / kakoune-mode к Emacs == | ||
+ | |||
+ | Страница проекта: [[DevDays2017Fall-Cokoune]] | ||
Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется. | Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется. | ||
Строка 157: | Строка 166: | ||
Предложил Стребежев Игорь. | Предложил Стребежев Игорь. | ||
+ | |||
+ | Ссылка на проект [[AU-conspectus]] | ||
== "Горячий" поиск билетов == | == "Горячий" поиск билетов == | ||
Строка 167: | Строка 178: | ||
Насчет технологий точно ничего не скажу, т.к. опыта в таких вещах по минимуму, а вернее его вообще нет. :) | Насчет технологий точно ничего не скажу, т.к. опыта в таких вещах по минимуму, а вернее его вообще нет. :) | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Предложил: Милащенко Марк | Предложил: Милащенко Марк | ||
Строка 210: | Строка 203: | ||
== Java(assembly? postgresql?) jupyter kernel == | == Java(assembly? postgresql?) jupyter kernel == | ||
+ | [http://mit.spbau.ru/sewiki/index.php/Devdays_Осень_2017/jupyter_kernel страница проекта] | ||
Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри. | Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри. | ||
Строка 268: | Строка 262: | ||
Предложили: Тагир Гумеров, Наталья Мурычева | Предложили: Тагир Гумеров, Наталья Мурычева | ||
+ | |||
+ | == Читалка для часов == | ||
+ | |||
+ | Реализовать читалку на основе технологии Spritz для фитнесс-браслета. | ||
+ | |||
+ | [http://mit.spbau.ru/sewiki/index.php/WatchRead Страница проекта] | ||
+ | |||
+ | Предложила : Мурычева Наталья | ||
+ | |||
+ | == Умный мессенджер == | ||
+ | |||
+ | В современном мире практически каждый из нас зарегистрирован во многих мессенджерах и часто бывает непонятно в какой из них нужно отправлять сообщение, чтобы получатель как можно скорее увидел его. Неудобно самостоятельно выискивать в каком из мессенджерах получатель находится онлайн, поэтому предлагаю написать приложение, которое самостоятельно принимает решение в какой из мессенджеров отправлять сообщение (например туда, где получатель находится в режиме онлайн или, например, туда, где получатель был в самое ближайшее время). Можно реализовать как приложение под Android, IOS, так и под ПК. | ||
+ | |||
+ | Технологии: Java, Python (может что-то ещё). | ||
+ | |||
+ | Предложил: Калинин Владислав | ||
+ | |||
+ | == Рекомендательная система для ярлыков в почте == | ||
+ | |||
+ | Если вы пользуетесь ярлыками (например в <code>GMail</code>-е), чтобы сортировать свою почту, вы наверное замечали, что сам клиент не очень помогает с их присваиванием новым письмам (он просто выдает полный список с поиском по названию). Можно настроить автоматическое присваивание на основании каких-то правил (адресат, тема, ключевые слова), но это долго и лениво. | ||
+ | |||
+ | Было бы прикольно разработать плагин для почты, который бы на основании того, какие ярлыки вы присваивали до этого и куда, при поступлении нового письма автоматически формировал бы список предполагаемых ярлыков. | ||
+ | |||
+ | Поскольку ярлыки можно присваивать и самому, плагин должен переобучаться на основании новых ярлыков и принятых/отвергнутых рекомендаций. | ||
+ | |||
+ | Тут нужно какое-нибудь машинное обучение, но за три дня наверное можно разработать простенький классификатор. | ||
+ | |||
+ | Предложил: Голышев Роман | ||
+ | |||
+ | == Публичные онлайн буффера без смс == | ||
+ | |||
+ | [[Devdays_Осень_2017/shared_online_buffer | Страничка проекта]] | ||
+ | |||
+ | Когда на парах идет лайвкодинг, перепечатывать все с экрана бывает неудобно. Особенно когда ты неправильно расставил скобки где-то в Хаскеле, и пока ты искал ошибку, класс ушел очень далеко вперед и ты уже не понимаешь, о чем говорят эти люди. | ||
+ | |||
+ | Было бы удобно иметь веб-сайт вроде Pastebin, но не являющийся статическим, а например работающий на вебсокетах и отображающий изменения в размещённом тексте в реальном времени. | ||
+ | |||
+ | Работа с ним предполагается в таком ключе: преподаватель начинает пару, печатает и показывает что-то в своем редакторе текста, после чего копирует его содержимое и вставляет в текстовое поле в браузере. В начале пары он пишет на доске read-only-ссылку на данный текст. У всех студентов открыта эта ссылка, и в случае необходимости они могут просто скопировать код оттуда. | ||
+ | |||
+ | После закрытия данного текста владельцем он либо сохраняется как в Pastebin, либо удаляется, чтобы можно было особо не париться с хранением. | ||
+ | |||
+ | Технологии: можно сделать полностью на js (Node.js + какой-нибудь простенький фреймворк для фронтенда, чтобы руки не сильно пачкать). Насчет технологии для обновления текста у всех, кто наблюдает за пастой, не уверен, но это могут быть вебсокеты или что-то еще (в крайнем случае можно сделать и на обычном long-polling, но это не интересно). | ||
+ | |||
+ | Предложил: Голышев Роман | ||
+ | |||
+ | == Codemixer == | ||
+ | |||
+ | У студента АУ бывают моменты когда просто не обойтись без заимствования чужого когда. Например, если в домашке как часть задания требуется написать простой mergesort, но вы начали решать домашку за 5 минут до дедлайна, то было бы разумно взять mergesort со stackoverflow и для повышения оригинальности хотя бы переименовать переменные. | ||
+ | Предлагается избавить студентов от работы по повышению оригиналоьности кода и автоматизировать этот процесс для языка Python. | ||
+ | Технологии: python, ast, pymorphy. | ||
+ | |||
+ | Предложил: Лапко Данила |
Текущая версия на 12:07, 1 ноября 2017
Содержание
- 1 Общее
- 2 Темы проектов
- 2.1 Depth map from single view
- 2.2 Доработать децентрализованный мессенджер RetroShare
- 2.3 Умное сохранение музыки из ВКонтакте
- 2.4 Квантовый форсаж
- 2.5 Vassal online
- 2.6 DroidTuner
- 2.7 AnonyMesh
- 2.8 Добрый CryptoLocker
- 2.9 Коллективное предсказание продолжительности выполнения домашнего задания
- 2.10 Графы как часть разметки веб-страницы
- 2.11 Плагин к Coq на kakoune / kakoune-mode к Emacs
- 2.12 CRM-система для преподавателей и студентов
- 2.13 Синхронизация звукового потока
- 2.14 Конспект по алгоритмам
- 2.15 "Горячий" поиск билетов
- 2.16 Модифицированный бильярд
- 2.17 Codeforces bot
- 2.18 Java(assembly? postgresql?) jupyter kernel
- 2.19 Плагин для документации
- 2.20 Расшаривание ссылок на private репозитории
- 2.21 Just do eat
- 2.22 Поддержка дисциплины
- 2.23 Создание ликбеза по языкам программирования
- 2.24 Читалка для часов
- 2.25 Умный мессенджер
- 2.26 Рекомендательная система для ярлыков в почте
- 2.27 Публичные онлайн буффера без смс
- 2.28 Codemixer
Общее
Темы проектов
Чтобы править эту страницу, нужно залогиниться в Sewiki. Тогда сверху будет кнопочка "править". Если у вас нет учётной записи - напишите Игорю желаемый логин.
Редактировать wiki одновременно нескольким людям стоит осторожно: после внесения правки проверьте, что она действительно сохранилась.
Depth map from single view
Матрица глубины (depth map) - это некоторая матрица, каждый элемент которой содержит дальность до объекта. Другими словами, если имеется некотороые изображение, то матрица глубины говорит о том, какого расстояние до каждого нарисованного объекта.
Хочется строить матрицу глубины с одного изображения, без использования бинокулярного зрения или радаров.
Предложил: Никулин Данил
Децентрализованные мессенджеры представляют интерес тем (для любителей паранои :)), что не используют при своей работе подконтрольные третьим лицам центральные серверы. Для "регистрации" в сети пользователь создаёт пару открытый/закрытый ключ и передаёт открытый ключ тем, с кем хочет общаться. Находить IP собеседника достаточно эффективно можно с помощью DHT.
Мессенджеров, которые работаю по такому принципу, оказывается, не так и много -- я видел только RetroShare и Tox . Я Пробовал пользоваться RetroShare: там всё хорошо, но есть некоторые недоработки, например нет индикатора, дошло ли сообщение до собеседника, удобного диалога сохранения файла и т.д.
За три дня можно разобраться в исходниках и устранить подобные недостатки.
Предложил: Егоров Антон
Умное сохранение музыки из ВКонтакте
В нынешний век стриминговых сервисов наверняка есть люди, которые до сих пор скачивают музыку на компьютер и перекидывают ее в телефон/плеер для прослушивания в оффлайне.
В контакте существует множество пабликов с хорошей музыкой, однако почти всегда эта музыка просто прикрепляется к посту (мало кто пользуется плейлистами), соответственно, чтобы скачать эту музыку, нужно ставить плагин для браузера, скачивать попесенно или все со страницы на компьютер (желательно в папку с вменяемым названием), после чего перекидывать эту папку на телефон (напрямую, через яндекс.диск или другое облако).
Все это очень неудобно, а также сложно каталогизировать музыку по жанрам (учитывая, что один пост может содержать музыку из смеси жанров). Хочется реализовать сервис, который позволит все это автоматизировать.
Как я это вижу: где-то в облаке крутится сервер. Пользователь может поставить расширение для браузера, которое добавляет ко всем постам с музыкой кнопку "загрузить в облако". Дальше пользователь с мобильного приложения коннектится к этому облаку, где хранятся все сохраненные посты, которые можно сортировать по исполнителям и жанрам, которые вытаскиваются из тегов внутри поста. Каждую песню или пост можно либо слушать с подключением к интернету, либо скачать, чтобы слушать в оффлайне (как в старом приложении контакта, только с удобной каталогизацией).
Технологии: Java/Kotlin (для облака и мобильного приложения), js для расширения (кажется, что оно будет маленьким, так что js по минимуму)
Предложил: Новожилов Дмитрий
Квантовый форсаж
Квантовое лирическое отступление: в физике есть понятие: неопределенность Гейзенберга. Если не вдаваться в подробности, то существуют пары величин, которые нельзя измерить с идеальной точностью. Например, импульс и координата объекта. Можно написать формулу, которая будет утверждать, что произведение неопределенности координаты на неопределенность импульса должно быть больше некой константы, связанной с постоянной Планка.
Идея: написать простенькую 2D игру, где будет использоваться понятие неопределенности Гейзенберга.
Красивое описание для игроков: Далекое будущее. Технологии достигли такого уровня, что можно уменьшить космический корабль до размеров элементарных частиц. Однако такой корабль попадает под действие законов микромира. В этих условиях вам и предстоит управлять кораблем. Он должен пролететь через квантовые джунгли препятствий и не врезаться не во что. Сложность управления в неопределенности скорости корабля и его положения в пространстве. К счастью, есть специальные бонусы, чтобы контролировать эти величины.
Описание игры по существу: есть некий фон, на котором отрисовываются различные препятствия (геометрические объекты или подобие сталактитов и сталагмитов, на что фантазии хватит). Есть космический корабль, который летит вдоль этого фона. Корабль имеет два свойства: скорость и координату. Для простоты можно представить корабль в виде круга. Скорость и координата подчиняются неопределенности Гейзенберга.
Скорость может принимать значение из некоторого промежутка с какой-то вероятностью. По сути, скорость будет меняться скачками. Тоже самое с координатой. Есть некий ореол вокруг корабля в пространстве которого может случайно возникать корабль (само собой скачками). Чем сильнее меняется скорость, тем меньше меняется координата (ореол меньшего размера) и наоборот. Для изменения неопределенности будут появляться бонусы, которые можно съедать (но надо понимать, что меняя неопределенность одного свойства, мы автоматически меняем неопределенность другого).
Игрок управляет кораблем стрелками. Игра заканчивается в случае, если координата корабля совпала с координатой препятствия.
Технологии: какой-нибудь игровой движок, а вообще у меня опыта в разработке мало, поэтому, если кто-то предложит подходящий язык/технологию, то будет круто
Предложил: Тимашов Даниил
Vassal online
Давайте напишем легковесный движок в вебе для разработки настольных игр. Предложил: Кузиванов Николай
DroidTuner
Есть программы, которые позволяют тонко настраивать телефон, например - при считывании NFC-метки менять аудиопрофиль, запускать приложения, отправлять сообщения, заказывать ужин в ресторане и так далее. Проблема в том, что они либо хорошие, красивые, и даже предлагают свой язык для описания сценариев использования, но платные, либо имеют мало возможностей и не особо развиваются/мертвы. Давайте напишем бесплатную_без_смс_оупенсоурс версию такого приложения, и, конечно, не хуже, чем у алчных конкурентов. Предложил Макеев Владимир
AnonyMesh
Предлагается реализовать аналог двача, но без использования сети интернет - то есть по Bluetooth или Wifi-Direct. Вы создаете чат, к которому подключаются другие устройства поблизости и вместе обсуждаете насущные проблемы без возможности идентифицировать себя. Пример использования - анонимное голосование при принятии какого-либо решения в группе людей в дали от интернет-инфраструктуры. Предложил Макеев Владимир
Добрый CryptoLocker
Петя боится вирусов-вымогателей (ransomware). Но Петя при этом очень неосторожный человек и любит открывать письма с вложениями от неизвестных отправителей, поэтому уже выплатил злоумышленникам 10 биткойнов, чтобы расшифровать свои файлы. А ещё Петя - параноик. Он хочет зашифровать свои файлы, чтобы хакеры не смогли узнать его секреты, но при этом он сам смог в нужный момент их расшифровать. Помогите Пете написать программу - аналог CryptoLocker-а, но только добрый, для динамического шифрования собственных документов.
Для справки: CryptoLocker - это простейший вирус-вымогатель, который шифрует файлы с определёнными расширением (обычно офисные и pdf-ки) с помощью криптосистемы с открытым ключом. Закрытый ключ хранится на сервере злоумышленника. После попадания в систему вирус связывается с сервером, и с помощью полученного от него открытого ключа шифрует файлы нужного расширения. Затем выводится окно со счастливой новостью о заражении и ссылкой на сайт, где после оплаты можно расшифровать свои файлы.
Задачи: 1) Собственно сам шифровальщик (лучше минимально защититься от простейшего реверс-инжиниринга, например, генерить имя домена командного сервера, а не хранить его в строке) 2) Командный сервер с бд + сервер с сервисом расшифровки. 3) Также нужно, чтобы шифровальщик делал некоторые действия с OS (автозапуск + сбор информации), но это в идеале
Технологии: Более актуально для Windows. Но под Linux тоже можно будет попробовать. Язык - я за Python).
Предложила: Шеметова Екатерина
Коллективное предсказание продолжительности выполнения домашнего задания
Мне довелось слышать, как люди обмениваются в коридоре оценками того, сколько у кого уйдёт на выполнение того или иного домашнего задания. Но это легко формализуемая задача, которую можно автоматизировать.
Имеется хорошо изученный частный случай этой задачи: тот, когда все делают какие-то задачи сообща и при этом делают априорные оценки того, сколько времени на это уйдёт. Затем, когда задача выполнена и известно реальное количество затраченного времени, вычисляется отношение между временем ожидаемым и затраченным. Когда в следующий раз проводятся оценки того, сколько уйдёт времени, применяется этот коэффициент. Через несколько заходов, по-хорошему, оценки с некоторым коэффициентом приближаются к реальности. Почитать более развёрнуто можно тут: https://en.wikipedia.org/wiki/Burn_down_chart
Предлагается обобщить задачу так. Есть много людей, которые выполняют одну и ту же задачу, но не сообща, а параллельно. Когда один из них выполняет задачу, он сообщает, какое у него время ушло. При этом система запоминает, насколько один человек решил задачу некоторого типа быстрее, чем другой. И когда одну задачу несколько человек уже решило, система может предоставить остальным оценки того, сколько у них уйдёт на ту же самую задачу.
Упрощённый пример. Петя решает домашние задания по комбинаторике каждое за три часа, Вася -- за шесть. Но Вася решает алгоритмы (вместе с дополнительными задачами) за час, а Петя -- за восемь. И вот Вася выполнил очередной набор домашних заданий на этих выходных, затратив на алгоритмы полтора часа, а на комбинаторику -- четыре. Тогда Петя, зайдя в систему, обнаружит, что ему следует потратить около двух часов на комбинаторику и около десяти часов на алгоритмы.
Предложил Дмитрий Халанский.
Графы как часть разметки веб-страницы
Есть много библиотек, которые позволяют использовать на веб-страницах шаблоны, которые затем заполняются через JavaScript. К примеру, текст "{{user.isLoggedIn}}", размещённый где угодно на веб-странице, может превратиться в сложное дерево DOM-объектов, которое будет обновляться каждый раз, когда будет меняться значение переменной user.isLoggedIn. Известные примеры таких библиотек -- React и Vue.js.
Этот же подход можно применять и к тому, чтобы расширять набор средств отображения сведений на веб-странице. Простой пример, который и предлагается в качестве работы, -- это описание в тексте веб-страницы графа, вершинами которого могут быть произвольные DOM-объекты. В текстовых браузерах должно быть видно текстовое представление графа, в графических -- интерактивный граф.
Уже есть некоторые разработки по генерации графов из текстовых описаний -- к примеру, http://ushiroad.com/jsviz/ -- но нигде не было обнаружено такое, чтобы можно было представлять граф в виде обычного текста и при этом иметь в качестве вершин произвольные объекты DOM.
Предложил Халанский Дмитрий.
Плагин к Coq на kakoune / kakoune-mode к Emacs
Страница проекта: DevDays2017Fall-Cokoune
Это, признаюсь, то, что мне бы хотелось иметь самому, но вдруг, вдруг кто-то тоже заинтересуется.
kakoune -- современный текстовый редактор, убийца vim, последователь vi, который создавался с целью исправить ставшие за многие годы очевидными ошибки остальных модальных текстовых редакторов. Я пересел на kakoune после трёх лет очень активного использования vim и не пожалел. http://kakoune.org/
Coq -- самый популярный язык с зависимыми типами, который предназначен для доказательства математических утверждений с помощью компьютера, который запрещает пользователю доказать что-то, в чём компьютер не может быть уверен полностью.
При этом на Coq удобнее всего работать в emacs. Который после kakoune не кажется удобным вообще никак.
Возникает две возможные задачи. Первая -- написать для kakoune плагин, добавляющий поддержку Coq. Вторая -- написать для emacs плагин, который позволяет писать в нём так же, как в kakoune. Первая задача заключается в написании всеми любимых shell-скриптов (потому что kakoune управляется ими), вторая -- в написании кода на Emacs Lisp, который, пусть и в силу Emacs неудачный, всё же Lisp.
Предложил Халанский Дмитрий.
CRM-система для преподавателей и студентов
Цель проекта - объединить в единую экосистему аспекты взаимодействия участников образовательного процесса: электронный журнал, размещение домашних заданий, контролер дедлайнов и прочий функционал.
Доступ к системе с помощью веб-интерфейса (и мобильного приложения?).
Предполагаемый стэк технологий: фронтенд Angular2, бекенд NodeJS + Sequelize+ PostgreSQL (или полуфабрикат типа Firebase)
Предложил Чернышев Ярослав.
Синхронизация звукового потока
Часто возникает такая ситуация, когда вы хотите послушать музыку или посмотреть лекцию со Stepik’а со своими товарищами с одного телефона. Однако при этом не хотите мешать другим людям вокруг своим звуком или сидеть только с одним наушником. Поэтому я предлагаю разработать приложение для Android, которое будет синхронизировать звуковые потоки на нескольких устройствах.
По идее, всё должно работать так: одно из приложений будет некоторым сервером. Остальные, как клиенты, будут к нему подключаться (например по Bluetooth). После этого сервер будет передавать звуковой поток устройствам клиентов, каждый из которых сможет отдельно воспроизводить его.
Предложила Орищенко Александра.
Конспект по алгоритмам
На данный момент мы с Димой Новожиловым пишем конспекты по алгоритмам в формате markdown документов (с вставкой latex формул) и это не очень:
- Нет синхронизации — каждый ведёт конспект у себя на своей машине
- Трудно читать сырой markdown, а сгенерированные PDF'ки слишком широкие
- Дима иногда отсутствует на парах по алгоритмам, а мне лень вести конспект
Хочется сделать так, чтобы мы (и другие люди) вели работу через git, а при выполнении git push
автоматически из markdown документов генерировался сайт с мобильной версией и хостился где-то в интернете.
- Pandoc умеет конвертировать файлы (нужно научиться его настраивать)
- Git может запустить какой-нибудь скрипт, когда вы выполняете комманду
git commit
илиgit push
(здесь генерируется структура сайта) - Можно настроить github так, что когда в репозиторий делают push, происходит какая-нибудь полезная работа (здесь сайт выкладывается в публичный доступ)
Таким образом нам надо будет разобраться с Pandoc, Git hooks, Travis CI, HTML, CSS. Это всё довольно легко, за три дня можно управиться. Основная цель — поработать в команде, распараллелить задачи, получить рабочий проект.
Предложил Стребежев Игорь.
Ссылка на проект AU-conspectus
"Горячий" поиск билетов
Всем иногда приходится покупать авиабилеты. Причем иногда приходится покупать их за один-два дня до предполагаемой даты вылета. Очевидно, что билетов в такой ситуации может и не быть (или они будут по не очень приемлемой цене). В такой ситуации среднестатистическому пользователю ПК приходится судорожно следить за любыми изменениями в списке доступных билетов на ближайший день т.к. существует ненулевая вероятность того, что появится билет "вашей мечты" (например, кто-нибудь сдаст билет и т.д.).
В связи с чем предлагается написать программу/бота который в фоновом режиме следил бы за доступными билетами и в случае появления подходящего билета информировал об этом на телефон/e-mail или выводил большущее сообщение прямо на рабочий стол.
Наверняка подобные штуки уже есть, но вновь изобретать велосипед никто не запрещал.)
Насчет технологий точно ничего не скажу, т.к. опыта в таких вещах по минимуму, а вернее его вообще нет. :)
Предложил: Милащенко Марк
Модифицированный бильярд
Предлагается написать модифицированный бильярд. Отсутствуют лузы, но при соприкосновении битка с шарами их цвет/текстура меняется на пользовательский. Побеждает тот игрок, после хода которого все шары оказались покрашенными в его цвет.
Плюсы:
- можно играть целой компанией, а не только вдвоём;
- сложно предсказать результат игры, вполне возможно, что никто не победит и никто не расстроится, не обидится, не перестанет разговаривать;
- бильярд есть игра без активного участия, ее можно растянуть и доигрывать в любое удобное время. Можно спокойно прерваться и, например, оплатить заказ в столовой, или послушать информацию насчет толстовок.
Хотелось бы написать игру так, чтобы в неё можно было играть в телеграме, но я не уверен, можно ли будет в этом случае поддержать многопользовательский режим. Если что, можно придумать что-то хорошее и для игры соло. Ну или на крайний случай можно написать эту игру под андроид.
Предложил Александр Кузнецов
Codeforces bot
Светозар учится в АУ и усердно изучает алгоритмы. Он верит, что рано или поздно станет важной персоной в мире спортивного программирования, и сейчас его цель — продвинуться в топ на платформе Codeforces, на которой он зависает часами. Но есть одна проблема — Светозар очень много времени проводит в телеграме, так как постоянно либо общается на тему алгоритмов, либо спрашивает совет насчет операционных систем и питона, либо оценивает новые стикеры. Если на пк еще можно как-то быстро переключаться между приложениями, на телефоне это делать сложнее, поэтому ему было бы удобно, чтобы какие-то вещи, касаемые Codeforces, можно было делать прямо в телеграме. За те десять минут, которые Светозар смог выделить на поиск имеющихся решений, он не нашел ничего подходящего (все имеющиеся боты неактивны), и он пришел к выводу, что нужно написать бот самому.
Так как все мы немного Светозар (по крайней мере сейчас), возможно, эта идея покажется интересной.
Предложил Александр Кузнецов
Java(assembly? postgresql?) jupyter kernel
страница проекта Все просто: берем какой-нибудь яп и делаем для него jupyter kernel. Отличная возможность узнать получше как работает jupyter внутри.
Предложил Алексей Зубаков
Плагин для документации
Idea позволяет глянуть inline документацию для некоторых языков и этого зачастую достаточно для того, чтобы понять что делает метод. Но как быть с языками, для которых этой фичи нет? Приходится лезть в документацию. Чтобы не открывать сайт с документацией, есть [ https://zealdocs.org zealdox] и dash, последним я пользуюсь сам. Но человек я очень ленивый и хотелось бы выгружать документацию прямо в IDE в один клик.
Предложил Алексей Зубаков
Расшаривание ссылок на private репозитории
У всех есть приватные репозитории на GitHub/Bitbucket/GitLab и иногда их все-таки нужно показывать. Самый частый сценарий: вы устраиваетесь на работу, хочется показать какой-то pet-project, но добавлять каждого интервьюера в collaborators несколько накладно. Проще, наверное, было бы отправить ссылку, по которой только он может посмотреть ваш репозиторий.
Функционал такой, увы, не реализован, но можно попробовать сделать его самим.
Предложил Алексей Зубаков
Just do eat
Если ты очень крутой (или наоборот) программист, то тебе некогда думать о своем рационе питания и о том, что ты ешь, насколько это полезно, сколько там витаминов и т.д. Но ТЫЖПРОГРАММИСТ, поэтому можно написать приложение, которое будет делать это за тебя.
Примерное описание: приложение должно быть в курсе, что из продуктов у тебя есть и что ты ешь. При запросе будет выдавать список блюд/продуктов из имеющихся, которые желательно съесть на данный момент, чтобы твое питание было наиболее сбалансированным. Если это блюдо - то можно сразу получить рецепт/ссылку на рецепт. Можно также создать режим для похудения/набора веса.
Возможно, это немного уменьшит наши страдания.
Можно реализовать как приложение на Android, можно как приложение на ПК.
Технологии: наверняка понадобится сервер, на котором будет лежать информация о БЖУ/калориях/составах продуктов + выход в интрнет для поиска рецептов.
Предложила: Валерия Горячева
Поддержка дисциплины
Многим студентам СПбАУ сложно вставать по утрам, ложиться по вечерам, делать дз вовремя, находить время на поход в магазин и так далее (с чем то одним, наверняка, каждый встречался). Это большая проблема, и все решают ее по-разному, но в основном либо входят в некоторый режим, либо закрывают хвосты по учебе в последние часы перед дедлайнами. Многие пытаются отоспаться на выходных.
Идея - создать трекер привычек, который позволит довести повседневную жизнь во время учебы до автоматизма - полное расписание каждого дня, которое включает не только пары и время на дз, но и время подъема, отбоя, выделенное время похода в магазин, напоминалка о стирке вещей и другие повседневности. Вместо отсыпания на выходных - подъем каждый день в одно и то же время и так далее. Не важно, не можешь ли ты уснуть в 3 утра из-за мыслей о надвигающихся дедлайнах или просто приуныл - приложение говорит, что сейчас нужно делать. Расчет идет на то, что организм привыкнет и придется меньше заботиться о повседневностях.
Аналогов море, но я не смог найти приложение, которое бы заставляло делать что-то каждую минуту. Нет смысла делать убер швейцарский перочинный нож для спортсменов / программистов / студентов / преподавателей. Но и хардкодить расписание пар в код никто не собирается.
Приложение должно иметь минимальный необходимый функционал с возможностью подцепить полезные фичи, опять же не нагромождая велосипедов в сам код (например, я не хочу ботать алгоритмы конкретный день 4 часа подряд, а хочу разбить это домашнее задание на 6 часов с перерывами каждые полчаса - ок, цепляю модуль и ставлю галку "делать в режиме помидор"; python же наоборот - можно делать не отрываясь часа 2-3 - собственно некоторое дефолтное поведение). Также большой проблемой подобных приложений является предварительная настройка (я настраивал trello весь день, совмещая с другими делами). Для студентов можно сделать внешний модуль (или просто какой-нибудь JSON) со всем необходимым (расписание, мягкие/жесткие дедлайны, дополнительные активности, не вписывающиеся в еженедельный ритм, например devdays), чтобы в течении получаса можно было полностью откалибровать приложение под себя.
Технологии: вырисовывается мобильное приложение, чтобы всегда имелось под рукой, начальная идея с telegram ботом уже не кажется такой привлекательной.
Предложил: Тагир Гумеров
Создание ликбеза по языкам программирования
Проблема: по большинству языков сложно вести конспект, иногда из-за интенсивного повествования, иногда из-за веры в рассылку pdf преподавателями после пар. Происходит что-то в духе "у нас было 10 ipynb документов, 5 исходников на haskell, около сотни header и source файлов и целая россыпь pdf с семинаров, лекций и дз". Несколько рабочих столов или вкладок решают, но глобальный поиск все равно не запустишь.
Задача: создать справочник по яп, которые мы проходим. Не документация, но и не stackoverflow. В точности то, что нам преподается. Можно автоматизировать парсинг pdf файлов и так далее.
Реализация - все, что кажется в повседневном использовании удобнее, чем 3-4 файла pdf и парочка открытых папок с исходниками. Скорее всего десктоп, может веб.
Предложили: Тагир Гумеров, Наталья Мурычева
Читалка для часов
Реализовать читалку на основе технологии Spritz для фитнесс-браслета.
Предложила : Мурычева Наталья
Умный мессенджер
В современном мире практически каждый из нас зарегистрирован во многих мессенджерах и часто бывает непонятно в какой из них нужно отправлять сообщение, чтобы получатель как можно скорее увидел его. Неудобно самостоятельно выискивать в каком из мессенджерах получатель находится онлайн, поэтому предлагаю написать приложение, которое самостоятельно принимает решение в какой из мессенджеров отправлять сообщение (например туда, где получатель находится в режиме онлайн или, например, туда, где получатель был в самое ближайшее время). Можно реализовать как приложение под Android, IOS, так и под ПК.
Технологии: Java, Python (может что-то ещё).
Предложил: Калинин Владислав
Рекомендательная система для ярлыков в почте
Если вы пользуетесь ярлыками (например в GMail
-е), чтобы сортировать свою почту, вы наверное замечали, что сам клиент не очень помогает с их присваиванием новым письмам (он просто выдает полный список с поиском по названию). Можно настроить автоматическое присваивание на основании каких-то правил (адресат, тема, ключевые слова), но это долго и лениво.
Было бы прикольно разработать плагин для почты, который бы на основании того, какие ярлыки вы присваивали до этого и куда, при поступлении нового письма автоматически формировал бы список предполагаемых ярлыков.
Поскольку ярлыки можно присваивать и самому, плагин должен переобучаться на основании новых ярлыков и принятых/отвергнутых рекомендаций.
Тут нужно какое-нибудь машинное обучение, но за три дня наверное можно разработать простенький классификатор.
Предложил: Голышев Роман
Публичные онлайн буффера без смс
Когда на парах идет лайвкодинг, перепечатывать все с экрана бывает неудобно. Особенно когда ты неправильно расставил скобки где-то в Хаскеле, и пока ты искал ошибку, класс ушел очень далеко вперед и ты уже не понимаешь, о чем говорят эти люди.
Было бы удобно иметь веб-сайт вроде Pastebin, но не являющийся статическим, а например работающий на вебсокетах и отображающий изменения в размещённом тексте в реальном времени.
Работа с ним предполагается в таком ключе: преподаватель начинает пару, печатает и показывает что-то в своем редакторе текста, после чего копирует его содержимое и вставляет в текстовое поле в браузере. В начале пары он пишет на доске read-only-ссылку на данный текст. У всех студентов открыта эта ссылка, и в случае необходимости они могут просто скопировать код оттуда.
После закрытия данного текста владельцем он либо сохраняется как в Pastebin, либо удаляется, чтобы можно было особо не париться с хранением.
Технологии: можно сделать полностью на js (Node.js + какой-нибудь простенький фреймворк для фронтенда, чтобы руки не сильно пачкать). Насчет технологии для обновления текста у всех, кто наблюдает за пастой, не уверен, но это могут быть вебсокеты или что-то еще (в крайнем случае можно сделать и на обычном long-polling, но это не интересно).
Предложил: Голышев Роман
Codemixer
У студента АУ бывают моменты когда просто не обойтись без заимствования чужого когда. Например, если в домашке как часть задания требуется написать простой mergesort, но вы начали решать домашку за 5 минут до дедлайна, то было бы разумно взять mergesort со stackoverflow и для повышения оригинальности хотя бы переименовать переменные. Предлагается избавить студентов от работы по повышению оригиналоьности кода и автоматизировать этот процесс для языка Python. Технологии: python, ast, pymorphy.
Предложил: Лапко Данила