Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Игра в стартап на семинарах по Java

Anna | 4.06.2014 | нет комментариев
Иллюстрация HttpSession в момент работы с куками
Эта статья обязана своим возникновением новому требованию к курсу «Углублённое программирование на Java», тот, что я веду в Технопарке Mail.Ru в МГТУ им. Баумана. Это требование было сформулировано в начале лета и звучало приблизительно так: «Ещё огромнее практики!».

Так как курс первоначально был замыслен как фактический, и всё в нём, как мне казалось, нацелено на утилитарную работу, то в 1-й момент я был в замешательстве. Ещё огромнее практики дозволено было добиться только двумя путями.

1-й — привести всех студентов к нам на план Skyforge и посадить писать сервер. Всерьёз я такой вариант, безусловно, не рассматривал, но новой директиве он верно соответствовал. Не знаю, с каким выражением на меня посмотрели бы администраторы плана, приди я к ним с сходственным предложением, но пофантазировать было интересно. К счастью, у меня был запасной вариант.

Я решил изменить курс так, Дабы он, помимо познаний по написанию сервера на Java, содержал ещё элементы игры в стартап по разработке игр. Практикоорентированность этого дополнения мне кажется явственной, приближённость к «боевым» условиям — тоже. О начале этого эксперимента я и хочу вам рассказать.
Перед тем как перейти непринужденно к изложению изменений в учебной программе и первых итогов, я хотел бы ещё раз сказать несколько слов о курсе и Технопарке.

«Углублённое программирование на Java» — это курс второго семестра Технопарка. К прохождению курса допускаются студенты, удачно закончившие 1-й (из четырёх) семестров программы. В рамках программы мы постигаем архитектуру сервера браузерной игры, написанной на Java. Множество студентов до этого курса платформу Java не постигали и навыка написания приложений на ней не имеют.

Курс нацелен на написание масштабируемого модульного приложения. Модули сервера включают в себя работу с файловой системой, базой данных, веб сервером (на Jetty) и игровую механику. Всё это живёт в нескольких потоках и обменивается сообщениями. Все лекционные материалы подобраны так, Дабы служить фундаментом для утилитарной работы. Мы не используем JavaEE и в учебных целях самосильно трудимся с потоками и JDBC. Дабы знать, как оно устроено внутри, а не легко собрать программу из теснее готовых модулей. Исключительное исключение — это Jetty, Дабы не начинать знакомство с Java с написания своего веб сервера. Подробнее о том, каким был курсе весной этого года, я писал в своей предыдущей статье.

Являясь по своей сути академическим, курс «Углублённое программирование на Java» мог вообще не содержать материалов по разработке фронтенда. Но без этого его ценность, как и увлеченность в нём студентов, была бы гораздо ниже. Писать сервер без вероятности обратиться к нему заказчиком — занятие, аналогичное с разработкой сферического коня в вакууме. Следственно первые 2-3 занятия мы посвящаем настройке инструментов и разработке заготовки для фронтенда.

Полновесную работу над фронтендом игры дозволено начать, только если ты теснее знаешь, какую игру ты будешь писать. В идеале для неё необходимы не только программисты, но также художники и дизайнеры. Снабдить студентов каждому нужным для полновесного фронтенда я не могу. Эта часть плана в большей степени остаётся на их усмотрение.

Выходит, вернёмся к лозунгу «Ещё огромнее практики!». Дабы уйти от академичности в сторону большей фактической ценности, я решил:

  1. усилить фронтендную часть,
  2. применять огромнее инструментов для управления планом,
  3. позволить студентам самим объединяться в группы,
  4. эмулировать промежуточные контрольные «приёмки работы инвестором».

Сейчас подробнее о всяком пункте.
Два предыдущих семестра я начинал с дюже упрощённой фронтендной части. Для её сдачи было довольно скачать библиотеку Jetty, подключить к плану и написать преемника от AbstractHandler (как в базовом примере от авторов библиотеки). И отдавать в браузер страницу с формой, содержащей сделанный сервером id сессии пользователя, и javascript-ом, тот, что постит раз в секунду эту форму на сервер. Таким образом, мы эмулировали общение между сервером и заказчиком.

