Идеи на Devdays

Материал из SEWiki
Версия от 20:05, 24 октября 2014; Adkozlov (обсуждение | вклад) (Presentation sitcomizer)

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

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, байткод + возможно, любой веб-фреймворк, дата-майнинг

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

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

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