{"action":"created","comment":{"url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/comments/64350446","id":64350446,"diff_hunk":"@@ -0,0 +1,71 @@\n+package su.iota.backend.models;\n+\n+import com.google.gson.annotations.Expose;\n+import org.jetbrains.annotations.Nullable;\n+import org.joda.time.DateTime;\n+\n+public class UserProfile {\n+\n+    @Expose\n+    private @Nullable Long id;\n+\n+    @Expose\n+    private @Nullable String login;","path":"src/main/java/su/iota/backend/models/UserProfile.java","position":13,"original_position":13,"commit_id":"4eec71b9d4e3b66cd222a60d822e8e15a7681b82","original_commit_id":"4eec71b9d4e3b66cd222a60d822e8e15a7681b82","user":{"login":"d-frolov","id":4012085,"avatar_url":"https://avatars.githubusercontent.com/u/4012085?v=3","gravatar_id":"","url":"https://api.github.com/users/d-frolov","html_url":"https://github.com/d-frolov","followers_url":"https://api.github.com/users/d-frolov/followers","following_url":"https://api.github.com/users/d-frolov/following{/other_user}","gists_url":"https://api.github.com/users/d-frolov/gists{/gist_id}","starred_url":"https://api.github.com/users/d-frolov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d-frolov/subscriptions","organizations_url":"https://api.github.com/users/d-frolov/orgs","repos_url":"https://api.github.com/users/d-frolov/repos","events_url":"https://api.github.com/users/d-frolov/events{/privacy}","received_events_url":"https://api.github.com/users/d-frolov/received_events","type":"User","site_admin":false},"body":"Это не придирки. Очень плохая история, когда у вас по системе бродят частично инициализированные датасеты. Это обязательно приводит к непредсказуемым последствиям и странным багам в продакшине.","created_at":"2016-05-24T08:46:24Z","updated_at":"2016-05-24T08:46:24Z","html_url":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5#discussion_r64350446","pull_request_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5","_links":{"self":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/comments/64350446"},"html":{"href":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5#discussion_r64350446"},"pull_request":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5"}}},"pull_request":{"url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5","id":71136519,"html_url":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5","diff_url":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5.diff","patch_url":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5.patch","issue_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/5","number":5,"state":"open","locked":false,"title":"Review request (major changes)","user":{"login":"darkwrat","id":1160968,"avatar_url":"https://avatars.githubusercontent.com/u/1160968?v=3","gravatar_id":"","url":"https://api.github.com/users/darkwrat","html_url":"https://github.com/darkwrat","followers_url":"https://api.github.com/users/darkwrat/followers","following_url":"https://api.github.com/users/darkwrat/following{/other_user}","gists_url":"https://api.github.com/users/darkwrat/gists{/gist_id}","starred_url":"https://api.github.com/users/darkwrat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darkwrat/subscriptions","organizations_url":"https://api.github.com/users/darkwrat/orgs","repos_url":"https://api.github.com/users/darkwrat/repos","events_url":"https://api.github.com/users/darkwrat/events{/privacy}","received_events_url":"https://api.github.com/users/darkwrat/received_events","type":"User","site_admin":false},"body":"@esin88, @KSolovyev, @d-frolov, добрый вечер.\r\n\r\nСразу прошу прощения что долго тупил с отправкой кода на ревью.\r\nДанный PR содержит реализацию части требований по РК2, РК3, РК4.\r\n\r\nПри первом запуске возможно падение с NullPointerException при попытке разрешить зависимость - странный мелкий баг, **со второго раза запускается успешно**.\r\n\r\nЗапускать приложение необходимо через maven, информация есть в readme. В принципе - достаточно сделать mvn из консоли, из idea нужно создать конфигурацию запуска через maven правым кликом по корневой ноде.\r\nНужно создать application.properties со следуюшими настройками:\r\n\r\n>port=8080\r\ncontextPath=/api\r\ndb.name=iotadb\r\ndb.user=root\r\ndb.password=11\r\n\r\nКонфиг валидируется относительно reference.properties.\r\nОтладка поддерживается, в IDEA нужно создать конфигурацию Remote, порт по умолчанию - 5005.\r\nВключен режим проверки инструментирования байткода.\r\nМожно подцепиться через jmc, там есть jmx-бины которые даёт quasar - можно посмотреть какие акторы исполняются, но сейчас там пустовато - им надо раздать монитор и явно зарегать в коде чтобы они там появились.\r\n\r\nСервер умеет в http и ws взаимодействие, создаётся один актор на одну http сессию. Учёт пользователей в геймсессиях осуществляется по самому актору.\r\nЕсть роут `/api/game`, сделав get на который клиент получит состояние игры в вебсокет. Если необходимо - произойдёт поиск противника. Если игрок не залогинен, получит` { __ok: false }`.\r\nPost-запросы на этот роут обозначают действие игрока. Сервер разберёт что хотел сказать автор, обратится к гейммеханике - она локальна на игровую сессию - при необходимости разошлёт состояние всем участникам игры и пойдёт обрабатывать следуюшее сообщение. Если придёт `{ ..., broadcast: true }` - значит действие игрока привело к рассылке нового состояния всем участникам.\r\n\r\nЕсли нет базы под рукой - маповую реализацию аккаунтсервиса можно включить если убрать у неё аннотацию Rank(-100) и поместить её на jdbi-реализацию.\r\n\r\nДанная версия не является финальной, прошу дать фидбэк)\r\n\r\nВ ближайшие дни подъедут тесты на api и реализация игровой механики, плюс корректное завершение игровых сессий и корректная обработка обрыва игрока, параллельно подтягиваем фронт.\r\n\r\nHit me as hard as you can :)\r\nРабочая репа - https://github.com/darkwrat/iota-quasar","created_at":"2016-05-23T23:26:45Z","updated_at":"2016-05-24T08:46:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"841ed42f5e826ead7867eec6b3e4aaf81e4cf16e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5/commits","review_comments_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5/comments","review_comment_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/comments{/number}","comments_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/5/comments","statuses_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/statuses/4eec71b9d4e3b66cd222a60d822e8e15a7681b82","head":{"label":"darkwrat:insomnia","ref":"insomnia","sha":"4eec71b9d4e3b66cd222a60d822e8e15a7681b82","user":{"login":"darkwrat","id":1160968,"avatar_url":"https://avatars.githubusercontent.com/u/1160968?v=3","gravatar_id":"","url":"https://api.github.com/users/darkwrat","html_url":"https://github.com/darkwrat","followers_url":"https://api.github.com/users/darkwrat/followers","following_url":"https://api.github.com/users/darkwrat/following{/other_user}","gists_url":"https://api.github.com/users/darkwrat/gists{/gist_id}","starred_url":"https://api.github.com/users/darkwrat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darkwrat/subscriptions","organizations_url":"https://api.github.com/users/darkwrat/orgs","repos_url":"https://api.github.com/users/darkwrat/repos","events_url":"https://api.github.com/users/darkwrat/events{/privacy}","received_events_url":"https://api.github.com/users/darkwrat/received_events","type":"User","site_admin":false},"repo":{"id":51742556,"name":"2016-02-IOTA","full_name":"darkwrat/2016-02-IOTA","owner":{"login":"darkwrat","id":1160968,"avatar_url":"https://avatars.githubusercontent.com/u/1160968?v=3","gravatar_id":"","url":"https://api.github.com/users/darkwrat","html_url":"https://github.com/darkwrat","followers_url":"https://api.github.com/users/darkwrat/followers","following_url":"https://api.github.com/users/darkwrat/following{/other_user}","gists_url":"https://api.github.com/users/darkwrat/gists{/gist_id}","starred_url":"https://api.github.com/users/darkwrat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/darkwrat/subscriptions","organizations_url":"https://api.github.com/users/darkwrat/orgs","repos_url":"https://api.github.com/users/darkwrat/repos","events_url":"https://api.github.com/users/darkwrat/events{/privacy}","received_events_url":"https://api.github.com/users/darkwrat/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/darkwrat/2016-02-IOTA","description":"Настольная игра IOTA","fork":true,"url":"https://api.github.com/repos/darkwrat/2016-02-IOTA","forks_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/forks","keys_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/teams","hooks_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/hooks","issue_events_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/issues/events{/number}","events_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/events","assignees_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/assignees{/user}","branches_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/branches{/branch}","tags_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/tags","blobs_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/git/refs{/sha}","trees_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/statuses/{sha}","languages_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/languages","stargazers_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/stargazers","contributors_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/contributors","subscribers_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/subscribers","subscription_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/subscription","commits_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/commits{/sha}","git_commits_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/git/commits{/sha}","comments_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/comments{/number}","issue_comment_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/issues/comments{/number}","contents_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/contents/{+path}","compare_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/merges","archive_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/downloads","issues_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/issues{/number}","pulls_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/pulls{/number}","milestones_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/milestones{/number}","notifications_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/labels{/name}","releases_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/releases{/id}","deployments_url":"https://api.github.com/repos/darkwrat/2016-02-IOTA/deployments","created_at":"2016-02-15T08:54:50Z","updated_at":"2016-03-01T03:22:29Z","pushed_at":"2016-05-23T22:51:55Z","git_url":"git://github.com/darkwrat/2016-02-IOTA.git","ssh_url":"git@github.com:darkwrat/2016-02-IOTA.git","clone_url":"https://github.com/darkwrat/2016-02-IOTA.git","svn_url":"https://github.com/darkwrat/2016-02-IOTA","homepage":null,"size":390,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":3,"mirror_url":null,"open_issues_count":0,"forks":3,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"java-park-mail-ru:master","ref":"master","sha":"66d4ca2bb7688012d3ba7b5fdd701ba84ffffc6d","user":{"login":"java-park-mail-ru","id":17194939,"avatar_url":"https://avatars.githubusercontent.com/u/17194939?v=3","gravatar_id":"","url":"https://api.github.com/users/java-park-mail-ru","html_url":"https://github.com/java-park-mail-ru","followers_url":"https://api.github.com/users/java-park-mail-ru/followers","following_url":"https://api.github.com/users/java-park-mail-ru/following{/other_user}","gists_url":"https://api.github.com/users/java-park-mail-ru/gists{/gist_id}","starred_url":"https://api.github.com/users/java-park-mail-ru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/java-park-mail-ru/subscriptions","organizations_url":"https://api.github.com/users/java-park-mail-ru/orgs","repos_url":"https://api.github.com/users/java-park-mail-ru/repos","events_url":"https://api.github.com/users/java-park-mail-ru/events{/privacy}","received_events_url":"https://api.github.com/users/java-park-mail-ru/received_events","type":"Organization","site_admin":false},"repo":{"id":51739068,"name":"2016-02-IOTA","full_name":"java-park-mail-ru/2016-02-IOTA","owner":{"login":"java-park-mail-ru","id":17194939,"avatar_url":"https://avatars.githubusercontent.com/u/17194939?v=3","gravatar_id":"","url":"https://api.github.com/users/java-park-mail-ru","html_url":"https://github.com/java-park-mail-ru","followers_url":"https://api.github.com/users/java-park-mail-ru/followers","following_url":"https://api.github.com/users/java-park-mail-ru/following{/other_user}","gists_url":"https://api.github.com/users/java-park-mail-ru/gists{/gist_id}","starred_url":"https://api.github.com/users/java-park-mail-ru/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/java-park-mail-ru/subscriptions","organizations_url":"https://api.github.com/users/java-park-mail-ru/orgs","repos_url":"https://api.github.com/users/java-park-mail-ru/repos","events_url":"https://api.github.com/users/java-park-mail-ru/events{/privacy}","received_events_url":"https://api.github.com/users/java-park-mail-ru/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/java-park-mail-ru/2016-02-IOTA","description":"Настольная игра IOTA","fork":false,"url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA","forks_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/forks","keys_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/keys{/key_id}","collaborators_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/teams","hooks_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/hooks","issue_events_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/events{/number}","events_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/events","assignees_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/assignees{/user}","branches_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/branches{/branch}","tags_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/tags","blobs_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/git/refs{/sha}","trees_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/git/trees{/sha}","statuses_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/statuses/{sha}","languages_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/languages","stargazers_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/stargazers","contributors_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/contributors","subscribers_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/subscribers","subscription_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/subscription","commits_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/commits{/sha}","git_commits_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/git/commits{/sha}","comments_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/comments{/number}","issue_comment_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/comments{/number}","contents_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/contents/{+path}","compare_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/compare/{base}...{head}","merges_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/merges","archive_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/downloads","issues_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues{/number}","pulls_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls{/number}","milestones_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/milestones{/number}","notifications_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/labels{/name}","releases_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/releases{/id}","deployments_url":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/deployments","created_at":"2016-02-15T07:48:16Z","updated_at":"2016-03-03T13:02:24Z","pushed_at":"2016-05-23T23:26:46Z","git_url":"git://github.com/java-park-mail-ru/2016-02-IOTA.git","ssh_url":"git@github.com:java-park-mail-ru/2016-02-IOTA.git","clone_url":"https://github.com/java-park-mail-ru/2016-02-IOTA.git","svn_url":"https://github.com/java-park-mail-ru/2016-02-IOTA","homepage":null,"size":255,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":1,"forks":4,"open_issues":1,"watchers":0,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5"},"html":{"href":"https://github.com/java-park-mail-ru/2016-02-IOTA/pull/5"},"issue":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/5"},"comments":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/issues/5/comments"},"review_comments":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5/comments"},"review_comment":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/pulls/5/commits"},"statuses":{"href":"https://api.github.com/repos/java-park-mail-ru/2016-02-IOTA/statuses/4eec71b9d4e3b66cd222a60d822e8e15a7681b82"}}}}
{"actor":{"display_login":"d-frolov"}}