📝 Update

This commit is contained in:
Yury 2022-05-31 23:11:54 +03:00
parent a6df7934de
commit 31b1c21296

337
README.md
View File

@ -79,18 +79,8 @@
- [Классификация языков программирования](#классификация-языков-программирования)
</details>
<details>
<summary><a href="#программное-обеспечение">6. Программное обеспечение</a></summary>
- [Система контроля версий Git](#система-контроля-версий-git)
- [Docker](#docker)
- [Postman/Insomnia](#postmaninsomnia)
</details>
<details>
<summary><a href="#базы-данных">7. Базы данных</a></summary>
<summary><a href="#базы-данных">6. Базы данных</a></summary>
- [Классификация баз данных](#классификация-баз-данных)
- [Реляционная база данных](#реляционная-база-данных)
@ -100,7 +90,7 @@
</details>
<details>
<summary><a href="#разработка-api">8. Разработка API</a></summary>
<summary><a href="#разработка-api">7. Разработка API</a></summary>
- [REST API](#rest-api)
- [GraphQL](#graphql)
@ -109,6 +99,13 @@
- [WebRTC](#webrtc)
</details>
<details>
<summary><a href="#программное-обеспечение">8. Программное обеспечение</a></summary>
- [Система контроля версий Git](#система-контроля-версий-git)
- [Docker](#docker)
- [Postman/Insomnia](#postmaninsomnia)
</details>
<details>
<summary><a href="#кэширование">9. Кэширование</a></summary>
@ -1212,151 +1209,6 @@
<div align="right"><a href="#top">Содержание ⬆️</a></div>
## Программное обеспечение
- ### Система контроля версий Git
[Git](https://ru.wikipedia.org/wiki/Git) - специальная система для управления историей изменения исходного кода. Любые изменения которые вносятся в Git могут быть сохранены, что позволяет откатываться (возвращаться) на ранее сохраненную копию проекта. На данный момент Git является стандартом для разработки.
- Основные команды
```bash
git init # инициализация Git в текущей папке
git add [файл] # добавить файл в Git
git add . # добавить все файлы в папке в Git
git reset [файл] # отменить добавление указанного файла
git reset # отменить добавление всех файлов
git commit -m "ваш текст" # создать коммит (сохранение)
git status # показывает статус добавленных файлов
git push # отправить текущие коммиты в удаленный репозиторий
git pull # загрузить изменения с удаленного репозитория
git clone [ссылка] # склонировать указанный репозиторий к себе на ПК
```
- Работа с ветками
> Ветвление позволяет отклонятся от основной линии разработки и продолжать работу независимо.
```bash
git branch # показать список текущих веток
git branch [имя] # создать новую ветку от текущего коммита
git checkout [имя] # переключиться на указанную ветку
git merge [имя] # слияние указанной ветки в текущую ветку
git branch -d [имя] # удалить указанную ветку
```
- Отмена коммитов
```bash
git revert HEAD --no-edit # создать новый коммит который отменяет изменения предыдущего
git revert [хэш_коммита] --no-edit # то же действие, но с указанным коммитом
```
- История изменений
```bash
git log [ветка] # показать коммиты указанной ветки
git log -3 # показать 3 последних коммита текущей ветки
git log [файл] # показать историю коммитов указанного файла
```
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Что такое Git и для чего он нужен**](https://guides.hexlet.io/ru/git-guide/)
1. [**Основы Git, GitHub и GitHub Actions** YouTube](https://www.youtube.com/playlist?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l)
1. [**Git. Большой практический выпуск** YouTube](https://youtu.be/SEvR78OhGtw)
1. [**Шпаргалка по консольным командам Git** GitHub](https://github.com/cyberspacedk/Git-commands)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Docker
[Docker](https://ru.wikipedia.org/wiki/Docker) - специальная программа, которая позволяет запускать изолированные песочницы (контейнеры) с различным предустановленным окружением (будь-то определенная операционная система, база данных и т.д.). Технология [контейнеризации](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F), которую предоставляет Docker, схожа с виртуальными машинами. Но, в отличие от виртуальных машин, контейнеры не создают такой дополнительной нагрузки, поскольку используют ядро хостовой ОС.
- Образ (image)
> Специальный фиксированный шаблон, в котором содержится описание среды для запуска приложения (ОС, исходный код, библиотеки, переменные окружения, файлы конфигурации и т.д.). Образы можно скачивать с [официального сайта](https://hub.docker.com/search?type=image) и на их основе создавать свои.
- Контейнер (container)
> Изолированная среда, созданная на основе какого-либо образа. По сути это является запущенным процессом на компьютере, который внутри содержит то окружение, которое описано в образе.
- Основные команды
```bash
docker pull [имя_образа] # Загрузить образ из сети
docker images # Список доступных образов
docker run [id_образа] # Запуск контейнера на основе выбранного образа
# Некоторые флаги для команды run:
-d # Запуск с возвратом в консоль
--name [имя] # Задать имя контейнеру
--rm # Удалить контейнер после остановки
-p [локальный_порт][порт_внутри_контейнера] # Проброс портов
docker build [путь_к_Dockerfile] # Создание образа на основе Dockerfile
docker ps # Список запущенных контейнеров
docker ps -a # Список всех контейнеров
docker stop [id/имя_контейнера] # Остановить контейнер
docker start [id/имя_контейнера] # Запустить существующий контейнер
docker attach [id/имя_контейнера] # Подключится к консоли контейнера
docker logs [id/имя_контейнера] # Вывести логи контейнера
docker rm [id/имя_контейнера] # Удалить контейнер
docker container prune # Удалить все контейнеры
docker rmi [id_образа] # Удалить образ
```
- Инструкции Dockerfile
> Dockerfile представляет собой файл с набором инструкций и аргументов для создания образов.
```bash
FROM [имя_образа] # Задание базового образа
WORKDIR [путь] # Задание корневой директории внутри контейнера
COPY [путь_относительно_Dockefile] [путь_в_контейнере] # Копирование файлов
ADD [путь] [путь] # Аналогично команде выше
RUN [команда] # Команда которая запускается только при инициализации образа
CMD ["команда"] # Команда которая отрабатывает каждый раз при запуске контейнера
ENV КЛЮЧ="ЗНАЧЕНИЕ" # Установка переменных окружения
ARG ИМЯ=ЗНАЧЕНИЕ # Задание переменных для передачи Docker во время сборки образа
ENTRYPOINT ["команда"] # Команда которая запускается во время работы контейнера
EXPOSE порт/протокол # Указывает на необходимость открыть порт
VOLUME ["путь"] # Создаёт точку монтирования для работы с постоянным хранилищем
```
- Docker-compose
> Специальный инструмент позволяющий одновременно запускать несколько контейнеров с разной инфраструктурой. В каком-то смысле это Dockerfile на максималках.
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Что такое виртуализация и для чего она нужна**](https://guides.hexlet.io/ru/virtualization/)
1. [**Как и для чего использовать Docker**](https://guides.hexlet.io/ru/docker/)
1. [**Docker для Начинающих. Полный Курс** YouTube](https://youtu.be/n9uCgUzfeRQ)
1. [**Полное практическое руководство по Docker** habr.com](https://habr.com/ru/post/310460/)
1. [**Изучаем Docker: файлы Dockerfile** habr.com](https://habr.com/ru/company/ruvds/blog/439980/)
1. [**Руководство по Docker Compose для начинающих** habr.com](https://habr.com/ru/company/ruvds/blog/450312)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Postman/Insomnia
При создании серверной части приложения, возникает необходимость в тестировании его работоспособности. Это можно сделать разными способами. Один из самых простых это воспользоваться консольной утилитой [curl](https://ru.wikipedia.org/wiki/CURL). Но такой способ годится если ваше приложение не большое и имеет всего несколько эндпоинтов. Намного эффективнее использовать специальное ПО для тестирования, которое имеют удобный интерфейс и весь необходимый функционал для автоматизации.
- [Postman](https://www.postman.com/)
> Очень популярная и многофункциональная программа. Здесь точно есть всё, что Вам может пригодиться и даже больше: начиная от банального создания коллекций до поднятия mock-серверов. Основной функционал приложения предоставляется бесплатно.
- [Insomnia](https://insomnia.rest/)
> Не такой популярный, но очень приятный инструмент. Интерфейс в Insomnia, минималистичный и понятный. Здесь поменьше функционала, но все самое необходимое есть: коллекции, переменные, автоматические тесты и т.д. Имеется возможность установки сторонних плагинов.
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Уроки по тестированию в Postman (плейлист)** YouTube](https://www.youtube.com/playlist?list=PLZqgWWF4O-zhpYUPLjpe2yfg93s1olElm)
1. [**Insomnia. Инструмент для API тестирования** YouTube](https://youtu.be/aXa_nQtDjUI)
1. [**Insomnia docs на русском**](https://insomnia.w3ref.ru/insomnia/get-started/)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Веб-сервера
- [Nginx](https://ru.wikipedia.org/wiki/Nginx)
- [Apache HTTP server](https://ru.wikipedia.org/wiki/Apache_HTTP_Server)
- [Caddy](https://en.wikipedia.org/wiki/Caddy_(web_server))
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Брокеры сообщений
- [RabbitMQ](https://ru.wikipedia.org/wiki/RabbitMQ)
- [Apache Kafka](https://ru.wikipedia.org/wiki/Apache_Kafka)
<div align="right"><a href="#top">Содержание ⬆️</a></div>
## Базы данных
[База данных (БД)](https://ru.wikipedia.org/wiki/%D0%91%D0%B0%D0%B7%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85) набор данных, которые организованы по определённым правилам. Например, библиотека является базой данных для книг.
@ -1745,6 +1597,177 @@
<div align="right"><a href="#top">Содержание ⬆️</a></div>
## Программное обеспечение
- ### Система контроля версий Git
[Git](https://ru.wikipedia.org/wiki/Git) - специальная система для управления историей изменения исходного кода. Любые изменения которые вносятся в Git могут быть сохранены, что позволяет откатываться (возвращаться) на ранее сохраненную копию проекта. На данный момент Git является стандартом для разработки.
- Основные команды
```bash
git init # инициализация Git в текущей папке
git add [файл] # добавить файл в Git
git add . # добавить все файлы в папке в Git
git reset [файл] # отменить добавление указанного файла
git reset # отменить добавление всех файлов
git commit -m "ваш текст" # создать коммит (сохранение)
git status # показывает статус добавленных файлов
git push # отправить текущие коммиты в удаленный репозиторий
git pull # загрузить изменения с удаленного репозитория
git clone [ссылка] # склонировать указанный репозиторий к себе на ПК
```
- Работа с ветками
> Ветвление позволяет отклонятся от основной линии разработки и продолжать работу независимо.
```bash
git branch # показать список текущих веток
git branch [имя] # создать новую ветку от текущего коммита
git checkout [имя] # переключиться на указанную ветку
git merge [имя] # слияние указанной ветки в текущую ветку
git branch -d [имя] # удалить указанную ветку
```
- Отмена коммитов
```bash
git revert HEAD --no-edit # создать новый коммит который отменяет изменения предыдущего
git revert [хэш_коммита] --no-edit # то же действие, но с указанным коммитом
```
- История изменений
```bash
git log [ветка] # показать коммиты указанной ветки
git log -3 # показать 3 последних коммита текущей ветки
git log [файл] # показать историю коммитов указанного файла
```
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Что такое Git и для чего он нужен**](https://guides.hexlet.io/ru/git-guide/)
1. [**Основы Git, GitHub и GitHub Actions** YouTube](https://www.youtube.com/playlist?list=PLg5SS_4L6LYstwxTEOU05E0URTHnbtA0l)
1. [**Git. Большой практический выпуск** YouTube](https://youtu.be/SEvR78OhGtw)
1. [**Шпаргалка по консольным командам Git** GitHub](https://github.com/cyberspacedk/Git-commands)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Docker
[Docker](https://ru.wikipedia.org/wiki/Docker) - специальная программа, которая позволяет запускать изолированные песочницы (контейнеры) с различным предустановленным окружением (будь-то определенная операционная система, база данных и т.д.). Технология [контейнеризации](https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F), которую предоставляет Docker, схожа с виртуальными машинами. Но, в отличие от виртуальных машин, контейнеры не создают такой дополнительной нагрузки, поскольку используют ядро хостовой ОС.
- Образ (image)
> Специальный фиксированный шаблон, в котором содержится описание среды для запуска приложения (ОС, исходный код, библиотеки, переменные окружения, файлы конфигурации и т.д.). Образы можно скачивать с [официального сайта](https://hub.docker.com/search?type=image) и на их основе создавать свои.
- Контейнер (container)
> Изолированная среда, созданная на основе какого-либо образа. По сути это является запущенным процессом на компьютере, который внутри содержит то окружение, которое описано в образе.
- Основные команды
```bash
docker pull [имя_образа] # Загрузить образ из сети
docker images # Список доступных образов
docker run [id_образа] # Запуск контейнера на основе выбранного образа
# Некоторые флаги для команды run:
-d # Запуск с возвратом в консоль
--name [имя] # Задать имя контейнеру
--rm # Удалить контейнер после остановки
-p [локальный_порт][порт_внутри_контейнера] # Проброс портов
docker build [путь_к_Dockerfile] # Создание образа на основе Dockerfile
docker ps # Список запущенных контейнеров
docker ps -a # Список всех контейнеров
docker stop [id/имя_контейнера] # Остановить контейнер
docker start [id/имя_контейнера] # Запустить существующий контейнер
docker attach [id/имя_контейнера] # Подключится к консоли контейнера
docker logs [id/имя_контейнера] # Вывести логи контейнера
docker rm [id/имя_контейнера] # Удалить контейнер
docker container prune # Удалить все контейнеры
docker rmi [id_образа] # Удалить образ
```
- Инструкции Dockerfile
> Dockerfile представляет собой файл с набором инструкций и аргументов для создания образов.
```bash
FROM [имя_образа] # Задание базового образа
WORKDIR [путь] # Задание корневой директории внутри контейнера
COPY [путь_относительно_Dockefile] [путь_в_контейнере] # Копирование файлов
ADD [путь] [путь] # Аналогично команде выше
RUN [команда] # Команда которая запускается только при инициализации образа
CMD ["команда"] # Команда которая отрабатывает каждый раз при запуске контейнера
ENV КЛЮЧ="ЗНАЧЕНИЕ" # Установка переменных окружения
ARG ИМЯ=ЗНАЧЕНИЕ # Задание переменных для передачи Docker во время сборки образа
ENTRYPOINT ["команда"] # Команда которая запускается во время работы контейнера
EXPOSE порт/протокол # Указывает на необходимость открыть порт
VOLUME ["путь"] # Создаёт точку монтирования для работы с постоянным хранилищем
```
- Docker-compose
> Специальный инструмент позволяющий одновременно запускать несколько контейнеров с разной инфраструктурой. В каком-то смысле это Dockerfile на максималках.
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Что такое виртуализация и для чего она нужна**](https://guides.hexlet.io/ru/virtualization/)
1. [**Как и для чего использовать Docker**](https://guides.hexlet.io/ru/docker/)
1. [**Docker для Начинающих. Полный Курс** YouTube](https://youtu.be/n9uCgUzfeRQ)
1. [**Полное практическое руководство по Docker** habr.com](https://habr.com/ru/post/310460/)
1. [**Изучаем Docker: файлы Dockerfile** habr.com](https://habr.com/ru/company/ruvds/blog/439980/)
1. [**Руководство по Docker Compose для начинающих** habr.com](https://habr.com/ru/company/ruvds/blog/450312)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Postman/Insomnia
При создании серверной части приложения, возникает необходимость в тестировании его работоспособности. Это можно сделать разными способами. Один из самых простых это воспользоваться консольной утилитой [curl](https://ru.wikipedia.org/wiki/CURL). Но такой способ годится если ваше приложение не большое и имеет всего несколько эндпоинтов. Намного эффективнее использовать специальное ПО для тестирования, которое имеют удобный интерфейс и весь необходимый функционал для автоматизации.
- [Postman](https://www.postman.com/)
> Очень популярная и многофункциональная программа. Здесь точно есть всё, что Вам может пригодиться и даже больше: начиная от банального создания коллекций до поднятия mock-серверов. Основной функционал приложения предоставляется бесплатно.
- [Insomnia](https://insomnia.rest/)
> Не такой популярный, но очень приятный инструмент. Интерфейс в Insomnia, минималистичный и понятный. Здесь поменьше функционала, но все самое необходимое есть: коллекции, переменные, автоматические тесты и т.д. Имеется возможность установки сторонних плагинов.
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Уроки по тестированию в Postman (плейлист)** YouTube](https://www.youtube.com/playlist?list=PLZqgWWF4O-zhpYUPLjpe2yfg93s1olElm)
1. [**Insomnia. Инструмент для API тестирования** YouTube](https://youtu.be/aXa_nQtDjUI)
1. [**Insomnia docs на русском**](https://insomnia.w3ref.ru/insomnia/get-started/)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Веб-сервера
Главной задачей любого [веб-сервера](https://ru.wikipedia.org/wiki/%D0%92%D0%B5%D0%B1-%D1%81%D0%B5%D1%80%D0%B2%D0%B5%D1%80) является обработка клиентских запросов и отправка ответов по протоколу HTTP (HTTPS). Помимо этого веб-сервера могут вести журналы ошибок (логи), производить аунтефикацию и авторизацию, хранить правила на обработку файлов и т.д.
- [Nginx](https://ru.wikipedia.org/wiki/Nginx)
- [Apache](https://ru.wikipedia.org/wiki/Apache_HTTP_Server)
- [Caddy](https://en.wikipedia.org/wiki/Caddy_(web_server))
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**Что такое веб сервер и для чего он нужен?** YouTube](https://youtu.be/uFWyAn6E4BU)
1. [**Что такое Nginx**](https://eternalhost.net/blog/sozdanie-saytov/chto-takoe-nginx?)
1. [**Основы Nginx (плейлист)** YouTube](https://youtube.com/playlist?list=PLhgRAQ8BwWFa7ulOkX0qi5UfVizGD_-Rc)
1. [**NGINX изнутри: рожден для производительности и масштабирования** habr.com](https://habr.com/ru/post/260065/)
1. [**Что такое Apache**](https://eternalhost.net/blog/hosting/web-server-apache)
1. [**Apache vs Nginx: практический взгляд** habr.com](https://habr.com/ru/post/267721/)
1. [**Установка web-сервера Apache на Linux Ubuntu и публикация web-сайта** YouTube](https://youtu.be/XmN7FUIYycA)
1. [**Web-технологии. Web сервера | Технострим** YouTube](https://youtu.be/1Tp5TV3BVWE)
1. [**Веб-сервер на Ubuntu 18 с нуля: nginx, HTTP/2, Brotli и HTTPS** YouTube](https://youtu.be/oanbIqkS9LM)
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
- ### Брокеры сообщений
- [RabbitMQ](https://ru.wikipedia.org/wiki/RabbitMQ)
- [Apache Kafka](https://ru.wikipedia.org/wiki/Apache_Kafka)
<details>
<summary>🔗 <b>Ссылки на материалы</b></summary>
1. [**** ]()
1. [**** ]()
1. [**** ]()
1. [**** ]()
1. [**** ]()
</details>
<div align="right"><a href="#top">Содержание ⬆️</a></div>
## Кэширование
- ### Что такое кэширование