Skip to content
SviatlanaHlukhava edited this page Mar 23, 2015 · 39 revisions

Общая информация

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

Сообщения о вызове методов контроллеров записываются в файл eighty.log, расположенный в папке logs, и выводятся на консоль. Реализован сбор метрик Codahale Metrics, значения которых можно просмотреть с помощью jconsole, выбрав на вкладке MBeans metrics, а затем интересующую метрику и Attributes.

Используемые технологии

При работе над приложением использованы следующие технологии:

  1. AngularJS - javascript-фреймворк от команды Google. В статье [Angular Style Guide] (https://github.com/johnpapa/angular-styleguide) приведены рекомендации по стилю кода AngularJS.
  2. Neo4j - база данных.
  3. Spring - Java-фреймворк для создания REST-сервиса и доступа к базе данных.
  4. Bootstrap - Фрейморк стилей для html-страниц.

Установка рабочей среды

Для работы с приложением понадобятся:

  • Maven 3. Используется при сборке приложения.
  • Msysgit. Используется при сборке приложения. Также может использоваться при работе с Gitbub.
  • HubFlow. Используется для работы с Gitbub.
  • Firefox Portable 34.0.5. Используется для запуска интеграционных тестов.

Вместо Msysgit при работе с Gitbub можно использовать cygwin.

Установка Maven 3

  1. Скачать Maven 3 и распаковать архив в инсталляционную папку.
  2. Добавить переменную среды M2_HOME = path_to_apache_maven_directory.
  3. Добавить в переменную среды PATH %M2_HOME%\bin.
  4. Чтобы проверить, успешно ли прошла установка, следует выполнить в командной строке команду
    mvn -version
    Если установка прошла успешно, будет выведено Apache Maven 3.0.4.

Установка msysgit

Скачать файл установки msysgit и запустить его.

Установка cygwin

  1. Скачать файл установки cygwin и запустить его.
  2. На вкладке Choose a download soarce выбрать Install from internet, на вкладке Select Your Internet Connection - Direct Connection.
  3. На вкладке Select Packages дополнительно выбрать git и wget. Для этого ввести в поле ввода git, затем выбрать Devel Default и нажать на Skip напротив git, в результате вместо Skip отобразится версия git. Затем ввести в поле ввода wget, выбрать Web Default и нажать на Skip напротив wget, в результате вместо Skip отобразится версия wget. Затем нажать на кнопку Next.

Установка HubFlow

  1. Скачать getopt.exe из пакета util-linux и поместить в папку C:\Program Files (86)\Git\bin. (Только getopt.exe, другие файлы util-linux не используются при установке). Также скачать libintl3.dll и libiconv2.dll из пакета Dependencies (libintl и libiconv), в поместить их же папку.

  2. Скачать HubFlow, для чего выполнить команду
    git clone https://github.com/datasift/gitflow

  3. Перейти в созданную папку
    cd gitflow

  4. Если планируете работать с GitHub через cygwin, то из данной папки запустить cygwin с правами администратора и выполнить команду
    ./install.sh
    В случае, если будет выведено сообщение об ошибке Cygwin - '\r': command not found - .bashrc / .bash_profile, выполнить следующую команду:
    bash -x -o igncr install.sh
    Если планируете работать с GitHub через Git bash, то следует создать в данной папке файл install.bat, содержащий следующий скрипт:

        @echo off
        setlocal
        if not "%~1"=="" set GIT_HOME=%~f1
        if "%GIT_HOME%"=="" call :FindGitHome "git.cmd"
    
        if exist "%GIT_HOME%" goto :GitHomeOK
    
        echo MsysGit installation directory not found.>&2
        echo Try to give the directory name on the command line:>&2
        echo   %0 "%ProgramFiles%\Git"
        endlocal
        exit /B 1
    
        :GitHomeOK
        set ERR=0
    
        echo Installing hubflow into "%GIT_HOME%"...
    
        call :ChkGetopt getopt.exe || set ERR=1
        if %ERR%==1 goto :End
        echo getopt.exe... Found
    
        if not exist "%GIT_HOME%\bin\git-hf" goto :Install
        echo hubflow is already installed.>&2
        set /p mychoice="Do you want to replace it [y/n]"
        if "%mychoice%"=="y" goto :DeleteOldFiles
        goto :Abort
    
        :DeleteOldFiles
        echo Deleting old files...
        for /F %%i in ("%GIT_HOME%\git-hf*" "%GIT_HOME%\hubflow-*") do if exist "%%~fi" del /F /Q "%%~fi"
    
        :Install
        echo Copying files...
        ::goto :EOF
        xcopy "%~dp0\git-hf"            "%GIT_HOME%\bin"                 /Y /R /F
        if errorlevel 4 if not errorlevel 5 goto :AccessDenied
        if errorlevel 1 set ERR=1
        xcopy "%~dp0\git-hf*"           "%GIT_HOME%\bin"                 /Y /R /F || set ERR=1
        xcopy "%~dp0\hubflow-*"           "%GIT_HOME%\bin"                 /Y /R /F || set ERR=1
        xcopy "%~dp0\shFlags\src\shflags" "%GIT_HOME%\bin\hubflow-shFlags" /Y /R /F || set ERR=1
    
        if %ERR%==1 choice /T 30 /C Y /D Y /M "Some unexpected errors happened. Sorry, you'll have to fix them by yourself."
    
        :End
        endlocal & exit /B %ERR%
        goto :EOF
    
        :AccessDenied
        set ERR=1
        echo.
        echo You should run this script with "Full Administrator" rights:>&2
        echo - Right-click with Shift on the script from the Explorer>&2
        echo - Select "Run as administrator">&2
        choice /T 30 /C YN /D Y /N >nul
        goto :End
    
        :Abort
        echo Installation canceled.>&2
        set ERR=1
        goto :End
    
        :ChkGetopt
        :: %1 is getopt.exe
        if exist "%GIT_HOME%\bin\%1" goto :EOF
        if exist "%~f$PATH:1" goto :EOF
        echo %GIT_HOME%\bin\%1 not found.>&2
        echo You have to install this file manually. See the hubflow README.
        exit /B 1
    
        :FindGitHome
        setlocal
        set GIT_CMD_DIR=%~dp$PATH:1
        if "%GIT_CMD_DIR%"=="" endlocal & goto :EOF
        endlocal & set GIT_HOME=%GIT_CMD_DIR:~0,-5%
        goto :EOF
    

После чего из папки gitflow запустить cmd с правами администратора и выполнить команду
install.bat "C:\Program Files (x86)\Git"
В ответ на вопрос: Does C:\Program Files (x86)\Git\bin\hubflow-shFlags specify a file name or directory name on the target (F = file, D = directory)?, выбрать вариант f.

Настройка msysgit или cygwin для работы с GitHub

  1. Запустить Git Bash либо cygwin.

  2. Cоздать файл your_home_directory\.bashrc, в котором прописать

        eval `ssh-agent -s`
        ssh-add ~/.ssh/id_rsa
        ssh -T git@github.com
    

id_rsa - [ключ SSH] (https://help.github.com/articles/generating-ssh-keys/), который предварительно должен быть создан.
3. Прописать в консоли свои данные

````
    git config --global user.name YourName
    git config --global user.email YourEmail
````    
  1. Для настройки переносов строк выполнить команду
    git config --global core.autocrlf false

Установка Firefox Portable 34.0.5

  1. Скачать файл установки Firefox Portable 34.0.5 и запустить его.
  2. После завершении установки добавить переменную среды FF_PORTABLE = path_to_Firefox_Portable_directory/App/firefox.exe

Начало работы над проектом

  1. После того, как рабочая среда установлена, следует скачать исходники из Github, используя команду
    git clone https://github.com/EPAMMogilev/eighty
  2. После этого требуется перейти в папку с проектом и инициализировать локальный репозиторий. Если Вы используете HubFlow, выполняются следующие команды:
    cd eighty
    git hf init
  3. Затем можно создавать фича-бранчи. Фича-бранч создается следующим образом с использованием HubFlow:
    git hf feature start [##feature_name##]

Сборка проекта

Для сборки проекта имеются следующие .bat-файлы:

  • dirty_build.bat - собирается development версия, unit-тесты и интеграционные тесты, проверки Code Quality с помощью findbugs, pmd, checkstyle не выполняются.

  • commit_build.bat - собирается production версия, выполняются все тесты, jUnit и интеграционные, а также проверки Code Quality с помощью findbugs, pmd, checkstyle.

  • dirty_deploy.bat - собирается development версия, unit-тесты и интеграционные тесты, проверки Code Quality с помощью findbugs, pmd, checkstyle не выполняются. Собранный билд заливается на локальный сервер tomcat 7. Для того, чтобы билд можно было залить на tomcat 7, в файл path_to_apache_tomcat\conf\tomcat-users.xml следует добавить

        <role rolename="standard"/>
        <role rolename="manager-script"/>
        <user username="tomcat-script" password="s3cret" roles="standard,manager-script"/>
    

а в файл user_home_directory\.m2\settings.xml:

```` 
    <server>
        <id>tomcat</id>
        <username>tomcat-script</username>
        <password>s3cret</password>
    </server>
````  

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

[Диаграмма сборки проекта] (https://cloud.githubusercontent.com/assets/8478574/6572708/69214a9e-c725-11e4-956a-97b1991af7e6.png)