Отчет о Tetris Codenjoy #6 2013-02-09

На этот раз Харьковский офис GlobalLogic приютил нас для dojo в tetris. Все началось в субботне пасмурное утро.

Музыка играла вот эта

Chris Luzz — Stranjj Selections (September 2012) (Hour 1) by Chris Luzz on Mixcloud

В офисе никого, только мы с Женей Городковым, охранником и стульями. Расположены они были не по феншуй, а потому первых пару минт мы занимались рефакторингом. Цель — повысить шанысу нетворкинга. Потому столы и стулья были разложены в группы по 4.

Но как показал опыт, ничего не нетворкает лучше, чем парное программирование. Пара у нас была, целая одна 🙂 Все остальные ребята пилили тетрис в одиночку.

Но вернемся на минутку у нашему пасмурному утру. Самый первый участник имеет существенное преимущество, поскольку требуется некоторое время на настройку окружения, а начинаем все одновременно…

Постепенно ребята заполнили gl-club и после небольшой настройки началась игра.

Как мы с Женей обсуждали в кулуарах — когда игра начнется, мы можем смело пойти домой. Хотя нет, все же одну полезную роль мы выполняли: я дергал мышкой каждые 10 минут, чтобы скринсейвер на корпоративном ноуте не включался а Женя помог с организацием пицц и пива, за что спасибо Жене и GlobalLogic.

Победитель потом поделилсяя секретом, почему и как у него получилось выиграть. Это был Юрий Литвиненко. Случайно не потому ли Юра стал победителем, что почти сразу отсел в дальний угол gl-клаба…

Интересно то, что когда мы в конце прогнали на больших скоростях алгоритмы участников, то оказалось что первое место занял другой алгоритм, но комментарий Юры, что тут как в реальном мире платят только первым, успокоил горячую публику — иначе бооюсь, у него отобрали бы его приз, ручной тетрис. Да, да! Мы снова сделали это, подарили три китайских тетриса лидерам (Женя, спасибо!).

Кстати да! Посередине игры проводил опрос участников. Вопросов было несколько — пишут ли ребята тесты, и что думают по поводу рефакторинга своего кода.

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

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

А вот скриншот под конец игры

Когда игра закончилась мы попросили Юру запостить свой алгоритм в Online Tetris чтобы сравнить его алгоритм с алгоритмами других игроков прошлых встреч. Результат говорит о том, что есть куда расти!

Но погодите, большинству из игроков Online Tetris потребовалось куда больше 6 часов для реализации и тюнинга их алгоритмов, потому и очков у них больше. Пока больше! Правда, Харьков?

Напомню, чтобы выложить свой готовый алгоритм в Online версию тетриса, необходимо проследовать этим рекомендациям.

Вообще, хочется выделить группу Харьковских java-разработчиков как одних из сильнейших! Впервые за один день и именно на этой встрече игроки дошли до 19 (самого последнего) уровня! Молодцы! Спасибо за классную игру!

Небольшая панорамка чтобы передать атмасферу…

Видео всей игры, ускоренное в 40 раз.

Отзывы участников

Понравилось думать! Такой формат стоит проводить еще потому что это хорошая тренировка для мозгов…никогда не думал что тетрис настолько серьезная игра. А еще — это шанс поучиться у более опытных программистов
Понравилась неформальность мероприятия. Хорошая организация. Ну и пицца + код + соревновательный элемент = отлично проведен день.
Ну в общем понравилось ВСЁ! Непренуждённая атмосфера разработки с соревновательной составляющей, печеньки и пицца, общение с коллегами в неформальной обстановке. Что ещё нужно чтобы весело провести день субботы когда на улице плохая погода?
Все стаканы на одном экране — это было классно.
Понравился собственно формат и то, как он отлично иллюстрирует важные моменты разработки. Например:
* Не важно как хорошо твой алгоритм будет (возможно) работать когда-нибудь. Важно как он работает прямо сейчас.
* Если юнит тесты писать неудобно, сложно заставить себя это делать
Все было супер, организаторы молодцы. Все доступно разъяснили до начала, во время мероприятия стояла дружеская обстановка.
Отличный ивент. Дружелюбная атмосфера, интересная задача, организация на высоте. Дух соревнования заставляет мобилизировать все способности. Обмен придуманными алгоритмами позволяет взглянуть на поставленную задачу под разными углами.
Мне понравилось все. Я был первый раз на подобного рода мероприятиях и долго не мог успокоиться по окончанию Codenjoy, пришлось использовать пиво в качестве местной анастезии для мозга.Формат годен хотя бы потому-что он подстегивает дух соревнования и не дает расслабится до самого конца. Ты постоянно в поиске нового, лучшего решения, которое можно быстро реализовать и получить дополнительные очки.
Для тех кто еще не учавствовал это будет интересно тем что цикл код -> результат -> код очень быстрый и отдачу получаеш каждый раз когда рестартуеш свой локальный сервер.
Понравился формат мероприятия, атмосфера борьбы в реальном времени поиск алгоритмов подходящих под постоянно меняющееся ТЗ. Сложно оценить себя как программиста имея в распоряжении хороший запас времени, когда каждая минута это потерянные очки, то по итогам 6-8 часов работы можно оценить свои возможности и свои достоинства и недостатки.
Все было круто! Мне очень понравилось. Что еще можно сказать 🙂

