Идеи на Devdays — различия между версиями

Материал из SEWiki
Перейти к: навигация, поиск
(Темы проектов)
Строка 6: Строка 6:
  
 
Подсказочка: жмём вверхнем правом углу "представиться системе", после авторизации жмём вверху слева "править"
 
Подсказочка: жмём вверхнем правом углу "представиться системе", после авторизации жмём вверху слева "править"
 +
 +
== Генерация данных по Схеме БД ==
 +
 +
При разработке Базы Данных хочется проверить, что в схеме учтены все бизнес-требования (есть все связи между сущностями, нужные сущности действительно уникальны в разрезе таблицы, длина имени не меньше, чем задано, и т.д.). Для этого нужно заполнить БД семантически-корректными данными (то есть, если, например, столбец Имя, то и должны быть различные имена). Однако процесс заполнения БД данными - крайне рутинная операция. Поэтому, хочется автоматизировать процесс заполнения данными.
 +
 +
С технической точки зрения этот проект, как мне видится, состоит из нескольких модулей.
 +
 +
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 ==
 
== DRY ==

Версия 14:35, 11 октября 2014

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; возможно, в браузере), в которой игрок мог бы управлять полетом аттрактора в космосе, истребляя комаров и уклоняясь от Йод. Впрочем, стоит предоставить игроку свободу выбора: пусть сам выбирает свою сторону Силы.

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

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

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

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