{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Максим Кузнецов: заметки с тегом основы",
    "_rss_description": "Простыми словами о веб-разработке",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/maxkuznetsov.ru\/tags\/osnovy\/",
    "feed_url": "https:\/\/maxkuznetsov.ru\/tags\/osnovy\/json\/",
    "icon": "https:\/\/maxkuznetsov.ru\/user\/userpic@2x.jpg?1586398004",
    "author": {
        "name": "Максим Кузнецов",
        "url": "https:\/\/maxkuznetsov.ru\/",
        "avatar": "https:\/\/maxkuznetsov.ru\/user\/userpic@2x.jpg?1586398004"
    },
    "items": [
        {
            "id": "24",
            "url": "https:\/\/maxkuznetsov.ru\/all\/how-web-works\/",
            "title": "Как работает веб, или что происходит, когда вы сёрфите в интернете",
            "content_html": "<p>Каждый раз, когда вы открываете на компьютере или телефоне google.com, ваш браузер незаметно для вас отправляет множество запросов в интернет. Что это за запросы? Кто на них отвечает? Где хранятся страницы социальных сетей и статьи медиа-проектов?<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/maxkuznetsov.ru\/pictures\/__surfing2.jpg\" width=\"1280\" height=\"550\" alt=\"\" \/>\n<\/div>\n<h2>Браузер и веб-сервер<\/h2>\n<p>Для базового понимания работы веба можно провести аналогию с телевидением.<\/p>\n<p>Браузеры — Google Chrome, Firefox, Safari, Internet Explorer \/ Edge — это всего лишь экраны телевизоров, которые показывают программу, записанную и транслируемую откуда-то из далёких телестудий. В вебе такие студии называются веб-серверами.<\/p>\n<p>Вбивая новый адрес в браузере, вы переключаете канал. Только в отличие от телевидения в интернете этих каналов огромное количество, вы даже можете создать свой, настроив собственный веб-сервер.<\/p>\n<p>У каждого веб-сервера подобно телеканалу есть свой номер, который называется IP. Чаще всего он выглядит как четыре группы трёхзначных чисел, разделённых точкой — XXX.XXX.XXX.XXX, но может выглядеть иначе — см. <a href=\"https:\/\/ru.wikipedia.org\/wiki\/IPv6\">IPv6<\/a>.<\/p>\n<blockquote>\n<p>Например, Вконтакте имеет IP 87.240.137.158, Facebook — 31.13.72.36, данный блог — 5.63.155.79.<\/p>\n<\/blockquote>\n<p>Чтобы нам не пришлось запоминать адреса в виде 87.240.137.158 для посещения контакта, были придуманы доменные имена — это как раз тот понятный и лёгкий для запоминания адрес, что мы вбиваем в браузере: vk.com, facebook.com, maxkuznetsov.ru.<\/p>\n<p>Поскольку таких пар «IP — домен» по всему интернету огромное количество, то браузер не может все их знать и поэтому он обращается за помощью к DNS-серверу, который работает как адресная книга — по домену выдаёт IP, на который нужно слать запросы, и перенаправляет запрос на нужный веб-сервер в интернете.<\/p>\n<p>Получив запрос от браузера, веб-сервер отправляет в ответ запрошенную веб-страницу или ошибку, если что-то пошло не так.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-17.49.13.png\" width=\"2114\" height=\"1480\" alt=\"\" \/>\n<\/div>\n<blockquote>\n<p>Если такой страницы не существует, браузер покажет ошибку.<\/p>\n<\/blockquote>\n<h2>Из чего состоит веб-страница<\/h2>\n<p>Веб-страница — это то, что вы видите в браузере. Она представляет собой HTML — обычный текст, но помещённый в специальные символы — «теги», подсказывающие браузеру, где заголовки и списки, а где картинки, формы для пользовательского ввода и, конечно же, ссылки на другие страницы. Ссылки — они же гипертекс — в своё время и сделали веб таким удобным и популярным.<\/p>\n<p>Вы можете посмотреть из чего состоит любая веб-страница, кликнув по ней в браузере правой кнопкой мыши и выбрав пункт View Page Source \/ Посмотреть исходную страницу или что-то аналогичное в зависимости от браузера и языка интерфейса. Скорее всего вы ничего не поймёте, так как помимо HTML-разметки современные веб-страницы включают в себя кучу CSS и Javascript. Первая технология позволяет создавать красивый вид страниц (дизайн), а вторая — анимировать их и расширять функционал: всплывающие окна, проигрыватели аудио и видео, слайдеры, счётчики, метрики, обработка картинок, анимированная галерея фотографий и много чего ещё.<\/p>\n<blockquote>\n<p>Кратко:<br \/>\nHTML — это разметка статического контента, задание его структуры<br \/>\nCSS — наведение красоты, включая простую анимацию<br \/>\nJavascript — более сложная анимация и дополнительный функционал поверх контента<\/p>\n<\/blockquote>\n<p>Вы можете создавать свои веб-страницы прямо у себя на компьютере. Но чтобы другие люди их увидели, вам нужен веб-сервер, доступный через интернет. Попробуйте создать на своём компьютере файл index.html (скачать <a href=\"https:\/\/gist.github.com\/pluseg\/11b39b077a90f97f38c67e66b86c248b\">готовый пример<\/a>), внутри которого написать<\/p>\n<pre class=\"e2-text-code\"><code class=\"html\">&lt;h1&gt;Hello world!&lt;\/h1&gt;\r\n&lt;ol&gt;\r\n  &lt;li&gt;Это мой первый&lt;\/li&gt;\r\n  &lt;li&gt;Сайт&lt;\/li&gt;\r\n&lt;\/ol&gt;\r\n&lt;button&gt;Супер!&lt;\/button&gt;<\/code><\/pre><p>Сохраните и перетащите файл прямо в браузер — вы увидите ваш первый, хоть и не публичный, сайт.<\/p>\n<h2>Статические и динамические страницы<\/h2>\n<p>Все веб-страницы можно условно разделить на два вида — статичные и динамичные.<\/p>\n<ul>\n<li>Статичные — это уже готовый HTML, CSS, Javascript, который веб-сервер сразу же отдаёт по запросу браузера. Пример с index.html выше является статичной страницей. Её контент зафиксирован и будет отображаться одинаково для всех браузеров.<\/li>\n<li>Динамичные (и их сейчас большинство) страницы можно представить себе как шаблоны итоговых страниц, но с вкраплениями серверного кода. Такой код при выполнении может проверять авторизован пользователь или нет, обращаться к базе данных или сторонним сервисам (например, за курсом валют) и даже полностью менять содержимое страницы, но в конечном итоге он всё равно превращается в HTML, CSS и Javascript, которые веб-сервер отдаёт браузеру.<\/li>\n<\/ul>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-18.47.24.png\" width=\"820\" height=\"536\" alt=\"\" \/>\n<\/div>\n<blockquote>\n<p>Так, разные пользователи видят страницу <a href=\"https:\/\/youtube.com\">https:\/\/youtube.com<\/a> по-разному. Красным выделены те блоки, что «вставляются» серверным кодом, остальная часть страницы имеет одинаковый вид для всех пользователей.<br \/>\nСерверный код определяет вас по логину и выстраивает контент из ваших предпочтений. При этом шаблон страницы один для всех, что очень удобно, например, при редизайне — можно менять представление сайта без изменения самого контента. Это довольно важный принцип в программировании — разделять логику, данные и их визуальное представление.<\/p>\n<\/blockquote>\n<p>Браузеру вся эта кухня не видна, он лишь делает запрос и получает в ответ HTML, CSS и Javascript. Каждый клик по ссылке или отправка формы делает новый запрос на веб-сервер, который начинает весь процесс заново.<\/p>\n<p>Чтобы посмотреть на запросы, которые отправляет ваш браузер и что он получает в ответ, можно воспользоваться инструментом инспекции кода в браузере. Правый клик в любом месте страницы, выберите пункт «Inspect \/ Инспектировать элемент» или подобный, а потом перейдите в таб «Netword \/ Сеть». Перезагрузите страницу и вы увидите, как браузер общается с веб-сервером (или даже несколькими).<\/p>\n<style>.img-with-border .e2-text-picture-imgwrapper {border: 1px solid gray;}<\/style>\n<div class=\"img-with-border\"><div class=\"e2-text-picture\">\n<img src=\"https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-18.42.33.png-1.jpg\" width=\"2560\" height=\"1653\" alt=\"\" \/>\n<\/div>\n<\/div><p>См. также:<br \/>\n—  <a href=\"https:\/\/maxkuznetsov.ru\/all\/http-basics\/\">HTTP: как браузеры и веб-сервера понимают друг друга<\/a><br \/>\n—  Как поднять свой веб-сервер на NGINX<\/p>\n",
            "date_published": "2020-04-10T19:16:12+03:00",
            "date_modified": "2020-04-14T14:43:13+03:00",
            "image": "https:\/\/maxkuznetsov.ru\/pictures\/__surfing2.jpg",
            "_date_published_rfc2822": "Fri, 10 Apr 2020 19:16:12 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "24",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css",
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": [
                    "https:\/\/maxkuznetsov.ru\/pictures\/__surfing2.jpg",
                    "https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-17.49.13.png",
                    "https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-18.47.24.png",
                    "https:\/\/maxkuznetsov.ru\/pictures\/Screen-Shot-2020-04-10-at-18.42.33.png-1.jpg"
                ]
            }
        },
        {
            "id": "14",
            "url": "https:\/\/maxkuznetsov.ru\/all\/docker-basic\/",
            "title": "Принципы работы docker и примеры использования docker-compose",
            "content_html": "<p>Артём Матяшов записал отличный полуторачасовой урок про основы докера. Можно посмотреть на x1.5 за час.<\/p>\n<div style=\"max-width: 640px;\"><div class=\"e2-text-video\">\n<iframe src=\"https:\/\/www.youtube.com\/embed\/QF4ZF857m44\" frameborder=\"0\" allowfullscreen><\/iframe><\/div>\n<\/div><p>Подойдёт начинающим бэкендерам, а также фронтендерам, верстальщикам и всем, кому нужно развернуть проект на один раз и удалить без захламления системы.<\/p>\n<p>Однозначно лайк!<\/p>\n",
            "date_published": "2020-03-23T13:32:17+03:00",
            "date_modified": "2020-04-14T19:08:18+03:00",
            "image": "https:\/\/maxkuznetsov.ru\/pictures\/remote\/youtube-QF4ZF857m44-cover.jpg",
            "_date_published_rfc2822": "Mon, 23 Mar 2020 13:32:17 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "14",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/maxkuznetsov.ru\/pictures\/remote\/youtube-QF4ZF857m44-cover.jpg"
                ]
            }
        }
    ],
    "_e2_version": 3559,
    "_e2_ua_string": "E2 (v3559; Aegea)"
}