И конечно же фотки

Играем в тетрис на JavaScript (Node.js)

Для того, чтобы начать играть в тетрис на Java необходимо проделать следующие шаги:

1. Установить Node.js

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

C:\Users\xxx>node
>

3. Установить пакет библиотек для работы с web socket. Для этого в папке с установленнной node.js надо выполнить в cmd команду npm install ws

4. Скачать клиента. Распаковать туда, куда удобно. Проследовать указаниям описанным в tetris-servers.zip\javascript\README.txt, а именно:

5. Открыть файл .\tetris-servers\javascript\node.js\TetrisServer.js на редактирование

5. Заменить в нем 127.0.0.1 на свой IP (узнать свой IP можно запустив команду ipconfig в cmd).

6. Запустить .\tetris-servers\javascript\node.js\run-server.bat

Внимание! При изменении файла TetrisServer.js стоит перезапустить run-server.bat

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

Для того, чтобы начать играть в тетрис на Java необходимо проделать следующие шаги:

1. Установка JDK

Для начала нужно скачать JDK (7-й версии!) и установить его. Скачать JDK7 (не JRE!) можно отсюда. В инете много хороших инструкций как установить JDK, вот одна из них.

2. Установка Maven

Скачать архив Maven 3 и распаковать его в c:\java\ (пробелов и русских символов в пути быть не должно).

Указать новую переменную окружения M2_HOME на папку maven. Например у меня M2_HOME = C:\Java\apache-maven-3.0.4\bin

Указать в существующей переменной окружения Path новый путь
Path = {старое значение переменной};M2_HOME/bin

Проверить как работает maven запустив cmd, а в нем команду mvn -version. На экран должно вывестить

C:\Users\xxx>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: C:\Java\apache-maven-3.0.4
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1251
OS name: «windows 7», version: «6.1», arch: «amd64», family: «windows»
C:\Users\xxx>

3. Открываем клиента в IDE

Далее скачиваем клиента. Следуем указаниям описанным в tetris-servers.zip\java\README.txt а именно

Для работы с IntelliJ IDEA необходимо в меню File->New Project… в диалоге выбрать Import Project from external model, далее выбрать Maven и указать путь к клиенту

Для работы с Eclipse необходимо в меню File->Import в диалоге From Import выбрать Maven->Existing Maven Projects и указать путь к клиенту

Далее существует два варианта игры: 1) через websockets 2) через http. Выбор осуществляется ведущим игры.

Игра по http дает возможность играть только в пределах одной локальной сети. В этом режиме необходимо запустить TetrisServlet как консольное приложение Java. Открыть в браузере http://localhost:8888/?figure=I&x=5&y=19 и посмотреть вернется ли ответ.

Игра через websockets дает возможность играть из любого места, лишь бы был доступ к игровому серверу через интернет. В этом режиме необходимо запустить WebSocketTetrisClient как консольное приложение перед тем прописав в переменных

private static final String SERVER = «ws://tetrisj.jvmhost.net:12270/tetris-contest/ws»;
private static String userName = «Sergey»;

имя игрока (указывается при регистрации) и IP игрового сервера (меняем только tetrisj.jvmhost.net на IP — остальное оставляем как есть).

В случае игры на сервере http://codenjoy.com/tetris-contest константа SERVER не меняется.