{"action":"created","comment":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41360744","id":41360744,"diff_hunk":"@@ -1,3 +1,300 @@\n-<html>\n-    <!-- Ваш замечательный код -->\n+<!DOCTYPE html>\n+<html lang=\"ru\">\n+    <head>\n+        <meta charset=\"utf-8\">\n+        <title>Яндекс.Блог</title>\n+    </head>\n+    <body>\n+        <header>\n+            <h1>Блог компании Яндекс.</h1>\n+        </header>\n+        <main>\n+            <article>\n+                <h2>ЯНДЕКС.ПОЧТА: КАК МЫ ИЗМЕРЯЕМ СКОРОСТЬ ЗАГРУЗКИ И УЛУЧШАЕМ ЕЁ</h2>\n+\n+                <p>\n+                    Если ваш сайт медленно грузится, вы рискуете тем, что люди не оценят ни то, какой он красивый, ни то, какой он удобный. Никому не понравится, когда все тормозит.\n+                    Мы регулярно добавляем в Яндекс.Почту новую функциональность, иногда — исправляем ошибки, а это значит, у нас постоянно появляются новый код и новая логика. Всё это напрямую влияет на скорость работы интерфейса.\n+                </p>\n+                <h4>Что мы измеряем</h4>\n+                <p>\n+                    Этапы первой загрузки:\n+                </p>\n+                <ul>\n+                    <li>подготовка;</li>\n+                    <li>загрузка статики (<abbr title=\"HyperText Transfer Protocol\">HTTP</abrr>-запрос и парсинг);\n+                    </li>\n+                    <li>исполнение модулей;</li>\n+                    <li>инициализация базовых объектов;</li>\n+                    <li>отрисовка.</li>\n+                </ul>\n+                </p>\n+                Этапы отрисовки любой страницы:\n+                </p>\n+                <ul>\n+                    <li>подготовка к запросу на сервер;</li>\n+                    <li>запрос данных с сервера;</li>\n+                    <li>шаблонизация;</li>\n+                    <li>обновление DOM.</li>\n+                </ul>\n+                <p>\n+                    — <q>Ок, теперь у нас есть метрики, мы можем отправить их на сервер</q> - говорим мы\n+                </p>\n+                <p>\n+                    — <q>Что же дальше?</q> - вопрошаете вы\n+                </p>\n+                <p>\n+                    — <q>А давай построим график!</q> - отвечаем мы\n+                </p>\n+                <p>\n+                    — <q>А что будем считать?</q> - уточняете вы\n+                </p>\n+                <p>\n+                    Как вы знаете, <dfn>медиана</dfn> – это серединное, а не среднее значение в выборке.\n+                    Если у нас имеются числа 1, 2, 2, 3, 8, 10, 20, то медиана – 3, а среднее – 6,5.\n+                    В общем случае медиана отлично показывает, сколько грузится средний пользователь.\n+                </p>\n+                <p>\n+                    В случае ускорения или замедления медиана, конечно, изменится. Но она не может\n+                    рассказать, сколько пользователей ускорилось, а сколько замедлилось.\n+                </p>\n+                <p>\n+                    <dfn><abbr title=\"Application Performance Index\">APDEX</abbr></dfn> – метрика, которая сразу говорит: хорошо или плохо. Метрика\n+                    работает очень просто. Мы выбираем временной интервал [0; t], такой, что если\n+                    время показа страницы попало в него, то пользователь счастлив. Берем еще один\n+                    интервал, (t; 4t] (в четыре раза больше первого), и считаем, что если страница\n+                    показана за это время, то пользователь в целом удовлетворен скоростью работы,\n+                    но уже не настолько счастлив. И применяем формулу:\n+                </p>\n+                <p>\n+                    (кол-во счастливых пользователей + кол-во удовлетворенных / 2) / (кол-во всех).\n+                </p>\n+                <p>\n+                    Получается значение от нуля до единицы, которое, видимо, лучше всего показывает,\n+                    хорошо или плохо работает почта.\n+                </p>\n+\n+                <h4>Как мы измеряем</h4>\n+                <p>\n+                    Сейчас модуль обновления сам логирует все свои стадии, и можно легко понять\n+                    причину замедления: медленнее стал отвечать сервер либо слишком долго\n+                    выполняется JavaScript. Выглядит это примерно так:\n+                </p>\n+                <pre>\n+                    <code>\n+                    this.timings['look-ma-im-start'] = Date.now();\n+                    this.timings['look-ma-finish'] = Date.now();\n+                    </code>\n+                </pre>\n+                <p>\n+                    C помощью Date.now() мы получаем текущее время. Все тайминги собираются и при отправке рассчитываются. На этапах разница между “end” и “start” не считается, а все вычисления производятся в конце:\n+                </p>\n+                <pre>\n+                    var totalTime = this.timings['look-ma-finish'] - this.timings['look-ma-im-start'];\n+                </pre>\n+\n+                И на сервер прилетают подобные записи:\n+\n+                <samp>serverResponse=50&domUpdate=60</samp>\n+\n+                <h4>Как мы ускоряем</h4>\n+                <p>\n+                    Чтобы снизить время загрузки почты при выходе новых версий,\n+                    мы уже делаем следующее:\n+                </p>\n+                <ul>\n+                    <li>включаем gzip;</li>\n+                    <li>выставляем заголовки кэширования;</li>\n+                    <li>фризим CSS, JS, шаблоны и картинки;</li>\n+                    <li>используем CDN;</li>\n+                </ul>\n+                <p>\n+                    Мы подумали: «А что если хранить где-то старую версию файлов, а при выходе новой\n+                    передавать только diff между ней и той, которая сохранена у пользователя?»\n+                    В браузере же останется просто наложить патч на клиенте.\n+                </p>\n+                <p>\n+                    На самое деле эта идея не нова. Уже существуют стандарты для HTTP — например,\n+                    RFC 3229 «Delta encoding in HTTP» и «Google SDHC», — но по разным причинам они\n+                    не получили должного распространения в браузерах и на серверах.\n+                </p>\n+                <p>\n+                Мы же решили сделать свой аналог на JS. Чтобы реализовать этот метод обновления,\n+                начали искать реализации diff на JS. На популярных хостингах кода нашли\n+                библиотеки:\n+                    <ul>\n+                        <li>VCDiff</li>\n+                        <li>google-diff-patch-match</li>\n+                    </ul>\n+                </p>\n+                <p>\n+                Для окончательного выбора библиотеки нам нужно сравнить:\n+                </p>\n+                <table border=\"1\" style=\"text-align: center\">\n+                    <thead>\n+                        <tr>\n+                            <th>Библиотека</th>\n+                            <th>IE 9</th>\n+                            <th>Opera 12</th>\n+                        </tr>        \n+                    </thead>\n+                    <tbody>\n+                        <tr>\n+                            <th>vcdiff</th>\n+                            <th>8</th>\n+                            <th>5</th>\n+                        </tr>\n+                        <tr>\n+                            <th>google diff</th>\n+                            <th>1363</th>\n+                            <th>76</th>\n+                        </tr>\n+                    </tbody>\n+                </table>\n+                <p>\n+                После того как мы определились с библиотекой для диффа, нужно определиться с тем,где и как хранить статику на клиенте.\n+                </p>\n+                <p>\n+                    Формат файла с патчами для проекта выглядит так:\n+                </p>\n+                <pre>\n+                    <code>\n+                        [\n+                            {\n+                                \"k\": \"jane.css\",\n+                                \"p\": [patch],\n+                                \"s\": 4554\n+                            },\n+                            {\n+                                \"k\": \"jane.css\",\n+                                \"p\": [patch],\n+                                \"s\": 4554\n+                            }\n+                        ]\n+                    </code>\n+                </pre>\n+                <p>\n+                    То есть это обычный массив из объектов. Каждый объект — отдельный ресурс. Укаждого объекта есть три свойства. k — названия ключа в localStorage для этого ресурса. p — патч для ресурса, который сгенерировал vcdiff. s — чексумма для ресурса актуальной версии, чтобы потом можно было проверить правильность наложения патча на клиенте. Чексумма вычисляется по алгоритму Флетчера.    \n+                </p>\n+                <p>\n+                    <abbr title=\"Алгоритм Бройдена — Флетчера — Гольдфарба — Шанно\">(BFGS)</abbr>\n+                    — итерационный метод численной оптимизации, предназначенный для\n+                    нахождения локального максимума/минимума нелинейного функционала\n+                    без ограничений.\n+                </p>    \n+                <p>\n+                    Почему именно алгоритм Флетчера, а не другие популярные алгоритмы вроде:\n+                    <dl>\n+                    <dt>CRC16/32</dt>\n+                    <dd>алгоритм нахождения контрольной суммы, предназначенный для проверки целостности данных</dd>\n+                    <dt>md5</dt>\n+                    <dd>128-битный алгоритм хеширования. Предназначен для создания «отпечатков» или дайджестов сообщения произвольной длины и последующей проверки их подлинности.\n+                    </dd>\n+                    </dl>\n+                </p>\n+                <p>\n+                    Потому что он быстрый, компактный и легок в реализации.\n+                </p>\n+                <h3>Итог</h3>\n+                <p>\n+                Фактически мы экономим 80-90% трафика. Размер загружаемой статитки в байтах:\n+                </p>\n+                <table border=\"1\" style=\"text-align: center\">\n+                    <thead>\n+                        <tr>\n+                            <th>Релиз</th>\n+                            <th>С патчем</th>\n+                            <th>Без патча</th>\n+                        </tr>\n+                    </thead>\n+                    <tbody>\n+                        <tr>\n+                            <td>7.7.20</td>\n+                            <td>397</td>\n+                            <td>174 549</td>\n+                        </tr>\n+                        <tr>\n+                            <td>7.7.21</td>\n+                            <td>383</td>\n+                            <td>53 995</td>\n+                        </tr>\n+                        <tr>\n+                            <td>7.7.22</td>\n+                            <td>483</td>\n+                            <td>3 995</td>\n+                        </tr>\n+                    </tbody>\n+                </table>\n+                <footer>\n+                    <p>\n+                        Автор: @doochik\n+                    </p>\n+                    <p>\n+                        С++ разработик\n+                    </p>\n+                    <address>\n+                        Электронная почта: (doochik@yandex-team.ru)\n+                    </address>\n+                    <p>\n+                        Компания: Яндекс\n+                    </p>\n+                </footer>\n+            </article>\n+            <section>\n+                <h3>Комментарии (3):</h3>\n+                <article>\n+                    <footer>\n+                        <p style=\"font-weight: bold\">","path":"index.html","position":249,"original_position":249,"commit_id":"731fbe8fcd91ea195f2842d9b149b0330f80bff7","original_commit_id":"731fbe8fcd91ea195f2842d9b149b0330f80bff7","user":{"login":"sinseveriya","id":5352441,"avatar_url":"https://avatars.githubusercontent.com/u/5352441?v=3","gravatar_id":"","url":"https://api.github.com/users/sinseveriya","html_url":"https://github.com/sinseveriya","followers_url":"https://api.github.com/users/sinseveriya/followers","following_url":"https://api.github.com/users/sinseveriya/following{/other_user}","gists_url":"https://api.github.com/users/sinseveriya/gists{/gist_id}","starred_url":"https://api.github.com/users/sinseveriya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sinseveriya/subscriptions","organizations_url":"https://api.github.com/users/sinseveriya/orgs","repos_url":"https://api.github.com/users/sinseveriya/repos","events_url":"https://api.github.com/users/sinseveriya/events{/privacy}","received_events_url":"https://api.github.com/users/sinseveriya/received_events","type":"User","site_admin":false},"body":"Лишняя обертка","created_at":"2015-10-07T07:51:02Z","updated_at":"2015-10-07T07:51:02Z","html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/84#discussion_r41360744","pull_request_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84","_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41360744"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/84#discussion_r41360744"},"pull_request":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84"}}},"pull_request":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84","id":46989812,"html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/84","diff_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/84.diff","patch_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/84.patch","issue_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/84","number":84,"state":"open","locked":false,"title":"Коваль Полина","user":{"login":"PolinaKoval","id":14983749,"avatar_url":"https://avatars.githubusercontent.com/u/14983749?v=3","gravatar_id":"","url":"https://api.github.com/users/PolinaKoval","html_url":"https://github.com/PolinaKoval","followers_url":"https://api.github.com/users/PolinaKoval/followers","following_url":"https://api.github.com/users/PolinaKoval/following{/other_user}","gists_url":"https://api.github.com/users/PolinaKoval/gists{/gist_id}","starred_url":"https://api.github.com/users/PolinaKoval/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PolinaKoval/subscriptions","organizations_url":"https://api.github.com/users/PolinaKoval/orgs","repos_url":"https://api.github.com/users/PolinaKoval/repos","events_url":"https://api.github.com/users/PolinaKoval/events{/privacy}","received_events_url":"https://api.github.com/users/PolinaKoval/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-10-07T06:02:53Z","updated_at":"2015-10-07T07:51:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"c2773653a1e2f3adaa57b0c2b6192326a1b92359","assignee":{"login":"sinseveriya","id":5352441,"avatar_url":"https://avatars.githubusercontent.com/u/5352441?v=3","gravatar_id":"","url":"https://api.github.com/users/sinseveriya","html_url":"https://github.com/sinseveriya","followers_url":"https://api.github.com/users/sinseveriya/followers","following_url":"https://api.github.com/users/sinseveriya/following{/other_user}","gists_url":"https://api.github.com/users/sinseveriya/gists{/gist_id}","starred_url":"https://api.github.com/users/sinseveriya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sinseveriya/subscriptions","organizations_url":"https://api.github.com/users/sinseveriya/orgs","repos_url":"https://api.github.com/users/sinseveriya/repos","events_url":"https://api.github.com/users/sinseveriya/events{/privacy}","received_events_url":"https://api.github.com/users/sinseveriya/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84/commits","review_comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84/comments","review_comment_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments{/number}","comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/84/comments","statuses_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/731fbe8fcd91ea195f2842d9b149b0330f80bff7","head":{"label":"PolinaKoval:master","ref":"master","sha":"731fbe8fcd91ea195f2842d9b149b0330f80bff7","user":{"login":"PolinaKoval","id":14983749,"avatar_url":"https://avatars.githubusercontent.com/u/14983749?v=3","gravatar_id":"","url":"https://api.github.com/users/PolinaKoval","html_url":"https://github.com/PolinaKoval","followers_url":"https://api.github.com/users/PolinaKoval/followers","following_url":"https://api.github.com/users/PolinaKoval/following{/other_user}","gists_url":"https://api.github.com/users/PolinaKoval/gists{/gist_id}","starred_url":"https://api.github.com/users/PolinaKoval/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PolinaKoval/subscriptions","organizations_url":"https://api.github.com/users/PolinaKoval/orgs","repos_url":"https://api.github.com/users/PolinaKoval/repos","events_url":"https://api.github.com/users/PolinaKoval/events{/privacy}","received_events_url":"https://api.github.com/users/PolinaKoval/received_events","type":"User","site_admin":false},"repo":{"id":43704647,"name":"verstka-tasks-1","full_name":"PolinaKoval/verstka-tasks-1","owner":{"login":"PolinaKoval","id":14983749,"avatar_url":"https://avatars.githubusercontent.com/u/14983749?v=3","gravatar_id":"","url":"https://api.github.com/users/PolinaKoval","html_url":"https://github.com/PolinaKoval","followers_url":"https://api.github.com/users/PolinaKoval/followers","following_url":"https://api.github.com/users/PolinaKoval/following{/other_user}","gists_url":"https://api.github.com/users/PolinaKoval/gists{/gist_id}","starred_url":"https://api.github.com/users/PolinaKoval/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/PolinaKoval/subscriptions","organizations_url":"https://api.github.com/users/PolinaKoval/orgs","repos_url":"https://api.github.com/users/PolinaKoval/repos","events_url":"https://api.github.com/users/PolinaKoval/events{/privacy}","received_events_url":"https://api.github.com/users/PolinaKoval/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/PolinaKoval/verstka-tasks-1","description":"Задача к лекции «HTML, I часть»","fork":true,"url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1","forks_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/forks","keys_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/teams","hooks_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/hooks","issue_events_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/issues/events{/number}","events_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/events","assignees_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/assignees{/user}","branches_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/branches{/branch}","tags_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/tags","blobs_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/statuses/{sha}","languages_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/languages","stargazers_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/stargazers","contributors_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/contributors","subscribers_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/subscribers","subscription_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/subscription","commits_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/contents/{+path}","compare_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/merges","archive_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/downloads","issues_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/issues{/number}","pulls_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/pulls{/number}","milestones_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/milestones{/number}","notifications_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/labels{/name}","releases_url":"https://api.github.com/repos/PolinaKoval/verstka-tasks-1/releases{/id}","created_at":"2015-10-05T18:21:40Z","updated_at":"2015-10-05T18:21:41Z","pushed_at":"2015-10-07T06:01:28Z","git_url":"git://github.com/PolinaKoval/verstka-tasks-1.git","ssh_url":"git@github.com:PolinaKoval/verstka-tasks-1.git","clone_url":"https://github.com/PolinaKoval/verstka-tasks-1.git","svn_url":"https://github.com/PolinaKoval/verstka-tasks-1","homepage":"","size":63,"stargazers_count":0,"watchers_count":0,"language":"HTML","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"urfu-2015:master","ref":"master","sha":"92106c708076d457b6ffcd8175044271b4318dd9","user":{"login":"urfu-2015","id":14800971,"avatar_url":"https://avatars.githubusercontent.com/u/14800971?v=3","gravatar_id":"","url":"https://api.github.com/users/urfu-2015","html_url":"https://github.com/urfu-2015","followers_url":"https://api.github.com/users/urfu-2015/followers","following_url":"https://api.github.com/users/urfu-2015/following{/other_user}","gists_url":"https://api.github.com/users/urfu-2015/gists{/gist_id}","starred_url":"https://api.github.com/users/urfu-2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/urfu-2015/subscriptions","organizations_url":"https://api.github.com/users/urfu-2015/orgs","repos_url":"https://api.github.com/users/urfu-2015/repos","events_url":"https://api.github.com/users/urfu-2015/events{/privacy}","received_events_url":"https://api.github.com/users/urfu-2015/received_events","type":"Organization","site_admin":false},"repo":{"id":43061154,"name":"verstka-tasks-1","full_name":"urfu-2015/verstka-tasks-1","owner":{"login":"urfu-2015","id":14800971,"avatar_url":"https://avatars.githubusercontent.com/u/14800971?v=3","gravatar_id":"","url":"https://api.github.com/users/urfu-2015","html_url":"https://github.com/urfu-2015","followers_url":"https://api.github.com/users/urfu-2015/followers","following_url":"https://api.github.com/users/urfu-2015/following{/other_user}","gists_url":"https://api.github.com/users/urfu-2015/gists{/gist_id}","starred_url":"https://api.github.com/users/urfu-2015/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/urfu-2015/subscriptions","organizations_url":"https://api.github.com/users/urfu-2015/orgs","repos_url":"https://api.github.com/users/urfu-2015/repos","events_url":"https://api.github.com/users/urfu-2015/events{/privacy}","received_events_url":"https://api.github.com/users/urfu-2015/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/urfu-2015/verstka-tasks-1","description":"Задача к лекции «HTML, I часть»","fork":false,"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1","forks_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/forks","keys_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/teams","hooks_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/hooks","issue_events_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/events{/number}","events_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/events","assignees_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/assignees{/user}","branches_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/branches{/branch}","tags_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/tags","blobs_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/{sha}","languages_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/languages","stargazers_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/stargazers","contributors_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/contributors","subscribers_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/subscribers","subscription_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/subscription","commits_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/contents/{+path}","compare_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/merges","archive_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/downloads","issues_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues{/number}","pulls_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls{/number}","milestones_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/milestones{/number}","notifications_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/labels{/name}","releases_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/releases{/id}","created_at":"2015-09-24T10:45:26Z","updated_at":"2015-10-06T10:15:51Z","pushed_at":"2015-10-07T06:09:18Z","git_url":"git://github.com/urfu-2015/verstka-tasks-1.git","ssh_url":"git@github.com:urfu-2015/verstka-tasks-1.git","clone_url":"https://github.com/urfu-2015/verstka-tasks-1.git","svn_url":"https://github.com/urfu-2015/verstka-tasks-1","homepage":"","size":2130,"stargazers_count":15,"watchers_count":15,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":102,"mirror_url":null,"open_issues_count":58,"forks":102,"open_issues":58,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/84"},"issue":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/84"},"comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/84/comments"},"review_comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84/comments"},"review_comment":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/84/commits"},"statuses":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/731fbe8fcd91ea195f2842d9b149b0330f80bff7"}}}}