Showing posts with label Coding Dojo. Show all posts
Showing posts with label Coding Dojo. Show all posts

Thursday, November 08, 2012

Играем в тетрис на C#. Запуск на Visual Web Developer Express 2010

1. Установка Visual Wеb Developer 2010 Express.

Если подходящая версия Visual Studio 2010 уже установлена, то этот этап можно пропустить :).

Запускаем инсталлер, ставим. Я устанавливал отсюда.

Ниже картинки того, что происходило на экране во время установки.

IIS и Web Deploy еще понятно, но зачем мне SQL Server ставить :)?

Ладно, жму Install. Просит пароль sa для SQL Server.

Пустой пароль, как и 123 - не подходят :)

Качаем, ждем :)

2. Устанавливаем NuGet package manager

Открываем окно Extension Manager из меню Tools->Extension Manager...


Если NuGet Package manager не установлен, то ищем его в Online Gallery и устанавливаем


3. Стартуем

Скачиваем щаблон проекта http://codenjoy.com/files/tetris-servers.zip

После распаковки открываем проект в Visual Studio. Проект находится в <unpack folder>\tetris-servers\tetris-servers\csharp\nancy

Открываем Package manager console

и запускаем команду Install-Package Nancy.Hosting.Self

Если ошибок нет, то можно подключаться к игре.

Tuesday, September 18, 2012

Tetris coding dojo. Включаем мозг. Включение #0.

О чем это

Сейчас трудно найти программиста, который не знал бы, что такое ТДД или рефакторинг. Трудно найти такого, который еще и применял бы эти практики в жизни. Мне, например, повезло и я ощутил полезность всего спектра так называемых "инженерных практик" в реальной разработке. Многие ребята не могут похвастаться таким везением. Естественно, что не попробовав применить, например, ТДД на практике, сложно сделать какой-нибудь вывод о его полезности.
Конечно же есть масса тренингов по инженерным практикам. Но проблема в том, что практические задания на  подобных мероприятиях довольно простые. На них мы можем только отработать базовые навыки. К тому же приходится давать довольно много теории, рассматривать различныые варианты решения задачи и подводить слушателей к правильным теоретическим выводам. Не хватает практического подтверждения (или опровержения :)) правильности сделанных выводов.
Решение этой проблемы пришло само собой:

Tetris Coding dojo

Вообще Coding dojo - отличное и веселое мероприятие. Мы (я и Саша Баглай) подумали, что это подходящий формат для того, чтобы попрактиковаться в применении своих мозгов навыков в инженерных практиках. Мы одолжили идею coding dojo и сделали свой фреймворк.
За основу взяли известную всем игру - тетрис. Будем учить компьютер играть в тетрис! Мало того, мы еще будем соревноваться в том, кто круче это сделает :)

Думаю, что лучше один раз увидеть, чем написать 100500 слов описания.

Пробное включение

Недавно мы с Сашей попробовали сами написать код управления фигурками. Это мероприятие выбило нас из жизни часа на 4 :). В результате пофиксили несколько багов во фреймворке. Я же научился расставлять "палочки" и "квадратики", сделал несколько небольших рефакторингов и окончательно убедился, что я тестозависим :).

Код тетриса лежит на гитхабе, написан на java. Запускается одной командой (mvn jetty:run). Чуть позже напишу подробную инструкцию (если не поленюсь:)). Велкам с коментами, пожеланиями и участием.

Friday, June 29, 2012

Как запустить DOS программу в Windows x64

Для тех, кто иногда ностальгирует по игрушкам, написанным для DOS и расстраивается от того, что в последних версиях Windows досовские игрушки не запускаются есть замечательное лекарство - DOSBox.


Как запустить DOS игрулю под Windows 7 x64

1. Скачиваем инсталляцию эмулятора DOSBox отсюда. 

2. Запускаем инсталлятор, устанавливаем.

3. Запускаем DOSBox. При запуске выведется синенькое окошечко с инструкциями.

4. Маунтим диск с досовскими игрульками командой mount

5. Переходим в папку с игрушкой. Мне пришлось ввести имя папки в досовском формате, т.к. ее длина превысила 8 символов:

6. Запускаем. Я запустил snake.exe и вот такое счастье мне высветилось:

Коллекции досовских игрушек можно пополнить отсюда
http://dosgames.ru/game
http://xn--80atapp0e.su/games.html

Tuesday, April 24, 2012

Automation testing dojo - настройка проекта на Robotframework

