Devdays spring 2014
And may the odds be ever in your favour.
Содержание
- 1 Темы проектов
- 1.1 GuanoDoc
- 1.2 Code Visualization
- 1.3 Web Notifier
- 1.4 Дунгеон Кравлер
- 1.5 Дранкард Кравлер
- 1.6 DRY
- 1.7 BRO (aka Beta Reduction Online)
- 1.8 Trello
- 1.9 CultSim
- 1.10 Word Cycles (or Word Psychos): The Game
- 1.11 Wace App (Worst Alarm Clock Ever Android App)
- 1.12 Android Usb listener
- 1.13 Прогноз погоды из статистики
- 1.14 Cards against humanity
- 1.15 НатурПродукт
- 1.16 StereoTravel
- 1.17 Corovan: The Game
- 1.18 TurboTranslator
- 1.19 Модернизация через инновации
- 1.20 Парсер-комбинаторы для самых маленьких
- 1.21 EasyPassy
- 1.22 Беседка
- 1.23 Генератор рептилоидов
- 1.24 Башенное нападение (или оборона)
- 1.25 SmartPc
- 1.26 Wolf end Eggs
- 1.27 λGT (Lambda The Gathering)
- 1.28 Stracker
- 1.29 Multinoid
Темы проектов
Тут пишем идеи. Нумеруйте или подписывайте названия своих идей, чтобы было видно, где начинается новая идея.
Подсказочка: жмём вверхнем правом углу "представиться системе", после авторизации жмём вверху слева "править"
GuanoDoc
Никто не любит писать джавадоки. Но без них у вас не принимают код. Так давайте их генерировать! Мы можем делать это на основе содержимого кода и названия сущностей.
Предложил Аркадий с подачи Никиты Бубнова.
Code Visualization
Идея визуализировать музыку появилась давно. Вы можете проследить этот вопрос, начиная от первых экспериментов с цветомузыкой, заканчивая эффектами в кончине и игрой AudioSurf.
Хороший код не менее прекрасен чем музыка, но к сожалению не каждому дано это понять. Можно сделать визуализатор кода, который будет делать приятный взгляду непосвященного видеоряд на основе программного кода.
Предложил Калакуцкий Аркадий.
Web Notifier
Мы живем в ужасном мире. Мире, в котором новые задания по статистике выкладываются на вики, а если ты хочешь следить за тем как разворачивается интересная дискуссия или за выходом свежих выпусков любимого комикса/сериала/курса лекций, то ты вынужден регистрироваться в очередном сервисе.
Хватит это терпеть!
Даешь универсальный сервис по отслеживанию изменений.
Хочется уметь отслеживать изменения произвольных страниц, получая уведомления почтой или каким-то другим способом. Хорошо бы уметь следить за фрагментами страницы, игнорируя баннеры и рекламу.
Можно сделать это в виде веб-сервиса или плагина для браузера.
Существует сервис ChangeDetection. Он меня устраивает. Нужно только сделать для него плагин для браузера, чтобы удобнее было пользоваться.
Предложил Калакуцкий Аркадий.
Дунгеон Кравлер
Игра, суть такова. Рогалик с процедурно-генерируемым миром, permadeath. Главный герой просыпается в подземелье, в рваной грязной одежде, ничего не помнить про себя, единственное что у него есть - книга, в книге описано все взаимодействие с игровым миром, в книге изначально есть только первые n страниц (как дышать, как ходить), после чего игрок отправляется в свой нелегкий путь по подземелью. Подземелье рандомно генерируется, пользователю встречаются разные комнаты с квестами, врагами, ресурсами, новыми страницами книги с новыми возможностями (но самая соль, что если вы уже знаете, что делать, то никто вам не помешает сделать все, как вы хотите =)))). В общем, упор на исследование мира, случайности/неожиданный встречи.
Технологии: скорее всего Java, консольный интерфейс (old5k00l).
Предложили: Никита Карташов, Марат Хабибуллин.
Дранкард Кравлер
На основе предыдущей идеи (Дунгеон Кравлер) и одной домашки:
Рогалик - симулятор пьяницы, примерные основы правил кажется тут.
Пьяниц много - есть возможность добавить слово онлайн в название и в суть - игроки играют за пьяниц.
Фичи: прокачка до 80 лвл, косплей и грабежи корованов трактиров.
Технологии: консольная Java.
Предложил: Бубнов Никита.
DRY
Расширение для Chrome, подсказывающее фразы при общении в VK и проверяющее написанные сообщения на то, что подобное вы уже писали (то же самое при добавлении песенок и так далее). Также нужно было бы сделать возможность шаблонного общения (в смысле, подсказок, что сказать из шаблонов).
Я еще придумал one-liner: put your VK out to DRY!
Технологии: HTML, CSS, javascript, вот это все.
Предложил: Никита Карташов.
BRO (aka Beta Reduction Online)
Веб-приложение наподобие этого, только для редуцирования термов нетипизированного лямбда исчисления. Пользователь вводит терм, программа подсвечивает ему места, которые можно редуцировать, после щелчка на одном из таких мест редуцирует его и выдает результат в котором снова можно выбрать что редуцировать (если, конечно, еще хоть что-то осталось).
Технологии: Haskell/Yesod или Ur/Web.
Предложил: Николай Обедин.
Trello
Trello - система учета задач, которые нужно сделать, задачи можно разбивать на списки, к задачам можно прикреплять вложения комментарии, чек-листы, отмечать человека, ответственного за задачу. (Пример) Официальные клиенты Trello есть под iOS и Android, но нет под Windows Phone. Неофициальные клиенты очень неудобные и некрасивые. Задача - создать красивый клиент под Windows Phone 8 с базовыми функциями.
Технологии: Windows Phone SDK, REST API
Предложил: Даниил Овчинников
CultSim
Из темных пучин варпа мне пришла идея написать симулятор служителя культа: а ля старые симуляторы из 2000х: мы управляем действием ГГ, устраиваем ритуалы, приносим жертвоприношения, боремся с другими культами, начинаем вести свою ячейку и т.д. В общем, простор необычайный, идея относительно просто реализуемая, кроме того спать тоже будет когда.
Технологии: Практически любые, я вижу игрушку десктопной, по сути подобное раньше писали буквально на винформах, нам можно сделать что-то попригляднее.
Предложил: Никита Карташов
Word Cycles (or Word Psychos): The Game
Представьте себе такую игру. Есть 2 игрока, каждый называет по очереди слово на заданную букву, но не просто называет, а запоминает каждое слово, которое он произнёс. По команде судьи "Замкнуть словоцикл!", игроки начинают по очереди повторять слова с самого начала в том порядке, в котором они их называли. Если оба успешно повторили всю цепочку, игра продолжается дальше, накапливаются новые цепочки. Если один из игроков ошибся, забыл слово или не успел произнести очередное слово за определённый интервал времени, который выделяется для ответа, то он проигрывает раунд, а второй получает количество очков, равное длине цикла слов.
Пример успешного замыкания =):
А: торт
В: телега
А: трос
В: треска
Судья: Замкнуть словоцикл!
А: торт
В: телега
А: трос
В: треска
Предлагаю реализовать такую игру в виде вэб странички, чтобы можно было играть по сети с друзьями (например, повесть на github pages). При чём, предлагается сделать такие фичи:
1) Проверка слов - чтобы игроки не писали слова типа "асапсия" или "каминопиство", то есть несуществующие слова, можно использовать какой-нибудь словарь, например API сервиса Яндекс.Словарь, для проверки вводимых слов; сделать для 2ух языков (en, ru)
2) Сделать возможность создавать много параллельных матчей, отображать список и счёт текущих схваток, возможность наблюдать за поединком других людей.
3) Возможно, сделать матчи для 3ёх и более игроков (хотя тут есть тонкости с увеличением времени на ответ)
4) Сделать кучу режимов игры:
- слова на заданные буквы, на случайные, на изменяющиеся буквы в определённой заданной перед схваткой последовательности;
- компьютер как судья, 3тий игрок как судья, компьютер выбирает случайным образом момент замыкания словоцикла, игроки сами выбирают момент замыкания словоцикла;
- словоцикл сбрасывается после замкания или расширяется дальше
- игроки по команде замыкают не свою цепочку, а цепоку опонента (особенно супер будет, если игроков больше, чем 2) - it is madness mode!!!
- вывод содержания текущей цепочки слов на экран перед началом замыкания, чтобы можно было подсмотреть, показ какой-то части цепочки на экране в процессе схватки
и т.д. можно придумать миллион тонкостей и вкусностей. Из всего вышеперечисленного можно будет формировать режим очередного матча на усмотрение опонентов.
В целом, реализация должна быть не сложной и базовые вещи можно успеть за 3 дня, а потом радостно играть весь май!
Технологии: python + some web stuff
Предложил: Марат Хабибуллин
Wace App (Worst Alarm Clock Ever Android App)
основная идея - создать будильник для хитрецов выключающих будильник во сне и желающих улучшить свои навыки в c++
для того чтобы выключить этот будильник надо будет решить задачку на программирование.
Возможный формат:
a) Тестик с каким-то вопросом по теме с вариантами ответов
b) исправление сломанного кода. Например, где-то не хватает какого модификатора, неправильно названа переменная, в общем что-то по мелочи. Для исправления некоторые фрагменты кода можно будет форматировать (может все?). После редактирования если код проходит тесты, то будильник не звонит (или перестает звонить)
с) написать какой-то простенький хрестоматийный алгоритм (привет быстрая сортировка =))
возможны форматы когда будильник звонит первый раз выбранной мелодией и дает какое-то время для того чтобы решить задачку, после чего если задача не решена вовремя (или исчерпаны попытки решения?) начинает верещать свиньей Касперского
Ну и конечно мало просто не дать хозяину телефона (и его соседям) заснуть. Было бы круто прикрутить поддержку твиттера: если не справляешься с будильником приложение будет твитить "Мой будильник знает c++ лучше чем я. Какой позор.....". Ну и если все совсем плохо, то делать ссылку на задачку которую можно отправить друзьям чтобы хоть они заткнули эту шайтан машину.
Вероятные задачи:
Все эти тесты были бы бесполезны если приложение будет легко закрыть, поэтому надо добиться чтобы сервис будильника настолько въелся в телефон, что он должен сработать и из выключенного состояния и даже если само приложение (с тестом) закроют. Иначе говоря надо каким-то образом сделать сервис будильника если уж не бессмертным, то так чтобы он всегда себя заново запускал при попытке его убить.
Для пунктов b и c понадобится как-то прикрутить компилятор.(что наверно тоже непросто)
Привязка твиттера (если дело дойдет)
Маленькое sdk позволяющее делать задачки (задачки + тесты)
Технологии : Android, C++, Twitter api
Предложил: Ворончихин Стас
Android Usb listener
Приложение распознающее сигналы с usb устройства и позволяющее биндить всякие команды на них. Например открыть навигацию, переключить трек, позвонить кому-то и.т.д.
Вся соль заключается в том что интерфейс общения всяких приблуд обычно находится в прошивке и девайс реагирует только на стандартные команды которые были уже предусмотрены, а с таким приложением можно забиндить всякие комбинации для ввода с клавиатуры. А если дело выгорит, то при помощи приблуды типа этой http://www.ebay.com/bhp/bmw-ibus#ht_2197wt_1396 можно заменить магнитолу в машине на крутой планшет. И получим сердитую магнитолу с gps интернетом и angry birds =)
Технологии : Android
Предложил: Ворончихин Стас
Прогноз погоды из статистики
В Питере, особенно весной, очень быстро меняется погода, и прогнозы, особенно сроком больше чем на сутки, имеют обыкновение работать не лучше народных примет.
Есть несколько публичных архивов метеоданных, и по ним видно, что, во-первых, прогнозы и правда здорово врут, а во-вторых, наглядно видны закономерности вроде того, что, как правило, если в это время года где-нибудь в Беларуси плюс двадцать, а у нас плюс пять, и два дня дует южный ветер и падает давление, то, скорее всего, стоит ждать хмурого неба и резкого потепления.
Предлагается обобщить подобные зависимости и сделать сервис, предсказывающий погоду по закономерностям, выведенным из истории наблюдений и фактической погоды в окрестностях.
Если учитывать фактическую погоду в окрестностях, задача мало отличается от составления прогноза в принципе. Интересно как раз проверить, насколько хорошо работают именно статистические методы.
Технологии: whatever
Предложил: Вова
Cards against humanity
Идея реализовать http://cardsagainsthumanity.com/ в виде приложения для Вконтакте и на русском языке(возможно).
Предложил: Семён
НатурПродукт
Не все продукты питания одинаково полезны, но разбираться в их составах и знать полезность различных добавок не простая задача, хочется сделать приложения под WP, которое по названию продукта могло бы говорить на сколько оно вредно. На этом замечательном сайте http://www.goodsmatrix.ru/ мы можем быстро по названию получить состав продукта. Есть, также достаточно много информации о вредности каждой добавки. Можно еще воспользоваться крутой библиотечкой для распознавания штрих-кодов ZXing)
Технологии: Windows Phone SDK (в принципе, можно под любую мобильную ос), python (подготовка бд с описанием добавок)
Предложил: Устюжанина Катя
StereoTravel
Есть замечательный сайт - http://www.stereomood.com/, на нем можно слушать музыку, подобранную под настроение. У сайта есть открытое API, но приложения под WP нет, хочется реализовать такое приложение + добавить возможность путешествия по настроению с помощью музыки(человек выбирает текущее и желаемое настроение, а мы его плавно перемещаем из одного в другое через промежуточные настроения). Можно добавить, например, краткий цветовой тест Люшера для определения текущего настроения и рекомендации лучшего "путешествия" или просто категории музыки по настроению
Технологии: Windows Phone SDK, Stereomood API
Предложил: Устюжанина Катя
Corovan: The Game
Хотел бы предложить сделать игру, 3Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы... И эльфу раз лесные то сделать так что там густой лес... А движок можно поставить так что вдали деревья картинкой, когда подходиш они преобразовываются в 3-хмерные деревья. Можно покупать и т.п. возможности как в Daggerfall. И враги 3-хмерные тоже, и труп тоже 3д. Можно прыгать и т.п. Если играть за охрану дворца то надо слушаться командира, и защищать дворец от злого (имя я не придумал) и шпионов, партизанов эльфов, и ходит на набеги на когото из этих (эльфов, злого...). Ну а если за злого... то значит шпионы или партизаны эльфов иногда нападают, пользователь сам себе командир может делать что сам захочет прикажет своим войскам с ним самим напасть на дворец и пойдет в атаку.
Всего в игре 4 зоны. Т.е. карта и на ней есть 4 зоны, 1 - зона людей (нейтрал), 2- зона императора (где дворец), 3-зона эльфов, 4 - зона злого... (в горах, там есть старый форт...)
Так же чтобы в игре могли не только убить но и отрубить руку и если пользователя не вылечат то он умрет, так же выколоть глаз но пользователь может не умереть а просто пол экрана не видеть, или достать или купить протез, если ногу тоже либо умреш либо будеш ползать либо на коляске котаться, или самое хорошее... поставить протез. Сохранятся можно...
Технологии: С++, qbasic , фортран++ и maya++, NVIDIA 3D
P.S. Я джва года хочу такую игру.
TurboTranslator
Предлагаю сделать такую штуку, которая через микрофончик распознает какую-то речь (лучше всего человеческую), превращает её в текст, отсылает запрос в Google Переводчик, там текст переводится на нужный язык и проговоривается приятным женским/мужским google-вским голосом прямо в наушник или динамик.
Технологии: инновационные - WindowsPhone, C#, Android (опционально)
Предложил: Новокрещенов Константин
Модернизация через инновации
Одному студенту довелось увидеть кусочек прямой линии с президентом, и после того, как верховному главнокомандующему задали дежурный вопрос про то, чем отличается наш Народ от других, у него в голове мелькнула мысль «сейчас про широкую душу скажет». Вторая мысль у Владимира Владимировича в голове мелькнула после слов Владимира Владимировича, который в пиджаке, «немного пошире душой», и сериализовалась бы примерно как «БИНГО!».
Предлагается модернизировать наше открытое правительство, сделав инновационное приложение для игры в Bullshit Bingo по основам содержимого видеозаписей или трансляций выступлений политиков или других публичных персон.
Технологии: Chrome API, Google Speech API, JS
Предложил Владимир Владимирович
Вдохновил Владимир Владимирович
Парсер-комбинаторы для самых маленьких
Продолжаем обмазываться функциональщиной, на сей раз в контексте парсинга. Все знают как офигенны парсер комбинаторы. Есть идея сделать приложение для веба в котором из набора предустановленных комбинаторов можно собрать и протестировать свой парсер. Пользователю при этом не надо знать об аппликативных функторах и прочих страшных штуках, для него комбинаторы - это, натурально, кирпичики: перетащил на канву один, второй, соединил третьим, набрал тестовую строку, нажал "play", получил результат "parsed" или "error". В качестве примера можно посмотреть на поделку от Google.
Технологии: Elm, Fay или, на худой конец, JS
Предложил: Николай Обедин
EasyPassy
После упорного чтения за криптохеши, мне пришла идея сделать дополняху для браузера, которая добавляет в каждому заполняемому полю на страничке (альтернативно: только к <input type="password"/>) выпадающую менюху, где можно выбрать какой-нибудь криптохеш. Тогда вместо того, чтобы запоминать сложные пароли можно просто скормить хешу некий сид, например, "olololpishpish", после чего тот уже отправляет его дайджест. Таким образом, все рады: и сервис (пароль сложный) и вы (пароль для запоминания простой). Я уже джва года жду эту функциональность.
Технологии: HTML, CSS, javascript, вот это все.
Предложил: Никита Карташов
Беседка
Раз уже наступило лето, то можно (за три дня должны управиться) возвести адовейшую крытую беседку перед общагой для того, чтобы можно было культурно и под крышей сидеть и наслаждаться летом и уходящей молодостью.
Технологии: доски, гвозди, молотки, инженерная смекалка.
Предложил: Никита Карташов
Генератор рептилоидов
Преподаватель не зачел решенную задачу? Бросила девушка? Друг не дал списать? Да они же рептилоиды! Нужно срочно рассказать об этом миру. Предлагается следующее: реализовать приложение, которое на фотографии определяет отрытые участки кожи и покрывает ее чешуеподобными текстурами и, возможно, округляет глаза, как у настоящих рептилий. Внесем свой вклад в борьбу насаждением западных ценностей!
Технологии: Android
Предложил: Мелешко Дима
Башенное нападение (или оборона)
Предлагается написать игру в жанре Tower Defence или Tower Invasion об извечном противостоянии "Иммунная система vs. Всякая Бяка". Есть довольно много TD, из них довольно много про иммунную систему. Так что если выбрать TD, то рекомендуется добавить туда больше биологии =) TI выглядит интересней, в этом жанре игр существенно меньше, поэтому мне кажется, это была бы более интересная задача.
Особенности обороны:
- разные типы клеток иммунной системы реагируют с разной сторостью, на разные цели.
- дополнительные ресурсы обороняющаяся сторона может получать из нападающих юнитов (в процессе фагоцитоза), и таким образом, при поглощении большого количества юнитов соперника может стать "непробиваемой".
Особенности нападения:
- примеры улучшений: толстая стенка, клеточная мимикрия, многоклеточность (присутствует у некоторых видов бактерий)
Технологии: javascript
Предложил: Малыгина Татьяна
SmartPc
Делаем "умный" компьютер, который сможет ощущать человеческое присутствие.
Берем PIR датчик (позволяет обнаруживать движение людей в контролируемой зоне, так как тело человека излучает тепло + стоит копейки) => Паяльник в руки и коннектим к USB => Пишем программу с набором разных фич: Умный будильник (не выключится, пока человек реально не встанет); выключение музыки, когда в комнате никого нет; направляем датчик на холодильник, и получаем сообщение на почту, когда кто-то посягается на вашу еду;)...и.т.д.
Технологии: C++
Предложил: Аманов Карим
Wolf end Eggs
Все любят мультфильм "Ну, погоди!" и помнят замечательную игру, где волк ловит яйца, которые подкидывают ему курицы с 4-х сторон. Дак давайте же вспомним детство и поиграем, только не сидя за компьютером, а встанем и немного подвигаемся!
Итого идея : пишем игру на PC => управляем волком через веб камеру (руки нужно подставить в одну из сторон, чтобы поймать яичко)
Технологии: C++, Qt, OpenCV
Предложил: Аманов Карим
λGT (Lambda The Gathering)
Сделать аналог задачи ICFPC с графическим интерфейсом и для людей (мультиплеерную версию то есть).
Идея заключается в том, чтобы сделать некий гибрид лямбда исчисления и Magic The Gathering.
Краткое описание:
- В каждой игре участвуют два игрока. У каждого игрока есть фиксированный набор слотов.
- У слотов есть здоровье (слот со здоровьем 0 считается мёртвым).
- Слоты могут хранить карты.
- Карты хранят функции или значения (числа). Набор карт фиксирован (см. ссылку).
- Карты-функции, по сути, являются лямбда-термами (у некоторых есть сайд-эффекты).
- Задача каждого игрока -- уничтожить все слоты противника.
Мысли по реализации:
- Реализовать всё хотелось бы в виде web-приложения.
- Дополнительно можно сделать возможность проводить несколько матчей одновременно.
- Дополнительно можно сделать возможность добавлять новые карты (без сайд-эффектов или с ограниченным набором).
Технологии: Go + Js, Clojure + ClojureScript, любые фантазии в общем.
Предложил: Лёша Цветков.
Stracker
У людей куча социальных аккаунтов, надо как-то за ними следить.
Необходимо создать приложение, которое быдет присылать уведомления, когда кто-то посмел отписаться от тебя.
Провайдеры: Twitter, Instagram, etc
Технологии: Ubuntu Linux (Notifications, Panel indicator), C++, Qt
Предложил: Даниил Овчинников
Multinoid
Сделать игру-арканоид(игрок управляет ракеткой, которая отбивает шарик, который уничтожает блоки) в мультиплейер режиме.
Игровой экран - правильный n-угольник, на каждой стороне по одному игроку. В середине кубики которые можно уничтожить шаром. Если игрок проигрывает (пропускает шар) до число сторон многоугольника уменьшается.
Процесс продолжается до последнего оставшегося игрока. В конце статистика - три вида рейтинга: кто выиграл (выжил), кто набрал больше всех фрагов, кто уничтожил больше всего блоков.
Пилить в браузере, чтобы на презентации дать возможность подключиться всей аудитории одновременно.
Технологии:
Сервер: python (tornado), клиент js (html5), взаимодействие вебсокетами.
Предложил: Бубнов Никита