backend-cheats/README.md

558 lines
32 KiB
Markdown
Raw Normal View History

2022-02-27 20:42:24 +03:00
# Backend cheats
2022-02-27 19:02:50 +03:00
2022-02-27 22:42:30 +03:00
Данный репозиторий представляет собой наглядную шпаргалку по основным темам в области Backend-разработки. Весь материал разбит на темы и подтемы. Структура материала состоит из 3 частей:
2022-02-28 08:31:20 +03:00
- **Визуальная часть** - различные изображения/таблицы для лучшего понимания (может отсутствовать). Все рисунки и таблицы сделаны с нуля, специально для этого репозитория.
2022-02-27 22:42:30 +03:00
- **Краткое описание** - очень краткая выжимка информации, позволяющая понять лишь основную суть.
2022-02-28 20:57:46 +03:00
- **Ссылки на источники** - ресурсы, где можно найти полную информацию по конкретному вопросу. По возможности мы стараемся указывать максимально авторитетные источники, либо же те, которые предоставляют информацию максимально простым и понятным языком.
2022-02-27 22:42:30 +03:00
2022-03-02 20:04:29 +03:00
Изучать материал можно последовательно шаг за шагом.
2022-03-02 20:38:33 +03:00
> 🛠 Репозиторий находится в стадии активной разработки, поэтому постоянно обновляется и дополняется.
<p><a name="top"></a></p>
2022-03-02 20:04:29 +03:00
2022-02-27 22:42:30 +03:00
## Содержание
2022-03-01 13:04:49 +03:00
- [1. Сеть и интернет](#сеть-и-интернет)
- [Как устроен интернет](#как-устроен-интернет)
- [Браузеры и как они работают](#браузеры-и-как-они-работают)
- [Что такое DNS](#что-такое-dns)
- [Что такое доменное имя](#что-такое-доменное-имя)
- [Хостинг](#хостинг)
2022-03-02 20:04:29 +03:00
- [ек протоколов TCP/IP](#cтек-протоколов-tcpip)
2022-03-01 13:04:49 +03:00
- [Проблемы сети](#проблемы-сети)
- [IPv4 и IPv6](#ipv4-и-ipv6)
- [Трассировка маршрутов](#трассировка-маршрутов)
2022-03-02 20:38:33 +03:00
- [2. Операционные системы](#операционные-системы)
2022-03-03 12:25:55 +03:00
- [Как работают ОС](#как-работают-ос)
- [Управление процессами](#управление-процессами)
- [Потоки и параллелизм](#потоки-и-параллелизм)
- [Управление памятью](#управление-памятью)
- [Межпроцессорное взаимодействие](#межпроцессорное-взаимодействие)
- [Ввод и вывод (I/O)](#ввод-и-вывод-io)
- [Основы POSIX](#основы-posix)
2022-03-01 13:04:49 +03:00
2022-02-27 19:02:50 +03:00
## Сеть и интернет
2022-02-28 20:57:46 +03:00
**Интернет** - это всемирная система объединяющая компьютерные сети со всего мира в единую сеть для хранения/передачи информации. Изначально Интернет разрабатывался для нужд военных. Но вскоре он стал внедряться в учреждения образования (университеты), а затем его смогли использовать частные компании, которые начали организовывать сети провайдеров, предоставляющие услуги доступа в Интернет обычным гражданам. К началу 2020 года количество пользователей в сети Интернет перевалило за 4.5 млрд человек.
2022-02-27 20:42:24 +03:00
2022-03-03 13:33:25 +03:00
[Интернет — Википедия](https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82)
2022-02-27 20:44:17 +03:00
2022-03-03 13:33:25 +03:00
[История Интернета — Википедия](https://ru.wikipedia.org/wiki/%D0%98%D1%81%D1%82%D0%BE%D1%80%D0%B8%D1%8F_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D0%B0)
2022-02-27 20:42:24 +03:00
2022-02-28 08:31:20 +03:00
- ### Как устроен Интернет
2022-02-27 19:02:50 +03:00
2022-02-28 17:24:28 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/Internet.png" alt="Internet"/>
2022-02-28 17:24:28 +03:00
</p>
2022-03-02 20:04:29 +03:00
Ваш компьютер никогда не был связан с Интернетом напрямую. Он видит только свою локальную сеть, в которую проводным (Ethernet) или беспроводным (Wi-Fi, Bluetooth) путем подключены другие устройства.
2022-02-27 20:42:24 +03:00
2022-03-03 12:25:55 +03:00
Для связи с Интернетом в вашей локальной сети находиться специальный мини-компьютер - **маршрутизатор**. Далее этот маршрутизатор связывает вас с интернет-провайдером, который в свою очередь связан с другими провайдерами более высокого уровня. Таким образом, ваше сообщение, пройдя транзитом через сеть нескольких провайдеров, достигнет сеть назначения.
2022-02-27 20:42:24 +03:00
2022-02-28 20:57:46 +03:00
`Хост` _(host - принимающий)_ - любое устройство, которое находится в какой-либо сети.
2022-03-01 10:17:11 +03:00
2022-02-28 20:57:46 +03:00
`Сервер` _(serve - обслуживать)_ - специальный компьютер в сети, который обслуживает запросы поступающие от других компьютеров.
2022-02-27 20:42:24 +03:00
[Как работает Интернет - MDN (mozilla.org)](https://developer.mozilla.org/ru/docs/Learn/Common_questions/How_does_the_Internet_work)
2022-02-27 20:44:17 +03:00
2022-02-27 20:42:24 +03:00
[Основы программирования. Как работают сети? - YouTube](https://www.youtube.com/watch?v=k_0BAtyaDio&ab_channel=Winderton)
2022-02-28 20:57:46 +03:00
[Хост — что это такое и как он работает](https://anisim.org/articles/host/)
2022-03-03 13:33:25 +03:00
[Сервер — Википедия](<https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B5%D1%80_(%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B5_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5)>)
2022-02-28 20:57:46 +03:00
[Что такое сервер и как он работает](https://timeweb.com/ru/community/articles/chto-takoe-server-i-kak-on-rabotaet)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### Браузеры и как они работают
2022-02-27 19:02:50 +03:00
2022-02-28 17:24:28 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/Browser.png" alt="Browser"/>
2022-02-28 17:24:28 +03:00
</p>
2022-02-28 20:57:46 +03:00
Браузер - это клиент, с помощью которого можно отправлять запросы на сервер для получения файлов, которые впоследствии используются для отрисовки web-страниц. Большинство пользователей используют именно браузеры для работы в сети Интернет.
2022-02-27 20:42:24 +03:00
2022-02-28 20:57:46 +03:00
[Как работают браузеры — MDN (mozilla.org)](https://developer.mozilla.org/ru/docs/Web/Performance/How_browsers_work)
2022-02-27 20:42:24 +03:00
2022-03-03 13:33:25 +03:00
[Браузер — Википедия](https://ru.wikipedia.org/wiki/%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80)
2022-02-27 19:02:50 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-28 17:24:28 +03:00
- ### Что такое DNS
2022-02-27 20:42:24 +03:00
2022-02-28 08:31:20 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/dns.png" alt="DNS"/>
2022-02-28 08:31:20 +03:00
</p>
2022-02-27 20:42:24 +03:00
2022-03-01 14:52:13 +03:00
**DNS (Domain Name System)** - это децентрализованная система именования адресов в Интернете, которая позволяет создавать удобные для человека буквеные наименования (доменные имена) соответствующие числовым IP-адресам, которые используются компьютерами.
2022-02-28 17:24:28 +03:00
2022-03-01 14:52:13 +03:00
`IP-адрес` - уникальный идентификатор устройства находящегося в какой-либо сети.
2022-02-28 20:57:46 +03:00
2022-03-03 13:33:25 +03:00
[Система доменных имен DNS — YouTube](https://www.youtube.com/watch?v=B0J0c0KLtbQ&ab_channel=AndreySozykin)
2022-02-27 20:44:17 +03:00
2022-03-08 20:17:40 +03:00
[DNS — Википедия](https://ru.wikipedia.org/wiki/DNS)
2022-02-27 20:42:24 +03:00
2022-02-28 20:57:46 +03:00
[IP адрес — HackWare.ru](https://hackware.ru/?p=11589)
2022-03-03 13:33:25 +03:00
[IP-адрес — Википедия](https://ru.wikipedia.org/wiki/IP-%D0%B0%D0%B4%D1%80%D0%B5%D1%81)
2022-02-28 20:57:46 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### Что такое доменное имя
2022-02-27 19:02:50 +03:00
2022-02-28 17:24:28 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/Domain.png" alt="Domain"/>
2022-02-28 17:24:28 +03:00
</p>
2022-03-01 10:17:11 +03:00
Доменные имена представляют собой человеко-читаемые адреса веб-серверов, доступных в Интернете. Они состоят из частей (уровней) разделенных между собой точкой. Каждая из этих частей предоставляет специфическую информацию о доменном имени. Например страну, название сервиса, локализацию и т.д.
2022-02-28 17:24:28 +03:00
[Что такое доменные имена - MDN (mozilla.org)](https://developer.mozilla.org/ru/docs/Learn/Common_questions/What_is_a_domain_name)
2022-03-01 13:04:49 +03:00
[Как работают домены](https://temoto.github.io/a/kak-rabotayut-domeny.html)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### Хостинг
2022-02-27 19:02:50 +03:00
2022-03-01 10:17:11 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/Hosting.png" alt="Hosting"/>
2022-03-01 10:17:11 +03:00
</p>
2022-02-28 20:57:46 +03:00
**Хостинг** _(hosting)_ - специальная услуга, предоставляемая хостинг-провайдерами, которая позволяет арендовать пространство на сервере (который круглосуточно подключён к сети Интернет), где могут храниться ваши данные и файлы. Существуют различные варианты хостинга, где вы можете использовать не только дисковое пространство сервера, но и так же процессорную мощность для работы ваших сетевых приложений.
2022-03-01 14:52:13 +03:00
[Хостинг: варианты, сравнения, пользовательская статистика — habr.com](https://habr.com/ru/company/ruvds/blog/443522/)
2022-02-28 20:57:46 +03:00
2022-03-08 20:17:40 +03:00
[Хостинг: что это, зачем и как выбрать vc.ru](https://vc.ru/services/74241-hosting-chto-eto-zachem-i-kak-vybrat)
2022-02-28 20:57:46 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 14:52:13 +03:00
- ### Cтек протоколов TCP/IP
2022-02-27 19:02:50 +03:00
2022-03-01 14:52:13 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/tcp-ip.png" alt="TCP/IP"/>
2022-03-01 14:52:13 +03:00
</p>
**Стек TCP/IP** - это модель (набор правил), которая описывает способ передачи данных от источника информации к получателю.
2022-03-02 20:04:29 +03:00
`Протокол` - это всего лишь набор правил, документ, фиксирующий договорённость. В частности в стеке TCP/IP протоколы описывают правила взаимодействия между уровнями / в пределах одного уровня.
2022-03-01 14:52:13 +03:00
2022-03-02 20:38:33 +03:00
> На начальном этапе не стоит сильно погружаться в эту тему, но иметь общее представление, как ваши данные проходят через все уровни протоколов, будет полезно.
2022-03-01 14:52:13 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/tcp.png" alt="TCP"/>
2022-03-01 14:52:13 +03:00
</p>
2022-03-02 20:04:29 +03:00
`TCP` - это протокол обеспечивающий надежную передачу данных. TCP гарантирует доставку данных и сохранение порядка следования сообщений. Но это сказывается на скорости передачи. Данный протокол используется там, где потеря информации недопустима, например для отправки почты.
2022-03-01 14:52:13 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/udp.png" alt="UDP"/>
2022-03-01 14:52:13 +03:00
</p>
2022-03-02 20:04:29 +03:00
`UDP` - это простой протокол с быстрой передачей данных. Он не использует механизмов для гарантирования доставки и порядка следования данных. Используется, например в онлайн-играх, где частичная потеря пакетов не критична, но скорость передачи данных имеет гораздо более важное значение. Так же, запросы к DNS-серверам происходят через UDP протокол.
2022-03-01 14:52:13 +03:00
`MAC-адрес` - уникальный идентификатор, назначенный сетевому адаптеру какого либо-устройства.
[Модель и стек протоколов TCP/IP — YouTube](https://www.youtube.com/watch?v=UZo4ffQ-aAc&list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1&index=8&ab_channel=AndreySozykin)
[Протокол TCP — YouTube](https://www.youtube.com/watch?v=CKUOb4htnB4&ab_channel=AndreySozykin)
[Протокол UDP — YouTube](https://www.youtube.com/watch?v=GBrLfZvRrd8&ab_channel=AndreySozykin)
2022-03-08 20:17:40 +03:00
[TCP/IP — Википедия](https://ru.wikipedia.org/wiki/TCP/IP)
2022-03-01 14:52:13 +03:00
[Всё, что вы хотели знать о МАС адресе — habr.com](https://habr.com/ru/post/483670/)
2022-02-27 19:02:50 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### Проблемы сети
2022-02-27 19:02:50 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### IPv4 и IPv6
2022-02-27 19:02:50 +03:00
2022-03-01 10:17:11 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/IPv4-IPv6.png" alt="IPv4-IPv6"/>
2022-03-01 10:17:11 +03:00
</p>
2022-03-01 13:04:49 +03:00
IPv4 и IPv6 соответственно 4 и 6 версии IP-адреса. IPv4 разработана в 1981 году и ограничивает адресное пространство около 4.3 млрд (2^32) возможными уникальными адресами. Но со временем распределение адресного пространства стало происходить значительно более быстрыми темпами, что вынудило создание новой версии IP-адреса для хранения большего количества адресов. IPv6 способен обеспечить более 300 млн IP-адресов на каждого жителя Земли.
2022-03-01 10:17:11 +03:00
2022-03-03 13:33:25 +03:00
[IPv4 — Википедия](https://ru.wikipedia.org/wiki/IPv4)
2022-03-01 10:17:11 +03:00
2022-03-03 13:33:25 +03:00
[IPv6 — Википедия](https://ru.wikipedia.org/wiki/IPv6)
2022-03-01 10:17:11 +03:00
2022-03-08 20:17:40 +03:00
[Протоколы IPv4 и IPv6. В чем разница и что лучше?](https://bezopasnik.info/%D0%BF%D1%80%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BB%D1%8B-ipv4-%D0%B8-ipv6-%D0%B2-%D1%87%D0%B5%D0%BC-%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0-%D0%B8-%D1%87%D1%82%D0%BE-%D0%BB%D1%83%D1%87%D1%88%D0%B5/)
2022-03-01 10:17:11 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 22:43:49 +03:00
- ### Трассировка маршрутов
2022-02-27 19:02:50 +03:00
2022-02-28 20:57:46 +03:00
<p align="center">
2022-03-02 20:04:29 +03:00
<img src="./files/network-internet/Traceroute.png" alt="Traceroute"/>
2022-02-28 20:57:46 +03:00
</p>
**Трассировка маршрута** - процедура, позволяющая отследить по каким узлам, с какими IP адресами, передаётся отправленный вами пакет прежде чем он достигнет точки назначения. Трассировка может применяться для выявления связанных с работой компьютерной сети проблем, а также для исследования/анализа сети.
2022-03-03 13:33:25 +03:00
[Трассировка сетевого маршрута — hackware.ru](https://hackware.ru/?p=9210#12)
2022-02-28 17:24:28 +03:00
2022-03-03 13:33:25 +03:00
[Traceroute — Википедия](https://ru.wikipedia.org/wiki/Traceroute)
2022-02-28 17:24:28 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
## Операционные системы
2022-03-08 20:17:40 +03:00
Операционная система (ОС) это комплексная программная система, которая предназначена для управления ресурсами компьютера.
На данном этапе нет необходимости в детальном изучении устройства и принципов работы ОС. Достаточно лишь общего понимания, как в целом функционирует вся эта система, чтобы для вас это не было каким-то черным ящиком.
2022-03-01 13:04:49 +03:00
- ### Как работают ОС
2022-03-03 13:33:25 +03:00
[Что такое операционная система и как она работает YouTube](https://www.youtube.com/watch?v=hb9CTGSJm88&t)
[Что такое операционная система и как она работает? - GitHub](https://github.com/Steindvart/My_study/blob/master/docs/source/OS/articles/what_is_os.rst)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Управление процессами
2022-03-08 20:17:40 +03:00
[Процесс Википедия](<https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)>)
[Процессы и потоки](https://learnc.info/c/processes_and_threads.html)
2022-03-03 13:33:25 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Потоки и параллелизм
2022-03-08 20:17:40 +03:00
[Поток выполнения Википедия](https://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D1%82%D0%BE%D0%BA_%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F)
[Параллелизм против многопоточности против асинхронного программирования: разъяснение habr.com](https://habr.com/ru/post/337528/)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Управление памятью
2022-03-08 20:17:40 +03:00
[Управление памятью в ОС](https://bestprogrammer.ru/izuchenie/upravlenie-pamyatyu-v-operatsionnoj-sisteme)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Межпроцессорное взаимодействие
2022-03-08 20:17:40 +03:00
[Межпроцессное взаимодействие Википедия](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BD%D0%BE%D0%B5_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5)
[IPC: основы межпроцессного взаимодействия](https://www.rsdn.org/article/baseserv/ipc.xml)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Ввод и вывод (I/O)
2022-03-08 20:17:40 +03:00
[Ввод и вывод Википедия](https://ru.wikipedia.org/wiki/%D0%92%D0%B2%D0%BE%D0%B4-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4)
[Основные методы ввода-вывода (I/O) tproger.ru](https://tproger.ru/translations/diversity-of-input-output-io/)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Основы POSIX
2022-03-08 20:17:40 +03:00
[POSIX Википедия](https://ru.wikipedia.org/wiki/POSIX)
2022-03-02 20:38:33 +03:00
2022-03-08 20:17:40 +03:00
[Что такое POSIX](http://citforum.ru/operating_systems/articles/posix.shtml)
2022-03-01 13:04:49 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
## Основы Linux
2022-03-02 20:04:29 +03:00
Операционные системы на базе ядра Linux это стандарт в мире серверной разработки, поскольку большинство серверов работают именно на таких ОС. Использовать Linux на серверах выгодно, ведь он рапространяется бесплатно.
Существует огромное количество дистрибутивов (сборок с набором предустановленного ПО) Linux на любой вкус и цвет. Одним из самых популярных является Ubuntu. Именно с него можно начать своё погружение в серверную разработку.
[Установить Ubuntu](https://ubuntu.com/download/desktop) можно на отдельный ПК или ноутбук. Если такой возможности нет, можно воспользоваться специальной программой [Virtual Box](https://www.virtualbox.org/wiki/Downloads), в которой можно [запускать другие ОС](https://lumpics.ru/how-install-ubuntu-on-virtualbox-virtual-machine/) поверх основной. Так же можно запустить [Docker](https://www.docker.com/products/docker-desktop) [контейнер с образом Ubuntu](https://losst.ru/zapusk-kontejnera-docker) (Docker - это отдельная тема, которая рассматривается в этом репозитории).
После этого можно быстро пройти [вводный курс по Linux и Bash](https://younglinux.info/bash/linux).
2022-03-01 13:04:49 +03:00
- ### Работа с терминалом
2022-03-04 22:58:23 +03:00
Необходимо уметь работать с терминалом (консолью). Это предоставляет вам доступ ко всем возможностям ОС, в отличии от графического интерфейса, функционал которого существенного ограничен.
2022-03-03 12:25:55 +03:00
```bash
### РАБОТА С ФАЙЛОВОЙ СИСТЕМОЙ
ls # просмотр содержимого директории
2022-03-08 20:17:40 +03:00
cd <путь> # переход в указанный каталог
2022-03-04 22:58:23 +03:00
cd .. # переход на уровень выше (в родительский каталог)
2022-03-08 20:17:40 +03:00
touch <файл> # создание файла
cat > <файл> # ввод текста в файл из консоли (перезапись)
cat >> <файл> # ввод текста в конец файла (добавление)
cat/more/less <файл> # просмотр содержимого файла
head/tail <файл> # просмотр первых/последних строк файла
2022-03-03 12:25:55 +03:00
pwd # путь к текущей директории
2022-03-08 20:17:40 +03:00
mkdir <имя> # создать директорию
cp <файл> <путь> # копировать файл или директорию
2022-03-03 12:25:55 +03:00
mv # перемещение или переименование
2022-03-08 20:17:40 +03:00
rm <файл> # удаление файла или директории
2022-03-03 12:25:55 +03:00
chmod # изменения прав доступа к файлу
find # поиск в файловой системе
du # рамзер файла или каталога
2022-03-05 23:13:13 +03:00
### ДОКУМЕНТАЦИЯ
2022-03-03 12:25:55 +03:00
man <названиеоманды> # Позволяет посмотреть руководство по любой команде.
2022-03-04 22:58:23 +03:00
apropos <слово> # Поиск команды с описанием имеющим указанное слово
man -k <слово> # Аналогично команде выше
whatis <названиеоманды> # Краткое описание команды
2022-03-03 12:25:55 +03:00
### ПРАВА СУПЕРПОЛЬЗОВАТЕЛЯ
sudo <команда> # выполняет команду с правами суперпользователя
```
2022-03-03 13:33:25 +03:00
[Основные linux-команды для новичка habr.com](https://habr.com/ru/post/501442/)
2022-03-03 12:25:55 +03:00
[44 команды Linux которые вы должны знать losst.ru](https://losst.ru/42-komandy-linux-kotorye-vy-dolzhny-znat)
2022-03-03 13:33:25 +03:00
2022-03-03 12:25:55 +03:00
[Ubuntu cheatsheet GitHub](https://github.com/JREAM/ubuntu-cheatsheet/blob/master/README.md)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-03 12:25:55 +03:00
- ### Менеджер пакетов
2022-03-04 22:58:23 +03:00
Встроенный менеджер пакетов APT позволяет устанавливать новые программы из сети с помощью терминала.
2022-03-03 12:25:55 +03:00
2022-03-04 22:58:23 +03:00
```bash
2022-03-08 20:17:40 +03:00
apt install <имя_пакета> # установить пакет
apt remove <имя_пакета> # удалить пакет, но оставить конфигурацию
apt purge <имя_пакета> # удалить пакет вместе с конфигурацией
2022-03-03 12:25:55 +03:00
apt update # обновление информации о новых версиях пакетов
apt upgrade # обновление пакетов, установленных в системе
apt list --installed # список установленных в системе пакетов
apt list --upgradable # список пакетов, которые требуют обновления
apt search <имя> # поиск пакетов по имени в сети
2022-03-08 20:17:40 +03:00
apt show <имя_пакета> # информация о пакете
2022-03-03 12:25:55 +03:00
```
[Как пользоваться apt losst.ru](https://losst.ru/kak-polzovatsya-apt)
[Использование APT. Команды apt и apt-get pingvinus.ru](https://pingvinus.ru/note/apt)
2022-03-01 13:04:49 +03:00
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Скрипты Bash
2022-03-04 22:58:23 +03:00
С помощью скриптов (сценариев) можно автоматизировать последовательный ввод любого количества команд. В Bash можно создавать различные условия (разветвления), циклы, таймеры и т.д. для выполнения всевозможных действий связанных с вводом в консоль.
[Шпаргалка оп Bash quickref.me](https://quickref.me/bash)
[Шпаргалка оп Bash learnxinyminutes.com](https://learnxinyminutes.com/docs/ru-ru/bash-ru/)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Пользователи
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Файловая система
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-04 22:58:23 +03:00
- ### Работа с процессами
```bash
ps # вывести 'снимок' процессов всех пользователей
top # диспетчер задач в реальном времени
<команда> & # запуск процесса в фоновом режиме, то есть не занимая консоль
jobs # список запущенных в фоновом режиме процессов
fg <номер> # вернуть процесс обратно в активный режим по его номеру
bg <номер> # запуск остановленного процесса в фоновый режим
kill <id процесса> # завершить процесс по id
killall <программа> # завершить все процессы связанные с одной программой
```
[Работа с процессами в Linux YouTube](https://www.youtube.com/watch?v=Y4W_rJStNSA)
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Работа с SSH
2022-03-08 20:17:40 +03:00
Служба SSH позволяет получить удаленный доступ к терминалу другого компьютера. В случае с персональным компьютером, это может понадобиться для срочного решения какой-либо проблемы, а в случае с сервером это вообще очень распространенная практика.
```bash
# ОСНОВНЫЕ КОМАНДЫ
apt install openssh-server # установка SSH (хотя он почти везде идёт из коробки)
service ssh start # запуск SSH
service ssh stop # выключение SSH
ssh -p <Порт> user@remotehost # подключенние к удаленному ПК через SSH
ssh-keygen -t rsa # генерация RSA-ключа для беспарольного входа
ssh-copy-id -i ~/.ssh/id_rsa user@remotehost # копирования ключа на удаленную машину
```
[Как пользоваться SSH losst.ru](https://losst.ru/kak-polzovatsya-ssh)
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Планировщик задач
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Системные логи
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-03-01 13:04:49 +03:00
- ### Проблемы Linux
2022-03-02 20:38:33 +03:00
<div align="right"><a href="#top">Содержание ⬆️</a></div>
2022-02-27 19:02:50 +03:00
## Общие знания
2022-02-27 22:43:49 +03:00
- ### Структуры данных
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Хэш-таблицы
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Очередь и стек
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Связанные списки
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Двусвязные списки
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Форматы хранения данных
2022-02-27 19:02:50 +03:00
2022-03-01 13:04:49 +03:00
- #### Текстовые
2022-02-27 19:02:50 +03:00
2022-03-01 13:04:49 +03:00
JSON, YAML, XML
2022-02-27 19:02:50 +03:00
2022-03-01 13:04:49 +03:00
- #### Бинарные
2022-02-27 19:02:50 +03:00
2022-03-01 13:04:49 +03:00
Message Pack, BSON, ProtoBuf
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Криптография
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Хэши и хеш-функции
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Цифровые подписи
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Соль для подписей
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Коллизия хэшей
2022-02-27 19:02:50 +03:00
## Язык программирования
2022-02-28 08:31:20 +03:00
Выберите для изучения один из языков _(спсиок составлен по моему личному мнению)_:
2022-02-27 19:02:50 +03:00
- [Go](https://github.com/avelino/awesome-go)
- [JavaScript (Node.js)](https://github.com/sindresorhus/awesome-nodejs)
- [Python](https://github.com/vinta/awesome-python)
2022-02-27 22:43:49 +03:00
* ### Базовые знания
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Примитивные типы данных
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Функции
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Набор, массив, хеш-таблица, кортеж
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Объекты/классы/структуры, прототипы/интерфейсы/миксины
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Ссылки, указатели
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Область видимости переменных
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Сборщик мусора
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Преобразование типов
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Слабая/сильная типизация в коде
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Битовые операции
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- #### Обработка ошибок
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Распараллеливание
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Процессы
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Потоки
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### КоРутины
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Проблемы распараллеливания
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Атомарные операции
2022-02-27 19:02:50 +03:00
2022-02-28 08:31:20 +03:00
- #### Блокировки
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Пакетный менеджер
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Отладчик
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Запуск HTTP-сервера
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Кэширование
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Шаблонизация
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
* ### Ввод / Вывод (IO)
2022-02-27 19:02:50 +03:00
2022-03-01 14:52:13 +03:00
## Протокол HTTP
- ### Формат протокола
- ### Методы HTTP-запросов
- ### Коды ответов
- ### Заголовки
- ### Cookie
- ### CORS
- ### CSP
- ### Безопасность (HTTPS)
- ### Различия HTTP 1.0 и HTTP 1.1
- ### HTTP 2
- ### HTTP 3
- ### Откладка сети в Chrome Dev Tools
- ### Работа с HTTP через терминал
- ### WebSockets
- ### API форматы
- ### Web сервера
- #### NGNX
- #### Apache httpd
2022-02-27 19:02:50 +03:00
## Базовое ПО
2022-02-27 22:43:49 +03:00
- ### Система контроля версий Git
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Контейнеризация и Docker
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Postman / Insomnia
2022-02-27 19:02:50 +03:00
## Базы данных
2022-02-27 22:43:49 +03:00
- ### Реляционные базы данных
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Документоориентированные базы данных
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Redis
2022-02-27 19:02:50 +03:00
2022-02-27 22:43:49 +03:00
- ### Проблемы баз данных
2022-02-27 19:02:50 +03:00
## Дополнительные материалы и источники
- [Backend Developer Roadmap: Learn to become a modern backend developer](https://roadmap.sh/backend)
- [bzick/oh-my-backend: Backend Roadmap (from Junior to Senior)](https://github.com/bzick/oh-my-backend)
- [zhashkevych/awesome-backend: 🚀 A curated and opinionated list of resources (English & Russian) for Backend developers](https://github.com/zhashkevych/awesome-backend)
2022-03-01 13:04:49 +03:00
- [УЧЕБНЫЙ КУРС: Компьютерные сети](https://www.asozykin.ru/courses/networks_online)
2022-03-02 20:04:29 +03:00
<div align="center">Made with &#9829;</div>
2022-03-02 20:38:33 +03:00
<div align="center"><a href="https://github.com/cheatsnake/backend-cheats/blob/master/LICENSE">LICENSE</a> 2022.</div>