Краткая инструкция по установке

Видеомануал по установке Robotframework можно посмотреть здесь
Важно.Необходима версия Python, не ниже 2.6, но не Python 3.

Теперь, когда у вас установлен Python и setup tools, необходимо установить библиотеку robotframework-selenium2library. Я установил с помощью setup tools, запустив команду easy_install robotframework-selenium2library

Скачиваем шаблон проекта http://bit.ly/I7BZQZ и распаковываем. Я распаковал в C:\robotframework-template.

Пробуем запустить тест командой pybot --listener DojoListener.py SampleTest.txt. Если все успешно установлено, то тестовый сценарий упадет с ошибкой, обозначающей, что Selenium не смог найти элемент. Также выведется ошибка, которую выводит скрипт, репортящий результаты выполнения теста.
Возможная ошибка У меня во время запуска примера возникла ошибка '"[PYTHON_EXECUTABLE]"' is not recognized as an internal or external command, operable program or batch file . Чтобы ее пофиксить я зашел в Python\Scripts и в батнике прописал абсолютные пути к питону и роботу в pybot.bat

Устанавливаем Robotframework IDE (RIDE)

Скачиваем инсталляцию отсюда https://github.com/robotframework/RIDE/downloads и инсталлируем.

Прежде, чем запустить RIDE должен быть установлен wxPython. Качаем отсюда http://wxpython.org/download.php#stable
Важно. Если во время установки инсталлер просит ввести путь к установленному Python, то проверьте, чтобы версия wxPython совпадала с версией Python!


Теперь можно запустить RIDE. Для удобства я создал шорткат на скрипт [PythonInstalldir]\Scripts\ride.py на десктопе. Откроем тестовый файл (File->Open, выбираем C:\workspace\robotframework-template\SampleTest.txt).


Регистрация и логи

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

Заменим http://localhosth:8080 на реальный адрес приложения, которое будем автоматизировать.

Заменим JohnDoe на свое уникальное имя.

Важно - имя должно быть написано латинскими буквами без пробелов и спец символов.
Важно2 - Регистр имеет значение. Так JohnDoe и johndoe - это 2 разных пользователя

Соответствие тест кейзов сценариям

Сценарии, которые реализовывает приложение привязывается к тестам Robotframework'a с помощью тагов. В секции Settings, в строке Tags необходимо добавить так с текстом "Scenario N", где N - номер сценария.

Для запуска тестов из RIDE нужно указать полный путь к листенеру в строке Arguments на закладке Run:

После запуска вы должны увидеть сообщение о том, куда будут отправляться результаты тестов:

Thursday, March 08, 2012

Automation testing dojo - настройка проекта на Java

Ответ на вопрос "Готов ли я участвовать в Automated testing dojo?" дает следующий тест:


Given installation manual below
When I run sample tests from the template
Then I see green line


Как только этот тест PASSED, то можно присоединяться к участникам соревнования, имея большие шансы набрать наибольшее количество баллов ;). Если тест FAILED, то всегда есть у кого попросить помощи в настройке (мой email указан в профайле).

Руководство по установке


Для того, чтобы настроить проект потребуется средство сборки и управления зависимостями Maven. Скачать можно отсюда. Инструкция по установке здесь.
Проверить правильность установки мавена можно запустив из командной строки команду mvn -version. В случае успешной установки на консоль выведется версия Maven и Java.

Скачиваем шаблон проекта. Качать здесь. Распаковываем в папку на диске. В моем случае это c:\workspace\projects\template-java.
Ниже инструкции настройки проекта для Инструкция для IDE IntelliJ IDEA и Инструкция для Eclipse. Немного проще настраивать в IntelliJ IDEA, т.к. там встроена хорошая поддержка Maven проектов.

Инструкция для IDE IntelliJ IDEA


Инструкция для IntellJ IDEA 11 Community Edition, скачать которую можно здесь.
После запуска IDE выбираем File->New Project... или выбираем значок Create New Project из панели Quick Start:


Выбираем Import Project from external model и жмем Next. Обратите внимание, что если у вас версия IDEA ниже 11, то пункт "Import project from external module" будет последним в списке.


Проект Maven, Next


Указываем путь к папке, в которую распаковали шаблон проекте (в моем случае это c:\workspace\projects\template-java), нажимаем Next


Должен обнаружиться мавеновский проект:


Название проекта и расположение оставляем как есть и жмем Finish


