{"action":"created","comment":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41095941","id":41095941,"diff_hunk":"@@ -1,3 +1,397 @@\n-<html>\n-    <!-- Ваш замечательный код -->\n+<!DOCTYPE html>\n+<html lang=\"ru\">\n+    <head>\n+        <title>Яндекс.Блог</title>\n+        <meta charset=\"utf-8\">\n+        <style>\n+            html, body{\n+                background: #ddd;\n+                font-family: \"RobotoDraft\",\"Roboto\",sans-serif;\n+                font-size: 20px;\n+                line-height: 32px;\n+            }\n+            h1{\n+                display: block;\n+                font-size:30px;\n+                font-weight: 400;\n+                line-height: 40px;\n+            }\n+            body a{\n+                color: #000;\n+                text-decoration: none;\n+            }\n+            body a:hover{\n+                color: #F00;\n+                text-decoration: none;\n+            }\n+            .header-space{\n+                width: 100%;\n+                text-align: center;\n+                padding-top: 2em;\n+            }\n+            #wrapper{\n+                background: #fff;\n+                margin: 4em 8em 3em 8em;\n+                padding: 1em;\n+            }\n+            footer{\n+                width: 100%;\n+                text-align: center;\n+            }\n+            .header-title{\n+                font-size: 56px;\n+                font-weight: 400;\n+            }\n+            .logo{\n+                color: red;\n+            }\n+            #content{\n+                padding:2em;\n+            }\n+            #comments{\n+                padding:2em;\n+            }\n+            .comment{\n+                padding: 2em 2em 1em 0em;\n+                margin-left: 2em;\n+                border-bottom: 1px solid #ddd;\n+            }\n+            .attribution{\n+                width: 12%;\n+                font-size: 0.786em;\n+                display: inline-block;\n+                word-wrap: break-word;\n+            }\n+            .comment-text{\n+                margin-left: 5%;\n+                display: inline-block;\n+                vertical-align: top;\n+                width: 80%;\n+            }\n+            .comment-time{\n+                display: block;\n+            }\n+            footer .copyright, .clearlist{\n+                list-style: none;\n+            }\n+            .chapter-title{\n+                border-top: 1px solid #ddd;\n+            }\n+            .author-name{\n+                font-size: 1.8em;\n+            }\n+            .code{\n+                border-left: 5px solid rgba(255, 24, 24, 0.78);\n+                padding: 1.4em 0em 0em 1em;\n+                margin: 1em 1em 1em 2em;\n+            }\n+            table, tr, td, th{\n+                border: 1px solid rgba(0, 0, 0, 0.51);\n+                border-collapse: collapse;\n+                text-align:center;\n+                padding:3px;\n+            }\n+            table{\n+              width: 100%;\n+            }\n+            .contact ul{\n+              padding: 0;\n+            }\n+\n+        </style>\n+    </head>\n+    <body>\n+        <section id=\"wrapper\">\n+            <header class=\"header-space\" >\n+                <span class=\"header-title\">Блог компании <span class=\"logo\">Я</span>ндекс.</span>\n+            </header>\n+            <section id=\"content\">\n+                <p>\n+                    Если ваш сайт медленно грузится, вы рискуете тем, что люди не оценят ни то,\n+                    какой он красивый, ни то, какой он удобный. Никому не понравится, когда все\n+                    тормозит. Мы регулярно добавляем в <span class=\"logo\">Я</span>ндекс.Почту новую функциональность,\n+                    иногда — исправляем ошибки, а это значит, у нас постоянно появляются новый код\n+                    и новая логика. Всё это напрямую влияет на скорость работы интерфейса.\n+                </p>\n+                <h1 class=\"chapter-title\">Что мы измеряем</h1>\n+                <p>\n+                    Этапы первой загрузки:\n+                    <ul>\n+                        <li>подготовка</li>\n+                        <li>загрузка статистики (HTTP-запрос и парсинг)</li>\n+                        <li>исполнение модулей</li>\n+                        <li>инициализация базовых объектов</li>\n+                        <li>отрисовка</li>\n+                    </ul>\n+                </p>\n+                <p>\n+                    Этапы отрисовки любой страницы:\n+                    <ul>\n+                        <li>подготовка к запросу на сервер</li>\n+                        <li>запрос данных с сервера</li>\n+                        <li>шаблонизация</li>\n+                        <li>обновление <abbr title=\"Document Object Model\">DOM</abbr></li>\n+                    </ul>\n+                </p>\n+                <p>\n+                    — <q>Ок, теперь у нас есть метрики, мы можем отправить их на сервер</q> - говорим мы</br>\n+                    — <q>Что же дальше?</q> - вопрошаете вы</br>\n+                    — <q>А давай построим график!</q> - отвечаем мы</br>\n+                    — <q>А что будем считать?</q> - уточняете вы</br>\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+                    <abbr title=\"Application Performance Index\">APDEX</abbr> – метрика, которая сразу говорит: хорошо или плохо.     Метрика\n+                    работает очень просто. Мы выбираем временной интервал [0; t], такой, что если\n+                    время показа страницы попало в него, то пользогыватель счастлив. Берем еще один\n+                    интервал, (t; 4t] (в четыре раза больше первого), и считаем, что если страница\n+                    показана за это время, то пользователь в целом удовлетворен скоростью работы,\n+                    но уже не настолько счастлив. И применяем формулу:\n+                </p>\n+                <pre class=\"code\">\n+(кол-во счастливых пользователей + кол-во удовлетворенных / 2) / (кол-во всех)\n+                </pre>\n+                <p>\n+                    Получается значение от нуля до единицы, которое, видимо, лучше всего показывает,\n+                    хорошо или плохо работает почта.\n+                </p>\n+                <h1 class=\"chapter-title\">Как мы измеряем</h1>\n+                <p>\n+                    Сейчас модуль обновления сам логирует все свои стадии, и можно легко понять\n+                    причину замедления: медленнее стал отвечать сервер либо слишком долго\n+                    выполняется JavaScript. Выглядит это примерно так:\n+                </p>\n+                <pre class=\"code\">\n+this.timings['look-ma-im-start'] = Date.now();\n+this.timings['look-ma-finish'] = Date.now();&nbsp;\n+                </pre>\n+                <p>\n+                    C помощью Date.now() мы получаем текущее время. Все тайминги собираются и при\n+                    отправке рассчитываются. На этапах разница между “end” и “start” не считается,\n+                    а все вычисления производятся в конце:\n+                </p>\n+                <pre class=\"code\">\n+var totalTime = this.timings['look-ma-finish'] - this.timings['look-ma-im-start'];\n+                </pre>\n+                <p>И на сервер прилетают подобные записи:</p>\n+                <pre class=\"code\">\n+serverResponse=50&domUpdate=60\n+                </pre>\n+                <h1 class=\"chapter-title\">Как мы ускоряем</h1>\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+                    Мы подумали: <q>А что если хранить где-то старую версию файлов, а при выходе новой\n+                    передавать только diff между ней и той, которая сохранена у пользователя?</q>\n+                    В браузере же останется просто наложить патч на клиенте.\n+                </p>\n+                <p>\n+                    На самое деле эта идея не нова. Уже существуют стандарты для <abbr title=\"HyperText Transfer Protocol\">HTTP</abbr> — например,\n+                    RFC 3229 «Delta encoding in HTTP» и «Google SDHC», — но по разным причинам они\n+                    не получили должного распространения в браузерах и на серверах.\n+                </p>\n+                <p>\n+                    Мы же решили сделать свой аналог на JS. Чтобы реализовать этот метод обновления,\n+                    начали искать реализации diff на JS. На популярных хостингах кода нашли\n+                    библиотеки:\n+                </p>\n+                <ul>\n+                    <li>VCDiff</li>\n+                    <li>google-diff-patch-match</li>\n+                </ul>\n+                <p>Для окончательного выбора библиотеки нам нужно сравнить:</p>\n+                <table class=\"table\">\n+                    <thead>\n+                        <th>Библиотека</th>\n+                        <th>IE 9</th>\n+                        <th>Opera 12</th>\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+                    где и как хранить статику на клиенте.\n+                </p>\n+                <p>Формат файла с патчами для проекта выглядит так:</p>\n+                <pre class=\"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+                </pre>\n+                <p>\n+                    То есть это обычный массив из объектов. Каждый объект — отдельный ресурс. У\n+                    каждого объекта есть три свойства.\n+                    <ul class=\"clearlist\">\n+                        <li><var>k</var> — названия ключа в localStorage для этого ресурса</li>\n+                        <li><var>p</var> — патч для ресурса, который сгенерировал vcdiff</li>\n+                        <li><var>s</var> — чексумма для ресурса актуальной версии, чтобы потом можно было проверить\n+                        правильность наложения патча на клиенте. Чексумма вычисляется по алгоритму Флетчера</li>\n+                    </ul>\n+                </p>\n+                <dl>\n+                    <dt>Алгоритм Бройдена — Флетчера — Гольдфарба — Шанно <abbr title=\"Broyden — Fletcher — Goldfarb — Shanno\">(BFGS)</abbr></dt>\n+                    <dd>\n+                        — итерационный метод численной оптимизации, предназначенный для\n+                        нахождения локального максимума/минимума нелинейного функционала\n+                        без ограничений.\n+                    </dd>\n+                </dl>\n+                <pre class=\"code\">\n+дано &epsilon;, <var>x</var><sub>0</sub>\n+Инициализировать <var>H</var><sub>0</sub>\n+<var>k</var> = 0\n+while ||&nabla;<var>f</var><sub>k</sub>||>&epsilon;\n+    найти направление <var>p</var><sub>k</sub>=-<var>C</var><sub>k</sub>&nabla;<var>f</var><sub>k</sub>\n+    вычислить <var>x</var><sub>k+1</sub>=<var>x</var><sub>k</sub>+<var>a</var><sub>k</sub><var>p</var><sub>k</sub>,\n+    <var>a</var><sub>k</sub> удовлетворяет условиям Вольфе\n+    обозначить <var>s</var><sub>k</sub>=<var>x</var><sub>k+1</sub>-<var>x</var><sub>k</sub>\n+    и <var>y</var><sub>k</sub>=&nabla;<var>f</var><sub>k+1</sub>-&nabla;<var>f</var><sub>k</sub>\n+    вычислить <var>C</var><sub>k+1</sub>\n+    <var>k</var>=<var>k</var>+1\n+end\n+                </pre>\n+                <p>\n+                    Почему именно алгоритм Флетчера, а не другие популярные алгоритмы вроде:\n+                </p>\n+                <dl>\n+                    <dt>\n+                        <abbr title=\"Cyclic Redundancy Check\">CRC16/32</abbr>\n+                    </dt>\n+                    <dd>\n+                        - алгоритм нахождения контрольной суммы, предназначенный для проверки\n+                        целостности данных\n+                    </dd>\n+                    <dt>\n+                        <abbr title=\"Message-Digest\">md5</abbr>\n+                    </dt>\n+                    <dd>\n+                        - 128-битный алгоритм хеширования. Предназначен для создания «отпечатков»\n+                        или дайджестов сообщения произвольной длины и последующей проверки\n+                        их подлинности\n+                    </dd>\n+                </dl>\n+                <p>\n+                    Потому что он быстрый, компактный и легок в реализации.\n+                </p>\n+                <h1 class=\"chapter-title\">Итог</h1>\n+                <p>\n+                    Фактически мы экономим 80-90% трафика. Размер загружаемой статитки в байтах:\n+                </p>\n+                <table>\n+                    <thead>\n+                        <th>Релиз</th>\n+                        <th>С патчем </th>\n+                        <th>Без патча</th>\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+                <address class=\"contact\">\n+                    <ul class=\"clearlist\">\n+                        <li>Автор: @doochik</li>\n+                        <li>С++ разработик</li>\n+                        <li> Электронная почта: (<a href=\"mailto:doochik@yandex-team.ru\">doochik@yandex-team.ru</a>)</li>\n+                        <li>Компания: <a href=\"www.yandex.ru\"><span class=\"logo\">Я</span>ндекс</a></li>\n+                    </ul>\n+                </address>\n+            </section>\n+            <section id=\"comments\">\n+                Комментарии (4):\n+                <article class=\"comment\">\n+                    <header class=\"attribution\">\n+                        <span class=\"author-name\">Mogaika</span> (mogaika@yandex-team.ru) <span class=\"comment-time\">30 ноября 2014 в 17:05 </span>\n+                    </header>\n+                    <p class=\"comment-text\">\n+                        А можете привести сравнение, на сколько быстрее грузится lite версия?\n+                    </p>\n+                </article>\n+                <article class=\"comment\">\n+                    <header class=\"attribution\">\n+                        <span class=\"author-name\">JIguse</span> (mrawesome@yandex.ru) <span class=\"comment-time\">29 ноября 2014 в 21:30 </span>\n+                    </header>\n+                    <p class=\"comment-text\">\n+                        Спасибо за статью, познавательно. Здорово, что Яндекс делится некоторыми\n+                        подробностями о внутренней работе сервисов.\n+                    </p>\n+                </article>\n+                <article class=\"comment\">\n+                    <header class=\"attribution\">\n+                        <span class=\"author-name\">Brister</span> (brist89@yandex-team.ru) <span class=\"comment-time\">24 ноября 2014 в 13:13 </span>\n+                    </header>\n+                    <p class=\"comment-text\">\n+                        (кол-во счастливых пользователей + кол-во удовлетворенных / 2) / (кол-во всех).\n+                        Получается значение от нуля до единицы, которое, видимо, лучше всего показывает,\n+                        хорошо или плохо работает почта.\n+\n+                        наверное все-таки от 0.5 до 1\n+                    </p>\n+                </article>\n+                <article class=\"comment\">\n+                    <header class=\"attribution\">\n+                        <span class=\"author-name\">alexeimois</span> (test@yandex.ru) <span class=\"comment-time\">22 ноября 2014 в 17:35  </span>\n+                    </header>\n+                    <p class=\"comment-text\">\n+                        Мы измеряем скорость загрузки с помощью Яндекс.Метрики:\n+                        <a href=\"help.yandex.ru/metrika/reports/monitoring_timing.xml\" target=\"_blank\">help.yandex.ru/metrika/reports/monitoring_timing.xml</a>\n+                    </p>\n+                </article>\n+            </section>\n+            <footer>\n+                <ul class=\"copyright\">","path":"index.html","position":393,"original_position":393,"commit_id":"0322d6fa8bb163f70e6e0ecc24104646ba7eeeb7","original_commit_id":"0322d6fa8bb163f70e6e0ecc24104646ba7eeeb7","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-04T08:37:24Z","updated_at":"2015-10-04T08:37:24Z","html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/53#discussion_r41095941","pull_request_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53","_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/comments/41095941"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/53#discussion_r41095941"},"pull_request":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53"}}},"pull_request":{"url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53","id":46604620,"html_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/53","diff_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/53.diff","patch_url":"https://github.com/urfu-2015/verstka-tasks-1/pull/53.patch","issue_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/53","number":53,"state":"open","locked":false,"title":"Лысов Дмитрий","user":{"login":"hamy11","id":14192921,"avatar_url":"https://avatars.githubusercontent.com/u/14192921?v=3","gravatar_id":"","url":"https://api.github.com/users/hamy11","html_url":"https://github.com/hamy11","followers_url":"https://api.github.com/users/hamy11/followers","following_url":"https://api.github.com/users/hamy11/following{/other_user}","gists_url":"https://api.github.com/users/hamy11/gists{/gist_id}","starred_url":"https://api.github.com/users/hamy11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hamy11/subscriptions","organizations_url":"https://api.github.com/users/hamy11/orgs","repos_url":"https://api.github.com/users/hamy11/repos","events_url":"https://api.github.com/users/hamy11/events{/privacy}","received_events_url":"https://api.github.com/users/hamy11/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-10-02T05:43:02Z","updated_at":"2015-10-04T08:37:24Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b9520133cddb38b189403fe16ec7b3dcc5d987f1","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/53/commits","review_comments_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53/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/53/comments","statuses_url":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/0322d6fa8bb163f70e6e0ecc24104646ba7eeeb7","head":{"label":"hamy11:master","ref":"master","sha":"0322d6fa8bb163f70e6e0ecc24104646ba7eeeb7","user":{"login":"hamy11","id":14192921,"avatar_url":"https://avatars.githubusercontent.com/u/14192921?v=3","gravatar_id":"","url":"https://api.github.com/users/hamy11","html_url":"https://github.com/hamy11","followers_url":"https://api.github.com/users/hamy11/followers","following_url":"https://api.github.com/users/hamy11/following{/other_user}","gists_url":"https://api.github.com/users/hamy11/gists{/gist_id}","starred_url":"https://api.github.com/users/hamy11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hamy11/subscriptions","organizations_url":"https://api.github.com/users/hamy11/orgs","repos_url":"https://api.github.com/users/hamy11/repos","events_url":"https://api.github.com/users/hamy11/events{/privacy}","received_events_url":"https://api.github.com/users/hamy11/received_events","type":"User","site_admin":false},"repo":{"id":43537170,"name":"verstka-tasks-1","full_name":"hamy11/verstka-tasks-1","owner":{"login":"hamy11","id":14192921,"avatar_url":"https://avatars.githubusercontent.com/u/14192921?v=3","gravatar_id":"","url":"https://api.github.com/users/hamy11","html_url":"https://github.com/hamy11","followers_url":"https://api.github.com/users/hamy11/followers","following_url":"https://api.github.com/users/hamy11/following{/other_user}","gists_url":"https://api.github.com/users/hamy11/gists{/gist_id}","starred_url":"https://api.github.com/users/hamy11/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hamy11/subscriptions","organizations_url":"https://api.github.com/users/hamy11/orgs","repos_url":"https://api.github.com/users/hamy11/repos","events_url":"https://api.github.com/users/hamy11/events{/privacy}","received_events_url":"https://api.github.com/users/hamy11/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/hamy11/verstka-tasks-1","description":"Задача к лекции «HTML, I часть»","fork":true,"url":"https://api.github.com/repos/hamy11/verstka-tasks-1","forks_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/forks","keys_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/teams","hooks_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/hooks","issue_events_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/issues/events{/number}","events_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/events","assignees_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/assignees{/user}","branches_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/branches{/branch}","tags_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/tags","blobs_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/git/refs{/sha}","trees_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/statuses/{sha}","languages_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/languages","stargazers_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/stargazers","contributors_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/contributors","subscribers_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/subscribers","subscription_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/subscription","commits_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/commits{/sha}","git_commits_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/git/commits{/sha}","comments_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/comments{/number}","issue_comment_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/issues/comments{/number}","contents_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/contents/{+path}","compare_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/merges","archive_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/downloads","issues_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/issues{/number}","pulls_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/pulls{/number}","milestones_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/milestones{/number}","notifications_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/labels{/name}","releases_url":"https://api.github.com/repos/hamy11/verstka-tasks-1/releases{/id}","created_at":"2015-10-02T05:24:05Z","updated_at":"2015-10-02T05:24:06Z","pushed_at":"2015-10-03T04:45:54Z","git_url":"git://github.com/hamy11/verstka-tasks-1.git","ssh_url":"git@github.com:hamy11/verstka-tasks-1.git","clone_url":"https://github.com/hamy11/verstka-tasks-1.git","svn_url":"https://github.com/hamy11/verstka-tasks-1","homepage":"","size":108,"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-03T14:28:03Z","pushed_at":"2015-10-04T08:33:44Z","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":2003,"stargazers_count":15,"watchers_count":15,"language":"HTML","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":76,"mirror_url":null,"open_issues_count":48,"forks":76,"open_issues":48,"watchers":15,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53"},"html":{"href":"https://github.com/urfu-2015/verstka-tasks-1/pull/53"},"issue":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/53"},"comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/issues/53/comments"},"review_comments":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/pulls/53/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/53/commits"},"statuses":{"href":"https://api.github.com/repos/urfu-2015/verstka-tasks-1/statuses/0322d6fa8bb163f70e6e0ecc24104646ba7eeeb7"}}}}