{"action":"created","comment":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41604004","id":41604004,"diff_hunk":"@@ -1,3 +1,248 @@\n-<html>\n-    <!-- Ваш замечательный код -->\n+<!DOCTYPE html>\n+<html lang=\"ru\">\n+    <head>\n+        <meta charset=\"utf-8\">\n+        <title>Блог компании Яндекс</title>\n+        <base target=\"_self\"/>\n+    </head>\n+    <body>\n+        <header>\n+            <h1>Блог компании Яндекс</h1>            \n+        </header>\n+        <article>            \n+            <h1>ЯНДЕКС.ПОЧТА: КАК МЫ ИЗМЕРЯЕМ СКОРОСТЬ ЗАГРУЗКИ И УЛУЧШАЕМ ЕЁ</h1>\n+            <p>\n+                Если ваш сайт медленно грузится, вы рискуете тем, что люди не оценят ни то, \n+                какой он красивый, ни то, какой он удобный. Никому не понравится, когда все\n+                тормозит. Мы регулярно добавляем в Яндекс.Почту новую функциональность,\n+                иногда — исправляем ошибки, а это значит, у нас постоянно появляются новый код\n+                и новая логика. Всё это напрямую влияет на скорость работы интерфейса.\n+            </p>\n+            <h2>Что мы измеряем</h2>\n+            <h3>Этапы первой загрузки:</h3>\n+            <ul>\n+                <li> подготовка;</li>\n+                <li>загрузка статики (HTTP-запрос и парсинг);</li>\n+                <li> исполнение модулей;</li>\n+                <li> инициализация базовых объектов;</li>\n+                <li> отрисовка.</li>\n+            </ul>\n+            <h3>Этапы отрисовки любой страницы:</h3>\n+            <ul>   \n+                <li> подготовка к запросу на сервер;</li>\n+                <li> запрос данных с сервера;</li>\n+                <li> шаблонизация;</li>\n+                <li>обновление <abbr title=\"Document Object Model\">DOM</abbr>.</li>\n+            </ul>\n+            <pre>        \n+                — Ок, теперь у нас есть метрики, мы можем отправить их на сервер - говорим мы\n+                — Что же дальше? - вопрошаете вы\n+                — А давай построим график! - отвечаем мы\n+                — А что будем считать? - уточняете вы\n+            </pre>\n+            <p> \n+                Как вы знаете, <dfn>медиана</dfn> –это серединное, а не среднее значение в выборке.\n+                Если у нас имеются числа <strong>1, 2, 2, 3, 8, 10, 20</strong>, то медиана –<strong>3</strong>,\n+                а среднее – <strong>6,5</strong>.В общем случае медиана отлично показывает,\n+                сколько грузится средний пользователь.В случае ускорения или замедления медиана, конечно, изменится.\n+                Но она не может рассказать, сколько пользователей ускорилось, а сколько замедлилось.\n+            </p>\n+            <p>    \n+                <abbr title=\"Application Performance Index\">APDEX</abbr> – метрика, которая сразу говорит: хорошо или плохо.\n+                Метрика работает очень просто. Мы выбираем временной интервал <em>[0; t]</em>, такой,\n+                что если время показа страницы попало в него, то пользователь счастлив. Берем еще один интервал,\n+                <em>(t; 4t]</em> (в четыре раза больше первого), и считаем, что если страницапоказана за это время,\n+                то пользователь в целом удовлетворен скоростью работы, но уже не настолько счастлив.\n+                И применяем формулу:<strong>(кол-во счастливых пользователей + кол-во удовлетворенных / 2) /(кол-во всех)</strong>.\n+                Получается значение от нуля до единицы, которое, видимо, лучше всего показывает,хорошо или плохо работает почта.\n+            </p>\n+            <h2>Как мы измеряем</h2>\n+            <p>\n+                Сейчас модуль обновления сам логирует все свои стадии, и можно легко понять\n+                причину замедления: медленнее стал отвечать сервер либо слишком долго\n+                выполняется JavaScript.Выглядит это примерно так:\n+            </p>    \n+            <div style=\"background-color:#E8E8E8;\">\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+            </div>\n+            <p>\n+                C помощью <code>Date.now()</code> мы получаем текущее время. Все тайминги собираются и при\n+                отправке рассчитываются. На этапах разница между “end” и “start” не считается,\n+                а все вычисления производятся в конце:\n+            </p>    \n+            <div style=\"background-color:#E8E8E8;\">    \n+                <code>\n+                    var totalTime = this.timings['look-ma-finish'] - this.timings['look-ma-im-start'];\n+                </code>\n+            </div>\n+            <br>И на сервер прилетают подобные записи:<br>\n+            <var>serverResponse=50&domUpdate=60<br></var>\n+            <h2>Как мы ускоряем</h2>\n+                Чтобы снизить время загрузки почты при выходе новых версий,\n+                мы уже делаем следующее:\n+            <ol>\n+                <li>включаем gzip;</li>\n+                <li>выставляем заголовки кэширования;</li>\n+                <li>фризим <abbr title=\"Cascading Style Sheets\">CSS</abbr>,\n+                    <abbr title=\"Javascript\">JS</abbr>, шаблоны и картинки;</li>\n+                <li>используем <abbr title=\"Content Delivery Network\">CDN</abbr>;</li>\n+            </ol>\n+            <p>            \n+                Мы подумали: А что если хранить где-то старую версию файлов, а при выходе новой\n+                передавать только diff между ней и той, которая сохранена у пользователя?\n+                В браузере же останется просто наложить патч на клиенте.\n+            </p>    \n+            <p>\n+                На самое деле эта идея не нова. Уже существуют стандарты для HTTP — например,\n+                RFC 3229 <cite>«Delta encoding in <abbr title=\" HyperText Transfer Protocol\">HTTP</abbr>»</cite> и \n+                <cite>«Google SDHC»</cite>, — но по разным причинам они не получили должного распространения в браузерах\n+                и на серверах.\n+            </p>\n+            <p>\n+                Мы же решили сделать свой аналог на <abbr title=\"Javascript\">JS</abbr>.Чтобы реализовать этот метод обновления,\n+                начали искать реализации diff на <abbr title=\"Javascript\">JS</abbr>. На популярных хостингах кода нашли библиотеки:\n+            <ul>\n+                <li>VCDiff</li>\n+                <li>google-diff-patch-match</li>\n+            </ul>\n+                Для окончательного выбора библиотеки нам нужно сравнить:\n+            <table>\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+                        <td>vcdiff</td>\n+                        <td>8</td>\n+                        <td>5</td>\n+                    </tr>\n+                    <tr>\n+                        <td>google diff </td>\n+                        <td>1363</td>\n+                        <td>76</td>\n+                    </tr>\n+                </tbody>\n+            </table>\n+            <p>\n+                После того как мы определились с библиотекой для диффа, нужно определиться с тем,\n+                где и как хранить статику на клиенте.<br>\n+                Формат файла с патчами для проекта выглядит так:<br>\n+            </p>    \n+            <div style=\"background-color:#E8E8E8;\">\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+            </div>\n+                То есть это обычный массив из объектов. Каждый объект — отдельный ресурс. У каждого объекта есть <strong>три</strong> \n+                свойства. k — названия ключа в localStorage для этого ресурса. p — патч для ресурса, который сгенерировал vcdiff.\n+                s — чексумма для ресурса актуальной версии, чтобы потом можно было проверить правильность наложения патча на клиенте.\n+                Чексумма вычисляется по алгоритму Флетчера.","path":"index.html","position":163,"original_position":163,"commit_id":"c7afc93793d3989d8871b9eaf9c0ca50d829b928","original_commit_id":"c7afc93793d3989d8871b9eaf9c0ca50d829b928","user":{"login":"ulitcos","id":4023479,"avatar_url":"https://avatars.githubusercontent.com/u/4023479?v=3","gravatar_id":"","url":"https://api.github.com/users/ulitcos","html_url":"https://github.com/ulitcos","followers_url":"https://api.github.com/users/ulitcos/followers","following_url":"https://api.github.com/users/ulitcos/following{/other_user}","gists_url":"https://api.github.com/users/ulitcos/gists{/gist_id}","starred_url":"https://api.github.com/users/ulitcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ulitcos/subscriptions","organizations_url":"https://api.github.com/users/ulitcos/orgs","repos_url":"https://api.github.com/users/ulitcos/repos","events_url":"https://api.github.com/users/ulitcos/events{/privacy}","received_events_url":"https://api.github.com/users/ulitcos/received_events","type":"User","site_admin":false},"body":"описание переменных. есть специальные теги","created_at":"2015-10-09T07:34:14Z","updated_at":"2015-10-09T07:34:14Z","html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/38#discussion_r41604004","pull_request_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38","_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41604004"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/38#discussion_r41604004"},"pull_request":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38"}}},"pull_request":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38","id":46434922,"html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/38","diff_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/38.diff","patch_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/38.patch","issue_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/38","number":38,"state":"open","locked":false,"title":"Высокий Лев","user":{"login":"vysokiylev","id":14911012,"avatar_url":"https://avatars.githubusercontent.com/u/14911012?v=3","gravatar_id":"","url":"https://api.github.com/users/vysokiylev","html_url":"https://github.com/vysokiylev","followers_url":"https://api.github.com/users/vysokiylev/followers","following_url":"https://api.github.com/users/vysokiylev/following{/other_user}","gists_url":"https://api.github.com/users/vysokiylev/gists{/gist_id}","starred_url":"https://api.github.com/users/vysokiylev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vysokiylev/subscriptions","organizations_url":"https://api.github.com/users/vysokiylev/orgs","repos_url":"https://api.github.com/users/vysokiylev/repos","events_url":"https://api.github.com/users/vysokiylev/events{/privacy}","received_events_url":"https://api.github.com/users/vysokiylev/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-09-30T17:59:30Z","updated_at":"2015-10-09T07:34:14Z","closed_at":null,"merged_at":null,"merge_commit_sha":"6f051596556aafecc29b9f4ed174f9b01322dc5b","assignee":{"login":"ulitcos","id":4023479,"avatar_url":"https://avatars.githubusercontent.com/u/4023479?v=3","gravatar_id":"","url":"https://api.github.com/users/ulitcos","html_url":"https://github.com/ulitcos","followers_url":"https://api.github.com/users/ulitcos/followers","following_url":"https://api.github.com/users/ulitcos/following{/other_user}","gists_url":"https://api.github.com/users/ulitcos/gists{/gist_id}","starred_url":"https://api.github.com/users/ulitcos/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ulitcos/subscriptions","organizations_url":"https://api.github.com/users/ulitcos/orgs","repos_url":"https://api.github.com/users/ulitcos/repos","events_url":"https://api.github.com/users/ulitcos/events{/privacy}","received_events_url":"https://api.github.com/users/ulitcos/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38/commits","review_comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38/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/38/comments","statuses_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/c7afc93793d3989d8871b9eaf9c0ca50d829b928","head":{"label":"vysokiylev:master","ref":"master","sha":"c7afc93793d3989d8871b9eaf9c0ca50d829b928","user":{"login":"vysokiylev","id":14911012,"avatar_url":"https://avatars.githubusercontent.com/u/14911012?v=3","gravatar_id":"","url":"https://api.github.com/users/vysokiylev","html_url":"https://github.com/vysokiylev","followers_url":"https://api.github.com/users/vysokiylev/followers","following_url":"https://api.github.com/users/vysokiylev/following{/other_user}","gists_url":"https://api.github.com/users/vysokiylev/gists{/gist_id}","starred_url":"https://api.github.com/users/vysokiylev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vysokiylev/subscriptions","organizations_url":"https://api.github.com/users/vysokiylev/orgs","repos_url":"https://api.github.com/users/vysokiylev/repos","events_url":"https://api.github.com/users/vysokiylev/events{/privacy}","received_events_url":"https://api.github.com/users/vysokiylev/received_events","type":"User","site_admin":false},"repo":{"id":43447523,"name":"verstka-tasks-1","full_name":"vysokiylev/verstka-tasks-1","owner":{"login":"vysokiylev","id":14911012,"avatar_url":"https://avatars.githubusercontent.com/u/14911012?v=3","gravatar_id":"","url":"https://api.github.com/users/vysokiylev","html_url":"https://github.com/vysokiylev","followers_url":"https://api.github.com/users/vysokiylev/followers","following_url":"https://api.github.com/users/vysokiylev/following{/other_user}","gists_url":"https://api.github.com/users/vysokiylev/gists{/gist_id}","starred_url":"https://api.github.com/users/vysokiylev/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vysokiylev/subscriptions","organizations_url":"https://api.github.com/users/vysokiylev/orgs","repos_url":"https://api.github.com/users/vysokiylev/repos","events_url":"https://api.github.com/users/vysokiylev/events{/privacy}","received_events_url":"https://api.github.com/users/vysokiylev/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/vysokiylev/verstka-tasks-1","description":"Задача к лекции «HTML, I часть»","fork":true,"url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1","forks_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/forks","keys_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/teams","hooks_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/hooks","issue_events_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/issues/events{/number}","events_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/events","assignees_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/assignees{/user}","branches_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/branches{/branch}","tags_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/tags","blobs_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/statuses/{sha}","languages_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/languages","stargazers_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/stargazers","contributors_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/contributors","subscribers_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/subscribers","subscription_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/subscription","commits_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/contents/{+path}","compare_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/merges","archive_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/downloads","issues_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/issues{/number}","pulls_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/pulls{/number}","milestones_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/milestones{/number}","notifications_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/labels{/name}","releases_url":"https://api.github.com/repos/vysokiylev/verstka-tasks-1/releases{/id}","created_at":"2015-09-30T17:23:27Z","updated_at":"2015-09-30T17:23:28Z","pushed_at":"2015-10-08T19:04:20Z","git_url":"git://github.com/vysokiylev/verstka-tasks-1.git","ssh_url":"git@github.com:vysokiylev/verstka-tasks-1.git","clone_url":"https://github.com/vysokiylev/verstka-tasks-1.git","svn_url":"https://github.com/vysokiylev/verstka-tasks-1","homepage":"","size":112,"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-07T14:13:10Z","pushed_at":"2015-10-08T21:37:42Z","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":2497,"stargazers_count":15,"watchers_count":15,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":107,"mirror_url":null,"open_issues_count":56,"forks":107,"open_issues":56,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/38"},"issue":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/38"},"comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/38/comments"},"review_comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/38/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/38/commits"},"statuses":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/c7afc93793d3989d8871b9eaf9c0ca50d829b928"}}}}