С точки зрения разработки сервера, этого было довольно. Студенты сами могли от этого оттолкнуться и расширить вероятности системы, применяя сервлеты, http-сессии, шаблонизатор и ajax. Некоторые с этим совладали, некоторые нет. Богатство фронтенда я на экзамене не оценивал, всё держалось только на энтузиазме.

Для достижения новых целей этого было очевидно неудовлетворительно. Следственно мы решили, что для всех будет непременным применение сервелетов, HttpSession и механизма «отдачи» статики. Помимо того, мы решили применять библиотеку для образования страниц. К счастью для нас, в этом же семестре у студентов возник курс фронтендной разработки и для всех, кто постигает «сервер на Java», теснее не задача написать асинхронные запросы от браузера к серверу.

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

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

Сейчас подробнее об инструментах. В качестве IDE в этом семестре мы предпочли IntelliJIDEA Community Edition. Для управления сборкой и внешними зависимостями — maven. Этим мы достигли сразу две цели — облегчили процесс скачивания и подключения библиотек и дали студентам вероятность освоить знаменитые инструменты.

Новую среду разработки студенты освоили стремительно, «скорость» интернета в МГТУ оказалась довольной, Дабы maven мог выкачать надобные библиотеки за минуты.

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

Работа над фактическим заданием в рамках курса идёт в группах по 3-4 человека. Всякая группа завела себе открытый репо на github. Помимо того, я реанимировал свой ветхий аккаунт и выложил на нём примеры для занятий и презентации. Сейчас студенты могут глядеть мои материалы, а я могу следить за изменением их кодов. И вновь же, от этого решения сразу две выгоды: удобство разработки и постижение знаменитых инструментов.

Безусловно, когда я предложил всё удерживать в открытых репо, мне сказали: «…ведь все увидят наш код!!!!111». Да, увидят. И, как мне кажется, это восхитительно. Больше того, если вы напишете код, тот, что кто-то станет глядеть и разбираться в нём, то это ваша победа. А тот, кто сумеет разобраться в чужом примере и на его основе написать свой — герой, заслуженный хорошей оценки.


Мои и студенческие репо

Одной из задач Технопарка является подготовка студентов к работе в коллективе. Дюже редко новейший работник приходит в команду, в которой теснее есть его друзья и знакомые. Дабы эмулировать прикрепление к коллективу, мы в предыдущих семестрах объединяли студентов в группы сами.
В данный раз мы решили сделать по-иному, и первое занятие курса я начал с предложения: «Представьте, что вам пришла в голову талантливая идея сделать свой стартап. И вы решили с друзьями начать писать браузерные игры». В итоге на первом же занятии 32 студента объединились в 9 групп.


Пример командной работы

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

По правилам Технопарка познания контролируются не только на экзамене в конце семестра, но и на нескольких промежуточных экзаменах. Один из них мы теснее провели. Дабы получить наивысший балл,необходимо было закачать на мой ноутбук, подключённый к проектору, свой код из github, собрать план, показать каждому, как он работает, и рассказать о коде.

Идея демонстрации работы приложения на «железе клиента» оказалась дюже продуктивной. Два плана из подготовленных к сдаче отказались запускаться с первого раза. Один работал вовсе не так, как планировали авторы. Довод «но у меня на компе всё отменно» я не рассматривал. Исключительно доставляло радовало предложение: «А сейчас давайте посмотрим, как всё это будет выглядеть в Internet Explorer».

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

Позже публикации предыдущей статьи о курсе в Технопарке я получил много комментариев с вопросом: «Где посмотреть материалы по курсу?» Мы записали курс в формате SCORM и теперь его дозволено обнаружить в «Национальном Открытом Институте Интуит». Тут видеокурс «Углублённое программирование на Java». Примеры кода, о которых я рассказывал, дозволено обнаружить на github.

Виталий Чибриков,
Allods Team

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB