Devdays fall 2014

Материал из SEWiki
Перейти к: навигация, поиск

Did I ever tell you the definition of insanity?

Содержание

Темы проектов

Тут пишем идеи. Нумеруйте или подписывайте названия своих идей, чтобы было видно, где начинается новая идея.

Подсказочка: жмём вверхнем правом углу "представиться системе", после авторизации жмём вверху слева "править"

Генерация данных по Схеме БД

При разработке Базы Данных хочется проверить, что в схеме учтены все бизнес-требования (есть все связи между сущностями, нужные сущности действительно уникальны в разрезе таблицы, длина имени не меньше, чем задано, и т.д.). Для этого нужно заполнить БД семантически-корректными данными (то есть, если, например, столбец Имя, то и должны быть различные имена). Однако процесс заполнения БД данными - крайне рутинная операция. Поэтому, хочется автоматизировать процесс заполнения данными.

С технической точки зрения этот проект состоит из нескольких модулей.

1) Семантический модуль. Отвечает за генерацию правдоподобных данных. То есть, этот модуль принимает запросы (например, "сгенерируй мне Уникальное Name string типа длинной от 3 до 8 символов".) и выдаёт Имена, телефоны и т.д. Конечно же, если невозможно определить, что требуется сгенерировать, то происходит генерация случайнных данных на основе типа и ограничений (например, name1, name2, namename1).

2) Синтаксический модуль. Отвечает за получение ограничений (constraints) по схеме БД (или sql-коду). То есть, этот модуль должен отвечать фразами а-ля: "сгенерируй мне Уникальное Name string типа длинной от 3 до 8 символов".

3) Модуль базы данных. Этот модуль должен работать с базами данных, получать SQL код по схеме (Если это нужно), а также генерировать результирующий SQL код (набор INSERT-запросов).

4) Модуль программы. Этот модуль, грубо говоря, должен обрабатывать IO, а также взаимодействовать с другими модулями программы.

Как я вижу результат.

Результатом работы должны стать 2 программы. Первая программа описана выше (Семантический модуль, Синтаксический модуль, Модуль Базы данных, Модуль программы). Это консольное приложение (а-ля generator.jar), которое умеет работать с пользователем на основе заданных ключей.

Вторая программа - веб приложение. Тут есть интерфейс, в который пользователь может загрузить sql-код схемы БД и получить SQL-код с данными. Веб-приложение - это лишь-только клиент для консольного приложения, которое лежит рядом на сервере.

Технологии: Java, Hibernate, SQL, JavaScript, bootstrap 3.

Предложил: Павлюченко Денис.

DRY

Расширение для Chrome, подсказывающее фразы при общении в VK и проверяющее написанные сообщения на то, что подобное вы уже писали (то же самое при добавлении песенок и так далее). Также нужно было бы сделать возможность шаблонного общения (в смысле, подсказок, что сказать из шаблонов).

Технологии: HTML, CSS, javascript, вот это все.

Предложил: Никита Карташов.

pahom-lang

Вдохновившись LOLCODE написать медленный и беспонтовый, но вполне себе Тьюринг-полный (возможно функциональный) язык программирования, где все управлящие структруы - фразы из известной кинокартины.

Технологии: Java, C++, Python, Haskell, Scala?

Предложил: Никита Карташов

jsPerf improved

Есть такой сервис для тестирования производительности JavaScript кода -- jsPerf. Суть такова: пользователь публикует набор js-сниппетов, затем с разных браузеров заходят люди, агрегируется статистика времени выполнения по разным браузерам. Для таймеров использует benchmark.js, так что суть самого сервиса весьма проста.

Идея в том, чтобы сделать что-то похожее, но исправить недостатки и добавить фичи:

  • Достаёт система защиты от спама. Можно было бы использовать OpenAuth (github'а например).
  • Очень неудобное редактирование.
    • В окошке не работает подсветка, нельзя нажать таб.
    • Для всех сниппетов можно определить функции setup и teardown (которые вызываются до и после каждого сниппета). Внутри всё это склеивается в один исходник. При этом, легко допустить какую-нибудь глупую опечатку в названии общей переменной. Было бы неплохо сразу конструировать финальный исходник и прогонять на нём какой-нибудь линтер, сообщая пользователю об ошибках.
  • Статистика по версиям браузеров (Chrome 31 и 32 считаются разными) не очень репрезентативна (версии Chrome выходят часто, бывают регрессии/баги). Можно добавить другие способы агрегации статистики:
    • По семействам браузеров (Chrome, Firefox, IE).
    • По годам (в среднем актуальных на 20??-й год версиях браузеров).
    • По проценту пользователей на данный момент (как могут выглядеть усреднённые данные для браузеров, которыми пользуется 60% пользователей на данный момент). Это нужно потому, что некоторые хаки/идиомы с развитием JS VM`ов теряют смысл. Статистику можно брать оттуда же, откуда берёт Can I Use.
    • Возможность смотреть статистику по разным ревизиям сниппетов будет полезной.
  • Возможность объединять бенчмарки в наборы, чтобы можно было кинуть друзьям одну ссылку, которая бы прогоняла все бенчмарки.
  • Перезагрузки страниц в 2014-м году -- жуткий анахронизм.

Технологии: Backend простой -- всё равно, на чём писать. На frontend хотелось бы React.js.

Предложил: Лёша Цветков.

Paranoido

Для составления дел и всяких заметок последнее время использую workflowy. По сути, обычные иерархические списки, только удобные, быстрые и с возможностью расшарить список кому-нибудь.

Но после кражи фотографий Дженнифер Лоуренс из iCloud, у меня зародился червячёк недоверия к клауд сервисам. Не говоря уж о том, что скоро хранить персональные данные россиян можно будет только в России. И как в этой атмосфере недоверия и неопределённости можно спокойно писать идеи для devdays в отдельный список?

Поэтому предлагаю сделать децентрализованный сервис ту-ду списков с шэрингом, и опционально с шифрованием и простым деплойментом.

Название Paranoido (по-русски "паранойду" или "паранойдо") -- сокращение от Paranoid To-Do.

В итоге, хотелось бы получить веб-апп.

Предложил: Лёша Цветков.

Аттраптор

Как известно, трактор — вещь, полезность которой во многих отраслях народного хозяйства сложно переоценить. Немного удручает лишь тот факт, что с его помощью можно преодолеть лишь достаточно небольшие расстояния. Однако, не стоит унывать! Покинуть пределы Солнечной системы нам поможет аттрактор — межгалактический трактор.

Глубины космоса коварны и полны опасностей. Главную угрозу космическому путешественнику представляют древние служители Темной стороны Силы — межзвездные комары. С мощным гулом носятся они по беззвучному пространству, сталкиваясь со всем на своем пути и обрекая живое на гибель. Лишь мудрые Йоды способны бороздить просторы Вселенной наравне с комарами в попытках противостоять им.

Однако, оседлавшему аттрактор трактористу не страшны комары, ибо аттрактор — это еще и свирепый раптор. Да-да, тот самый, что убывает насекомых наповал! Светлый водитель должен быть осторожен, потому что может случайно рассечь вместо комара и доброго Йоду. С другой стороны, Темные адепты прекрасно знают о боевых свойствах аттракторов и не стесняются использовать их в своих целях...

Итак, хотелось бы сделать простую игру (думаю, что в 3D; возможно, в браузере), в которой игрок мог бы управлять полетом аттрактора в космосе, истребляя комаров и уклоняясь от Йод. Впрочем, стоит предоставить игроку свободу выбора: пусть сам выбирает свою сторону Силы.

Число очков игрока сделаем изначально равным нулю. За убийство комара будем добавлять очки, за убийство Йоды — отбирать. Если игрок уйдет в минус, значит он злой, если в плюс — добрый. В зависимости от числа очков можно перекрашивать аттрактор в разные цвета и добавлять эффекты по вкусу. Крутость результата будет зависеть от его абсолютного значения.

Если захочется избавить игру от возможности летать бесконечно, можно добавить какие-нибудь убивающие астероиды. Ну и постепенно увеличивать скорость полета или что-нибудь в этом роде.

Хотелось бы сделать так, чтобы аттрактор постоянно менял свою форму. Отрисовывать его можно как угодно, подойдут самые безумные вещи. Предлагается подумать над управлением: можно дать возможность искажать пространство или делать еще что-нибудь в таком роде.

Предложил: Богдан Бугаев.

Sitcomizer 2

Ребята, как в прошлый раз, только теперь смешнявые картинки и как следует.

Технологии: java на андройд, чад кутежа.

Предложил: Никита Карташов.

IgnoreMe

Дичайшая консольная прога, на вход ваш проект, на выходе - гитигноры для него.

Технологии: вообще что угодно.

Предложил: Никита Карташов.

MIndex

Кроссплатформенный индекс, содержащий информацию о музыкальной коллекции пользователя.

Хранит:

  • общеизвестные теги (артист, альбом и т.д.);
  • малоизвестные теги (тональность, громкость и т.д.);
  • техническую информацию (размер, битрейт, частота дискретизации)
  • путь к файлу.

Поддерживает:

  • поиск, запрос - строка без какого-либо форматирования;
  • инкрементальное обновление;
  • mp3, flac, wav, остальные форматы по желанию.

Индекс не делает избыточных чтений при обновлении (т.е. не читает файл целиком, чтобы узнать все теги).

Три уровня сложности:

  • связать всевозможные библиотеки для чтения тегов, записать информацию в какую-то файловую базу данных.
  • научиться самим вытаскивать информацию из файлов, т.е. никаких библиотек, в распоряжении только байтики.
  • гуи для этого. удобный ответ на поисковый запрос, сортировка по столбцам (по битрейту, например), группировка и т.п.

Думаю третье и второе можно поменять местами по желанию.

Если вы заинтересовались и готовы представить проект на распределении, напишите мне, я в этот день присутствовать не смогу :)

Предложил: Семен Прошев

Порт shout на android (возможно, ios)

Не так давно зарелизился крутой IRC клиент - [1]. Это NodeJS приложение, позволяющее поднять собственный IRC сервер, к которому можно коннектиться с помощью браузера. Клиент у них тоже есть. Демо: [2]

Хочется всё это портировать на андроид. Для этого нужно подружиться с запуском NodeJS на android (смотрим в сторону [3]), а также обернуть веб-клиент в какой-нибудь мобильный фреймворк на JavaScript (классика - [4]).

Технологии: JavaScript, Node.JS, HTML5, Android SDK (Java).

Предложил: Павлюченко Денис.

Дейтинг для хаскелистов

Как все мы знаем, Хаскель - язык будущего.

Но чтобы показать, что Хаскель - язык, полезный в быту при решении повседневных задач среднестатистического веб-программиста, а также помочь уже просветлённым найти друга на лекцию по теории категорий, предлагаю написать на оном дейтинг (назвать можно "вМонаде", например).

Планируемый product value:

1. Авторизация будет только через гитхаб.

2. Поисковой запрос должен быть валидной программой на хаскеле.

3. В качестве ограничений приватности (кто может написать, кто добавить в друзяшки) можно будет добавить задачи на хаскеле (с ручным апрувом).

4. Гуй для слабаков: интерфейс должен быть по большей части текстовым, а управление, как в виме.

Технологии: типизированное лямбда-исчисление и параметрический полиморфизм.

Предложил: лже-Саймон Пейтон-Джонс

LaTeX complete

Открыл для себя writelatex, он торт, но там нет даже самого просто автокомплита, было бы круто его запилить как плагин для хрома.

Технологии: HTML, CSS, javascript, вот это все.

Предложил: Никита Карташов.

PerfChecker

Статический анализ уже давно спасает нас, находя ошибки в наших проектах, но статические анализаторы учитывают только особенности ЯП, а не используемых фреймворков.
Идея - набор правил статического анализа для нахождения типичных ошибок в "классических" java фреймворках (spring, hibernate, ...). Можно попробовать написать правила для, например, PMD для нахождения перфомансных проблем, вроде n+1, подъем бинов по классу и т.д.
В случае успеха, это будет реально востребованный проект с кучей звезд на гитхабе!

Технологии: Java, Статический анализ

Предложил: Сергей Целовальников

BuildSystem Converter

Иногда для решения проблем требуется перевести проект с одной системы сборки на другую, это мучительно и чревато ошибками, хочется автоматизировать это хоть как-нибудь.
Идея - Конвертер между системами сбоки приложений (maven, gradle, sbt, leiningen ...)
Можно попробовать реализовать общее синтаксическое дерево для всех систем сборки, а затем конвертер между всеми системами. Коненчо, т.к. некорые системы сборки императивные, другие декларативные - идеально конвертить между ними не получится, но в рамках дев-дейс можно попробовать сделать хотя-бы базу, конвертор зависимостей и компиляции.


Технологии: Java, Куча систем сборки

Предложил: Сергей Целовальников

Котяфикатор

Берем текст и весь мат превращаем котяток, кошечек и подобное. Примеры не приведу, иначе забанят.

Технологии: любые.

Предложил: Никита Карташов.

Простой декомпилятор байткода

Простой декомпилятор байткода, интегрированный в IDE. Всегда хотелось написать, но не было времени.

Технологии: Java, байткод

Предложил: Сергей Целовальников


Умный декомпилятор байткода

Тут увидел, что чувак выше написал, что хотел написать декомпилятор байт-кода - так вот, это прошлый век!
Идея - просканировать тонны open-source кода и его скомпилированного байт-кода, сохранить соответствие и каким-нибудь крутым умным алгоритмом находить соответствие кускам байткода - куски open-source кода, в результате чего достичь идеальной декомпиляции! Верояно, сделать это как веб-сервис (локально - слишком тяжело).

Технологии: Java, байткод + возможно, любой веб-фреймворк, дата-майнинг

Предложил: Сергей Целовальников

Predict me (c) film

Все мы любим смотреть хорошее кино, а хорошее кино, порой, не так то и просто найти. Не очень хочется пойти на новый фильм и «не угадать». Приходится смотреть обзоры или ориентироваться на рейтинги актеров.... а что если твое личное мнение сильно отличается от среднего? Или времени на поиски не так много? Предлагается разработать систему определяющее рейтинг новых фильмов(или пересчитывающую рейтинг старых) учитывающая ТВОЕ мнение!!!. Как бонус можно по предлагать фильмцов, подходящих именно тебе)

Технологии: Django + HTML + CSS + JS...

Предложил: Устюжанина Катя

Социальная сеть «вСтоловой»

Работая в JetBrains, периодически сталкиваешься со следующей проблемой: начало обеда в 13.00, а к 13.15 какое-нибудь из популярных блюд уже может закончиться. Поэтому если не успеваешь зайти в столовую к часу, рискуешь остаться без своего любимого блюда.

Проблему обычно решают так: просят кого-нибудь отложить еду. Но меню каждый день разное и вы полностью полагаетесь на вкус вашего коллеги, так как никто не будет звонить вам из очереди и уточнять, что вы сегодня хотите на обед из предложенного. Ну или расчитываете на кристалльное знание коллегой ваших кулинарных предпочтений...

Суть работы приложения такова:

  1. приходишь в столовую;
  2. выбираешь в приложении человека из списка друзей;
  3. наводишь камеру на сегодняшнее меню;
  4. программа автоматически выдает состав обеда;
  5.  ?????
  6. PROFIT

Конечно, все это можно устроить в виде социальной сети, с добавлением в друзяшки и лойсами, но ограничимся простой версией без регистрации и смс: разовая передача коллеге файлика предпочтений.

Генерацию такого файла можно оформить следующим образом: выставление оценок предложенному набору блюд (например: лосось тэрияки - 8, стейк из свинины - 10, сырники - 7, крем-суп из брокколи - 1).

Можно реализовать следующие фичи:

  1. "поддержка" вегетарианства :)
  2. или любых других запретов (запрет на блюда с рыбой: неприязнь или аллергия)
  3. поддержка любого меню

Фичи для JetBrains:

  1. автоматическое определение опций "на тарелку/в контейнер"
  2. отображение подписи, которой пользуется коллега, когда ставит контейнер в холодильник
  3. потенциальное выкладывание информации о кулинарных предпочтениях на JetPeople :)

Технологии: iOS/Android, OpenCV

Предложил: Андрей Козлов

Lektorium plugin

За время обучения в институте я много раз сталкивался со следующей проблемой: лектор читает медленно, студентам скучно, они постепенно начинают заниматься своими делами и смысл лекции пропадает.

В чем причина? Скорость усвоения информации среднего студента КТ ИТМО/МИТ АУ или CSC достаточно высока и лекции можно читать в полтора-два раза быстрее.

Как решается проблема? Многие из этих лекций лежат на Лекториуме, качаем, ставим на 2.0x, profit. Простая версия: предлагается написать небольшой тул для сбора анонимной информации по лекции и автоматического выставления скорости воспроизведения.

Усложненная версия, вдохновленная аналогичной фичой на Coursera: веб-камера должна видеть, что вы внимательно следите за происходящим на экране. Если вы начинаете засыпать, то программа вас будит, а скорость воспроизведения увеличивается. Заодно собирается информация о рекоммендованной скорости воспроизведения.

Оформить можно в виде плагина к какому-нибудь популярному кросс-платформенному плееру (VLC, например).

Технологии: Java, GStreamer, Google docs

Предложил: Андрей Козлов

Presentation sitcomizer

Как известно, Антон Михайлович любит вставлять в презентации доставляющие картинки, мгновенно поднимающие настроение у аудитории.

Во-первых, подбор картинок можно автоматизировать (по тексту или некоторой скрытой мета-информации).

Во-вторых, ничто не вечно под луной. Например, картинки с миньонами были очень популярны в 2013-м, но затем вышли из моды. И в 2014 уже не так доставляют. Поэтому предлагается добавлять картинки с учетом текущих трендов (на основании данных из Твиттера). Например, на момент написания идеи, это слив фотографий с iCloud, санкции, рекордные значения курсов евро и доллара, выход iPhone 6 Plus, OS X Yosemite.

Заодно это решит проблему неправильных дат, указанных в презентациях.

Технологии: machine learning, beamer

Предложил: Андрей Козлов

SaaS распознавания чеков крупных продуктовых магазинов

Думаю, все знают, что сейчас популярны программы для личной бухгалтерии. Такой вид программ делают все: начиная от парней с хакатонов и, заканчивая - крупными компаниями. Однако крайне часто в программах для домашней бухгалтерии нет функции распознавания чеков. Кто-то не знает, как это делать, у кого-то - нет времени.

В рамках ДевДейс можно сделать SaaS проект, который будет выдавать разработчику API. Разработчик будет посылать чеки своих пользователей, а система - результат в некотором едином формате.

Предлагаю в рамках ДевДейс остановится на 2-3 магазинах (например, пятёрочка, магнит, Ашана). Для демонстрации успешности реализации SaaS ещё можно сделать простенькое мобильное приложение, работающее с этим API.

Технологии: Pattern recognition, Java

Предложил: Павлюченко Денис


GuavaToStream конвертер

До выхода Java 8 во многих проектах писали код в функциональном стиле с помощью либы google guava, но вот вышла Java 8 со стримами и лямбдами, у нас тоныы кода, написанного с помощью Guava, а хочется быстрых, красивых и модных стримов.
Идея - написать плагин для IDE (IDEA или Eclipse), который бы конвертил код, написанный с помощью Predicate, Function и FluentIterable в Guava в стримы java 8.
Давайте же избавимся от некрасивого легаси (теперь) кода и сделаем мир быстрее и лучше!

Технологии: Java 8, Java AST

Предложил: Сергей Целовальников


Arduino Router

Вот сидим мы на практике, а WiFi - WirelessForAll снова никакой, рядом в стене ethernet розетки, а кабеля нет, да и телефон с планшетом к ethernet не подключить!
Идея - собрать и запрограммировать этакий мини-роутер на основе arduino, из которого бы торчал маленький коннектор, которым бы он втыкался в такую розетку и начинал раздавать интернет, а пароль отображал бы на экранчике. Итак, нужно купить ардуинку, wifi-модуль и экранчик от нокии, собрать это все вместе, запрограммировать и получить прототип устройства, которое бы спасало нам жизни до конца обучения!
Только представьте, приходишь куда угодно, втыкаешь мини-роутер в ethernet розетку и получаешь wifi !

Технологии: Arduino, WiFi, C, паяльник

Предложил: Сергей Целовальников


Gravity Fields

В школьные времена многие из нас (ну я на это надеюсь :) ) играли в Gravity Defied, классные были времена! Недавно я сидел в переговорке с незамысловатым рисунком на стекле и придумал как можно вдохнуть в старую игру новую жизнь.
Представим, что теперь у нас не одна трасса, а 3, между которыми можно переключаться в любой момент, это нужно, чтобы, например избежать пропасти или объехать препятствие (пальму). Прибавим к этому увеличение скорости (в отличие от оригинала) и более реалистичную физику.
Выглядит это примерно так:
GD3.png
Т.е. прямо сейчас игрок может переключиться на одну из 2 других трасс, чтобы объехать пальму и ехать уже по ней, остальные трассы на процесс влиять не будут. Получится интересная игра, которой обеспена долгая жизнь в маркетплейсе.

Технологии: Любой игровой мобильный движок (например, Unity)

Предложил: Сергей Целовальников


Игонь, Лед, Древесина и Бобер!

Идея игры, Бобер решил поднять дерево на верх горы, как - конечно привязать парашют и поджечь, чтобы под воздействием теплого воздуха бревно взлетело! Итого, бревно летит вверх, огибая каменные препятствия, для этого мы поджегаем и тушем бревно в разных местах. Цель - помочь бобру доставить бревно наверх горы!
Выглядит это примерно так:
FireBober.png

Технологии: Любой игровой мобильный движок (например, Unity)

Предложил: Сергей Целовальников


SECONF (SE conference)

Крутой универ! Крутая кафедра! Крутые программисты! Нет своей конференции.
Надо исправляться, давайте же организуем свою прикладную конфу, где будем рассказывать про крутые штуки, работая с которыми успели набить шишек.
Мы станем первой кафедрой, у которой есть своя конференция! Формат - 3 доклада по 20-25 минут + 10 минут на вопросы. Первая будет подготовлена командой за время DevDays, доклады будут сделаны организаторами, потом каждые 3-4 месяца будем находить докладчиков и проводить очедную крутую мини-конференцию.

Технологии: Speaker skills

Предложил: Сергей Целовальников


Gmail Homework Manager

Как известно, в АУ активно используется Gmail, как в плане отправки домашних работ на проверку, так и информирования студентов. Это приводит к тому, что у преподавателей и студентов оказывается много некаталогизированных писем, в связи с чем некоторые преподаватели вынуждены писать хитрые скрипты, а студенты следить за правильностью темы писем, чтобы эти скрипты работали.

Предлагается:

Задача 1: Chrome/gmail exstension, проверяющий перед отправкой письма правильность указанной темы в зависимости от адресата ( с автоматическим добавлением Антона Михайловича в копию, при желании).

Задача 2: Chrome exstension, который автоматически каталогизирует принятые/отправленные письма, дабы облегчить жизнь студентам и преподавателям, с возможностью настройки шаблонов текста письма, темы, адресатов для конкретных каталогов.

Технологии: Gmail API, JS.

Предложил: Юргин Павел.


Twiktor

Ни для кого не секрет, что в твиттере ведется активная политическая война с участием огномного количество ботов, забивающих информационный эфир. И пока мы учимся быть крутыми разработчиками, кто-то проектирует глупых ботов, которые могут только постить сообщения по команде.
Мы же можем написать "умного бота", не просто програмку которая постит по команде, а самостоятельно живущий AI !
Принцип работы

  1. Бот получает просматривает определенный набор самых популярных людей
  2. Парсит твит, вытаскивая факты с помощью томиты
  3. Переформулируя эти факты постит либо твит на свою стену (как оригинальное мнение), либо в ответ на чужой твит. (Чтобы люди читали ответы и подписывались на бота) (Ответ на твит в виде переформулированной мысли действительно должен работать)
  4. Как только у ботов наберется критическая масса подписчиков - мы получим армию, которая сможет выводить в топы теги и влиять на всех подписчиков.
  5. Далее создаем SaaS сервис, который предлагает услуги вывода в топы тегов и влияние на массы в твиттере.
  6. Наращиваем базу в твиттере, масштабируемся на другие соцсети.

По сути создав единый механизм эмуляции пользователей, можно создать неплохой инструмент влияния на массы в сети. Начать легко именно с твиттера, т.к. осмысленные 140-cимвольные посты генерировать по другим твитам (для начала с помощью tomita parser) проще, чем посты во вконтакте.


Технологии: Tomita parser, linguistic analysis, political situation, Java, Twitter API

Предложил: Сергей Целовальников


SToR Wars

Special Theory of Relativity Wars

Безумный 2D-шутер с маленькой скоростью света и, соответственно, искривленным пространством и искривленным временем.

  1. Тактика! Летаешь быстро — меньше времени прожил, а значит меньше раз выстрелил. Стоишь на месте — в тебя легче попасть.
  2. Непредсказуемость! Видишь соперников в прошлом, но что они сделали после этого?
  3. Маленькая скорость снарядов лазерного оружия наконец-то оправдана!

К сожалению, мультиплеер принципиально невозможен (пока не разгоним игроков до околосветовых скоростей за несколько секунд).

Технологии: Java, C++(?)

Предложил: Лиференко Даниил

Stash'n'Read

Я люблю читать. В интернете есть множество интересных статей и книг, однако, не всегда удобно читать их с экрана компьютера/ноутбука. На выручку приходит электронная книга, которую я частенько беру с собой когда на горизонте появляется необходимость длительной поездки в общественном транспорте или пребывания на скучном мероприятии. Есть несколько сервисов, которые я использую для извлечения полезного текста из веб-страницы, но у них у всех одна беда: они слишком автоматизированы. Конечно, их эвристики позволяют обработать большинство страниц правильно, но нет-нет, да что-нибудь ненужное проскочит (или, что еще хуже, не попадет что-нибудь нужное).

Отсюда такая задача: сделать плагин для Chrome/Firefox для извлечения полезного текста из веб-страницы в полуавтоматическом режиме и отправки результата на электронную почту @kindle.com. Что значит "полуавтоматический режим"? Это значит, что на странице будут подсвечены элементы, которые наши эвристики посчитают полезными, а пользователю будет предложено либо подсветить щелчком мыши дополнительные элементы, которые он хотел бы включить, либо убрать те, которые ему не нужны, а по окончании процесса нажать кнопочку "Send" и получить готовый текст у себя на читалке.

Технологии: JS

Предложил: Николай Обедин

Лямбда-мэн

Задача из последнего ICFP. Почувствуй себя "большим желтым кругом" и пернесись в 80е. Помоги пакману пройти лабиринт.

Формулировка

баянистое видео про разработчиков видеоигр для привлечения внимания

Технологии: решим коллективно, но лучше fp.

Предложила Алина Крамар

Архиватор: сжатие со случайным поиском

Допустим, у нас есть много данных, которые хорошо сжимаются. Хранить их в распакованном виде как-то странно, но нужно иногда читать маленькие кусочки. Хочется иметь адекватный архиватор, который умеет вытаскивать отдельные байты, не распаковывая весь архив сразу. Вариант реализации: на основе LZ78.

Оригинальная идея http://major-m.livejournal.com/24329.html

Технологии: не принципиально.

Предложил Марат Микушкин

Cниппеты для окружения ОС

Нас окружает много повторяющихся данных - мы постоянно набираем письма с приветствиями, темы писем заданного формата для преподавателей, одинаковые формулы в LaTeX'е и пр. и пр. Можно ли сделать жизнь проще? Хотелось бы иметь что-то вроде сниппетов в окружении ОС, когда можно набрать некую последовательность с параметрами, которая после нажатия хоткея развернётся в нужную тебе фразу/предложение/whatever. В Linux есть решение с xclip, но, насколько я понял, оно копирует одну последовательность в буфер обмена, и нет поддержки чего-то вроде параметров сниппета.

Предложил Тищенко Дмитрий.

Конспекты в PDF

Многие преподаватели ведут лекции по презентациям в PDF. Поэтому, возможно, не всегда есть смысл судорожно что-то записывать в тетрадь. Другое дело, что по ходу лекции могут возникнуть дополнения, пояснения, замечания преподавателя. Всё это, натянутое на презентацию, могло бы послужить хорошим конспектом лекции. В PPT есть механизм примечаний, да и в PDF тоже. Другое дело, что он не всегда хорошо реализован в программах просмотра PDF, и может не совсем отвечать целям ведения конспекта. Поэтому было бы здорово иметь под рукой небольшую программку, в которой было бы удобно такие конспекты вести.

Предложил Тищенко Дмитрий

Плеер для Google Play Music

Удобный и известный музыкальный сервис. Под Linux для него есть Nuvola Player, однако под Windows ничего такого не завезли. Будем исправлять ситуацию.

Технологии: Python(pybass + gmusicapi) и что-нибудь для gui(например, glade).

библиотека pybass

библиотека gmusicapi

Предложил Лазаревич Андрей.

AU RATING

Ты молод, полон сил и амбиций? Хочешь попасть в топ студентов, получающих повышенную стипендию, но не можешь понять, где же начинается этот самый топ? Или может быть все, что ты хочешь, это продолжить учебу в АУ, но поговаривают, что у тебя слишком низкий рейтинг и тебе пора бы готовить плацдарм к отступлению, хотя свой рейтинг ты видел один раз в жизни на черно-белом листочке и вообще во всем виноваты операционные системы! Поздравляю, у тебя есть отличный шанс написать скрипт, который парсит таблички с рейтингами по всем предметам и составляет одну, по которой сразу видно, стоит ли тебе надеяться на повышенную стипендию или же хотя бы просто... надеяться. А если ко всему этому прикрутить графики, диаграммки и, оповещения о продвижении в рейтинге в ту или иную сторону, то будет вообще красота.

P.S.: Актуально по крайней мере для 5го курса SE.

Технология: на вкус.

Предложил Юргин Павел.


Быстрые BitSet'ы

Существует множество применений для такой простой структуры данных как BitSet. Однако самое популярное- индексы в различных базах данных.

Это часто определяет требования к реализации BitSet'ов. Существует множество реализаций от простых(Вроде Java BitSet или C++ bitset или vector<bool>), до более сложных вариантов реализации с разными алгоритмами сжатия(WAH, EWAH, Sparce, Concise...). И все они могут использовать мало памяти, иметь хорошую скорость случайного доступа(записи), производить быстрые логические операции или итерацию по установленным битам, но не все сразу.

Хотелось бы написать реализацию BitSet'а, рассчитанную на работу с больших количеством данных и обладающую приемлемой скоростью всех операций, перечисленных выше, и при этом занимающую намного меньший объем памяти чем простые реализации без сжатия.

Возможный вариант реализации- гибридная структура данных, похожей на Sparce BitSet на хеш таблицах или дереве поиска с EWAH BitSet'ом(или возможно другим) внутри.

Кроме реализации самой структуры данных требуется написать различные тесты. И сравнить с другими реализациями.

Технологии: Java(т.к. имеется некоторое количество готовых реализаций для сравнения) или C++(тот же критерий)

en wiki Bit_array

en статья об использовании(и сравнение) битсетов касательно индексов в бд

simplebitmapbenchmark

Предложил Кривохатский Сергей.

Корованы

Хотел бы чтобы вы сделали игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья[1]. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого...). Ну а если за злого... то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку. Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого... (в горах, там есть старый форт...)

Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее... поставить протез. Сохранятся можно...

P.S. Я джва года хочу такую игру.

Технологии: любые.

Предложил Фетцер Юрий


Torrent и прозрачная подгрузка файлов

Caution: Идея, очевидно, сложна в реализации, имеет большое количество возможностей прострелить себе колено и "сломать" пару linux систем.

Смысл: ставишь на закачку файл. И работаешь с ним как с обычным файлом(Например смотришь фильм с любой позиции). При этом он не обязательно должен быть загружен до конца.

Как реализовывать:

1) перехват вызовов системных функций для работы с файлами посредством LKM и блокировка вызывающего процесса до момента, когда запрашиваемая часть файла не будет загружена.

2) дописывание логики к любому OpenSource торрент клиенту(Например [5], использующий libtorrent), которая позволит повышать приоритет запрашиваемых блоков загружаемого файла по запросу LKM.

Технологии: LKM, linux kernel, C, C++, libtorrent, IPC

Предложил Кривохатский Сергей.

Stereoscopic display

Веб камера сейчас в доме есть у каждого. Давайте запилим приложение, которое анализирует положение глаз относительно монитора и разворачивает 3d сцену на нем, так что бы она казалась трехмерной. Какую именно сцену отрисовывать? Это не очень важно. Можно сделать для примера, что то вроде вот этого: видео. Супер идельно было бы придумать какую нибудь видео игру с использованием данной фишки.

статья для привлечения внимания

Технологии: C++/openCV

Предложил: Сергеев Павел.

Мы знакомы?

Со мной неоднократно случалась ситуация, что в френд-листе скайпа есть какие-то люди, которых ты не знаешь. Хотелось бы сделать приложение, которое ищет информацию о человеке по введеным данным. Например, ищет по твоим друзьям соц сетях, твиторе итд.

Технологии не важны.

Предложил Федя Муратов.

Прокрастинатор

Есть идея написать скринсейвер в котором крутится рогалик, который играет сам в себя.

Технологии: хотелось бы написать рогалик под Linux-консольку.

Предложил Федя Муратов.

Омское метро

В городе омске, где есть метромост, одна станция метро и мобильное приложение, показывающее, когда прибудет следующий поезд, нет мобильного приложения, которое показывало бы схему интерактивную омского метрополитена с возможностью проложить маршрут и оценкой времени в пути:) Вот его и предлагается сделать.

Технологии: Андроид, Windows Phone

Предложила Веслогузова Александра

Спасение от прокастинации

Многие из нас достаточно много времени уделяют социальным сетям, новостым лентам, просмотру видео с котоками и прочим бесполезным вещам. Иногда это получается случайно и ты просто не замечаешь, что последний час ты листаешь ленту в какой-нибудь соц.сети или читаешь очередной срач в комментариях по поводу новостей с Украины. Для того, чтобы тратить время более продуктивно требуется огромная сила воли и постоянный самоконтроль.

Именно для того чтобы контролировать себя было проще прелагается написать расширение к одному из популярных браузеров, которое считает время проведенное на нежелательных сайтах и выдает очень заметные предупреждения, мешая тем самым "залипать" на бесполезной информации. Кроме всего прочего, расширение должно собирать статистикуи рисовать красивые графики, чтобы можно было ощутить всю боль от осознания того, сколько времени потрачено впустую.

Технологии:chrome extensions, JS

Предложила Веслогузова Александра

Извлечение информации из кассовых чеков

При покупке товаров (реже услуг) часто выдаются кассовые чеки, содержащие перечень покупок, их стоимости и основную информацию о продавце. Часто эта информация попадает в мусорный ящик, а ведь могла бы использоваться для анализа расходов. Вручную переводить кассовые чеки в какие-либо программы контроля расходов мало кому нравится, а других вариантов как-то не наблюдается. Поэтому предлагаю создать программу, желательно для мобильных платформ (проще непосредственно использовать камеру на портативном устройстве с последующей автоматической обработкой, чем снимать на фотоаппарат, передавать фото на компьютер и скармливать фото программе), которая позволяет по фотографии кассового чека получить необходимые данные, чтобы впоследствии их можно было использовать для каких-либо расчетов и просто просмотра истории покупок.

Технологии: например, OpenCV для обработки изображения, остальное по желанию (кроссплатформенное или для конкретной мобильной платформы).

Предложил: Юрий Александров.

Котики-енотики и распознование образов

Для обучнения с учителем и проверки эффективности алгоритмов распознавания образов требуются большие датасеты, можно взять готовые, но это скучно, не спортивно и вообще, поэтому предлагается сделать некоторое приложение, которое по поисковому запросу вытащит требуемое количество картинок, аккуратно сложит их в папочки и присвоит правильные имена.

Технологии: возможно Python

Предложила Веслогузова Александра


Futuristic tabs

У каждого есть любимый браузер. Кому-то нравится, что его можно обвешать плагинами, кому-то - его быстрота. Всех их кое-что объединяет - табы! Сверху, сбоку, снизу, где угодно! Можно обойтись без них. Давайте сделаем умный механизм, который будет понимать, когда нужно показать пользователю табы, и одновременно не будет мешать ему заниматься своими делами. Потенциально возможное улучшение такого механизма - это самосоздающиеся табы исходя из информации на текущей странице (тут много чего вкусного, чтобы попилить!).

Технологии: JS, $browser_name$ SDK

Предложил: Леонтьев Пётр


Chrome extension IDEA plugin

Насколько я знаю, текущие возможности IDEA в плане поддержки разработки Chrome extension сводятся к автоподстановке функций из Chrome.* API. Хотелось бы иметь в дополнении к этому следующий функционал: автоматическое создание manifest'а, встроенную документацию (которую можно выдернуть с официального сайта), разворачивание часто используемых конструкций (например порты для взаимодействия различных компонентов расширения), предупреждения на частые ошибки, возможность сборки / deploy расширения, etc.

Технологии: IDEA plugin SDK, Java, js, chrome API.

Предложил: Москвитин Максим

PKeyboard for Android

Основная идея : кастомная клавиатура для Android со своей паролехранилкой.

Ввод длинного пароля на мобильных устройствах (особенно несвязного) бывает связан с довольно неприятными ощущениями. Если в современных браузерах можно отмучится один раз и сохранить его, то вводить один и тот же пароль в разных приложениях все равно тоскливо. Другой вариант использовать строннее приложение паролехранилку, а из него копировать пароли и вставлять уже в конкретное приложение, что кажется тоже не столь удобным как ввод пароля парк кликов с клавиатуры.

идеи в порядке важности для проекта:

1) создание базовой клаивтуры и реализовать собственную паролехралику с доступом по мастер-паролю

2) реализовать алгоритм распознавания "мастер-жеста" для доступа к хранилищу паролей. За основу можно взять принцип работы свайп клавиатуры только без отрисовки трека.

3) придумать какой-то вид синхронизации чтобы можно было вводить пароли на компе

4) добавить функцию генерации паролей по условиям (сколько символов, строчные-заглавные, латиница и.т.д)

5) научить клаву понимать контекст (на уровне названия приложение вряд ли получится, но хотя бы по логину)


Технологии: Android-совместимые =)

Предложил: Ворончихин Стас