Немного подождем, пока загрузятся нужные библиотеки и посмотрим на структуру проекта.


Как видим, в проекте один тестовый класс, в котором будем кодить наши автоматизированые сценарии.


Попробуем скомпилировать и запустить тест. Запустить можно по правой кнопки мыши и выбрать Run "SampleAutomationTest" или сочетанием клавиш <ctrl>+<shift>+F10.


Вы получили ответ на вопрос "Готов ли я участвовать в Automated testing dojo?". Если тест зеленый, то готов! Приходи на dojo, регистрируйся и начинай автоматизировать! К инструкции как регистрироваться


Инструкция для Eclipse


Инструкция для Eclipse IDE for Java developers. Скачать можно здесь. Выбрана именно эта конфигурация Eclipse потому что она интегрирована с Maven.


При запуске Eclipse спросит где будет находиться наш ворскпейс. Оставляем по умолчанию.


После запуска IDE выбираем File->Import... и в появившемся окне выбираем Maven->Existing Maven Projects и жмем Next


Затем выбираем папку, в которой находитдя шаблон проекта. В моем случае это c:\workspace\projects\template-java. Нажимаем Finish


Немного подождем, пока скачаются все зависимости, после чего смотрим на структуру проекта:


Как видим, в проекте один тестовый класс, в котором будем кодить наши автоматизированые сценарии.


Запустим тест. Правой кнопкой мыши Run As->JUnit Test из окна с исходным текстом или в окошке Outline.


Вы получили ответ на вопрос "Готов ли я участвовать в Automated testing dojo?". Если тест зеленый, то готов! Приходи на dojo, регистрируйся и начинай автоматизировать! К инструкции как регистрироваться

Регистрация и логи


Прежде чем зарегистрироваться нужно указать в тесте адрес сервера в анотации @ReportTo. Заменим http://127.0.0.1:8080 на реальный адрес приложения, которое будем автоматизировать. После чего укажем имя, под которым на сервер будут отсылаться отчеты о успешности выполнения теста. Заменим JohnDoe на свое уникальное имя.
Важно - имя должно быть написано латинскими буквами без пробелов и спец символов.
Важно2 - Регистр имеет значение. Так JohnDoe и johndoe - это 2 разных пользователя

Открываем браузер и вводим такой URL: http://<server address>/register. Где <server address> - это IP адрес сервера. В тест боксе Player name вводим имя игрока


Если вы ввели уникальное имя, то выведется страничка с результатами запуска тестовых сценариев

