{"action":"created","comment":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41371548","id":41371548,"diff_hunk":"@@ -1,3 +1,333 @@\n-<html>\n-    <!-- Ваш замечательный код -->\n+<!DOCTYPE html>\n+<html lang=\"ru\">\n+<head>\n+    <meta name=\"Homework1\" content=\"Yandex, Homework, Web\" >\n+    <meta charset=\"utf-8\">\n+    <title>Яндекс почта. Блог.</title>\n+</head>\n+<body>\n+<header>\n+    <h1>Блог компании Яндекс.</h1>\n+</header>\n+<section>\n+    <header>\n+        <h2>ЯНДЕКС.ПОЧТА: КАК МЫ ИЗМЕРЯЕМ СКОРОСТЬ ЗАГРУЗКИ И УЛУЧШАЕМ ЕЁ</h2>\n+    </header>\n+    <article>\n+        <p>\n+            Если ваш сайт медленно грузится, вы рискуете тем, что люди не оценят ни то,\n+            какой он красивый, ни то, какой он удобный. Никому не понравится, когда все\n+            тормозит. Мы регулярно добавляем в Яндекс.Почту новую функциональность,\n+            иногда — исправляем ошибки, а это значит, у нас постоянно появляются новый код\n+            и новая логика. Всё это напрямую влияет на скорость работы интерфейса.\n+        </p>\n+        <h3>Что мы измеряем</h3>\n+        <p>Этапы первой загрузки:</p>\n+        <ol>\n+            <li>подготовка;</li>\n+            <li>\n+                загрузка статики\n+                (<abbr title=\"действие, которое позволяет выполнить обращение к внешнему http-сервису\n+                для обмена данными.\">HTTP-запрос</abbr> и\n+                <abbr title=\"процесс сопоставления линейной последовательности\n+                лексем (слов, токенов) естественного или формального языка с его формальной грамматикой\">\n+                    парсинг\n+                </abbr>);\n+            </li>\n+            <li>исполнение модулей;</li>\n+            <li>инициализация базовых объектов;</li>\n+            <li>отрисовка.</li>\n+        </ol>\n+        <h4>Этапы отрисовки любой страницы:</h4>\n+        <ol>\n+            <li>подготовка к запросу на сервер;</li>\n+            <li>запрос данных с сервера; </li>\n+            <li>шаблонизация;</li>\n+            <li>обновление DOM.</li>\n+        </ol>\n+        <p>\n+            <q>Ок, теперь у нас есть метрики, мы можем отправить их на сервер\n+            </q>- говорим мы<br>\n+            <q>Что же дальше? </q>- вопрошаете вы<br>\n+            <q>А давай построим график!</q>- отвечаем мы<br>\n+            <q>А что будем считать?</q>- уточняете вы<br>\n+        </p>\n+        <p>\n+            Как вы знаете,<dfn> медиана </dfn>– это серединное, а не среднее значение в выборке.<br>\n+            Если у нас имеются числа 1, 2, 2, 3, 8, 10, 20, то медиана – 3, а среднее – 6,5.<br>\n+            В общем случае медиана отлично показывает, сколько грузится средний пользователь.<br>\n+        </p>\n+        <p>\n+            В случае ускорения или замедления медиана, конечно, изменится. Но она не может рассказать, сколько\n+            пользователей ускорилось, а сколько замедлилось.\n+        </p>\n+        <p>\n+            <abbr title=\"Application Performance Index\">APDEX</abbr> – метрика, которая сразу говорит: хорошо\n+            или плохо. Метрика работает очень просто. Мы выбираем временной интервал [0; t], такой, что если\n+            время показа страницы попало в него, то пользователь счастлив. Берем еще один\n+            интервал, (t; 4t] (в четыре раза больше первого), и считаем, что если страница\n+            показана за это время, то пользователь в целом удовлетворен скоростью работы,\n+            но уже не настолько счастлив. И применяем формулу:\n+        </p>\n+        <p>\n+            (кол-во счастливых пользователей + кол-во удовлетворенных / 2) / (кол-во всех).<br>\n+            Получается значение от нуля до единицы, которое, видимо, лучше всего показывает,\n+            хорошо или плохо работает почта.\n+        </p>\n+        <h3>Как мы измеряем</h3>\n+        <p>\n+            Сейчас модуль обновления сам логирует все свои стадии, и можно легко понять\n+            причину замедления: медленнее стал отвечать сервер либо слишком долго\n+            выполняется JavaScript. Выглядит это примерно так:\n+        </p>\n+        <pre>\n+            this.timings['look-ma-im-start'] = Date.now();\n+            this.timings['look-ma-finish'] = Date.now();\n+        </pre>\n+        <p>\n+            C помощью <code>Date.now()</code> мы получаем текущее время. Все тайминги собираются и при\n+            отправке рассчитываются. На этапах разница между <em>“end”</em> и <em>“start”</em> не считается,\n+            а все вычисления производятся в конце:\n+        </p>\n+        <code>\n+            var totalTime = this.timings['look-ma-finish'] - this.timings['look-ma-im-start'];\n+        </code>\n+        <p>\n+            И на сервер прилетают подобные записи:\n+        </p>\n+        <code>\n+            <var>serverResponse</var>=50&#38;domUpdate=60\n+        </code>\n+        <h3>Как мы ускоряем</h3>\n+        <p>\n+            Чтобы снизить время загрузки почты при выходе новых версий,\n+            мы уже делаем следующее:\n+        </p>\n+        <ol>\n+            <li>\n+                включаем\n+                <abbr title=\"утилита сжатия и восстановления (декомпрессии) файлов, использующая алгоритм\n+                Deflate\">gzip</abbr>;\n+            </li>\n+            <li>выставляем заголовки кэширования;</li>\n+            <li>\n+                фризим <abbr title=\" формальный язык описания внешнего вида документа, написанного с\n+                использованием языка разметки.\">CSS</abbr>,\n+                <abbr title=\" прототипно-ориентированный сценарный язык программирования\">\n+                JS</abbr>, шаблоны и картинки;\n+            </li>\n+            <li>\n+                используем <abbr title=\"Content Delivery Network или Content Distribution Network\">CDN</abbr>;\n+            </li>\n+        </ol>\n+        <p>\n+            Мы подумали: <q>А что если хранить где-то старую версию файлов, а при выходе новой\n+            передавать только diff между ней и той, которая сохранена у пользователя?</q><br>\n+            В браузере же останется просто наложить патч на клиенте.\n+        </p>\n+        <p>\n+            На самое деле эта идея не нова. Уже существуют стандарты для HTTP — например,\n+            <abbr title=\"Request for Comments\">RFC</abbr> 3229 «Delta encoding in HTTP» и <cite>«Google SDHC»\n+            </cite>,— но по разным причинам они не получили должного распространения в браузерах и на\n+            серверах.\n+        </p>\n+        <p>\n+            Мы же решили сделать свой аналог на\n+            <abbr title=\" прототипно-ориентированный сценарный язык программирования\">JS</abbr>.\n+            Чтобы реализовать этот метод обновления,\n+            начали искать реализации diff на\n+            <abbr title=\" прототипно-ориентированный сценарный язык программирования\">\n+            JS</abbr>. На популярных хостингах кода нашли библиотеки:\n+        </p>\n+        <ol>\n+            <li>\n+                <abbr title=\" format and an algorithm for delta encoding, described in RFC 3284\">\n+                VCDiff</abbr>\n+            </li>\n+            <li><cite>google-diff-patch-match</cite></li>\n+        </ol>\n+        <p>\n+            Для окончательного выбора библиотеки нам нужно сравнить:\n+        </p>\n+        <table>\n+            <tr>\n+                <th>Библиотека </th>\n+                <th>IE 9 </th>\n+                <th>Opera 12</th>\n+            </tr>\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+        </table>\n+        <p>\n+            После того как мы определились с библиотекой для диффа, нужно определиться с тем, где и как\n+            хранить статику на клиенте.\n+        </p>\n+        <p>\n+            Формат файла с патчами для проекта выглядит так:\n+        </p>\n+            <pre><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></pre>\n+        <p>\n+            То есть это обычный массив из объектов. Каждый объект — отдельный ресурс. У\n+            каждого объекта есть три свойства. <var>k</var> — названия ключа в localStorage для этого\n+            ресурса. <var>p</var> — патч для ресурса, который сгенерировал vcdiff. <var>s</var> - чексумма\n+            для ресурса актуальной версии, чтобы потом можно было проверить правильность\n+            наложения патча на клиенте. <strong>Чексумма вычисляется по алгоритму Флетчера.</strong>\n+        </p>\n+        <h4>\n+            Алгоритм Бройдена — Флетчера — Гольдфарба — Шанно\n+            <abbr title=\"Алгоритм Бройдена — Флетчера — Гольдфарба— Шанно\">(BFGS)</abbr>\n+        </h4>\n+        <p>\n+            — итерационный метод численной оптимизации, предназначенный для\n+            нахождения локального максимума/минимума нелинейного функционала без ограничений.\n+        </p>\n+            <pre>\n+                Дано: &#949; x<sub>0</sub> <br>\n+                инициализировать H<sub>0</sub><br>\n+                &#922; = 0 <br>\n+                <strong>while</strong> ||&#8711; F||> &#949;\n+                найти направление p<sub>k</sub>= -C<sub>k</sub>&#8711;f<sub>k</sub>\n+                вычеслить х<sub>k+1</sub>=х<sub>k</sub>+&#945;<sub>k</sub>p<sub>k</sub>, &#945;<sub>k\n+                </sub> удовлетворяет условиям Вольфе\n+                обозначить S<sub>k</sub>=х<sub>k+1</sub>-х<sub>k</sub> и y<sub>k</sub>=&#8711;f<sub>k+1</sub>-&#8711;f<sub>k</sub>\n+                вычеслить С<sub>k+1</sub>\n+                K=K=1\n+                <strong>end</strong>\n+            </pre>\n+        <p>\n+            Почему именно алгоритм Флетчера, а не другие популярные алгоритмы вроде:<br>\n+            <dl>\n+                <dt>CRC16/32</dt><dd>-алгоритм нахождения контрольной суммы, предназначенный для проверки\n+                целостности данных</dd><br>\n+                <dt>md5</dt><dd>-128-битный алгоритм хеширования. Предназначен для создания «отпечатков»\n+                или дайджестов сообщения произвольной длины и последующей проверки\n+                их подлинности.</dd><br>\n+            </dl>\n+        </p>\n+        <p>\n+            <em>Потому что он быстрый, компактный и легок в реализации.</em>\n+        </p>\n+        <p>\n+            <strong>Итог</strong>\n+        </p>\n+        <p>\n+            Фактически мы экономим 80-90% трафика. Размер загружаемой статитки в байтах:\n+        </p>\n+        <table>\n+            <tr>\n+                <th>Релиз</th>\n+                <th>С патчем</th>\n+                <th>Без патча</th>\n+            </tr>\n+            <tr>\n+                <th>7.7.20</th>\n+                <th>397</th>\n+                <th>174 549</th>\n+            </tr>\n+            <tr>\n+                <th>7.7.21</th>\n+                <th>383</th>\n+                <th>53 995</th>\n+            </tr>\n+            <tr>\n+                <th>7.7.22</th>\n+                <th>483</th>\n+                <th>3 995</th>\n+            </tr>\n+        </table>\n+        <p>\n+            <address>\n+                Автор: @doochik<br>\n+                С++ разработик<br>\n+                Электронная почта: (doochik@yandex-team.ru)<br>\n+                Компания: <cite>Яндекс</cite><br>\n+            </address>\n+        </p>\n+    </article>\n+    <section>\n+        <header>\n+            <h3>Комментарии (3):</h3>\n+        </header>\n+        <article>\n+            <header>\n+                <h4>-Mogaika</h4>","path":"index.html","position":276,"original_position":276,"commit_id":"68e6a3efb2a177880c42a733b6494b2ab68a4f60","original_commit_id":"68e6a3efb2a177880c42a733b6494b2ab68a4f60","user":{"login":"xiiivii","id":14858283,"avatar_url":"https://avatars.githubusercontent.com/u/14858283?v=3","gravatar_id":"","url":"https://api.github.com/users/xiiivii","html_url":"https://github.com/xiiivii","followers_url":"https://api.github.com/users/xiiivii/followers","following_url":"https://api.github.com/users/xiiivii/following{/other_user}","gists_url":"https://api.github.com/users/xiiivii/gists{/gist_id}","starred_url":"https://api.github.com/users/xiiivii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiiivii/subscriptions","organizations_url":"https://api.github.com/users/xiiivii/orgs","repos_url":"https://api.github.com/users/xiiivii/repos","events_url":"https://api.github.com/users/xiiivii/events{/privacy}","received_events_url":"https://api.github.com/users/xiiivii/received_events","type":"User","site_admin":false},"body":"заголовки вообще ни к чему","created_at":"2015-10-07T09:56:56Z","updated_at":"2015-10-07T09:56:56Z","html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/65#discussion_r41371548","pull_request_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65","_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41371548"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/65#discussion_r41371548"},"pull_request":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65"}}},"pull_request":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65","id":46743957,"html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/65","diff_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/65.diff","patch_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/65.patch","issue_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/65","number":65,"state":"open","locked":false,"title":"Денисов Алексей","user":{"login":"disal603","id":14876847,"avatar_url":"https://avatars.githubusercontent.com/u/14876847?v=3","gravatar_id":"","url":"https://api.github.com/users/disal603","html_url":"https://github.com/disal603","followers_url":"https://api.github.com/users/disal603/followers","following_url":"https://api.github.com/users/disal603/following{/other_user}","gists_url":"https://api.github.com/users/disal603/gists{/gist_id}","starred_url":"https://api.github.com/users/disal603/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/disal603/subscriptions","organizations_url":"https://api.github.com/users/disal603/orgs","repos_url":"https://api.github.com/users/disal603/repos","events_url":"https://api.github.com/users/disal603/events{/privacy}","received_events_url":"https://api.github.com/users/disal603/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-10-05T04:39:08Z","updated_at":"2015-10-07T09:56:56Z","closed_at":null,"merged_at":null,"merge_commit_sha":"670b04529893cd63a67619e1d464de37bbf7f831","assignee":{"login":"xiiivii","id":14858283,"avatar_url":"https://avatars.githubusercontent.com/u/14858283?v=3","gravatar_id":"","url":"https://api.github.com/users/xiiivii","html_url":"https://github.com/xiiivii","followers_url":"https://api.github.com/users/xiiivii/followers","following_url":"https://api.github.com/users/xiiivii/following{/other_user}","gists_url":"https://api.github.com/users/xiiivii/gists{/gist_id}","starred_url":"https://api.github.com/users/xiiivii/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xiiivii/subscriptions","organizations_url":"https://api.github.com/users/xiiivii/orgs","repos_url":"https://api.github.com/users/xiiivii/repos","events_url":"https://api.github.com/users/xiiivii/events{/privacy}","received_events_url":"https://api.github.com/users/xiiivii/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65/commits","review_comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65/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/65/comments","statuses_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/68e6a3efb2a177880c42a733b6494b2ab68a4f60","head":{"label":"disal603:master","ref":"master","sha":"68e6a3efb2a177880c42a733b6494b2ab68a4f60","user":{"login":"disal603","id":14876847,"avatar_url":"https://avatars.githubusercontent.com/u/14876847?v=3","gravatar_id":"","url":"https://api.github.com/users/disal603","html_url":"https://github.com/disal603","followers_url":"https://api.github.com/users/disal603/followers","following_url":"https://api.github.com/users/disal603/following{/other_user}","gists_url":"https://api.github.com/users/disal603/gists{/gist_id}","starred_url":"https://api.github.com/users/disal603/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/disal603/subscriptions","organizations_url":"https://api.github.com/users/disal603/orgs","repos_url":"https://api.github.com/users/disal603/repos","events_url":"https://api.github.com/users/disal603/events{/privacy}","received_events_url":"https://api.github.com/users/disal603/received_events","type":"User","site_admin":false},"repo":{"id":43315276,"name":"verstka-tasks-1","full_name":"disal603/verstka-tasks-1","owner":{"login":"disal603","id":14876847,"avatar_url":"https://avatars.githubusercontent.com/u/14876847?v=3","gravatar_id":"","url":"https://api.github.com/users/disal603","html_url":"https://github.com/disal603","followers_url":"https://api.github.com/users/disal603/followers","following_url":"https://api.github.com/users/disal603/following{/other_user}","gists_url":"https://api.github.com/users/disal603/gists{/gist_id}","starred_url":"https://api.github.com/users/disal603/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/disal603/subscriptions","organizations_url":"https://api.github.com/users/disal603/orgs","repos_url":"https://api.github.com/users/disal603/repos","events_url":"https://api.github.com/users/disal603/events{/privacy}","received_events_url":"https://api.github.com/users/disal603/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/disal603/verstka-tasks-1","description":"Задача к лекции «HTML, I часть»","fork":true,"url":"https://api.github.com/repos/disal603/verstka-tasks-1","forks_url":"https://api.github.com/repos/disal603/verstka-tasks-1/forks","keys_url":"https://api.github.com/repos/disal603/verstka-tasks-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/disal603/verstka-tasks-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/disal603/verstka-tasks-1/teams","hooks_url":"https://api.github.com/repos/disal603/verstka-tasks-1/hooks","issue_events_url":"https://api.github.com/repos/disal603/verstka-tasks-1/issues/events{/number}","events_url":"https://api.github.com/repos/disal603/verstka-tasks-1/events","assignees_url":"https://api.github.com/repos/disal603/verstka-tasks-1/assignees{/user}","branches_url":"https://api.github.com/repos/disal603/verstka-tasks-1/branches{/branch}","tags_url":"https://api.github.com/repos/disal603/verstka-tasks-1/tags","blobs_url":"https://api.github.com/repos/disal603/verstka-tasks-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/disal603/verstka-tasks-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/disal603/verstka-tasks-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/disal603/verstka-tasks-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/disal603/verstka-tasks-1/statuses/{sha}","languages_url":"https://api.github.com/repos/disal603/verstka-tasks-1/languages","stargazers_url":"https://api.github.com/repos/disal603/verstka-tasks-1/stargazers","contributors_url":"https://api.github.com/repos/disal603/verstka-tasks-1/contributors","subscribers_url":"https://api.github.com/repos/disal603/verstka-tasks-1/subscribers","subscription_url":"https://api.github.com/repos/disal603/verstka-tasks-1/subscription","commits_url":"https://api.github.com/repos/disal603/verstka-tasks-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/disal603/verstka-tasks-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/disal603/verstka-tasks-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/disal603/verstka-tasks-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/disal603/verstka-tasks-1/contents/{+path}","compare_url":"https://api.github.com/repos/disal603/verstka-tasks-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/disal603/verstka-tasks-1/merges","archive_url":"https://api.github.com/repos/disal603/verstka-tasks-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/disal603/verstka-tasks-1/downloads","issues_url":"https://api.github.com/repos/disal603/verstka-tasks-1/issues{/number}","pulls_url":"https://api.github.com/repos/disal603/verstka-tasks-1/pulls{/number}","milestones_url":"https://api.github.com/repos/disal603/verstka-tasks-1/milestones{/number}","notifications_url":"https://api.github.com/repos/disal603/verstka-tasks-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/disal603/verstka-tasks-1/labels{/name}","releases_url":"https://api.github.com/repos/disal603/verstka-tasks-1/releases{/id}","created_at":"2015-09-28T17:20:06Z","updated_at":"2015-09-28T17:20:06Z","pushed_at":"2015-10-06T16:20:43Z","git_url":"git://github.com/disal603/verstka-tasks-1.git","ssh_url":"git@github.com:disal603/verstka-tasks-1.git","clone_url":"https://github.com/disal603/verstka-tasks-1.git","svn_url":"https://github.com/disal603/verstka-tasks-1","homepage":"","size":181,"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-07T09:06:57Z","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/65"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/65"},"issue":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/65"},"comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/65/comments"},"review_comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/65/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/65/commits"},"statuses":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/68e6a3efb2a177880c42a733b6494b2ab68a4f60"}}}}