#55_Cpp
Оператор "->" в определении функции в C++ указывает завершающий возвращаемый тип.
Его можно использовать для явного указания типов возвращаемых значений для лямбда-выражений или для указания типов возвращаемых значений, которые зависят от параметров функции.
Оператор "->" в определении функции в C++ указывает завершающий возвращаемый тип.
Его можно использовать для явного указания типов возвращаемых значений для лямбда-выражений или для указания типов возвращаемых значений, которые зависят от параметров функции.
#56_Cpp
std::exchange — это функция из стандартной библиотеки C++, определённая в заголовке <utility> или <algorithm>.
Она выполняет обмен значениями между двумя параметрами, возвращая старое значение.
Например, после выполнения кода
int x{3};
int y{22};
int z = std::exchange(x, y);
переменной x будет присвоено значение y, а переменной z — значение, которое x имело изначально. Т.о. в приведенном примере x получит значение 22, а z получит значение 3.
std::exchange была введена в C++14. Её можно использовать, например, при реализации операторов назначения перемещения и конструкторов перемещения.
Синтаксис функции:
std::exchange(old, new);
У неё два параметра: параметр, который нужно установить, и параметр, с помощью которого нужно установить первый параметр. В качестве результата функция возвращает старое значение установленного параметра old.
std::exchange — это функция из стандартной библиотеки C++, определённая в заголовке <utility> или <algorithm>.
Она выполняет обмен значениями между двумя параметрами, возвращая старое значение.
Например, после выполнения кода
int x{3};
int y{22};
int z = std::exchange(x, y);
переменной x будет присвоено значение y, а переменной z — значение, которое x имело изначально. Т.о. в приведенном примере x получит значение 22, а z получит значение 3.
std::exchange была введена в C++14. Её можно использовать, например, при реализации операторов назначения перемещения и конструкторов перемещения.
Синтаксис функции:
std::exchange(old, new);
У неё два параметра: параметр, который нужно установить, и параметр, с помощью которого нужно установить первый параметр. В качестве результата функция возвращает старое значение установленного параметра old.
#57_Cpp
range_error в C++ — исключение, которое возникает, когда полученный результат превосходит допустимый диапазон.
Оно используется при ошибках при вычислении значений с плавающей запятой, когда компьютер не может обработать значение, поскольку оно является либо слишком большим, либо слишком маленьким.
Для использования исключения range_error в C++ нужно включить в код заголовочный файл <stdexcept>
Например:
.
range_error в C++ — исключение, которое возникает, когда полученный результат превосходит допустимый диапазон.
Оно используется при ошибках при вычислении значений с плавающей запятой, когда компьютер не может обработать значение, поскольку оно является либо слишком большим, либо слишком маленьким.
Для использования исключения range_error в C++ нужно включить в код заголовочный файл <stdexcept>
Например:
#include <stdexcept>
#include <iostream>
int main() {
try {
int value = 100;
if (value < 0 || value > 50) {
// Выбрасывание исключения range_error
throw std::range_error("Value is out of range.");
}
std::cout << "Value is within the range." << std::endl;
}
catch (const std::range_error& e) {
// Ловля и обработка исключения range_error
std::cerr << "Range Error: " << e.what() << std::endl;
}
return 0;
}
.
#58_Cpp
std::forward в C++ — шаблонная функция для достижения идеальной передачи аргументов функциям с сохранением их типа (lvalue или rvalue).
Она принимает forwarding-ссылку, по шаблонному параметру T определяет, передана ей lvalue-ссылка или rvalue-ссылка, и возвращает ссылку соответствующего типа.
Назначение функции std::forward —реализация механизма идеальной передачи (perfect forwarding). Этот механизм подразумевает, что объекты, переданные в функцию в виде lvalue-выражений, должны копироваться, а объекты, переданные в функцию в виде rvalue-выражений, должны перемещаться.
Функция std::forward была введена в C++ 11 и является частью заголовочного файла <utility>
std::forward в C++ — шаблонная функция для достижения идеальной передачи аргументов функциям с сохранением их типа (lvalue или rvalue).
Она принимает forwarding-ссылку, по шаблонному параметру T определяет, передана ей lvalue-ссылка или rvalue-ссылка, и возвращает ссылку соответствующего типа.
Назначение функции std::forward —реализация механизма идеальной передачи (perfect forwarding). Этот механизм подразумевает, что объекты, переданные в функцию в виде lvalue-выражений, должны копироваться, а объекты, переданные в функцию в виде rvalue-выражений, должны перемещаться.
Функция std::forward была введена в C++ 11 и является частью заголовочного файла <utility>
#59_DB_TP
В теории баз данных CAP — это акроним от англоязычных слов Consistency (Согласованность, Целостность), Availability (Доступность) и Partition tolerance (Устойчивость к разделению).
CAP-теорема утверждает, что распределенная система хранения данных не может одновременно удовлетворять всем трем важнейшим аспектам согласованности, доступности и устойчивости к разделению.
Проще говоря, теорема CAP подчеркивает неотъемлемый компромисс в системе, где только два из этих трех основных атрибутов могут быть эффективно достигнуты в любой момент времени.
В теории баз данных CAP — это акроним от англоязычных слов Consistency (Согласованность, Целостность), Availability (Доступность) и Partition tolerance (Устойчивость к разделению).
CAP-теорема утверждает, что распределенная система хранения данных не может одновременно удовлетворять всем трем важнейшим аспектам согласованности, доступности и устойчивости к разделению.
Проще говоря, теорема CAP подчеркивает неотъемлемый компромисс в системе, где только два из этих трех основных атрибутов могут быть эффективно достигнуты в любой момент времени.
#0
Расшифровка акронимов в заголовках постов, для поиска по темам:
- ADM — администрирование;
- ALG — aлгоритмы;
- ASM — ассемблер;
- BASH — командная строка;
- Boost — коллекция библиотек С++;
- С — язык Си;
- Сpp — язык С++;
- CRYP — криптография;
- CMPL — компилирование, компиляторы;
- CS — информационная безопасность;
- DB — базы данных;
- DBG — дебаггеры и дебагинг;
- DvOp — девопс;
- IdPt — идиомы, паттерны, подходы (приемы, принятые практики, полезные советы);
- GCC — компилятор GCC;
- GIT— система контроля версий ПО;
- GO — все что связано с ЯП Golang;
- LIB — библиотеки;
- MTH — многопоточность;
- IF — интересные факты;
- NTWK — компьютерные сети;
- ODP — опросник Даниила Подольского по Golang;
- PkS — подготовка к собеседованиям;
- PPPO — принципы проектирования ПО;
- PRGM — листинги программ;
- PY — все что связано с ЯП Python;
- RUST — все что связано с ЯП Rust;
- SDS — стандартные (встроенные) структуры данных;
- STL — стандартная библиотек шаблонов С++;
- SYSCL — системные вызовы;
- TLS — инструменты для разработчика;
- TOS — теория операционных систем;
- TP — теория программирования;
- UB — неопределенное поведение;
- Vim — посты связанные с настройкой и использованием Vim.
Расшифровка акронимов в заголовках постов, для поиска по темам:
- ADM — администрирование;
- ALG — aлгоритмы;
- ASM — ассемблер;
- BASH — командная строка;
- Boost — коллекция библиотек С++;
- С — язык Си;
- Сpp — язык С++;
- CRYP — криптография;
- CMPL — компилирование, компиляторы;
- CS — информационная безопасность;
- DB — базы данных;
- DBG — дебаггеры и дебагинг;
- DvOp — девопс;
- IdPt — идиомы, паттерны, подходы (приемы, принятые практики, полезные советы);
- GCC — компилятор GCC;
- GIT— система контроля версий ПО;
- GO — все что связано с ЯП Golang;
- LIB — библиотеки;
- MTH — многопоточность;
- IF — интересные факты;
- NTWK — компьютерные сети;
- ODP — опросник Даниила Подольского по Golang;
- PkS — подготовка к собеседованиям;
- PPPO — принципы проектирования ПО;
- PRGM — листинги программ;
- PY — все что связано с ЯП Python;
- RUST — все что связано с ЯП Rust;
- SDS — стандартные (встроенные) структуры данных;
- STL — стандартная библиотек шаблонов С++;
- SYSCL — системные вызовы;
- TLS — инструменты для разработчика;
- TOS — теория операционных систем;
- TP — теория программирования;
- UB — неопределенное поведение;
- Vim — посты связанные с настройкой и использованием Vim.
DNK_C_C++_Go_Rust pinned «#0 Расшифровка акронимов в заголовках постов, для поиска по темам: - ADM — администрирование; - ALG — aлгоритмы; - ASM — ассемблер; - BASH — командная строка; - Boost — коллекция библиотек С++; - С — язык Си; - Сpp — язык С++;…»
#60_DB
Атрибут в таблицах баз данных — это значимая с точки зрения решаемой задачи характеристика (свойство, параметр) объекта. В таблице базы данных атрибуты размещаются в полях, имена полей соответствуют названию атрибута.
Некоторые типы атрибутов:
- АТРИБУТЫ ИМЕНОВАНИЯ — используются для присвоения имени экземпляру объекта данных. Например, марка и модель — атрибуты именования в объекте данных транспортного средства;
- ОПИСАТЕЛЬНЫЕ АТРИБУТЫ — применяются для описания характеристик, особенностей или взаимосвязи объекта данных. Например, в транспортном средстве цвет объекта данных — описательный атрибут, который описывает характеристики объекта;
ССЫЛОЧНЫЕ АТРИБУТЫ — используются для формализации бинарных и ассоциативных отношений и для создания ссылки на другой экземпляр в другой таблице.
Некоторые атрибуты столбцов и таблиц:
- PRIMARY KEY — задает первичный ключ таблицы, который уникально идентифицирует строку в таблице;
- AUTO_INCREMENT — позволяет указать, что значение столбца будет автоматически увеличиваться при добавлении новой строки;
- UNIQUE — указывает, что столбец может хранить только уникальные значения;
- NULL и NOT NULL — указывает может ли столбец принимать значение NULL, при определении столбца ему можно задать атрибут NULL или NOT NULL;
- DEFAULT — определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию;
- CHECK — задает ограничение для диапазона значений, которые могут храниться в столбце.
Атрибут в таблицах баз данных — это значимая с точки зрения решаемой задачи характеристика (свойство, параметр) объекта. В таблице базы данных атрибуты размещаются в полях, имена полей соответствуют названию атрибута.
Некоторые типы атрибутов:
- АТРИБУТЫ ИМЕНОВАНИЯ — используются для присвоения имени экземпляру объекта данных. Например, марка и модель — атрибуты именования в объекте данных транспортного средства;
- ОПИСАТЕЛЬНЫЕ АТРИБУТЫ — применяются для описания характеристик, особенностей или взаимосвязи объекта данных. Например, в транспортном средстве цвет объекта данных — описательный атрибут, который описывает характеристики объекта;
ССЫЛОЧНЫЕ АТРИБУТЫ — используются для формализации бинарных и ассоциативных отношений и для создания ссылки на другой экземпляр в другой таблице.
Некоторые атрибуты столбцов и таблиц:
- PRIMARY KEY — задает первичный ключ таблицы, который уникально идентифицирует строку в таблице;
- AUTO_INCREMENT — позволяет указать, что значение столбца будет автоматически увеличиваться при добавлении новой строки;
- UNIQUE — указывает, что столбец может хранить только уникальные значения;
- NULL и NOT NULL — указывает может ли столбец принимать значение NULL, при определении столбца ему можно задать атрибут NULL или NOT NULL;
- DEFAULT — определяет значение по умолчанию для столбца. Если при добавлении данных для столбца не будет предусмотрено значение, то для него будет использоваться значение по умолчанию;
- CHECK — задает ограничение для диапазона значений, которые могут храниться в столбце.
#61_BASH_ADM
Как переименовать Linux-машину?
Чтобы изменить имя хоста в Linux, можно воспользоваться одним из следующих способов:
$ sudo hostnamectl set-hostname <newhostname>.
Для того чтобы изменения вступили в силу требуется перезагрузка.
$ hostnamectl
или
& hostname
(чтобы просмотреть текущее имя хоста).
$ sudo hostname <newhostname>
(для временного изменения имени хоста).
Изменение имени хоста вступит в силу сразу же, перезагрузка не требуется.
Как переименовать Linux-машину?
Чтобы изменить имя хоста в Linux, можно воспользоваться одним из следующих способов:
$ sudo hostnamectl set-hostname <newhostname>.
Для того чтобы изменения вступили в силу требуется перезагрузка.
$ hostnamectl
или
& hostname
(чтобы просмотреть текущее имя хоста).
$ sudo hostname <newhostname>
(для временного изменения имени хоста).
Изменение имени хоста вступит в силу сразу же, перезагрузка не требуется.
#62_BASH_ADM
Для вывода в терминале версии OC можно воспользоваться следующими командами:
$ cat /etc/issue
или
$ lsb_release -d
$ lsb_release -a
Для вывода в терминале версии OC можно воспользоваться следующими командами:
$ cat /etc/issue
или
$ lsb_release -d
$ lsb_release -a
#63_BASH_ADM
IPCALC — это утилита, которая может выполнять простые манипуляции с адресами IPv4. Если вы просто наберете ipcalc без каких-либо параметров ввода, это даст хороший вывод «справки» с некоторыми примерами, которые очень полезны для начала работы.
Инструмент ipcalc можно применять для следующих задач:
- проверить IP-адрес;
- показать рассчитанный широковещательный адрес;
- отображение имени хоста, определенного через DNS;
- отображение сетевого адреса или префикса.
Команда имеет следующий общий вид:
$ ipcalc [options] ADDRESS [ [/]] [NETMASK] .
Опции:
-n (--nocolor) - подавить вывод цветов;
-b (--nobinary) - подавить поразрядный вывод;
-c (--class) - показать маску сети по адресу;
-h (--html) - показать результаты в HTML;
-v (--version) - показать версию программы;
-s (--split n1 n2 n3) - разделить сети по размеру n1, n2, n3;
-r (--range) - исключить диапазон адресов;
--help - помощь.
Особенности ipcalc:
- ipcalc выдает двоичные эквиваленты для каждого адреса, что помогает лучше визуализировать адреса;
- пробел в двоичном представлении разделяет сетевую и хостовую часть адреса;
- нельзя указывать в качестве ввода двоичную форму адреса.
IPCALC вычисляет информацию об IP-адресах и сетях:
$ ipcalc [arguments]
Она принимает на вход IP-адрес и маску сети и на выходе получает:
- адрес сети,
- Cisco wildcard маску,
- широковещательный адрес,
- минимальный хост,
- максимальный хост,
- общее количество хостов.
Также ipcalc может использоваться в качестве учебного пособия для представления результатов подсетей в простых для понимания двоичных значениях.
IPCALC — это утилита, которая может выполнять простые манипуляции с адресами IPv4. Если вы просто наберете ipcalc без каких-либо параметров ввода, это даст хороший вывод «справки» с некоторыми примерами, которые очень полезны для начала работы.
Инструмент ipcalc можно применять для следующих задач:
- проверить IP-адрес;
- показать рассчитанный широковещательный адрес;
- отображение имени хоста, определенного через DNS;
- отображение сетевого адреса или префикса.
Команда имеет следующий общий вид:
$ ipcalc [options] ADDRESS [ [/]] [NETMASK] .
Опции:
-n (--nocolor) - подавить вывод цветов;
-b (--nobinary) - подавить поразрядный вывод;
-c (--class) - показать маску сети по адресу;
-h (--html) - показать результаты в HTML;
-v (--version) - показать версию программы;
-s (--split n1 n2 n3) - разделить сети по размеру n1, n2, n3;
-r (--range) - исключить диапазон адресов;
--help - помощь.
Особенности ipcalc:
- ipcalc выдает двоичные эквиваленты для каждого адреса, что помогает лучше визуализировать адреса;
- пробел в двоичном представлении разделяет сетевую и хостовую часть адреса;
- нельзя указывать в качестве ввода двоичную форму адреса.
IPCALC вычисляет информацию об IP-адресах и сетях:
$ ipcalc [arguments]
Она принимает на вход IP-адрес и маску сети и на выходе получает:
- адрес сети,
- Cisco wildcard маску,
- широковещательный адрес,
- минимальный хост,
- максимальный хост,
- общее количество хостов.
Также ipcalc может использоваться в качестве учебного пособия для представления результатов подсетей в простых для понимания двоичных значениях.
#64_PkS_PPPO_TP
YAGNI (аббревиатура от фразы "You aren’t gonna need it" — «тебе это не понадобится») — принцип проектирования программного обеспечения, предполагающий отказ от избыточной функциональности.
Другими словами, не нужно писать код, который может пригодиться в будущем, но сейчас в нём нет потребности. Вскоре он станет неактуальным и его придётся переписать под конкретную задачу.
Логика принципа YAGNI заключается в том, что время, которое тратится на написание функций на будущее, можно использовать для доработки и улучшения того, что уже есть. Кроме того, непонятно, как такие функции будут развиваться дальше — может оказаться так, что понадобится совсем другое и модули, созданные про запас, придётся переписывать.
YAGNI (аббревиатура от фразы "You aren’t gonna need it" — «тебе это не понадобится») — принцип проектирования программного обеспечения, предполагающий отказ от избыточной функциональности.
Другими словами, не нужно писать код, который может пригодиться в будущем, но сейчас в нём нет потребности. Вскоре он станет неактуальным и его придётся переписать под конкретную задачу.
Логика принципа YAGNI заключается в том, что время, которое тратится на написание функций на будущее, можно использовать для доработки и улучшения того, что уже есть. Кроме того, непонятно, как такие функции будут развиваться дальше — может оказаться так, что понадобится совсем другое и модули, созданные про запас, придётся переписывать.
👌1
#65_PkS_PPPO_TP
DRY (Don’t Repeat Yourself) переводится с английского языка как «НЕ ПОВТОРЯЙСЯ».
Смысл принципа DRY заключается в отсутствии дублирования кода.
Он помогает избежать избыточности и облегчить поддержку кода, минимизируя количество мест, где нужно вносить изменения.
Некоторые паттерны использования принципа DRY:
- НЕ ДОПУСКАТЬ КОПИРОВАНИЯ — создавать функции и классы, которые можно переиспользовать вместо дублирования кода в разных местах;
- СОБЛЮДАТЬ ЕДИНУЮ ЛОГИЧЕСКУЮ ЦЕПОЧКУ — поддерживать общую структуру и организацию кода, чтобы избежать повторного изобретения колеса;
- Перед добавлением новой функции, проверить, возможно её аналог уже присутствует в проекте;
- Преимущественно улучшать и рефакторить существующий код, а не создавать новый, чтобы избежать дублирования функциональности;
- ИСПОЛЬЗОВАТЬ БИБЛИОТЕКИ И ФРЕЙМВОРКИ, которые обеспечивают общие решения для часто встречающихся задач;
- РЕГУЛЯРНО ПРОВОДИТЬ РЕВЬЮ КОДА, чтобы обнаруживать и устранять дублирование на ранних стадиях.
DRY (Don’t Repeat Yourself) переводится с английского языка как «НЕ ПОВТОРЯЙСЯ».
Смысл принципа DRY заключается в отсутствии дублирования кода.
Он помогает избежать избыточности и облегчить поддержку кода, минимизируя количество мест, где нужно вносить изменения.
Некоторые паттерны использования принципа DRY:
- НЕ ДОПУСКАТЬ КОПИРОВАНИЯ — создавать функции и классы, которые можно переиспользовать вместо дублирования кода в разных местах;
- СОБЛЮДАТЬ ЕДИНУЮ ЛОГИЧЕСКУЮ ЦЕПОЧКУ — поддерживать общую структуру и организацию кода, чтобы избежать повторного изобретения колеса;
- Перед добавлением новой функции, проверить, возможно её аналог уже присутствует в проекте;
- Преимущественно улучшать и рефакторить существующий код, а не создавать новый, чтобы избежать дублирования функциональности;
- ИСПОЛЬЗОВАТЬ БИБЛИОТЕКИ И ФРЕЙМВОРКИ, которые обеспечивают общие решения для часто встречающихся задач;
- РЕГУЛЯРНО ПРОВОДИТЬ РЕВЬЮ КОДА, чтобы обнаруживать и устранять дублирование на ранних стадиях.
#66_PkS_PPPO_TP
KISS (Keep It Simple, Stupid) — это принцип проектирования и разработки, суть которого заключается в том, чтобы создавать простые и понятные решения, избегая избыточной сложности.
Основная идея заключается в том, что простота способствует лучшему пониманию, использованию и поддержке системы или продукта.
Принцип KISS предписывает избегать излишней сложности, лишних функций и элементов там, где в этом нет прямой необходимости, потому что они могут запутать пользователя и усложнить процесс разработки и поддержки.
Автором принципа KISS является американский авиаконструктор Кларенс Леонард «Келли» Джонсон (1910–1990). Он предложил этот принцип в рамках работы над проектированием военных самолётов в компании Lockheed и впервые озвучил его предположительно в 1938 году.
Принцип KISS применим в различных областях, где важна практичность и понятность. Например, в программировании, дизайне интерфейсов, управлении проектами, рекламе, маркетинге и многих других сферах.
KISS (Keep It Simple, Stupid) — это принцип проектирования и разработки, суть которого заключается в том, чтобы создавать простые и понятные решения, избегая избыточной сложности.
Основная идея заключается в том, что простота способствует лучшему пониманию, использованию и поддержке системы или продукта.
Принцип KISS предписывает избегать излишней сложности, лишних функций и элементов там, где в этом нет прямой необходимости, потому что они могут запутать пользователя и усложнить процесс разработки и поддержки.
Автором принципа KISS является американский авиаконструктор Кларенс Леонард «Келли» Джонсон (1910–1990). Он предложил этот принцип в рамках работы над проектированием военных самолётов в компании Lockheed и впервые озвучил его предположительно в 1938 году.
Принцип KISS применим в различных областях, где важна практичность и понятность. Например, в программировании, дизайне интерфейсов, управлении проектами, рекламе, маркетинге и многих других сферах.
#67_PkS_PPPO_TP
SOLID — это аббревиатура пяти основных принципов проектирования в ООП:
- ПРИНЦИП ЕДИНСТВЕННОЙ ОТВЕТСТВЕННОСТИ (SINGLE RESPONSIBILITY). Каждый класс или модуль в программе должен иметь только одну причину для изменения. Это означает, что класс должен выполнять только одну работу;
- ПРИНЦИП ОТКРЫТОСТИ/ЗАКРЫТОСТИ (OPEN - CLOSED). Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что к существующим классам или модулям можно добавлять новые функции или поведение без изменения их исходного кода;
- ПРИНЦИП ПОДСТАНОВКИ БАРБАРЫ ЛИСКОВ (LISKOV SUBSTITUTION). Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения корректности программы;
- ПРИНЦИП РАЗДЕЛЕНИЯ ИНТЕРФЕЙСА (INTERFACE SEGREGATION). Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе;
- ПРИНЦИП ИНВЕРСИИ ЗАВИСИМОСТЕЙ (DEPENDENCY INVERSION). Зависимости внутри системы должны строиться на основе абстракций, а не деталей. Это означает, что высокоуровневые модули не должны зависеть от низкоуровневых модулей, и они все должны зависеть от абстракций.
Цель использования принципов SOLID — упростить разработку, сделать её более гибкой и устойчивой к ошибкам.
SOLID — это аббревиатура пяти основных принципов проектирования в ООП:
- ПРИНЦИП ЕДИНСТВЕННОЙ ОТВЕТСТВЕННОСТИ (SINGLE RESPONSIBILITY). Каждый класс или модуль в программе должен иметь только одну причину для изменения. Это означает, что класс должен выполнять только одну работу;
- ПРИНЦИП ОТКРЫТОСТИ/ЗАКРЫТОСТИ (OPEN - CLOSED). Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения. Это означает, что к существующим классам или модулям можно добавлять новые функции или поведение без изменения их исходного кода;
- ПРИНЦИП ПОДСТАНОВКИ БАРБАРЫ ЛИСКОВ (LISKOV SUBSTITUTION). Объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения корректности программы;
- ПРИНЦИП РАЗДЕЛЕНИЯ ИНТЕРФЕЙСА (INTERFACE SEGREGATION). Слишком «толстые» интерфейсы необходимо разделять на более маленькие и специфические, чтобы клиенты маленьких интерфейсов знали только о методах, которые необходимы им в работе;
- ПРИНЦИП ИНВЕРСИИ ЗАВИСИМОСТЕЙ (DEPENDENCY INVERSION). Зависимости внутри системы должны строиться на основе абстракций, а не деталей. Это означает, что высокоуровневые модули не должны зависеть от низкоуровневых модулей, и они все должны зависеть от абстракций.
Цель использования принципов SOLID — упростить разработку, сделать её более гибкой и устойчивой к ошибкам.
#68_ADM_BASH
IP A - эта команда в Linux используется для просмотра всех IP-адресов, связанных с сетевыми интерфейсами.
Общий синтаксис команды $ ip:
$ ip [OPTION] OBJECT {COMMAND | help}
Объекты (OBJECT) можно использовать в полной или сокращённой форме.
Другие примеры использования команды ip a просмотр только адреса IPv4:
$ ip -4a
или IPv6:
$ ip -6a.
Просмотр информации конкретного интерфейса:
$ ip a show eth0
или
$ ip a list eth0
или
$ ip a show dev eth0.
Добавление IP-адреса интерфейсу:
$ ip a add {ip_addr/mask} dev {interface}.
Удаление IP-адреса из интерфейса:
$ ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}.
IP A - эта команда в Linux используется для просмотра всех IP-адресов, связанных с сетевыми интерфейсами.
Общий синтаксис команды $ ip:
$ ip [OPTION] OBJECT {COMMAND | help}
Объекты (OBJECT) можно использовать в полной или сокращённой форме.
Другие примеры использования команды ip a просмотр только адреса IPv4:
$ ip -4a
или IPv6:
$ ip -6a.
Просмотр информации конкретного интерфейса:
$ ip a show eth0
или
$ ip a list eth0
или
$ ip a show dev eth0.
Добавление IP-адреса интерфейсу:
$ ip a add {ip_addr/mask} dev {interface}.
Удаление IP-адреса из интерфейса:
$ ip a del {ipv6_addr_OR_ipv4_addr} dev {interface}.
#69_BASH_ADM
$ sudo netplan apply
применяет настройки, внесённые в конфигурационный файл утилиты Netplan.
Эта команда прочитает файлы YAML в каталоге
/etc/netplan/,
сгенерирует необходимые конфигурации для указанного средства визуализации и применит настройки, перезапуская их при необходимости.
$ sudo netplan apply
применяет настройки, внесённые в конфигурационный файл утилиты Netplan.
Эта команда прочитает файлы YAML в каталоге
/etc/netplan/,
сгенерирует необходимые конфигурации для указанного средства визуализации и применит настройки, перезапуская их при необходимости.
#70_ADM_NTWK
IP-КЛАССИФИКАЦИЯ
Существуют классификации IP-адресов как «частные» и «публичные».
ПУБЛИЧНЫМ IP адресом - называется IP адрес, который используется для выхода в Интернет. ЧАСТНЫЕ IP адреса - адреса, используемые в локальных сетях (не могут быть напрямую подключены к Интернету).
Следующие диапазоны адресов зарезервированы для частных (также известных как LAN) сетей:
* 10.0.0.0 — 10.255.255.255 (10.0.0.0/8);
* 172.16.0.0 — 172.31.255.255 (172.16.0.0/12);
* 192.168.0.0 — 192.168.255.255 (192.168.0.0/16);
* 127.0.0.0 — 127.255.255.255 (зарезервировано для петлевых интерфейсов (не используется для связи между узлами сети), так называемый localhost).
ПОРТЫ.
Стандарт определяет для каждого из протоколов TCP и UDP возможность одновременного выделения до 65536 уникальных портов на хосте, которые обозначаются номерами от 0 до 65535. Весь ассортимент портов разбит на 3 группы:
- от 0 до 1023 называются привилегированными или зарезервированными (используются для системы и некоторых популярных программ);
- порты с 1024 по 49151 называются зарегистрированными портами;
- порты с 49151 по 65535 называются динамическими портами.
IP-КЛАССИФИКАЦИЯ
Существуют классификации IP-адресов как «частные» и «публичные».
ПУБЛИЧНЫМ IP адресом - называется IP адрес, который используется для выхода в Интернет. ЧАСТНЫЕ IP адреса - адреса, используемые в локальных сетях (не могут быть напрямую подключены к Интернету).
Следующие диапазоны адресов зарезервированы для частных (также известных как LAN) сетей:
* 10.0.0.0 — 10.255.255.255 (10.0.0.0/8);
* 172.16.0.0 — 172.31.255.255 (172.16.0.0/12);
* 192.168.0.0 — 192.168.255.255 (192.168.0.0/16);
* 127.0.0.0 — 127.255.255.255 (зарезервировано для петлевых интерфейсов (не используется для связи между узлами сети), так называемый localhost).
ПОРТЫ.
Стандарт определяет для каждого из протоколов TCP и UDP возможность одновременного выделения до 65536 уникальных портов на хосте, которые обозначаются номерами от 0 до 65535. Весь ассортимент портов разбит на 3 группы:
- от 0 до 1023 называются привилегированными или зарезервированными (используются для системы и некоторых популярных программ);
- порты с 1024 по 49151 называются зарегистрированными портами;
- порты с 49151 по 65535 называются динамическими портами.
#71_ADM_BASH_NTWK
IP ROUTE — в ОС Linux это мощный инструмент для управления сетевыми маршрутами.
Он позволяет администраторам сети определять, настраивать и отслеживать маршруты передачи данных в сети.
IP ROUTE — в ОС Linux это мощный инструмент для управления сетевыми маршрутами.
Он позволяет администраторам сети определять, настраивать и отслеживать маршруты передачи данных в сети.
#72_ADM_BASH_NTWK
NETSTAT (network statistics) — инструмент командной строки, который выводит на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам.
Чтобы ознакомится с возможностями команды в системе Linux можно вызвать в терминале команду:
$ netstat --help
Основное назначение утилиты — поиск сетевых проблем и определение производительности сети.
Команда netstat доступна в ОС семейства UNIX и Windows.
NETSTAT (network statistics) — инструмент командной строки, который выводит на дисплей состояние TCP-соединений (как входящих, так и исходящих), таблицы маршрутизации, число сетевых интерфейсов и сетевую статистику по протоколам.
Чтобы ознакомится с возможностями команды в системе Linux можно вызвать в терминале команду:
$ netstat --help
Основное назначение утилиты — поиск сетевых проблем и определение производительности сети.
Команда netstat доступна в ОС семейства UNIX и Windows.