Где в столбце
  • Scenario - номер сценария
  • Score - количество очков, полученные за результат выполнения (или бездействия) автоматизированного тестового сценария
  • Test result - прошел тест или нет (true/false)
  • Description - краткое описание за что начислили (или отобрали) баллы
  • Log type - То как система распознала отчет автоматизированного теста

    Переключимся в IDE и запустим тестовый сценарий. После чего в логах должна появиться вот такая запись:


    Теперь можно автоматизировать сценарии, описание которых можно увидеть, если перейти по линку на страничке логов или ввести URL http://<server address>/scenarios
  • Wednesday, February 22, 2012

    Coding Dojo - экстремальное погружение

       Не так давно мне посчастливилось попарнокодить с Johannes Brodwall. Один из результатов спаринга я уже опубликовывал в предидущем блоге (см. Зачетный пример на TDD)
       К сожалению мне не удалось попасть на его мастер-класс "TDD Coding Dojo", так как именно в этот день я обещал своей жене то, чего она ждала последние 7 лет - пойти с ней на танцевальную вечеринку. Можете себе представить мою досаду, когда мы, одетые, побритые и накрахмаленные пришли вечером в танцевальный клуб и узнали, что вечеринку перенесли на другой день?!. Еще раз сделаю ссылку на сайт танцевельной тусовки дабы чаще смотреть обновления об изменении планов.
       В общем я задался целью организовать это мероприятие у нас на фирме. Слава Богу, контора большая и желающих должно набраться большое количество. Тем более, что Саша развил в киевском офисе клевую идею с техтолками, что уже создало своеобразную тусовку.
       Итак, я вооружился инструкциями "Как стартануть Coding Dojo" от Johannes'a и решил попробовать запустить это у себя на компе

    Как это работает


       Coding Doje Extreme Setup состоит из 2-х частей - клиентская (я ее буду называть Extreme Setup хост, или просто хост) и серверная. Хост - это программа, которая 1 раз в 10 секунд посылает http запросы всем зарегестрированным серверам участников и сравнивает их ответы с правильным вариантом. Если ответ правильный - игрок получает очки, если ответ неправильный - очки отнимаются. Включив принцип КО можно догадаться, что сервер - это программа, запущенная на компьютере участника. В случае с Java - это обычный сервлет

    Как установить хост


       Для одной игры хост нужен только один, так что если вы собираетесь только играть можете смело перепрыгивать в секцию Установка сервера.
       Клонируем git://github.com/jhannes/extreme_startup.git. Это форкнутая отсюда https://github.com/rchatley/extreme_startup версия. Выбрал ее потому, что она отработана на киевском dojo на XPDays. Я склонировал в папку C:\workspace\projects\dojo-startup\extreme_startup
       Дальше делаем все согласно README.md из проекта, а именно:
    Устанавливаем Ruby 1.9.3 (качаем отсюда)


       Скачиваем Ruby DevKit и распаковываем в (я установил в c:\workspace\bin\RubyDevKit)


       Далее устанавливаем DevKit:
    - Открываем командную строку, переходим в c:\workspace\bin\RubyDevKit и запускаем ruby dk.rb init.

    - Сгенерировался config.yml файл. Откроем и посмотрим. Должны увидеть путь к установленному Ruby.

    Если нет – надо добавить

    - Запускаем ruby dk.rb install



       Переходим в папку со склонированным репозиторием (C:\workspace\projects\dojo-startup\extreme_startup) и запускаем команду gem install bundler.

       Затем запускаем команду bundle install и ждем, пока скачаются и установятся необходимые библиотеки. После появления обнадеживающей надписи

       запустим extreme startup сервер в режиме разогрева (warmup mode): ruby warmup_web_server.rb

       Проверяем страничку с результатами http://localhost:3000 (пока пустая). Проверяем, что хост доступен с другого компьютера.

       Чтобы присоединиться к игре необходимо ввести имя и URL веб сервера игрока, запущенного на его машине. Для каждого языка программирования существует свой простой способ стартануть сервер. Я привел инструкции как это сделать на Java. Для других языков смотрите список проектов в каталоге extreme_startup_servers
       Ждем, когда все игроки настроят свои средства разработки и зарегистрируются. Как только все прокричали «я готов!» останавливаем сервер и запускаем реальную игру командой ruby web_server.rb

    Установка сервера на Java.


       Прежде всего нужно убедиться, что установлен Maven (если нет, то утанавливаем отсюда) и он доступен по путям: mvn –version что-то выдает
       Скачиваем зип архив отсюда. Это содержимое репозитория со старт-поинтами https://github.com/bodil/extreme_startup_servers. Я склонировал в папку C:\workspace\projects\dojo-startup\extreme_startup_servers
       Запускаем любимую java IDE (в моем случае это IntelliJ IDEA) и создаем новый проект из мавеновского pom.xml. Проект берем этот: /java/servlet_for_dummies (C:\workspace\projects\dojo-startup\extreme_startup_servers\java\servlet_for_dummies)

       После открытия проекта смотрим что внутри


  • ExtremeStartupServer – класс с main методом для запуска Jetty
  • ExtremeStartup – сервлет, который мы будем программировать
  • ExtremeStartupTest – тест, который нам поможет этот сервлет запрограммировать

       Запустим ExtremeStartupTest – если все тесты зеленые, то запускаем сервер (ExtremeStartupServer)
       Открываем браузер и вводим адрес http://localhost:1337/?q=what+is+the+sum+of+8+and+22


       Все, теперь можем регистрировать наш сервер. Переходим на страничку хоста (http://localhost:3000 или в случае другого компа – IP адрес этой машины), нажимаем I want to play и вводим имя (латинскими буквами!) и URL вашего сервера.

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


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


       Выведем на консоль то, что спрашивает хост – делаем изменения в классе ExtremeStartup
       Оказывается хост хочет узнать как меня зовут.


       Не вопрос, поменяем реализацию метода answer
       и смотрим на свой результат. Ура! У меня есть первый правильный ответ


       Итак, в консоли мы видим приходящие запросы и программируем сервлет так, чтобы он отдавал правильные результаты. За каждый правильный результат начисляются баллы, за каждый неправильный или пропущенный ответ вычитаются. Думаю очень полезно использовать тест, чтобы не поломать предыдущую функциональность и иметь возможность быстро сэмулировать запрос.
       Все, можно кричать "Я готов!"