Оглавление страницы:

[1]

[2]

Специальный файл устройства

Файлы блочных устройств

Файлы символьных устройств

Интерфейс файловой системы для взаимодействия с устройством

FIFO

Каналы

Семафоры

Мьютексы

Монитор

Сообщения

[3]

Регистр

Polling

Цилиндр

Ядро

Интерфейс системных вызовов

Подсистема управления процессами

Протокол

etc/passwd

[4]

[5]

Код возврата команды

etc/profile etc/skel

[6]

[7]

Арифметические операции в двоичной системе счисления

Перевод IP адреса в двоичное представление

[8]

[9]

Лексема

Префикс

Итерация

P = I x U

SOC System-on-a-Chip

[10]

IaaS - PaaS - SaaS

Ceph

Закон Мура

CRM

parsed

GPG (GNU Privacy Guard)

13

PuTTY горячие клавиши

SVN

Git

Cygwin -- Сигвин MobaXterm

MobaXterm

Использование alias в bash

Figlet & Toilet

Redmine

Размер окна Terminator

15

Single user mode

D-Bus

Connect your Linux machine to cisco serial console

error unknown filesystem grub rescue

Инкапсуляция

14

RCS (Revision Control System)

16

17

18

.kshrc

19

20

Сервер приложений

21

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

IP

Связать несколько сетевых интерфейсов посредствам моста (bridge-utils)

Виртуальный сетевой интерфейс

TUN /TAP

Декомпозиция

Edge device

22

23

Ansible

netplan на Ubuntu 18.04

REST API

Snap-пакет

Alpine Linux

WiFi с wpa2 через консоль в linux-Unix

PIP

Очистка

Какие файлы можно удалить при нехватке места на диске Linux https://zalinux.ru/?p=3047

Подключение флешек и прочих USB-устройств к виртуальным машинам VMware Workstation

Рельсы

БАЗЫ ДАННЫХ

MySQL

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

24

25

FUBAR

EOL End of Life

Mультиплeксор

Концепция и процесс

Анализ оборудования

24

25

Коммутаторы L2, L2+ и L3, PoE

Conky

Lua

Индикация раскладки:

Звук для часов

Conky-Monitor

Linux kernel

Escape последовательность

Скаляр

Тернарный оператор

Pragma


[1]

Вектор прерывания — закреплённый за устройством номер, который идентифицирует соответствующий обработчик прерываний. Векторы прерываний объединяются в таблицу векторов прерываний, содержащую адреса обработчиков прерываний. Местоположение таблицы зависит от типа и режима работы процессора. http://www.intuit.ru/studies/courses/60/60/lecture

Программные прерывания    

Прерывания вызванные программой. Таковыми являются, например, системные вызовы в некоторых системах. В Linux, например, они висят на векторе 0x80. Во многих хобби-ОС они тоже висят на векторе 0x80. 

[2]

Несмотря на наличие трех типов драйверов, в операционной системе используется всего два коммутатора:  для блочных и символьных драйверов. Драйверы низкого уровня распределяются между ними по преобладающему типу интерфейса (к какому типу ближе – в такой массив и заносятся). Каждый элемент коммутатора устройств обязательно содержит адреса (точки входа в драйвер ), соответствующие стандартному набору функций интерфейса, которые и вызываются операционной системой для выполнения тех или иных действий над устройством и/или драйвером.

http://www.intuit.ru/studies

Специальный файл устройства

UNIX "изолирует" приложения (а значит и пользователя) от аппаратной части  вычислительной системы. Например, в имени файла отсутствует указатель диска, на котором этот файл расположен, а большая часть взаимодействия с периферийными устройствами неотличима от операций с обычными файлами. UNIX предоставляет единый интерфейс различных устройств системы в виде специальных файлов устройств. Специальный файл устройства связывает прикладное приложение с драйвером устройства. Каждый специальный файл соответствует какому-либо физическому устройству (например, диску, накопителю на магнитной ленте, принтеру или терминалу) или т. н. псевдоустройству (например, сетевому интерфейсу, пустому устройству, сокету или памяти). Вся работа приложения с устройством происходит через специальный файл, а соответствующий ему драйвер обеспечивает выполнение операций ввода/вывода в соответствии с конкретным протоколом обмена данными с устройством.

Существует два типа специальных файлов устройств:

Файлы блочных устройств

Файлы блочных устройств служат интерфейсом к устройствам, обмен данными с которыми происходит большими фрагментами, называемыми блоками. При этом ядро операционной системы обеспечивает необходимую буферизацию. Примером физических устройств, соответствующих этому типу файлов, являются жесткие диски. Ниже фрагмент подобного списка файлов каталога /dev/disk:

Файлы символьных устройств

Файлы символьных устройств используются для доступа к устройствам, драйверы которых обеспечивают собственную буферизацию и побайтную передачу данных. В качестве примера устройств с символьным интерфейсом можно привести терминалы, принтеры и накопители на магнитной ленте. Заметим, что одно и то же физическое устройство может иметь как блочный, так и символьный интерфейсы. Для блочных устройств такой интерфейс также называют интерфейсом доступа низкого уровня (raw interface). Пример /dev/pts системы Debian: ptmx и pts - основной и подчиненный псевдотерминал. В поле размера файла (пятая колонка вывода команды у специальных файлов устройств выводятся два числа. Это так называемые старшее (major) и младшее (minor) числа. Часто драйвер обслуживает более одного устройства. При этом старшее число указывает ядру на конкретный драйвер, а младшее передается драйверу и указывает на конкретное устройство.

Примечания

Интерфейс файловой системы для взаимодействия с устройством


http://www.lib.ru/unixhelp/specfajl.txt

FIFO

Название каналов FIFO происходит от выражения First In First Out (первый вошел-первый вышел). FIFO очень похожи на каналы, поскольку являются однонаправленным средством передачи данных, причем чтение данных происходит в порядке их записи. Однако в отличие от программных каналов, FIFO имеют имена, которые позволяют независимым процессам получить к этим объектам доступ. Поэтому иногда FIFO также называют именованными каналами. FIFO являются средством UNIX System V и не используются в BSD. Впервые FIFO были представлены в System III.

Для создания FIFO используется системный вызов mknod: int mknod (char pathname, int mode, int dev) где:

pathname    имя файла в файловой системе (имя FIFO),

mode             флаги владения, прав доступа и т. д. (см. поле mode файла),

dev                 при создании FIFO игнорируется.

Или может быть создан и из командной строки shell:

$ mknod name p

После создания FIFO может быть открыт на запись и чтение, причем запись и чтение могут происходить в разных независимых процессах.

Каналы FIFO и обычные каналы работают по следующим правилам:

Каналы

 Крайние проявления каналов ввода/вывода могут ошеломить нового пользователя. Когда при прохождении учебных курсов по администрированию UNIX я впервые увидел специалиста, набирающего в командной строке нечто вроде нижеследующего, я захотел сменить профессию.

$ tail f /var/log/messages | grep v popper | grep v named &

Michael Lucas FreeBSD         ст.38

Пример - в командной строке shell:

$ cat myfile | wc

При этом (стандартный) вывод программы cat которая выводит содержимое файла myfile, передается на (стандартный) ввод программы wc которая, в свою очередь подсчитывает количество строк, слов и символов. В результате мы получим что-то вроде: 12 45 260 что будет означать количество:  строк, слов и символов   в файле myfile.

Так, два процесса обменялись данными. При этом использовался программный канал, обеспечивающий однонаправленную передачу данных между двумя задачами.  Для создания канала используется системный вызов pipe, который возвращает два файловых дескриптора fields[0] - для записи в канал и fields[1] - для чтения из канала. Теперь, если один процесс записывает данные в fields[0] другой сможет получить эти данные из fields[1]. Вопрос только в том, как другой процесс сможет получить сам файловый дескриптор fields[1] ?

Вспомним наследуемые атрибуты при создании процесса. Дочерний процесс наследует и разделяет все назначенные файловые дескрипторы родительского. То есть доступ к дескрипторам fildes канала может получить сам процесс, вызвавший pipe, и его дочерние процессы. В этом заключается серьезный недостаток каналов, поскольку они могут быть использованы для передачи данных только между родственными процессами. Каналы не могут использоваться в качестве средства межпроцессного взаимодействия между независимыми процессами.

Хотя в приведенном примере может показаться, что процессы cat и wc независимы, на самом деле оба этих процесса создаются процессом shell и являются родственными.

Возможно такое объяснение понятия канал:

Канал представляет собой псевдофайл, который можно использовать для связи двух процессов,

Если процессы А и В захотят пообщаться с помощью канала, они должны установить его заранее.

Когда процесс А хочет отправить данные процессу В, он пишет их в канал, как если бы это был выходной файл. Процесс В может прочесть данные, читая их из канала, как если бы он был файлом с входными данными. Таким образом, соединение между процессами в UNIX выглядит очень похожим на обычное чтение и запись файлов. Более того, только сделав специальный системный вызов, процесс может обнаружить, что выходной файл, в который он пишет данные, не реальный файл, а канал.


И все это излишне сложно, а понятней будет так:

Оболочка(например) использует канал для подключения стандартного вывода одной команды к стандартному вводу другой команды. Канал (конвейер) имеет тот же эффект, что и перенаправление стандартного вывода одной команды в файл с последующим использованием этого файла в качестве стандартного ввода в другую команду. Канал позволяет избавиться от отдельных команд и этого промежуточного файла. 

Семафоры

http://cs.mipt.ru/docs/courses/osstud/06/l6.htm

В 1965 году Дейкстра (Е. W. Dijkstra) предложил использовать целую переменную для подсчета сигналов запуска, сохраненных на будущее. Им был предложен новый тип переменных, так называемые семафоры, значение которых может быть нулем (в случае отсутствия сохраненных сигналов активизации) или некоторым положительным числом, соответствующим количеству отложенных активизирующих сигналов. Дейкстра предложил две операции, down и up (обобщения sleep и wakeup). Операция down сравнивает значение семафора с нулем. Если значение семафора больше нуля, операция down уменьшает его (то есть расходует один из сохраненных сигналов активации) и просто возвращает управление. Если значение семафора равно нулю, процедура down не возвращает управление процессу, а процесс переводится в состояние ожидания. Все операции проверки значения семафора, его изменения и перевода процесса в состояние ожидания выполняются как единое и неделимое элементарное действие. Тем самым гарантируется, что после начала операции ни один процесс не получит доступа к семафору до окончания или блокирования операции.

Элементарность операции чрезвычайно важна для разрешения проблемы синхронизации и предотвращения состояния состязания.

Операция up увеличивает значение семафора. Если с этим семафором связаны один или несколько ожидающих процессов, которые не могут завершить более раннюю операцию down, один из них выбирается системой (например, случайным образом) и ему разрешается завершить свою операцию down. Таким образом, после операции up, примененной к семафору, связанному с несколькими ожидающими процессами, значение семафора так и останется равным Ø, но число ожидающих процессов уменьшится на единицу. Операция увеличения значения семафора и активизации процесса тоже неделима. Ни один процесс не может быть блокирован во время выполнения операции up, как ни один процесс не мог быть блокирован во время выполнения операции wakeup в предыдущей модели. Впервые обозначения down и up появились в языке Algol 68.

Мьютексы

Иногда используется упрощенная версия семафора, называемая мьютексом (mutex, сокращение от mutual exclusion — взаимное исключение). Мьютекс не способен считать, он может лишь управлять взаимным исключением доступа к совместно используемым ресурсам или кодам. Реализация мьютекса проста и эффективна, что делает использование мьютексов особенно полезным в случае потоков, действующих только в пространстве пользователя. Мьютекс — переменная, которая может находиться в одном из двух состояний: блокированном или неблокированном. Поэтому для описания мьютекса требуется всего один бит, хотя чаще используется целая переменная, у которой Ø означает неблокированное состояние, а все остальные значения соответствуют блокированному состоянию. Значение мьютекса устанавливается двумя процедурами. Если поток (или процесс) собирается войти в критическую область, он вызывает процедуру mutex Jock. Если мьютекс не заблокирован (то есть вход в критическую область разрешен), запрос выполняется и вызывающий поток может попасть в критическую область. Напротив, если мьютекс заблокирован, вызывающий поток блокируется до тех пор, пока другой поток, находящийся к критической области, не выйдет из нее, вызвав процедуру mutex_unlock. Если мьютекс блокирует несколько потоков, то из них случайным образом выбирается один. Мьютексы легко реализовать в пользовательском пространстве, если доступна команда TSL.

Монитор

Примитив синхронизации более высокого уровня. Монитор — набор процедур, переменных и других структур данных, объединенных в особый модуль или пакет. Процессы могут вызывать процедуры монитора, но у процедур, объявленных вне монитора, нет прямого доступа к внутренним структурам данных монитора.

http://dic.academic.ru

Сообщения

http://cs.mipt.ru/docs/courses/osstud/06/l6.htm

Очереди сообщений являются составной частью UNIX System V, они обслуживаются операционной системой, размещаются в адресном пространстве ядра и являются разделяемым системным ресурсом. Каждая очередь сообщений имеет свой уникальный идентификатор. Процессы могут записывать и считывать сообщения из различных очередей. Процесс, пославший сообщение в очередь, может не ожидать чтения этого сообщения каким-либо другим процессом. Он может закончить свое выполнение, оставив в очереди сообщение, которое будет прочитано другим процессом позже. Данная возможность позволяет процессам обмениваться структурированными данными, имеющими следующие атрибуты:

Очередь сообщений хранится в виде внутреннего однонаправленного связанного списка в адресном пространстве ядра. Для каждой очереди ядро создает заголовок очереди (msgid_ds) ,где содержится информация о правах доступа к очереди (msg_perm), ее текущем состоянии (msg_cbytes - число байтов и msg_qnum - число сообщений в очереди), а также указатели на первое (msg_first) и последнее (msg_last) сообщения, хранящиеся в виде связанного списка . Каждый элемент этого списка является отдельным сообщением.

Для создания новой очереди сообщений или для доступа к существующей используется системный вызов msgget

#include <sys/types.h>

#include <sys/ipc.h>

#include <sys/msg.h>

int msgget ( key_t key, int msgflag );

Функция возвращает дескриптор объекта-очереди, либо -1 в случае ошибки. Подобно файловому дескриптору, этот идентификатор используется процессом для работы с очередью сообщений. В частности, процесс может:

А. Робачевский - Операционная система UNIX ст. 248   PDF

[3]

Дочерний процесс ничем не отличается от родительского: имеет такое же окружение, те же стандартный ввод и стандартный вывод, одинаковое содержимое памяти и продолжает работу с той же самой точки (возврат из fork()). Отличия два:

Регистр

Регистр — ячейки памяти используемые для хранения n-разрядных двоичных данных и выполнения преобразований над ними.

https://ru.wikipedia.org

http://go-radio.ru/registr.html

http://www.russika.ru/ef.php?s=4543

Преобразователь последовательного кода, устройство, выполненное на триггерах для выполнения ряда действий с двоичными числами.

Polling

polling   (последовательный) опрос

метод контроля последовательности доступа к среде передачи передающих устройств, при котором периферийным станциям посылается запрос, предлагающий передать имеющиеся данные. Если у устройства есть данные для пересылки, оно выдаёт подтверждение и начинается пересылка. Различают обычно два вида: программный (software I/O polling) и аппаратный опрос (hardware I/O polling) 


Цилиндр





Жесткий магнитный диск представляет собой набор круглых пластин, находящихся на одной оси, и покрытых с одной или двух сторон специальным магнитным слоем (феро-магнетик). Около каждой рабочей поверхности каждой пластины расположены магнитные головки для чтения и записи информации. Эти головки присоединены к специальному рычагу (соленоидный привод головок), который может перемещать весь блок головок над поверхностями пластин как единое целое.

Поверхности пластин разделены на концентрические кольца, внутри которых собственно и может храниться информация. Набор концентрических колец на всех пластинах для одного положения головок (т.е. все кольца равноудаленные от оси) образует цилиндр. Каждое кольцо внутри цилиндра получило название дорожки (по 1-й или 2-е дорожки на каждую пластину). Все дорожки делятся на равное число секторов. Количество дорожек, цилиндров и секторов может варьироваться от одного жесткого диска к другому в достаточно широких пределах. Как правило, сектор является минимальным объемом информации, которое может быть прочитано с диска за один раз.

При работе диска набор пластин вращается вокруг своей оси с высокой скоростью, подставляя по очереди под головки соответствующих дорожек все их сектора. Номер сектора, номер дорожки и номер цилиндра однозначно определяют положение данных на жестком диске и, наряду с типом совершаемой операции – чтение или запись, полностью характеризуют часть запроса, связанную с устройством, при обмене информацией в объеме одного сектора.

http://mf.grsu.by/UchProc/livak/b_org/files/prop.htm    <<---- читать ЭТО.

http://cs.mipt.ru/docs/courses/osstud/13/ch13.htm

Ядро

    

    Ядро - главный "выполняемый" файл в системе.

    Ядро - это интерфейс между аппаратным и программным обеспечением.

    Ядро и его модули – это файлы в каталоге /boot/kernel (BSD).

    Ядро можно рассматривать как провайдер служб для процессов пользователей. Процессы получают доступ к этим службам через системные вызовы.

И поскольку ядро - это всего лишь набор файлов, можно создавать свои, альтернативные ядра, предназначенные для особых случаев.

    Может быть монолитным, гибридным, монолитным с модулями .......

Ядро обеспечивает базовую функциональность операционной системы: 

    Строго говоря, операционная система определяется как программное обеспечение, управляющее аппаратными ресурсами компьютера и предоставляющее среду для выполнения прикладных программ. Обычно это программное обеспечение называют ядром (kernel), так как оно имеет относительно небольшой объем и составляет основу системы.

................это если кратко, а вот как формулирует функции ядра Морис Дж.Бах в книге "Архитектура операционной системы UNIX"

    Среди функций ядра можно отметить:

• Управление выполнением процессов посредством их создания, завершения или приостановки и организации взаимодействия между ними.

• Планирование очередности предоставления выполняющимся процессам времени центрального процессора (диспетчеризация). Процессы работают с центральным процессором в

режиме разделения времени: центральный процессор выполняет процесс, по завершении отсчитываемого ядром кванта времени процесс приостанавливается и ядро активизирует

выполнение другого процесса. Позднее ядро запускает приостановленный процесс.

• Выделение выполняемому процессу оперативной памяти. Ядро операционной системы дает процессам возможность совместно использовать участки адресного пространства на

определенных условиях, защищая при этом адресное пространство, выделенное процессу, от вмешательства извне. Если системе требуется свободная память, ядро освобождает память, временно выгружая процесс на внешние запоминающие устройства, которые называют устройствами выгрузки. Если ядро выгружает процессы на устройства выгрузки целиком, такая реализация системы UNIX называется системой со свопингом (подкачкой); если же на устройство выгрузки выводятся страницы памяти, такая система называется системой с

замещением страниц.

• Выделение внешней памяти с целью обеспечения эффективного хранения информации и выборка данных пользователя. Именно в процессе реализации этой функции создается файловая система. Ядро выделяет внешнюю память под пользовательские файлы, мобилизует неиспользуемую память, структурирует файловую систему в форме, доступной для понимания, и защищает пользовательские файлы от несанкционированного доступа.

    Управление доступом процессов к периферийным устройствам, таким как терминалы, ленточные устройства, дисководы и сетевое оборудование.

    Выполнение ядром своих функций довольно очевидно. Например, оно узнает, что данный файл является обычным файлом или устройством, но скрывает это различие от

пользовательских процессов. Так же оно, форматируя информацию файла для внутреннего хранения, защищает внутренний формат от пользовательских процессов, возвращая им

неотформатированный поток байтов. Наконец, ядро реализует ряд необходимых функций по обеспечению выполнения процессов пользовательского уровня, за исключением функций,

которые могут быть реализованы на самом пользовательском уровне. Например, ядро выполняет действия, необходимые shell'у как интерпретатору команд: оно позволяет процессору shell читать вводимые с терминала данные, динамически порождать процессы, синхронизировать выполнение процессов, открывать каналы и переадресовывать ввод-вывод. Пользователи могут разрабатывать свои версии командного процессора shell с тем, чтобы привести рабочую среду в соответствие со своими требованиями, не затрагивая других пользователей. Такие программы пользуются теми же услугами ядра, что и стандартный процессор shell.

****Взаимодействие прикладных задач с ядром происходит посредством стандартного интерфейса системных вызовов.

PS: Поскольку ядро – это всего лишь набор файлов, вы можете создавать свои, альтернативные ядра, предназначенные для особых случаев. В системе, где была выполнена сборка собственного ядра, можно обнаружить каталог /boot/kernel.old, где находится ядро, работавшее до того, как была выполнена установка текущего ядра.

Интерфейс системных вызовов 



Это набор услуг ядра который определяет формат запросов на услуги. 

Подсистема управления процессами

Запущенная на выполнение программа порождает в системе один или более процессов (или задач). Подсистема управления процессами контролирует:

Очевидно, что в общем случае число активных процессов превышает число процессоров компьютера, но в каждый конкретный момент времени на каждом процессоре может выполняться только один процесс. Операционная система управляет доступом процессов к вычислительным ресурсам,

создавая ощущение одновременного выполнения нескольких задач. Специальная задача ядра, называемая распорядителем или планировщиком процессов (scheduler), разрешает конфликты между процессами в конкуренции за системные ресурсы (процессор, память, устройства ввода/вывода). Планировщик запускает процесс на выполнение, следя за тем, чтобы процесс монопольно не захватил разделяемые системные ресурсы. Процесс освобождает процессор, ожидая длительной операции ввода/вывода, или по прошествии кванта времени. В этом случае планировщик выбирает следующий процесс с наивысшим приоритетом и запускает его на выполнение.

Модуль управления памятью обеспечивает размещение оперативной памяти для прикладных задач. В случае, если для всех процессов недостаточно памяти, ядро перемещает части процесса

или нескольких процессов во вторичную память (как правило, в специальную область жесткого диска), освобождая ресурсы для выполняющегося процесса. Все современные системы реализуют так называемую виртуальную память: процесс выполняется в собственном логическом адресном

пространстве, которое может значительно превышать доступную физическую память. Управление виртуальной памятью процесса также входит в задачи модуля управления памятью.

Модуль межпроцессного взаимодействия отвечает за уведомление процессов о событиях с помощью сигналов и обеспечивает возможность передачи данных между различными процессами.

Протокол

Протокол - формальное описание набора правил и соглашений, регламентирующих обмен информацией между устройствами в сети.


etc/passwd

 Created Wednesday 15 July 2015

http://citforum.ru/operating_systems/unix

http://www.openspin.org/materials/courses/admin

http://cs.mipt.ru/docs/courses

------------------------------------------------------------

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

syslog:x:101:104::/home/syslog:/bin/false

messagebus:x:102:106::/var/run/dbus:/bin/false

usbmux:x:103:46:usbmux daemon,,,:/home/usbmux:/bin/false

mdm:x:111:121:MDM Display Manager:/var/lib/mdm:/bin/false

imint:x:1000:1000:imint,,,:/home/imint:/bin/bash

mysql:x:115:125:MySQL Server,,,:/nonexistent:/bin/false

fetchmail:x:116:65534::/var/lib/fetchmail:/bin/false

debian-spamd:x:117:126::/var/lib/spamassassin:/bin/sh

ntop:x:118:127::/var/lib/ntop:/bin/false

postfix:x:119:128::/var/spool/postfix:/bin/false

---------------------------------------------------------------

Каждая строка файла является записью конкретного пользователя и имеет следующий формат:

name: passwd-encod: UID: GID: coments: home-dir: shell

всего семь полей (атрибутов), разделенных двоеточиями

name

Регистрационное имя пользователя. Это имя пользователь вводит в ответ на приглашение системы login. Для небольших систем имя пользователя достаточно произвольно. В больших системах, в которых зарегистрированы сотни пользователей, требования уникальности заставляют применять определенные правила выбора имен.

passwd-encod

Пароль пользователя в закодированном виде. Алгоритмы кодирования известны, но они не позволяют декодировать пароль. При входе в систему пароль, который вы набираете, кодируется, и результат сравнивается с полем passwd-encod. В случае совпадения пользователю разрешается войти в систему. Даже в закодированном виде доступность пароля представляет некоторую угрозу для безопасности системы. Поэтому часто пароль хранят в отдельном файле, а в поле passwd-encod ставится символ 'х' (в некоторых системах '!'). Пользователь, в данном поле которого стоит символ '*', никогда не сможет попасть в систему. Дело в том, что алгоритм кодирования не позволяет символу '*' появиться в закодированной строке. Таким образом, совпадение введенного и затем закодированного пароля и '*' невозможно. Обычно такой пароль имеют псевдопользователи.

UID

Идентификатор пользователя является внутренним представлением пользователя в системе. Этот идентификатор наследуется задачами, которые запускает пользователь, и файлами, которые он создает. По этому идентификатору система проверяет пользовательские права (например, при запуске программы или чтении файла). Суперпользователь имеет UID = 0, что дает ему неограниченные права в системе.





GID

Определяет идентификатор первичной группы пользователя. Этот идентификатор соответствует идентификатору в файле /etc/group, который содержит имя группы и полный список пользователей, являющихся ее членами. Принадлежность пользователя к группе определяет дополнительные права в системе. Группа определяет общие для всех членов права доступа и тем самым обеспечивает возможность совместной работы (например, совместного использования файлов).

coments

Обычно, это полное "реальное" имя пользователя. Это поле может содержать дополнительную информацию, например, телефон или адрес электронной почты. Некоторые программы (например, почтовые системы) используют это поле.

home-dir

Домашний каталог пользователя. При входе в систему пользователь оказывается в этом каталоге. Как правило, пользователь имеет ограниченные права в других частях файловой системы, но домашний каталог и его подкаталоги определяют область файловой системы, где он является полноправным хозяином

shell

Имя программы, которую UNIX использует в качестве командного интерпретатора. При входе пользователя в систему UNIX автоматически запустит указанную программу. Обычно это один из стандартных командных интерпретаторов bin/sh (Bourne shell), bin/csh (C shell) или bin/ksh (Korn shell), позволяющих пользователю вводить команды и запускать задачи. В принципе, в этом поле может быть указана любая программа, например, командный интерпретатор с ограниченными функциями (restricted shell), клиент системы управления базой данных или даже редактор. Важно то, что, завершив выполнение этой задачи, пользователь автоматически выйдет из системы. Некоторые системы имеют файл /etc/shells, содержащий список программ, которые могут быть использованы в качестве командного интерпретатора.

[4]

Командным интерпретатором называется часть операционной системы, которая обрабатывает введенные команды и запускает указанные в них программы.

[5]

unixODBC - Open DataBase Connectivity   http://www.unixodbc.org/

Пакет UnixODBC является подсистемой ODBC с открытым исходным кодом (Open DataBase Connectivity) и ODBC SDK для Linux, Mac OSX и UNIX. Подсистема ODBC имеет открытую спецификацию, что позволяет разработчикам приложений иметь предсказуемое API, с помощью которого можно получать доступ к источнику данных. Источниками данных считаются дополнительно устанавливаемые сервера SQL и любые другие источники данных, для которых есть драйвер ODBC. В пакете unixODBC имеются следующие компоненты, помогающие работать с источниками данных ODBC: менеджер драйверов, инструментальные средства для использования инсталляционной библиотеки и командной строки, инструментальные средства командной строки, помогающие устанавливать драйвера и работать с SQL, драйверы и библиотеки для настройки драйверов.

Информация о пакете:

Загрузка (HTTP): http://www.unixodbc.org/unixODBC-2.3.0.tar.gz

Загрузка (FTP): ftp://mirror.ovh.net/gentoo-distfiles/distfiles/unixODBC-2.3.0.tar.gz

Контрольная сумма MD5: f2ad22cbdffe836c58987ed2332c2e99

Размер загружаемого пакета: 1,8 MB

Оценочный размер требуемого дискового пространства: 30 MB

Оценочное время сборки: 0,5 SBU (в том числе сборка инструментальных средств графического интерфейса)

Код возврата команды

Каждая команда возвращает свой статус завершения как код возврата.

echo $? код возврата последнего процесса (функции или скрипта)

echo $$ идентификатор последнего процесса

echo $! идентификатор последнего фонового процесса

etc/profile   etc/skel

Администратор системы, может редактировать /etc/profile. Так как им руководствуются все кто впервые входят в систему, важно держать его в рабочем состоянии.

Однако, существует вариант, при котором, настройки с одной стороны, могут быть выставлены в значения по-умолчанию для новых пользователей, а с другой, могут быть легко ими изменены при необходимости, изменением переменных значений . Как раз для этого и существует директория /etc/skel. При использовании команды useradd для создания новой учетной записи, все файлы из /etc/skel копируются в домашний каталог нового пользователя. Это означает, что вы можете положить, например, .bash_profile и .bashrc в /etc/skel для более "комфортного" начала работы нового пользователя.

[6]

Параметры ( parameters) -- это именованные области памяти, способные хранить некую информацию (значение-value) различного типа. В контексте bash переменными (variables) называют параметры, которые могут быть определены по имени. [Дальнейшее чтение -- man bash, /^PARAMETERS]

Каждой программе при запуске передается строковый массив, который называется окружением (environment). Он представляет собой список переменных и их значений. Таким образом, переменными окружения можно назвать те переменные, которые передаются всем потомкам процесса. Список таких переменных можно посмотреть, вызвав команды env и export. [Дальнейшее чтение -- man bash, /^ENVIRONMENT]

Список переменных окружения и переменных-только-данного-шелла можно получить, вызвав команды set и declare.

[7]

Слово бит (сокращение от binary digit — двоичная цифра),основной структурный блок, из которого строится информация.

бит (англ. binary digit — двоичное число; также игра слов: англ. bit — кусочек, частица) 

— единица измерения количества информации, равная одному разряду в двоичной системе счисления.

бит — это двоичный логарифм вероятности равновероятных событий или сумма произведений вероятности  на двоичный логарифм вероятности при равновероятных событиях

бит — базовая единица измерения количества информации, равная количеству информации, содержащемся в опыте, имеющем два равновероятных исхода. Это тождественно количеству информации в ответе на вопрос, допускающий ответ «да» или «нет» и никакого другого (то есть такое количество информации, которое позволяет однозначно ответить на поставленный вопрос)

Байт  —  иллюстрация минимальной и максимальной заряженности (комбинации) и соответствие двоичного числа и электрического импульса.

  Восьмеричная система исчисления.

 На основании одной ячейки информационной ёмкостью 1 бит можно закодировать только 2 различных состояния. Для того чтобы каждый символ, который можно ввести с клавиатуры в латинском регистре, получил свой уникальный двоичный код, требуется 7 бит.  На основании последовательности из 7 бит, в соответствии с формулой Хартли, может быть получено N=27=128 различных комбинаций из нулей и единиц, т.е. двоичных кодов. Поставив в соответствие каждому символу его двоичный код, мы получим кодировочную таблицу. Человек оперирует символами, компьютер – их двоичными кодами.

Для латинской раскладки клавиатуры такая кодировочная таблица одна на весь мир, поэтому текст, набранный с использованием латинской раскладки, будет адекватно отображен на любом компьютере. Эта таблица носит название ASCII (American Standard Code of Information Interchange). Ниже приводится вся таблица ASCII, коды в которой указаны в десятичном виде. По ней можно определить, что когда вы вводите с клавиатуры, скажем, символ “*”, компьютер его воспринимает как код 42(10), в свою очередь 42(10)=101010(2) – это и есть двоичный код символа “*”. Коды с 0 по 31 в этой таблице не задействованы.

Чтобы хранить также и коды национальных символов каждой страны (в нашем случае – символов кириллицы) требуется добавить еще 1 бит, что увеличит количество уникальных комбинаций из нулей и единиц вдвое, т.е. в нашем распоряжении дополнительно появится 128 свободных кодов (со 128-го по 255-й), в соответствие которым можно поставить символы русского алфавита.Таким образом, отведя под хранение информации о коде каждого символа 8 бит, мы получим N=28=256 уникальных двоичных кодов, что достаточно, чтобы закодировать все символы, которые можно ввести с клавиатуры.

Байт - последовательность из 8 бит.  1 байт = 2 x 2 x 2 (2*3) бит = 8 бит.

На основании одного байта можно получить 28=256 уникальных двоичных кодов. В современных кодировочных таблицах под хранение информации о коде каждого символа отводится 1 байт. 1 символ = 1 байт

Биты в байте нумеруются с конца с 0-го по 7-й. Минимальная комбинация на основании одного байта – восемь нулей, максимальная – восемь единиц.

11111111(2)=2*7+2*6+2*5+2*4+2*3+2*2+2*1+2*0=128+64+32+16+8+4+2+1=255(10)

При хранении на физическом уровне каждый байт может быть реализован, например, на базе восьми конденсаторов, каждый из которых либо разряжен (0), либо заряжен (1).

На сегодняшний день в использовании не одна, а несколько кодировочных таблиц, включающих коды кириллицы, – это стандарты, выработанные в разные годы и различными учреждениями. В этих таблицах различен порядок, в котором расположены друг за другом символы кирилличного алфавита, поэтому одному и тому же коду соответствуют разные символы. По этой причине, мы иногда сталкиваемся с текстами, которые состоят из русских букв, но в бессмысленной для нас последовательности

Арифметические операции в двоичной системе счисления

В двоичной системе счисления арифметические операции выполняются по тем же правилам, что и в десятичной системе счисления, т.к. они обе являются "позиционными" (наряду с восьмеричной, шестнадцатеричной и др.).

Сложение

Сложение одноразрядных двоичных чисел выполняется по следующим правилам:

    0 + 0 = 0

    1 + 0 = 1

    0 + 1 = 1

    1 + 1 = 10

    

В последнем случае, при сложении двух единиц, происходит переполнение младшего разряда, и единица переносится в старший разряд. Переполнение возникает в случае, если сумма равна основанию системы счисления (в данном случае это число 2) или больше его (для двоичной системы счисления это не актуально).

Сложим для примера два любых двоичных числа:

      1101

    +  101

     ------

     10010


Умножение

Умножение одноразрядных двоичных чисел выполняется по следующим правилам:

    0 * 0 = 0

    1 * 0 = 0

    0 * 1 = 0

    1 * 1 = 1

Пример:

      1110

    *   10

    ------

    + 0000

     1110

    ------

     11100


Вычитание

Вычитание одноразрядных двоичных чисел выполняется по следующим правилам:

    0 - 0 = 0

    1 - 0 = 1

    0 - 1 = (заем из старшего разряда) 1

    1 - 1 = 0

Пример:

      1110

    -  101

      ----

      1001


Деление

Деление выполняется так же как в десятичной системе счисления:

    1110 | 10

         |----

    10   | 111

    ----

Перевод IP адреса в двоичное представление

128    64    32    16    8     4     2     1

перевести:  192 168  1  0  (что совпало -1, что не совпало -0)

192 = 128+64+0+0+0+0+0+0=  11000000

168 = 128+0+32+0+8+0+0+0=  10101000

1=    0+0+0+0+0+0+0+1 =    00000001

0=    0+0+0+0+0+0+0+0 =    00000000

и того:  1100000 10101000 00000001 00000000

http://infocisco.ru/ip_to_bin

[8]

http://www.helloworld.ru/texts/comp/lang/c/c/h13.htm  <<----- очень интересно !

Выражения со знаками операций могут быть унарными (с одним операндом), бинарными (с двумя операндами) и тернарными (с тремя операндами).

Операнд - это константа, литерал, идентификатор, вызов функции, индексное выражение, выражение выбора элемента или более сложное выражение, сформированное комбинацией операндов, знаков операций и круглых скобок. Любой операнд, который имеет константное значение, называется константным выражением. Каждый операнд имеет тип.

1 + 2 =

оператор

1, 2  операнды

[9]

Кеш с точки зрения структуры или алгоритмов взаимодействия операционной системы - системный буфер сверхоперативной памяти, составляющий основу файловой системы.

Лексема

https://ru.wikipedia.org/wiki

лексический анализ — процесс аналитического разбора входной последовательности символов (например, такой как исходный код на одном из языков программирования) с целью получения на выходе последовательности символов, называемых «токенами» (подобно группировке букв в словах). Группа символов входной последовательности, идентифицируемая на выходе процесса как токен, называется лексемой. В процессе лексического анализа производится распознавание и выделение лексем из входной последовательности символов.

Префикс

Префикс (фр. prefix от лат. praefixus — «прикреплённый впереди»):

префикс в информатике — начало строки.

префикс (под)сети в терминологии сетей TCP/IP определяется маской подсети: длина префикса количество двоичных единиц в маске подсети.

Итерация

Итерация в программировании — организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (в отличие от рекурсии)

P = I x U


Анализируя данные в технической литературе и описания различных изделий, называемых авторами «системами на кристалле», можно сформулировать следующее определение: система на кристалле — это СБИС (сверхбольшая интегральная схема), интегрирующая на кристалле различные функциональные блоки, которые образуют законченное изделие для автономного применения в электронной аппаратуре.

Snapdragon — семейство мобильных систем на кристалле (SoC) компании Qualcomm.

[10]

 Виртуализация на уровне операционной системы — метод виртуализации, при котором ядро операционной системы поддерживает несколько изолированных экземпляров пространства пользователя, вместо одного, создавая виртуальное окружение с собственным пространством процессов и сетевым стеком, не создавая виртуальные машины. Эти экземпляры (часто называемые контейнерами или зонами) с точки зрения пользователя полностью идентичны реальному серверу. Для систем на базе UNIX, эта технология может рассматриваться (а может и рассматриваться более грамотно) как улучшенная реализация механизма chroot. Ядро обеспечивает полную изолирован-ность контейнеров, поэтому программы из разных контейнеров не могут воздействовать друг на друга.

Виртуализация на уровне операционной системы позволяет запускать изолированные и безопасные виртуальные машины на одном физическом узле, но не позволяет запускать операционные системы с ядрами, отличными от типа ядра базовой операционной системы. При виртуализации на уровне операционной системы не существует отдельного слоя гипервизора. Вместо этого сама хостовая операционная система отвечает за разделение аппаратных ресурсов между несколькими виртуальными машинами и поддержку их независимости друг от друга. Среди реализаций:

Solaris Containers/Zones

FreeBSD Jail

Linux-VServer[en]

LXC (Linux Containers)

FreeVPS[en]

OpenVZ

Virtuozzo

iCore Virtual Accounts

Гипервизор (Hypervisor; от др.-греч. ὑπέρ «над, выше, сверх» + лат. vīsio «зрение; видение») или монитор виртуальных машин (в компьютерах) — программа или аппаратная схема, обеспечивающая или позволяющая одновременное, параллельное выполнение нескольких операционных систем на одном и том же хост-компьютере. 

Гипервизор также обеспечивает изоляцию операционных систем друг от друга, защиту и безопасность, разделение ресурсов между различными запущенными ОС и управление ресурсами.

Гипервизор также обязан предоставлять работающим под его управлением на одном хост-компьютере ОС средства связи и взаимодействия между собой (например, через обмен файлами или сетевые соединения) так, как если бы эти ОС выполнялись на разных физических компьютерах.

Гипервизор сам по себе в некотором роде является минимальной операционной системой (микроядром или наноядром). Он предоставляет запущенным под его управлением операционным системам службу виртуальной машины, виртуализируя или эмулируя реальное (физическое) аппаратное обеспечение конкретной машины. И управляет этими виртуальными машинами, выделением и освобождением ресурсов для них. 

Гипервизор позволяет независимое «включение», перезагрузку, «выключение» любой из виртуальных машин с той или иной ОС. При этом операционная система, работающая в виртуальной машине под управлением гипервизора, может, но не обязана «знать», что она выполняется в виртуальной машине, а не на реальном аппаратном обеспечении. 

Для сравнения - виртуальные машины kvm (к примеру) 

Виртуальные машины, управляемые гипервизором kvm, с точки зрения операционной системы физического узла, на котором они выполняются, представляют собой один процесс гипервизора kvm. Они взаимодействуют с физическим оборудованием не напрямую, а только через гипервизор. Всё оборудование, которое доступно операционной системе внутри виртуальной машины, включая процессор и память, является виртуальным, эммулируемым что не мало важно, в отличии от контейнерной витруализации в том числе и  виртуальная сетевая карта подключается виртуальным кабелем к виртуальному коммутатору. Дисковые контроллеры тоже являются виртуальными, а дисковые накопители обычно представляют собой файлы на файловой системе физического узла, на котором выполняется процесс гипервизора.

Технологии виртуализации:

    контейнерная (контейнер как режим работы операционной системы)

    полная виртуализация (эммуляция "всего что есть")

    частичная (пара) виртуализация


Или так:

    Программная виртуализация;

    Аппаратная виртуализация;

    Виртуализация уровня операционной системы.

https://www.youtube.com/

https://www.youtube.com/watch

https://ru.wikipedia.org/виртуализация

Контейнерная виртуализация в Linux 

http://www.ibm.com/developerworks/

   

Виртуализация в свою очередь бывает полной и частичной.

42:52  процессы, потоки, нити, волокна и тд.

IaaS - PaaS - SaaS

Программное обеспечение как услуга   SaaS

Программное обеспечение как услуга (SaaS - Software-as-a-Service) — модель, в которой потребителю предоставляется возможность использования прикладного программного обеспечения провайдера, работающего в облачной инфраструктуре и доступного из различных клиентских устройств или посредством тонкого клиента, например, из браузера (например, веб-почта) или посредством интерфейса программы. Контроль и управление основной физической и виртуальной инфраструктурой облака, в том числе сети, серверов, операционных систем, хранения, или даже индивидуальных возможностей приложения (за исключением ограниченного набора пользовательских настроек конфигурации приложения) осуществляется облачным провайдером.

Платформа как услуга  PaaS  

Платформа как услуга (PaaS - Platform-as-a-Service) — модель, когда потребителю предоставляется возможность использования облачной инфраструктуры для размещения базового программного обеспечения для последующего размещения на нём новых или существующих приложений (собственных, разработанных на заказ или приобретённых тиражируемых приложений). В состав таких платформ входят инструментальные средства создания, тестирования и выполнения прикладного программного обеспечения — системы управления базами данных, связующее программное обеспечение, среды исполнения языков программирования — предоставляемые облачным провайдером. Контроль и управление основной физической и виртуальной инфраструктурой облака, в том числе сети, серверов, операционных систем, хранения осуществляется облачным провайдером, за исключением разработанных или установленных приложений, а также, по возможности, параметров конфигурации среды (платформы).



Инфраструктура как услуга   IaaS

Инфраструктура как услуга (IaaS - Infrastructure-as-a-Service) предоставляется как возможность использования облачной инфраструктуры для самостоятельного управления ресурсами обработки, хранения, сетями и другими фундаментальными вычислительными ресурсами, например, потребитель может устанавливать и запускать произвольное программное обеспечение, которое может включать в себя операционные системы, платформенное и прикладное программное обеспечение. Потребитель может контролировать операционные системы, виртуальные системы хранения данных и установленные приложения, а также обладать ограниченным контролем за набором доступных сетевых сервисов (например, межсетевым экраном, DNS). Контроль и управление основной физической и виртуальной инфраструктурой облака, в том числе сети, серверов, типов используемых операционных систем, систем хранения осуществляется облачным провайдером.


IaaS – когда предприятие обходится без собственного датацентра;

PaaS – без системных администраторов;

SaaS – без программистов.

Ceph

Ceph — отказоустойчивое распределенное хранилище д анных, работающее по протоколу TCP.  Одно из базовых свойств Ceph — масштабируемость до петабайтных размеров.

DRBD (Distributed Replicated Block Device — «распределённое копируемое блочное устройство») — программная система, обеспечивающая синхронизацию (сетевой RAID 1) между локальным блочным устройством и удалённым. Одним из применений является построение отказоустойчивых кластерных систем на операционной системе с ядром Linux. Входит в ванильное ядро Linux с 15 декабря 2009 года.

http://xgu.ru/wiki/DRBD

https://www.opennet.ru/docs/RUS/ha_cluster/

https://habrahabr.ru/post/187660/

http://www.drbd.org/en/supported-projects/proxmox

https://pve.proxmox.com/wiki/DRBD

http://xgu.ru/wiki/         http://yvision.kz/post/693009

Закон Мура 

Закон Мура — эмпирическое наблюдение, изначально сделанное Гордоном Муром, согласно которому (в современной формулировке) количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца. Часто цитируемый интервал в 18 месяцев связан с прогнозом Давида Хауса из Intel, по мнению которого производительность процессоров должна удваиваться каждые 18 месяцев из-за сочетания роста количества транзисторов и быстродействия каждого из них.

CRM

CRM-система - Customer Relationship Management

http://www.vtiger.ru/

parsed

https://sites.google.com/site/kfgnb0101/primecania1

разобранный, разбор (к примеру граматический)в лингвистике и информатике — процесс сопоставления линейной последовательности лексем (слов, токенов) естественного или формального языка с его формальной грамматикой

Область применения:

Всё что угодно, имеющее «синтаксис», поддается автоматическому анализу.

Языки программирования — разбор исходного кода языков программирования, в процессе трансляции (компиляции или интерпретации);

Структурированные данные — данные, языки их описания, оформления и т. д. 

Например, XML, HTML, CSS, JSON, ini-файлы, специализированные конфигурационные файлы и т. п.;

Построение индекса в поисковой системе;

SQL-запросы (DSL-язык);

Математические выражения;

Регулярные выражения (которые, в свою очередь, могут использоваться для автоматизации лексического анализа);

Формальные грамматики; Лингвистика — естественные языки. Например, машинный перевод и другие генераторы текстов.

----------------------------------------------------

#gpg --list-keys

#gpg --edit-key <A724937A>

#gpg --import <next.txt>

----------------------------------------------------

Например, строка: 

«pub 1024D/9B1386E2» 

расшифровывается так: открытый ключ, 1024 бита, DSA, идентификатор ключа – 9B1386E2

----------------------------------------------------

13

Embedded system (встроенная система)   — специализированная микропроцессорная система управления, контроля и мониторинга, концепция разработки которой заключается в том, что такая система будет работать, будучи встроенной непосредственно в устройство, которым она управляет.

https://ru.wikipedia.org/

http://openembedded.ru/primenenie-vstroennyx-sistem/

https://ru.wikipedia.org/wiki/Windows_Embedded

http://www.osp.ru/winitpro

PuTTY горячие клавиши

Копировать/Вставить

Весь текст автоматически скопируется в буфер по факту выделения: не надо нажимать Ctrl-C или Ctrl-Ins, или что-нибудь ещё. Фактическое же нажатие Ctrl-C отправит символ Ctrl-C в окно терминала, 

что вызовет завершение текущей команды. Единственная вещь, которую вы должны 

сделать для копирования текста в буфер обмена, — это выделить его мышкой, или два раза кликнуть левой кнопкой ,чтобы выделить блок, после чего он в буфере, чтобы вставить содержание буфера обмена в окно PuTTY, по умолчанию нужно кликнуть правой кнопкой мыши. Также можно вставить буфер, нажав сочетание клавиш Shift-Ins.

Ctrl+C – завершить текущую команду

Ctrl+Z – остановить текущую команду, продолжть с fg на переднем плане или bg в фоне

Ctrl+D – разлогиниться, тоже самое, что и exit

Ctrl+W – удалить одно слово в текущей строке

Ctrl+U – удалить строку

................., то есть все остальные клавиши:

Ctrl- ^

Meta - M (Esc+ необходимая клавиша)


Основные сочетания

^c — Прервать текущий процесс (сигнал SIGINT)

^\ — Прервать текущий процесс с дампом памяти(core damp)

^d — Eof (выход из консольного пользовательского процесса)

^s — приостановить процесс (stop)

^q — Запустить процесс

^z — Перевести процесс в фоновый режим

^j — Сброс параметров терминала

^m — Аналог клавиши “Enter”

^r — Переводит в режим поиска команды по истории. Повторное нажатие перебирает сходные по маске строки

^l — Очистка экрана

Tab — Автозавершение команд/вывести список команд, начинающихся на введенную

ScrLock — Приостановка выполнения(печати) текущей команды

Ctrl+Alt+Del — Закрыть систему и перегрузится

!! - повторить последнюю команду

q - часто используется для выхода из программ (quit)




Навигация

Up; Down — Просмотр и редактирование истории команд

Alt+Left — Переключение по терминалам влево(консоль)

Alt+Right — Переключение по терминалам вправо(консоль)

Ctrl+Alt+F# - переключение на терминал #

Shift+PgUp — Прокрутка текста вверх

Shift+PgDown — Прокрутка текста вниз

^b — Перемещение на символ назад (back)

^f — На символ вперёд

M b — На слово назад (back)

M f — На слово вперёд (forward)

^a — Переводит курсор в начало строки

^e — Переводит курсор в конец строки



Редактирование

^h —  "<-" тоже самое что и backspace

^d — Удаление символа в позиции курсора

^h — Удаление символа перед позицией курсора

M d — вырезать в буфер символ до ближайшего справа пробела

^w —Вырезать в буфер символы до ближайшего слева пробела

^u — Вырезать в буфер строку ввода слева от курсора

^k — Вырезать (удалить - kill) в буфер строку ввода справа от курсора

^t — Смена положения соседних символов

^w — Вырезать в буфер слово слева от курсора

M <- - Вырезать в буфер слово влево от курсора

^y — Вставка (yunk) из буфера в текущую позицию курсора

M u - Символы в верхний регистр (Uppear)

M l - Символы низкого регистра (Lower)

M c - Символы в режиме капитализации (Capitalize)

^_ — Откат редактирования (Ctrl+Shift+-)

SVN

https://ru.wikipedia.org/wiki/Subversion

http://eax.me/svn-commands/ <-------------------

--------------------------------------------

Делаем checkout:

svn co --username eax https://example.com/project/trunk/

Подсасываем последние изменения:

svn up

Проверить, в какой ветке мы находимся и на какой сервер смотрим:

svn info

Посмотреть историю изменений:

svn up

svn log | less

История изменений с diff’ами, аналог git log -p:

svn log --diff | less

Кто какие строчки когда менял:

svn blame -v test.txt

Посмотреть незакомиченные изменения:

svn diff

Какие файлы были изменены или добавлены:

svn diff --summarize

Изменения в рамках ревизиции, аналог git show:

# посмотреть комментарий

svn log -c 123456

# посмотреть изменения

svn diff -c 123456

Посмотреть измененные в ревизии файлы:

svn diff --summarize -c 123456

Изменения по сравнению с текущей ревизией, аналог git diff:

svn diff -r 123456

svn diff --summarize -r 123456

Применение сохраненного в файл дифа, аналог git apply:

patch -p0 -i myfile.diff

Отменить последние изменения, аналог git reset --hard HEAD:

svn revert --recursive .

Текущее состояние репозитория, измененные файлы и так далее:

svn status




Удалить неотслеживаемые файлы и каталоги — встроенной команды, увы, нет, но можно прописать алиас в .bashrc:

svn status | perl -lne 'if(/^\?\s+(.*?)$/){ print $1 }' | xargs rm -r

Получение списка бранчей:

svn ls https://example.com/project/branches/

Создание нового бранча или тэга:

 svn copy https://example.com/project/trunk/ \

https://example.com/project/branches/test-branch

svn copy https://example.com/project/trunk/ \

https://example.com/project/tags/1.0 \

-m "Release 1.0"

Переключение на бранч:

cd path/to/trunk

cd ..

mkdir branches

cd branches

svn co https://example.com/project/branches/test-branch

cd test-branch

Мерж бранча:

svn merge http://example.ru/project/branches/test-branch

Удаление бранча:

svn delete http://example.ru/project/branches/test-branch \

-m "Removing test-branch"

Примечание: Примите также во внимание, что если вы сделали checkout самого корня репозитория, в котором находятся каталоги trunk, branches и tags, то можете просматривать бранчи обычным ls, удалять обычным svn rm с последующим коммитом, и так далее. Впрочем, в больших проектах вы вряд ли захотите делать checkout вот прямо всего репозитория целиком.

Добавить файл:

svn add text.txt

Переименовать файл:

svn mv from.txt to.txt

Удалить файл:

svn del file.txt

Lock/unlock, чтобы файл никто не мог менять кроме нас:

svn lock file.txt

svn unlock file.txt

Коммит и сразу пуш, потому что это SVN:

svn commit -m 'Your comment here'

...........В общем, описанных команд вам хватит в 95% всех случаев

 

Cygwin  --  Сигвин        MobaXterm

UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Cygwin обеспечивает тесную интеграцию приложений, данных и ресурсов Windows с приложениями, данными и ресурсами UNIX-подобной среды,  комплект типовых утилит GNU, портированных на платформу Windows. "Удивительно" полная реализация почти всех основных программ, используемых на платформе UNIX. Из среды Cygwin можно запускать обычные приложения Windows, также можно использовать инструменты Cygwin из Windows.

https://ru.wikipedia.org/wiki/Cygwin

https://www.cygwin.com/

http://eax.me/cygwin/     <<-----------

  https://habrahabr.ru/sandbox/93077/    <<-------------  Если проблемы с локалью, то для начала так: Как в putty через меню окна (кликнуть на значок               окна). Options->Text , там в разделе текст снизу поставить соответственно: 

          Locale: ru_RU   Character set: CP1251

c:\User\...\...>f:

f:\>takeown /r /d y /f cygwin

f:\>icacls cygwin /t /grant everyone:f

f:\>rmdir /s /q cygwin

Использование alias в bash

http://ashep.org/2011/ispolzovanie-alias-v-bash/                      <<-----Alias

https://losst.ru/luchshie-konsolnye-brauzery-dlya-linux          <<-----Brauzers

Lynx.cfg ----> (BSD) /usr/local/etc  (кодировка UTF 8)

Figlet & Toilet

https://www.cyberciti.biz/faq/create-large-colorful-text

https://www.maketecheasier.com/figlet-and-toilet

http://lgogua.blogspot.ru/2013/07/install-figlet-toilet

https://drive.google.com/file/=sharing    <------PDF

Redmine

https://habrahabr.ru/post/245065/

https://ru.wikipedia.org/wiki/Redmine

Размер окна Terminator

Just open the file ~/.config/terminator/config with your favorite editor. You should have a section titled [layouts]. You only need to add a line within the sub-section named [[[window0]]] belonging to the [[default]] section. My configuration file, for instance, looks like this:

[global_config]

  enabled_plugins = CustomCommandsMenu, InactivityWatch, ActivityWatch, TerminalShot, LaunchpadCodeURLHandler, LaunchpadBugURLHandler

[keybindings]

[profiles]

  [[default]]

    scrollbar_position = hidden

    visible_bell = True

    scrollback_lines = 1000000

    foreground_color = "#ffffff"

    copy_on_selection = True

    background_color = "#300a24"

[layouts]

  [[default]]

    [[[child1]]]

      type = Terminal

      parent = window0

      profile = default

    [[[window0]]]

      type = Window

      parent = ""

      profile = None

      size = 900, 600

[plugins]

The relevant part is only the line starting with "size", of course.

Еще вариант:

..........................

    [[[window0]]]

      type = Window

      parent = ""

      size = 1000, 600

      position = 100:100

15

ACPI – Advanced Configuration and Power Interface (усовершенствованный интерфейс управления конфигурированием и энергопотреблением), стандарт конфигурирования аппаратного обеспечения, принятый Intel/Toshiba/Microsoft. Он заместил устаревшие стандарты Microsoft – APM (Advanced Power Management – усовершенствованные средства управления питанием)

Single user mode

Michael Lucas FreeBSD            <<---PDF    ст.93

    Минимальная начальная загрузка, так называемый однопользовательский режим, подразумевает загрузку ядра и нахождение устройств. При этом не происходит автоматического монтирования диска, подключения к сети, активизации защиты системы и запуска стандартных служб UNIX. Однопользовательский режим – это первый рубеж, на котором система способна дать вам доступ к командной строке (command prompt). Отсюда можно активизировать любые службы, которые не были запущены автоматически.

При запуске в однопользовательском режиме вы увидите привычный поток системных сообщений. Однако перед запуском каких-либо программ ядро предложит вам выбрать командную оболочку. Вы можете выбрать любую оболочку, интерпретатор которой находится в корневом разделе диска.В однопользовательском режиме монтируется только корневой раздел, причем в режиме только для чтения. Остальные диски не монтируются.

Многие программы, которые могут вам потребоваться, находятся в разделах, отличных от корневого, поэтому все разделы должны быть доступны в режиме чтения/записи. Чтобы убедиться, что эти файловые системы находятся в исправном состоянии, запустите следующие команды:

# fsck -p

# mount -a

Программа fsck «почистит» файловые системы, подтвердит их внутреннюю целостность и действительное наличие файлов раздела на диске. Доступ к файловой системе открывается командой mount.

    Круг команд, доступных в однопользовательском режиме, зависит от того, какие разделы были смонтированы. Некоторые основные команды находятся в каталогах /bin и /sbin, расположенных в корневом разделе, и доступны, даже если корневой раздел смонтировать в режиме только для чтения. Другие команды находятся в каталоге /usr и будут недоступны, пока вы не смонтируете этот раздел.

    Cистема не требует ввода старого пароля пользователя root. Загрузившись в однопользовательский режим, вы автоматически становитесь пользователем root, поэтому passwd не просит ввести старый пароль.

    Доступ к файловой системе откроется после выполнения команды: #mount -a, предварительно перейдя в дирректорию /etc Ключ –a говорит о необходимости выполнить монтирование всех файловых систем, перечисленных в файле /etc/fstab, но если какая либо из этих файловых систем вызывает проблемы, можно смонтировать требуемые файловые системы по отдельности, указав в командной строке путь к точке монтирования.

D-Bus

D-Bus — это система межпроцессного взаимодействия, которая предоставляет приложениям несколько шин для передачи сообщений. Она обеспечивает беспроблемную связь десктопных приложений между собой и связь между десктопными приложениями и системными сервисами. Поддерживается не только широковещательная рассылка сообщений (сигналов), но и удалённый вызов методов.

http://www.linux.org.ru/wiki/en/D-Bus

Connect your Linux machine to cisco serial console

https://linuxconfig.org/connect-your-ubuntu-linux-machine-to-cisco-serial-console

http://blog.sedicomm.com/2017/01/05/bazovaya-nastrojka-kommutatora-cisco-catalyst/

http://pyatilistnik.org/nachalnaya-nastroyka-cisco-cherez-com-port/

http://www.natalink.ru/articles/podklyuchenie_k_cisco_iz_linux

error unknown filesystem grub rescue

https://losst.ru/oshibka-grub-rescue-unknown-filesystem

grub rescue> ls

grub rescue> ls (hd0,1)/

grub rescue> set root=(hd0,1)

grub rescue> set prefix=(hd0,1)/boot/grub

grub rescue> insmod normal

grub rescue> normal

Инкапсуляция

Инкапсуляция (encapsulation, от лат. in capsula) — в информатике упаковка данных и функций в единый компонент.

В общем случае в разных языках программирования термин «инкапсуляция» относится к одной или обеим одновременно следующим нотациям:

Пренебрегая формализмом и способствуя интуитивному восприятию, инкапсуляцию можно определить с помощью латинского in capsula — размещение в оболочке, изоляция, закрытие чего-либо инородного с целью исключения влияния на окружающее, обеспечение доступности главного, выделение основного содержания путём помещения всего мешающего, второстепенного в некую условную капсулу (чёрный ящик). Однако данное определение является лишь приближением.

14

Язык программирования -- соответствие алгоритмам и задачам.

Ассемблер язык программирования максимально близкий к аппаратному обеспечению, практическое применение чаще всего анализ программы с точки зрения машинного кода, анализ взаимодействия разных программ.

Дизассемблер (disassembler)  транслятор, преобразующий машинный код, объектный файл или библиотечные модули в текст программы на языке ассемблера. (https://ru.wikipedia.org/wiki)

Если Ассемблер конвертирует код написанный на языке ассемблера в двоичный машинный код, то дизассемблер обращает этот процесс и пытается воссоздать код ассемблера из машинного кода.

IDA Freeware for Windows (48 MB)

IDA Freeware for Linux (45 MB)

IDA Freeware for Mac (44 MB)

Бесплатная версия обладает ограниченными возможностями по сравнению со стандартной и расширенной версиями, поддерживается только архитектура x86 и отсутствует поддержка подключаемых модулей.

SHA1 checksums:

d0cefa445208514539fd83c9e97ec69320548a4d idafree70_linux.run

355a1cec551fcd208a464a4cd90151a2ec3c1f16 idafree70_mac.tgz

78ac4d93a6fdc16a49963d6748131f00c4a4831a idafree70_windows.exe

RCS (Revision Control System)

    Система управления версиями. Для каждого файла, зарегистрированного в системе, она хранит полную историю изменений, причём для текстовых файлов используется эффективный алгоритм дельта-компрессии, когда хранится только последняя версия и все межверсионные изменения.                    Система позволяет также хранить версии бинарных файлов, но без использования этого механизма, то есть каждая версия бинарного файла хранится полностью.

https://www.opennet.ru/docs/RUS/RCS/

Michael Lucas FreeBSD                  <<---PDF    ст.144

Чтобы получить и заблокировать файл, следует использовать команду co -l:

# co -l rc.conf

rc.conf,v --> rc.conf

revision 1.1 (locked)

done

Когда файл захвачен и заблокирован, Только пользователь, выполнивший блокировку, может сохранять этот файл, пока он не будет разблокирован. Запустив после этой операции ls –l еще раз, можно увидеть, что права доступа к файлу снова разрешают чтение и запись, а значит, этот файл можно сохранять

16

    Математическое выражение состоит из операндов (величин над которыми производится операция) и операторов - знаков этой операции, являющимися математическими синонимами самой операции. Операторы - пример + (операция сложения), - (операция вычитания), интеграл оператор операции интегрирования, операторы сравнения (<,>,=)..и тд.


17

    Хеш-таблица — это структура данных, реализующая интерфейс ассоциативного массива, а именно, она позволяет хранить пары (ключ, значение) и выполнять три операции: операцию добавления новой пары, операцию поиска и операцию удаления пары по ключу.

    Хэш сумма – уникальный идентификатор конечного набора данных , в котором содержатся сведения о структуре данных, позволяющие проверить данные на целостность или наличие ошибок, относительно оригинала, путем сравнения хэш - сумм до и после передачи данных (файла), либо во время хранения.

https://ru.wikipedia.org/wiki/

https://ruhighload.com

https://bitsofmind

Вирт Н. АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ.pdf

18

Команла - инструкция, Декодирование - преобразование высокоуровневых инструкций в задействование простых "узлов процессора".

CISC - Complex instruction set computer — вычисления со сложным набором команд.

RISC - Reduced instruction set computer — вычисления с упрощённым набором команд 

MISK - Minimum instruction set computer — вычисления с минимальным набором команд.

VLIW - Very long instruction word — сверхдлинное командное слово.

https://ru.wikipedia.org

https://ru.wikipedia.org/wiki/X86

    Мнемоника (др.-греч. искусство запоминания), мнемоте?хника — совокупность специальных приёмов и способов, облегчающих запоминание нужной информации и увеличивающих объём памяти путём образования ассоциаций (связей): замена абстрактных объектов и фактов на понятия и представления, имеющие визуальное, аудиальное или кинестетическое представление, связывание объектов с уже имеющейся информацией в памяти различных типов модификации для упрощения запоминания.

https://ru.wikipedia.org    

.kshrc

https://www.unix.com/unix-for-dummies-questions-and-answers

https://www.phcomp.co.uk/Tutorials/Unix-And-Linux/Bash-and-Korn

add the following lines to the bottom of your .kshrc file in your $HOME directory:

set -o emacs 

alias __A=$(print '\0020') # ^P = up = previous command

alias __B=$(print '\0016') # ^N = down = next command

alias __C=$(print '\0006') # ^F = right = forward a character

alias __D=$(print '\0002') # ^B = left = back a character

alias __H=$(print '\0001') # ^A = home = beginning of line

Оболочка операционной системы или shell — интерпретатор команд операционной системы, обеспечивающий интерфейс для взаимодействия пользователя с функциями системы.

    В общем случае различают оболочки с двумя типами интерфейса для взаимодействия с пользователем: текстовый пользовательский интерфейс (TUI) и графический пользовательский интерфейс (GUI). Командный интерпретатор:

    Для обеспечения интерфейса командной строки в операционных системах используются командные интерпретаторы, которые могут представлять собой самостоятельные языки программирования с собственным синтаксисом и отличительными функциональными возможностями. Из командных оболочек(языков командных интерпретаторов) UNIX наиболее извесны bash, csh, ksh, zsh отличающиеся синтаксисом управляющих конструкций и поведением переменных.

    Командный интерпретатор исполняет команды своего языка, заданные в командной строке или поступающие из стандартного ввода или указанного файла.В качестве команд интерпретируются вызовы системных или прикладных утилит, а также управляющие конструкции. Кроме того, оболочка отвечает за раскрытие шаблонов имен файлов и за перенаправление и связывание ввода-вывода утилит. В совокупности с набором утилит оболочка представляет собой операционную среду, язык программирования и средство решения как системных, так и некоторых прикладных задач, в особенности автоматизации часто выполняемых последовательностей команд.

    Многие пользователи и разработчики программного обеспечения пользуются для автоматизации часто выполняемых последовательностей команд операционной системы интерпретируемыми языками программирования, например, Perl или Python.

19

.....настанет день! и мозг мыслителя искусный мыслителя искуственно создаст. 

                                                              Гете. Фауст. II часть (1774-1831г. - угар эпохи "просвещения")

20

    Последовательность из одного или более имен файлов, разделенных слешем, образует строку пути к файлу. Эта строка может также начинаться с символа слеша, и тогда она называется строкой абсолютного пути, если нет — строкой относительного пути. Относительные пути начинаются от текущего каталога. 

    Имя корня файловой системы (/) — особый случай строки абсолютного пути, которая не содержит ни одного имени файла. Cимвол / означает, что путь начинается с корневого каталога, то есть путь дает абсолютное положение файла (absolute pathname). Путь, который не начинается с символа /, называется относительным путем(relative pathname) и задает маршрут к файлу от текущего рабочего каталога(current working directory) пользователя.

Сервер приложений

    Сервер приложений, общее наименование среднего звена в трехуровневой клиент-серверной архитектуре 

    ( Клиент -> Сервер Приложений -> Сервер БД ).

Отсюда вывод, Apache httpd + ( php | perl | jetty ) и Apache Tomcat, являются серверами приложений, так как выполняют свою роль, посредника между клиентом и сервером БД.

    Собственно тут стоит обратить внимание на то, зачем вообще было введено понятие сервера приложений, какие задачи он решает, понять так сказать его сущность, через его функции =)

    Сервер приложений - это система управления и распределения ресурсов приложений.

Приложение (или веб-приложение) - скрипт или нативный код, предоставляющий ограниченный набор функциональности для конечного пользователя, например, система поиска или галерея.

    Сервер приложений это набор физического и программного обеспечения, которое способно обеспечить доступ клиентов к программам, выполняющихся непосредственно на серверном оборудовании. По сути это некий комплект, к которому можно получить доступ при помощи специальных API и обеспечить не только вывод каких-либо данных, но и оптимизировать исполнение программного кода на любых устройствах.

21

РМД Реляционная модель данных

    Логическая модель данных, прикладная теория построения баз данных, которая является приложением к задачам обработки данных таких разделов математики, как теория множеств и логика первого порядка. На реляционной модели данных строятся реляционные базы данных.

Использование реляционных баз данных было предложено доктором Коддом из компании IBM в 1970 году.

    Для работы с реляционными БД применяют реляционные СУБД.(Реляционная система управления базами данных (РСУБД), реже — система управления реляционными базами данных (СУРБД) — СУБД, управляющая реляционными базами данных.)

    Термин «реляционный» означает, что теория основана на математическом понятии отношение (relation). В качестве неформального синонима термину «отношение» часто встречается слово таблица. Необходимо помнить, что «таблица» есть понятие нестрогое и неформальное и часто означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что РМД имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями и не могут быть ни «плоскими», ни «неплоскими».

Для лучшего понимания РМД следует отметить три важных обстоятельства:

Принципы реляционной модели были сформулированы в 1969—1970 годах Э. Ф. Коддом (E. F. Codd). Идеи Кодда были впервые публично изложены в статье «A Relational Model of Data for Large Shared Data Banks»[1][2], ставшей классической.

    Реляционная алгебра — замкнутая система операций над отношениями в реляционной модели данных. Операции реляционной алгебры также называют реляционными операциями.

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

Ошибка SSH говорящая о том,что поменялись ключи SSH, например вы переставляли удаленный хост с тем же именем, но в вашей домашней дирректории есть папка .ssh  с файлом known_hosts и орентируясь на этот файл вам сообщают; Someone could be eavesdropping on you right now (man-in-the-middle attack)! ......выход простой удалить файл(можно конечно удалить только запись), и тогда; Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

#Authentication:

PermitRootLogin    without-password 

** по умолчанию, значение может быть without-password или prohibit-password — оно разрешает вход для root средствами GSSAPI (не парольной аутентификации), например, смарт-карты или отпечатка пальца. .....поставить PermitRootLogin yes или разрешить только определенным пользователям;

PermitRootLogin no

AllowUsers <....users-login.....>

IP 

А это "старый добрый ifconfig" . установить который в Linux можно с пакетом net-tools: #  apt install net-tools

# ifconfig        без аргументов отобразит все подробности об активных интерфейсах

# ifconfig -a     отобразит информацию обо всех активных или неактивных сетевых интерфейсах

# ifconfig ethØ     использование имени интерфейса в качестве аргумента покажет его детали

# ifconfig ethØ up или ifup ethØ     активирует сетевой интерфейс, если он не находится в активном состоянии 

# ifconfig ethØ down или ifdown ethØ       деактивирует указанный сетевой интерфейс

# ifconfig ethØ xxx.xxx.xxx.xxx       установит IP-адрес для интерфейса eth0:

# ifconfig ethØ netmask 255.255.255.224      установит маску 

# ifconfig ethØ broadcast xxx.xxx.xxx.xxx     устанавливает широковещательный адрес

# ifconfig eth0 172.16.25.125 netmask 255.255.255.224 broadcast 172.16.25.63    установит и маску и broadcast

# ifconfig ethØ mtu 1000      установит mtu

# ifconfig ethØ promisc       установит Promiscuous режим

# ifconfig ethØ -promisc      отключит Promiscuous режим

# ifconfig ethØ hw ether AA:BB:CC:DD:EE:FF      изменить MAC-адрес

# ifconfig ethØ:Ø 172.16.25.127    fconfig позволяет вам настраивать дополнительные сетевые интерфейсы,  используя функцию псевдонимов "alias", или проще назначить интерфейсу   еще один адрес, новый адрес должен использовать ту же маску подсети.(или так, следуя модным тенденциям: ip addr add x.x.x.x/24 dev eth0)

# ifconfig ethØ:Ø down       удалить адрес "alias"

Псевдонимы устройств — это виртуальные устройства с одним физическим оборудованием и разными IP-адресами, то есть виртуальное сетевое устройство и как любое виртуальное устройство оно реализовано поверх реального, обычно они представлены в виде названия устройства, за которым следует двоеточие и число (например, eth0:1). Они полезны в случаях, когда вы хотите назначить компьютеру несколько IP-адресов, но у вас всего одна сетевая плата. Если вы определяете для Ethernet-устройства псевдоним, ни для этого устройства, ни для псевдонима, нельзя  использовать DHCP , только статический IP адрес.            https://www.dmosk.ru/miniinstruktionshttp://rus-linux.net/ ;   http://michael-borisov.com

Для использования устройства после "reboot" редактируются соответствующие системе/дистрибютиву конфигурационные файлы определяющие настройку сети типа:

# vim /etc/network/interfaces

iface eth0:0 inet static 

address x.x.x.x 

netmask x.x.x.x 

broadcast x.x.x.x

gateway  x.x.x.x    

https://packetpushers.net/linux-ip-command-ostensive-definition/

https://www.opennet.ru/man=ip

СИНТАКСИС:     ip [опции] объект команда [параметры]

    опции  — глобальные настройки, которые сказываются на работе всей утилиты независимо от других аргументов, их указывать необязательно.

Все остальные опции - ярлыки опции -f:

    объект - устройство, интерфейс, с которым будем работать или о котором будем выведена информация.

.......и тд.

Во время ввода имя объекта может быть сокращено до одной буквы. При неоднозначности используется алфавитный порядок. Например, ip a show, расшифровывается как ip address show. Тогда как в ip r show, r - означает route.

    команды - какое-либо действие с объектом.

add, change, del или delete, flush, get, list или show, monitor, replace, restore, save, set, и update.

Если команда не задана, по умолчанию используется show. Так же поддерживается сокращение и в большинстве случаев для выполнения нужного действия достаточно нескольких символов. Но алфавитный порядок соблюдается не всегда. 

    параметры -

Параметры зависят от объекта и указанной команды:

..........и тд.

ПРИМЕРЫ: 

IP LINK

ip link show  — отобразить состояние всех сетевых интерфейсов

ip l sh  — то же самое

ip ll  — то же самое

ip l  — то же самое

ip link show eth0  — отобразить состояние eth0

ip link list up  — отобразить статус всех включенных интерфейсов

ip link set eth1 up  — включить eth1

ip link set eth1 down  — выключить eth1

IP NEIGBOUR

ip neigh show  — показать все записи ARP

ip n sh  — то же самое

ip n l  — то же самое

ip n  — то же самое

ip neigh show dev eth0  — посмотреть все ARP записи для eth0

ip neigh flush  — удалить все ARP записи

ip ne fl dev eth0  — удалить все ARP записи для eth0

ip nei add 1.1.1.13 lladdr AA:BB:CC:DD:EE:FF dev eth0  — добавить ARP запись для определенного IP адреса.

ip n del 1.1.1.13 dev eth0  — удалить все записи для указанного адреса

IP ADDRESS

ip address show  — показать все ip адреса и их интерфейсы

ip a sh  — то же самое

ip a list  — то же самое

ip a - то же самое

ip a l permanent  — отобразить только статические ip адреса

ip a l dynamic  — отобразить только динамические ip адреса

ip addr add 1.1.1.13/24 dev eth0  — установить ip адрес для интерфейса eth0

ip addr del 1.1.1.13/24 dev eth0  — удалить ip адрес интерфейса eth0

ip add flush dev eth0  — удалить все ip адреса интерфейса eth0

IP ROUTE

ip r sh  — показать все маршруты в таблице маршрутизации

ip route show table nnn  — отобразить все маршруты из таблицы 255

ip route get 10.10.20.0/24  — отобразить маршрут к этой сети

ip route get 10.10.20.0/24 from 192.168.12.9  — отобразить маршрут к этой сети от указного интерфейса.

ip route add 10.10.20.0/24 via 192.168.50.100  — создать маршрут

ip route delete 10.10.20.0/24  — удалить маршрут.

ip route del 10.10.20.0/24 via 192.168.50.100  — удалить маршрут.

ip route add default via 192.168.50.100  — создать маршрут по умолчанию.

ip route add 10.10.20.0/24 dev eth0  — создать маршрут к указной сети.

ip route add table nnn 10.10.20.0/24 dev eth0  — создать маршрут в специальной таблице роутинга.

ip route add blackhole 10.10.20.0/24 dev eth0  — создать blackhole маршрут.

ip route add unreachable 10.10.20.0/24 dev eth0  — создать unreachable маршрут.

# ip -4 -o a show lxcbr0

3: lxcbr0    inet 192.168.0.10/24 scope global lxcbr0

 valid_lft forever preferred_lft forever

3: lxcbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

    link/ether 00:16:3e:00:00:00 brd ff:ff:ff:ff:ff:ff

    inet 192.168.0.10/24 scope global lxcbr0

       valid_lft forever preferred_lft forever

    inet6 fe80::216:3eff:fe00:0/64 scope link 

       valid_lft forever preferred_lft forever

Связать несколько сетевых интерфейсов посредствам моста (bridge-utils)

Установить apt-get install bridge-utils

Создать brctl addbr br0

Включить spaning tree brctl stp br0 on

Сбросить настройки сетевых интерфейсов и выключить

    ifconfig eth0 0.0.0.0 down

    ifconfig eth1 0.0.0.0 down

Создаем сетевой мост из интерфейсов, количество теоретически может быть ..наверно любым, это вроде как по сути коммутатор..... вернее "однопотоковый коммутатор" , в отличии от многопортового прозрачного бриджинга switches (сетевого коммутатора) и все они способны объединять разные сегменты сети не зависимым от какого либо протокола способом.

    brctl addif br0 eth0

    brctl addif br0 eth1

Поднимаем интерфейсы, и мост вместе с ними

    ifconfig eth0 up

    ifconfig eth1 up

    ifconfig br0 up

Все это проработает ровно до перезагрузки, по этому, указанные команды можно добавить в rc.local чтобы они выполнялись при старте системы.

Виртуальный сетевой интерфейс

Все TCP/IP реализации поддерживают loopback механизмы, которые реализуют виртуальный сетевой интерфейс исключительно программно и не связаны с каким-либо оборудованием, но при этом полностью интегрированы во внутреннюю сетевую инфраструктуру компьютерной системы. Любой трафик, который посылается компьютерной программой на интерфейс loopback, тут же получается тем же интерфейсом. 

loopback принято называть петлевым интерфейсом, отсюда и его абривеатура это: lo или loØ, в целом, петлевые интерфейсы используются для обмена данными между процессами на одном компьютере или управляемом сетевом устройстве. Проверяя работу петлевого интерфейса (ping 127.0.01) мы проверяем правильность (целостность) установки протокола TCP/IP.

Internet Protocol специфицирует сеть loopback: в IPv4 это сеть с префиксом 127.0.0.0/8 (RFC 5735). Наиболее широко используемый IP адрес в механизмах loopback — 127.0.0.1. В IPv4, в него также отражается любой адрес в пределах от 127.0.0.0 до 127.255.255.255. IPv6 определяет единственный адрес для этой функции — 0:0:0:0:0:0:0:1/128 (также записывается как ::1/128) (RFC 4291). Стандартное, официально зарезервированное, доменное имя для этих адресов — localhost (RFC 2606). На системах Unix интерфейс loopback обычно имеет имя lo или lo0. Интерфейс loopback имеет несколько путей применения. Он может быть использован сетевым клиентским программным обеспечением, чтобы общаться с серверным приложением, расположенным на том же компьютере. То есть если на компьютере, на котором запущен веб-сервер, указать в веб-браузере URL http://127.0.0.1/ или http://localhost/, то он попадает на веб-сайт этого компьютера. Этот механизм работает без какого-либо активного подключения, поэтому он полезен для тестирования служб, не подвергая их безопасность риску, как при удаленном сетевом доступе. Подобным образом, пингование адреса loopback — это основной тест функционирования IP стека в операционной системе.

Пакеты, высланные в IP сеть с начальным адресом, принадлежащим к loopback-интерфейсу, могут вызвать ряд проблем для устаревших сетевого ПО или ПО с ошибками. Такие пакеты известны как Марсианские пакеты?![1]. Спецификация Internet Protocol говорит, что такие пакеты не должны передаваться дальше хоста, и должны быть уничтожены, если будут получены сетевым интерфейсом (RFC 4213).

Одно примечательное исключение для использования сетевых адресов loopback (127.0.0.0/8) — это их использование в MPLS (мультипротокольная коммутация по меткам). Определяющая маршрут следования данных технология поиска ошибок, в которой свойство loopback — отсутствие маршрута, дает возможность избежать доставки неисправного пакета конечным пользователям.

TUN /TAP

https://www.hippolab.ru/virtualnyy-setevoy-interfeys-v-linux-tap-vs-tun

В терминологии компьютерных сетей, TUN и TAP — виртуальные сетевые драйверы ядра системы. Они представляют собой программные сетевые устройства, которые отличаются от обычных аппаратных сетевых карт.

TAP эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. TUN (сетевой туннель) работает на сетевом уровне модели OSI, оперируя IP пакетами. TAP используется для создания сетевого моста, тогда как TUN для маршрутизации.

Пакет, посылаемый операционной системой через TUN/TAP устройство обрабатывается программой, которая контролирует это устройство. Получение данных происходит через специальный файловый дескриптор, таким образом программа просто считывает данные с файлового дескриптора. Сама программа также может отправлять пакеты через TUN/TAP устройство выполняя запись в тот же файловый дескриптор. В таком случае TUN/TAP устройство доставляет (или «внедряет») такой пакет в сетевой стек операционной системы, эмулируя тем самым доставку пакета с внешнего устройства.

Декомпозиция

Декомпозиция — разделение целого на части, научный метод, использующий структуру задачи и позволяющий заменить решение одной большой задачи решением серии меньших задач, пусть и взаимосвязанных, но более простых.

Декомпозиция, как процесс расчленения, позволяет рассматривать любую исследуемую систему как сложную, состоящую из отдельных взаимосвязанных подсистем, которые, в свою очередь, также могут быть расчленены на части. В качестве систем могут выступать не только материальные объекты, но и процессы, явления и понятия.

Funkcionalnye-urovni-informacionnoj-sistemy

Edge device

Пограничное устройство - это устройство, которое обеспечивает точку входа в базовые сети предприятия или поставщика услуг.  Маршрутиризатор - пример Edge device (ёж)

22

23

Поле класса или атрибут (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, описание которой создает программист при создании класса. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса.

https://coderoad.ru/

https://newobj.ru/oop/chapter.php?n=2-5

Ansible

https://www.8host.com/blog/kak-rabotat-s-ansible

https://tproger.ru/translations/ansible-how-to-use/

https://habr.com/ru/post

https://wiki.merionet.ru/servernye-resheniya/-ansible/

https://selectel.ru/blog/sistema-upravleniya-konfiguraciej-ansible/

https://docs.ansible.com/ansible-tower/latest

https://habr.com/ru/company/pixonic/blog/Ansibleworks AWX

https://techexpert.tips/ru/ansible-ru/ansible-awx

https://setiwik.ru/ansible-awx-17-1-0-na-ubuntu-20-04/     <-----------------

https://www.ansible.com/awx-project-faq

https://github.com/ansible-semaphore/semaphore/wik...

https://github.com/vstconsulting/polemarch/

netplan на Ubuntu 18.04

Как отключить netplan на Ubuntu 18.04 и вернуть networking. Вы можете отказаться от netplan еще на этапе установки ОС. Во время зашрузки GRUB установочного диска нажмите F6, а затем ‘e’ (для редактирования строки запуска) и добавьте     netcfg/do_not_use_netplan=true   https://disnetern.ru/disable-netplan-ubuntu/

REST API

REST 

(Representational State Transfer — «передача состояния представления») (RESTful - для веб-служб, построенных с учётом REST )  - общие принципы организации взаимодействия приложения/сайта с сервером посредством протокола HTTP.

https://qna.habr.com/

REST API - это широкое понятие. Нужно сначала понять что такое REST & API?

- API - программный интерфейс для общения программ

- REST - это интерфейс общения через HTTP протокол

Далее если смотреть на REST API есть 3 основных подтипа:

- REST API JSON

- REST API XML

- REST API GraphQL

Это все разные способы взаимодействия. Когда то был популярен REST API XML типа SOAP Сегодня популярен REST API JSON И набирает популярность REST API GraphQL Есть более подробный гайд тут https://bizzapps.ru/b/rest-api/

Snap-пакет

https://ru.wikipedia.org/wiki/Snappy

https://pingvinus.ru/note/snap

Snap-пакет — это пакет, который помимо готовой сборки самого приложения, включает в себя все необходимые зависимости и может работать (почти) в любом дистрибутиве Linux. Пакетная система Snap была созданная компанией Canonical и изначально появилась в дистрибутиве Ubuntu Linux. Ее смысл заключается в том, что в пакет с приложением входит полный набор компонентов, необходимых для запуска данного приложения. Такие пакеты можно устанавливать в систему не заботясь о зависимостях, так как все зависимости уже включены в пакет.

****Canonical — частная британская компания, основанная Марком Шаттлвортом для развития и популяризации проектов свободного программного обеспечения, прежде всего — Linux-дистрибутива Ubuntu.

Alpine Linux

https://losst.ru/ustanovka-alpine-linux       https://linuxvsem.ru/ustanovka-alpine-linux

https://ru.bmstu.wiki/Alpine_Linux   <--------------

https://ru.wikipedia.org/wiki/Alpine_Linux

https://habr.com/ru/company/digdes/

https://alpinelinux.org/

WiFi с wpa2 через консоль в linux-Unix

https://linux-notes.org/podklyuchenie-k-wifi-s-wpa2-cherez-konsol-v-linux-unix/

http://rus-linux.net/MyLDP/consol/wifi-from-command-line.html

http://blog.sedicomm.comkak-podklyuchit-wi-fi-ispolzuya-terminal

http://rus-linux.net/nlib.php?name=/MyLDP/lvs/wifi/nastroika-wifi

iw - позволяет настроить и показать текущие настройки беспроводной сети

iwlist - получить более подробную информацию от беспроводного интерфейса

iwlist [интерфейс] scanning

iwlist [интерфейс] frequency

iwlist [интерфейс] rate

iwlist [интерфейс] keys

iwlist [интерфейс] power

iwlist [интерфейс] txpower

iwlist [интерфейс] retry

iwlist [интерфейс] event

iwlist [интерфейс] auth

iwlist [интерфейс] wpakeys

iwlist [интерфейс] genie

iwlist [интерфейс] modulation

iwlist --help

iwlist --version 

man wireless(7) - беспроводные инструменты (Wireless Tools) и беспроводные расширения (Wireless Extensions)

man iwconfig(8) - настроить беспроводной сетевой интерфейс

man iwevent(8) - отобразить события беспроводного соединения генерируемые драйверами и изменением настроек

man iwgetid(8) - сообщение ESSID, NWID или AP/Cell адреса беспроводной сети

man iwlist(8) - получить более подробную информацию от беспроводного интерфейса

man iwpriv(8) - настроить дополнительные (частные) параметры беспроводного сетевого интерфейса

man iwspy(8) - получить статистику беспроводного соединения от конкретных узлов

man wpa_background(8) - вводная информация о защищённом доступе по Wi-Fi и IEEE 802.11i

man wpa_supplicant(8) - клиент защищённого доступа Wi-Fi и проситель IEEE 802.1X

man wpa_supplicant.conf(5) - файл конфигурации для wpa_supplicant

man wpa_cli(8) - командная строка клиента WPA

man wpa_action(8) - сценарий действий wpa_cli

man wpa_passphrase(8) - создать WPA PSK из ключевой фразы в кодировке ASCII для SSID

#iw dev

#iwconfig

#ip link set wlan0 up

#iw dev wlan0 scan | less

# ifconfig wlan0 up

# iwlist wlan0 scanning | grep -i essid

создадим файл, в котором будут лежать все  необходимые параметры нашего подключения::

# wpa_passphrase [ESSID] [pass] > /etc/wpa_supplicant/wpa_supplicant.conf


# cat /etc/wpa_supplicant/wpa_supplicant.conf

network={

ssid=ESSD

#psk=pass

psk=c3fff452f64cbfe79bhjdfsdfsf78jf333a9429c6c0654eafae3d45de307e6e4b11 }

подключится к wifi сети:

# wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B 

или запустить в фоне:

# wpa_supplicant -D wext -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B &

прописать в конфиг сети статику или dhcp 

# dhclient wlan0

$ cat /etc/network/interfaces

allow-hotplug wlan0

iface wlan0 inet static

address 192.168.1.200

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.1

dns-nameservers 8.8.8.8 

auto wlan0

PIP

https://ru.wikipedia.org/wiki/Pip

PIP Python Package Index (PyPI) — система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python.

    curl https://bootstrap.pypa.io/get-pip.py | python

    pip install some-package-name

    pip uninstall some-package-name

PIP предоставляет возможность управлять всеми пакетами и их версиями с помощью файла requirements.txt. 

Это позволяет эффективно воспроизводить весь необходимый список пакетов в отдельном окружении (например, на другом компьютере) или в виртуальном окружении. Это достигается с помощью правильно составленного файла requirements.txt и следующей команды:

    pip install -r requirements.txt

Установка некоторых пакетов для конкретных версий python, где ${version} заменяется на 2, 3, 3.6, и т. д.:

    pip${version} install some-package-name

Очистка

Мониторинг

 # cd /# du -h --max-depth=1

286G ./media

8,0K ./mnt

77G ./Data

6,2M ./lib32

6,6G ./root

..........

# cd /var

# du -h --max-depth=1

156M ./cache

2,0M ./NX

4,0K ./unicornscan

24K ./www

68K ./spool

6,1M ./backups

1,1G ./lib

321M ./log

4,0K ./local

4,0K ./opt

248K ./mail

52K ./tmp

1,5G .

# df -k

Filesystem     1K-blocks      Used Available Use% Mounted on

udev             3968652         0   3968652   0% /dev

tmpfs             801988      1708    800280   1% /run

/dev/sda7       39605776  34883416   2687520  93% /

tmpfs            4009928    165912   3844016   5% /dev/shm

tmpfs               5120         4      5116   1% /run/lock

/dev/sda6      129684052  98578128  24475268  81% /Data

/dev/sda5      351087612 207906260 143181352  60% /media/dell

overlay         39605776  34883416   2687520  93% /var/lib/docker/overlay2/fe925bc791afbc1799c28ecc0da7654448f54f28393b2c776bbe73991db4dffd/merged

tmpfs             801984       120    801864   1% /run/user/1000

# df -k | awk '$4 ~ /^[0-9]/ {if($4 < TRIGGER) print $1"\t"$4}' TRIGGER=5000000

udev 3968652

tmpfs 800280

/dev/sda7 2686728

tmpfs 3846004

tmpfs 5116

overlay 2686728

tmpfs 801864

Список доступных обновлений от apt без обновления системы:

$ apt-get -s upgrade | awk '/[0-9]+ upgraded,/ {print $1 " package updates are available"}'

1081 package updates are available


sudo apt list                               список всех пакетов

sudo apt list --upgradable        список пакетов, которые могут быть обновлены в системе

sudo apt update && sudo apt upgrade список всех пакетов в системе

dpkg-query -l                              

dpkg-query -f '${binary:Package}\n' -W список установленных пакетов

dpkg --get-selections | grep -v deinstall

dpkg --get-selections | grep -v deinstall | grep <пакет>

apt list --installed

apt list --installed | grep <пакет>

sudo apt-get install --only-upgrade "chromium" обновить отдельный пакет

sudo apt-get install --reinstall <пакет> переставить пакет

Очистить файлы конфигурации от удаленных пакетов в системах на базе Debian 

$ sudo aptitude purge `dpkg --get-selections | grep deinstall | awk '{print $1}'`

Удалить неиспользуемые пакеты из кэша

sudo apt-get autoclean

Очистка кэша в Ubuntu, утилиты apt:

sudo apt-get clean

Удаление ненужных зависимостей:

sudo apt-get autoremove

https://losst.ru/kak-udalit-paket-ubuntu

Очистка старых ядер:     https://sysadmin.pm/remove-old-kernels-debian-ubuntu/

# dpkg --list | grep linux-image

# apt-get --purge remove linux-image-XXXX

APT   APT-GET

http://blog.sedicomm.com/apt-get-i-apt-cache-dlya-upravleniya-paketami/

https://system-admins.ru/primery-komand-apt-ubuntu-debian-linux/

Linux Debian - unmet dependencies

$ sudo apt-get autoclean

$ sudo apt-get -f install

$ sudo dpkg --configure -a

$ sudo apt-get -f install

$ sudo apt-get -u dist-upgrade

or try "aptitude" instead of "apt-get"

$ dpkg --get-selections | grep -v deinstall | grep libswscale5

libswscale5:amd64 install

$ apt list --installed | grep libswscale5

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libswscale5/kali-rolling,now 7:4.3.2-0+deb11u2 amd64 [installed,automatic]

https://losst.ru/spisok-ustanovlennyh-paketov-debian

Какие файлы можно удалить при нехватке места на диске Linux    https://zalinux.ru/?p=3047

1. Удаление временных файлов

Файлы в папке /tmp/ будут удалены в любом случае при следующей перезагрузки системы. То есть с одной стороны их можно удалить достаточно безболезненно:

sudo rm -rf /tmp/*

НО: может быть нарушена работа программ, которые запущены в настоящее время и которые сохранили какие-то данные в папку /tmp/.

2. Удаление файлов кэширования

В директории /var/cache/ много поддиректорий, которые можно удалить практически безболезненно  (данные утеряны не будут, а программы создадут новые файлы кэширования).  Эта директория вызывает особый интерес, поскольку на некоторых системах кэши разрастаются на гигабайты и десятки гигабайт. Иногда поиск проблемной директории в /var/cache/ может окончательно решить ситуацию с нехваткой места на диске.

Для удаления кэша шрифтов: sudo rm -rf /var/cache/fontconfig/

Для удаления кэша установочных пакетов (на Debian, Linux Mint, Ubuntu, Kali Linux и их производных): sudo rm -rf /var/cache/apt/

Для удаления кэша установочных пакетов (на Arch Linux, BlackArch и их производных):

sudo rm -rf /var/cache/pacman/

Удаление кэша справочных страниц: sudo rm -rf /var/cache/man/

Вы можете продолжить поиск больших кэшей применимо к программному обеспечению, установленному на вашей системе. Например, это могут быть кэши веб-сервера, прокси-сервера и т. д.

3. Удаление логов (журналов)

В этой папке (/var/log/) можно удалить практически все файлы, но старайтесь сохранить структуру папок, поскольку некоторые приложения после удаления здесь папки не в состоянии создать её второй раз…

На веб-серверах могут разрастись слишком сильно журналы веб-сервера. Для удаления логов Apache на Debian, Linux Mint, Ubuntu, Kali Linux и их производных:

sudo rm -rf /var/log/apache2/*

Для удаления логов Apache на Arch Linux, BlackArch и их производных:

sudo rm -rf /var/log/httpd/*

Чтобы сервер начал создавать новые файлы журналов и записывать в них, нужно перезапустить службу веб-сервера. В зависимости от интенсивности использования системы, накопленные журналы могут занимать гигабайты. В зависимости от системы файлы могут называться по-разному, более точный анализ рекомендуется выполнять с помощью утилиты ncdu: sudo ncdu /var/log/

4. Очистите корзину

Этот совет больше для настольных систем. Файлы, которые вы удалили в графическом интерфейсе рабочего стола, попадают в папку ~/.local/share/Trash/files/, вы можете проанализировать их и при желании удалить: ncdu ~/.local/share/Trash/files/

Trash-cli — инструмент Trashcan 

Установить утилиту: $ sudo apt install trash-cli

Чтобы удалить конкретный файл:

$ trash-put file1

Список всех файлов перемещенных в корзину:

$ trash-list

Поиск файла в корзине:

$ trash-list | grep file

Восстановление удаленного файла:

$ trash-restore

Удаление всех файлов из корзины:

$ trash-empty

Удаление только тех файлов, которые были удалены больше, чем <days> назад:

$ trash-empty <days>

Удаление файлов, соответствующих определенному шаблону(кавычки обязательны):

$ trash-rm \*.txt

Еще один способ очистить содержимое файла — перенаправить на него команду null следующим образом (перенаправление работает "на уничтожение", перенаправляет пустой поток, перезаписывая файл):

: > file

где двоеточее = true, в большинстве оболочек, сработает только перенаправление без указания true:

> file  

Следующий способ использовать команду tee:

# cat /dev/null | tee /var/log/messages /var/log/mail.err /var/log/syslog и т.д.



5. Удаление ненужных файлов исходного кода заголовков ядра

Следующее актуально только для Debian, Linux Mint, Ubuntu, Kali Linux и их производных. Проверьте папку /usr/src/, там будут подпапки вида linux-headers- - большинство из них можно удалить — оставьте только ту, номер которой соответствует текущему ядру системы — обычно это самый последний номер выпуска (uname -a).

# dpkg --list | grep linux-image

# apt-get --purge remove linux-image-XXXX

6. Удаление осиротевших пакетов

Осиротевшие пакеты — это те пакеты (программы), которые устанавливались в качестве зависимостей для  других программ. Но по разным причинам они больше не нужны: или удалена программа, которая их использовала, или для той программы они перестали быть зависимостями после обновления программы. На Debian, Linux Mint, Ubuntu, Kali Linux и их производных удалить ненужные пакеты можно следующим образом:

sudo apt autoremove

Для Debian и производных предыдущая команда абсолютно безопасна. В Arch Linux и производных список осиротевших пакетов можно увидеть следующим образом:

pacman -Qdt

Прежде чем переходить к их автоматическому удалению, настоятельно рекомендуется изучить этот список! Для рекурсивного удаления сироток и их конфигурационных файлов в Arch Linux и производных:

sudo pacman -Rns $(pacman -Qtdq)

Если осиротевшие пакеты не были найдены, pacman завершит работу с ошибкой: ошибка: не задано целей  (для справки используйте -h). Это ожидаемо, поскольку pacman -Rns не получил аргументов.

7. Очистка журналов systemd

Со временем, в некоторых системах логи системы начинают занимать гигабайты на жёстком диске. Просмотреть журналы и освободить место вы можете с помощью команды journalctl, подробности смотрите в статье «Как использовать journalctl для просмотра системных логов Linux». Чтобы увидеть, сколько место занимают журналы, выполните:

journalctl --disk-usage

Чтобы удалить все записи, оставив только записей на 100 мегабайт, выполните:

journalctl --vacuum-size=100M

Либо для удаления всех записей в системном журнале, старше одной недели:

journalctl --vacuum-time=1weeks


      Файлы не удалять!

cat /dev/null > /var/log/kern.log

cat /dev/null > /var/log/syslog

cat /dev/null > /var/log/syslog1

cat /dev/null > /var/log/messages  ......и тд.


$ cat > logclean

#!/bin/bash

cat /dev/null > /var/log/kern.log

cat /dev/null > /var/log/syslog

cat /dev/null > /var/log/syslog1

cat /dev/null > /var/log/messages

cat /dev/null > /var/log/mail.err

cat /dev/null > /var/log/mail.info

cat /dev/null > /var/log/mail.log

cat /dev/null > /var/log/mail.warn

cat /dev/null > /var/log/user.log

cat /dev/null > /var/log/deamon.log

cat /dev/null > /var/log/fontconfig.log

cat /dev/null > /var/log/auth.log

cat /dev/null > /var/log/boot.log

^C

$ chmod +x logclean

$ su

Password: 

# ./logclean 

#cat cleaner

#!/bin/sh

# cleaner

usage ()

{

echo "Usage: `basename $0` -b -f -d  -h [-bfdh]"

echo "-b Удалеие неиспользуемых пакетов из кэша"

echo "-f Очистка кэша утилиты apt"

echo "-d Удаление не нужных зависимостей"

echo "-h Удаление логов"

exit 1

}

if [ $# = 0 ]; then usage; fi


while getopts :bfdh OPTION; do

case $OPTION in

    b) echo      Удаление неиспользуемых пакетов из кэша:; `apt-get -y autoclean` ;;

    f) echo      Очистка кэша, утилиты apt:; `apt-get -y clean` ;;

    d) echo      Удаление ненужных зависимостей:; `apt-get -y autoremove` ;;

    h) echo      Удаление логов:; 

                                 cat /dev/null > /var/log/auth.log

                                 cat /dev/null > /var/log/kern.log

                                 cat /dev/null > /var/log/syslog

                                 cat /dev/null > /var/log/syslog1

                                 cat /dev/null > /var/log/messages

                                 cat /dev/null > /var/log/mail.err

                                 cat /dev/null > /var/log/mail.info

                                 cat /dev/null > /var/log/mail.log

                                 cat /dev/null > /var/log/mail.warn

                                 cat /dev/null > /var/log/user.log

                                 cat /dev/null > /var/log/deamon.log

                                 cat /dev/null > /var/log/fontconfig.log

                                 cat /dev/null > /var/log/auth.log

                                 cat /dev/null > /var/log/boot.log ;;

   \?) usage ;;

esac

done

Простой скрипт с использованием getops

-b Удалеие неиспользуемых пакетов из кэша

-f Очистка кэша утилиты apt

-d Удаление не нужных зависимостей

-h Удаление логов


# ./cleaner

Usage: cleaner -b -f -d  -h [-bfdh]

-b Удалеие неиспользуемых пакетов из кэша

-f Очистка кэша утилиты apt

-d Удаление не нужных зависимостей

-h Удаление логов


# ./cleaner -bfdh

Удаление неиспользуемых пакетов из кэша:

./cleaner: 16: Reading: not found (пустой)

Очистка кэша, утилиты apt:

Удаление ненужных зависимостей:

Удаление логов: 

 Alt+F2  'r': 'restart': перезапустить оболочку

 Alt+F2 'rt': перезагрузить тему оболочки

 Alt+F2 'lg': Looking Glass эквивалент DevTools в оболочке gnome в браузере.

du цветной

# cd /var

# du -x --max-depth=1|sort -rn|awk -F / -v c=$COLUMNS 'NR==1{t=$1} NR>1{r=int($1/t*c+.5); b="\033[1;31m"; for (i=0; i<r; i++) b=b"#"; printf " %5.2f%% %s\033[0m %s\n", $1/t*100, b, $2}'|tac

  0.00%  local

  0.00%  opt

  0.00%  tmp

  0.03%  NX

  0.04%  mail

  0.10%  spool

  0.16%  www

  0.33%  backups

  3.04% ### cache

 16.80% ################### log

 79.49% ######################################################################################### lib

PS: самая большая папка в Docker это: /var/lib/docker/overlay2/

$ sudo ncdu /var/lib/docker/

Подключение флешек и прочих USB-устройств к виртуальным машинам VMware Workstation

https://www.white-windows.ru/

https://altarena.ru/emulyatsiya-bios-na-virtualnyh-mashinah-vmware

https://www.top-password.com/blog/vmware-how-to-boot-a-vm-from-usb-stick/

$ ruby -v

Command 'ruby' not found, but can be installed with:

sudo snap install ruby      # version 2.7.2, or

sudo apt  install ruby

See 'snap info ruby' for additional versions.

$ uname -a

Linux 4.15.0-118-generic #119-Ubuntu SMP Tue Sep 8 12:30:01 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

$  snap info ruby

...и тут может возникнуть закономерный вопрос, а зачем надо все то, что будет описано ниже, а дело в том что это не тот путь который приведет нас к светлому будущему, кроме того, как извесно на "Ubuntu" свет клином не сходится. 

УСТАНОВКА RUBY VERSION MANAGER

Установить  cURL и gnupg2:

$ sudo apt-get install curl

$ sudo apt-get install gnupg2

Теперь нужно получить открытый ключ проекта RVM, который используется для подписи всех релизов. Переходим на оф.сайт RVM, в разделе "install our keys", копируем ключ:

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

...............................................

gpg: key 105BD0E739499BDB: public key "Piotr Kuczynski <piotr.kuczynski@gmail.com>" imported

gpg: Total number processed: 2

gpg:               imported: 2

$

It is a good practice to periodically refresh keys status to ensure none of them got revoked.  You can also add it to cron. (https://crontab.guru/)

$ gpg2 --refresh-keys 

 GnuPG (gpg-gpg2) — инструмент GNU для безопасной коммуникации и хранения данных. Он может использоваться для зашифровки данных и создания цифровых подписей. Пакет включает продвинутое средство для управления ключами и соответствует предложенному OpenPGP стандарту, описанному в RFC4880.  Пустой переходный пакет, предоставляющий символьные ссылки с gpg2 на gpg.

С использованием curl установливаем стабильную версию rvm, выполнив команду ниже:

$ curl -sSL https://get.rvm.io | bash -s stable --ruby

Downloading https://github.com/rvm/rvm/archive/1.29.10.tar.gz

* To start using RVM you need to run `source /home/user/.rvm/scripts/rvm` in all your open shell windows, in rare cases you need to reopen all shell windows 

Команда автоматически установит необходимые пакеты и инсталлирует последнюю стабильную версию rvm.

Далее как нам и советуют запускаем скрипт:.rvm/scripts/rvm при помощи source:

$ source ~/.rvm/scripts/rvm

Установливаем зависимости для установки Ruby автоматически в системе, использовать следующую команду:

$ rvm requirements

Checking requirements for ubuntu.

Requirements installation successful.

$ rvm -v

rvm 1.29.10 (latest) by Michal Papis, Piotr Kuczynski

Обновляем rvm до последней стабильной версии.   

$ rvm get stable --autolibs=enable

.....................................................

RVM reloaded!

$ usermod -a -G rvm root

Просмотреть доступные версии  Ruby:

$ rvm list known

# MRI Rubies

[ruby-]1.8.6[-p420]

[ruby-]1.8.7[-head] # security released on head

.......................................

[ruby-]2.5[.7]

[ruby-]2.6[.5]

[ruby-]2.7[.0]

ruby-head

Устанавливаем последнюю версию Ruby:

$ rvm install ruby-2.7.0

Already installed ruby-2.7.0.

To reinstall use:

    rvm reinstall ruby-2.7.0

Которая уже стоит, оказывается .............  Делаем по умолчанию:

$ rvm --default use ruby-2.7.0

Using /home/user/.rvm/gems/ruby-2.7.0 

Определить версию по умолчанию для использования. Поскольку мы можем установить одну или более разных версий Ruby, в чем и заключается сокральный смысл RVM, то необходимо  указать версию для использования по умолчанию, например: $ rvm use 2.4.0 --default

Проверяем:

$ ruby -v

ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux] 

УСТАНОВКА NODEJS

Ruby on Rails требует времени для компиляции конвейера ресурсов Rails на JavaScript. Для разработчиков на Rails в Ubuntu Linux лучше всего установить и использовать Nodejs в качестве среды выполнения Javascript. Добавляем репозиторий nodejs Node в систему:

$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -

## Installing the NodeSource Node.js 10.x repo...

..............................................................

После чего установливаем последнюю версию nodejs;

$ sudo apt install -y nodejs

$ nodejs -v

v10.22.1 

Установим если не установлено g++ , gcc и make

$ sudo apt install gcc g++ make

..........................................

make is already the newest version (4.1-9.1ubuntu1).

g++ is already the newest version (4:7.4.0-1ubuntu2.3).

gcc is already the newest version (4:7.4.0-1ubuntu2.3). 

НАСТРОЙКА RUBY GEM

RubyGems - менеджер пакетов Ruby, поставляемый в виде инструмента командной строки gem. Он автоматически устанавливается при установке Ruby в системе. Обновим gem до последней версии:

$ gem update --system

...........................................

RubyGems system software updated

$ gem -v

3.1.4

УСТАНОВКА RUBY ON RAILS

Установливаем Rails  с помощью менеджера пакетов gem ruby. Чтобы установить самую новую версию "Ruby on Rails", выполните следующую команду:

$ gem install rails

........rails after 61 seconds 40 gems installed

$ rails -v

Rails 6.0.3.3

https://rubygems.org/gems/rails/versions   <----- версии rails 

Или установите определенную версию, например:

$ gem install rails --version=5.0.2 

YARN

Yarn — это альтернативный npm-клиент для работы в качестве пакетного менеджера JavaScript, NPM - Node Package Manager (npm) — менеджер пакетов, входящий в состав Node.js.

https://web-creator.ru/technologies/webdev/yarn

По умолчанию Yarn устанавливается $ yarn --version ; 0.32 . надо обновить до версии выше 1.0:

$ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -

$ echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

deb https://dl.yarnpkg.com/debian/ stable main

$ sudo apt update 

$ sudo apt install yarn

$ yarn --version

1.22.5 

WEBPACKER

Webpacker — это gem!!:   https://medium.com/@alx_khramov/webpacker

$ rails new webpacker-example-app — webpack

.....................................

Done in 12.85s.

Webpacker successfully installed  🎉 🍰

БАЗЫ ДАННЫХ

Кроме базы данных SQLite,устанаввливаемой по умолчанию, Rails поддерживает и другие системы баз данных, включая MySQL,PostgreSQL.  Для начало посмотрим то что по умолчанию и предустановлено, то есть SQLite.

SQIite

И. тут все просто, создаем приложение (команда rails): 

$ rails new myapp_litesql

переходим во вновь созданный каталог, в нашем случае myapp_litesql, далее стандартная команда для запуска приложения rails: 

$ rails server или коротко $ rails s с указанием адреса и порта сервера далее в браузере выполняем http://192.168.1.50:8080/ (поскольку браузер на удаленной машине, а сервер на 192.168 1.50 то естественно ни каких localhost, 127.0.0.1 и 11111.1111.1111.1111 быть не может) , ....на этом собственно все и заканчивается.

$ rails new myapp_litesql

...............................................

Done in 12.15s.

Webpacker successfully installed

$ ls

myapp_litesql  webpacker-example-app

$ cd myapp_litesql

~/myapp_litesql $ 

~/myapp_litesql $ rails s -b 192.168.1.50 -p 8080

=> Booting Puma

=> Rails 6.0.3.3 application starting in development 

=> Run `rails server --help` for more startup options

Puma starting in single mode...

* Version 4.3.6 (ruby 2.7.0-p0), codename: Mysterious Traveller

* Min threads: 5, max threads: 5

* Environment: development

* Listening on tcp://192.168.1.50:8080

Use Ctrl-C to stop

http://192.168.1.50:8080/

https://losst.ru/ustanovka-ruby-on-rails-v-ubuntu-18-04

PSQL:

https://proft.me/2013/06/9/postgresql-spravochnik-po-komandam-psql-pg_dump/

https://www.oslogic.ru/knowledge/598/shpargalka-po-osnovnym-komandam-postgresql/

https://postgrespro.ru/docs/postgresql/9.6/sql-commands

MySQL

И наконец звезда реляционных баз данных MySQL сервер (как и все к чему прикоснулся " Sun Microsystems" несет на себе печать совершенства). Как и в случае с Postgre, после установки надо уделить немного времени "безопасности", тема для MySQL не тривиальная. Установка стандартная с использованием команды apt (в Ubuntu):

$ sudo apt update

$ sudo apt install mysql-server mysql-client libmysqlclient-dev 

В результате будет установлен MySQL и его библиотеки.

Попробуем зайти в MySQL:

$ mysql -u root -p

Enter password: 

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Подумав некоторое время, вдруг понимаем, что пароля для пользователя root MySQL мы НЕ ЗНАЕМ! Надо заметить, что системный root, это не root MySql, без которого большинство привелигированных запросов выполнить не получится, root MySql это пользователь MySQL имеющий определенные атрибуты, предоставляющие ему определенные права, чтобы исправит это недоразумение надо под системным root-ом зайти в оболочку и выполнить ряд запросов: 

$ sudo mysql -u root -p

Enter password: 

Welcome to the MySQL monitor.

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation

mysql>  

И выпоним следующий запрос:   /reset-mysql-root-password-using-alter-user-statement

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Gjt[fkb!';

Query OK, 0 rows affected (0.04 sec) 

Который установит/изменит пароль для пользователя root, и подтвердим изменения:

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

mysql> exit;

Bye 

Надо так же заметить, что пароли в MySQL подчинены определенным требованиям безопасности, то есть пароли типа: "1", "2" и тд, как в Postgre не проканают подробнее тут.   

$ sudo service mysql stop

$ sudo service mysql start

$ sudo service mysql status

● mysql.service - MySQL Community Server 

Проверки ради зайдем в MySQL с учетной записью базы даных, в наше случае root:

$ mysql -u root -p -h localhost

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.31-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

..........................

mysql> quit; 

Если использовать "MariaDB", то сюда:  https://www.digitalocean.com/install-mariadb

УДАЛЕННЫЙ ДОСТУП

Следующая проблема будет такой: запустив приложение и открыв браузер на удаленном хосте увидим: 

Mysql2::Error

Access denied for user 'root'@'localhost' 

Причина в том, что по умолчанию отключен удаленный доступ root (как и для всех остальных). В чем можно убедится выполнив следующие команды в оболочке SQL:

$ mysql -u root -p

Посмотрим какие базы в наличии (из любопытства)

mysql>SHOW DATABASES;  

+-------------------------+

| Database                    |

+-------------------------+

| information_schema  |

| mysql                         |

| performance_schema |

| sys                              |

+-------------------------+

4 rows in set (0.00 sec) 

Посмотреть пользователей вместе с хостами с которых им разрешено подключение:

mysql> SELECT user,host FROM mysql.user;

+---------------------+-----------+

|          user             |   host      |

+---------------------+-----------+

| debian-sys-maint | localhost |

| mysql.session      | localhost |

| mysql.sys            | localhost |

| root                      | localhost |                                                  

+---------------------+-----------+

4 rows in set (0.00 sec) 

Чтобы исправить ситуацию там же выполнить:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql>  FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

То есть предоставить право для root  заходить с любого хоста и "GRANT ALL PRIVILEGES". Проверим опять:

mysql> SELECT user,host FROM mysql.user;

+------------------+--------------+

|            user             | host      |

+------------------+--------------+

| root                       |    %         |                             %       <-----любой            

| debian-sys-maint  | localhost |

| mysql.session       | localhost |

| mysql.sys             | localhost |

| root                       | localhost |

+------------------+--------------+

5 rows in set (0.00 sec)

mysql> exit;

Bye

$

Однако и это может оказаться не достаточно, тогда для верности:

$ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

.....................................................................

42     # localhost which is more compatible and is not less secure.

43     bind-address            = 127.0.0.1        #   = 0.0.0.0  связать ВСЕ адреса

44     #     https://coderoad.ru/

Правда есть и другой способ настройки баз, и вполне возможно, что и он даст желаемый результат, как знать я не пробовал:  S sudo mysql_secure_installation

(Но по моему лучше изучить оболочку MySQL, по скольку с базами придется работать в конце концов.)

mysql_secure_installation - программа предназначеная для базовой настройки защиты вашего MySQL сервера. Обычно ее запускают сразу после установки MySQL или MariaDB на сервер. Ниже перечислены возможности программы:

https://dataenginer.ru/?p=749

УСТАНОВКА АДАПТЕРА ДЛЯ MySQL

Прежде чем приложение Rails сможет подключиться к серверу MySQL, необходимо установить адаптер MySQL. Gem:

$ gem install mysql2

Fetching mysql2-0.5.3.gem

Building native extensions. This could take a while...

Successfully installed mysql2-0.5.3

Parsing documentation for mysql2-0.5.3

Installing ri documentation for mysql2-0.5.3

Done installing documentation for mysql2 after 0 seconds

1 gem installed

$ gem -v

3.1.4

$  

Следующий шаг создание приложения;

$ cd  

$ rails new myapp_mysql -d mysql    # с базой по MySQL умолчанию

Done in 14.33s.

Webpacker successfully installed 🎉 🍰

$ ls

myapp myapp_mysql  myapp_postgre  webpacker-example-app

В результате создается каталог с именем приложения в который надо перейти и отредактировать config/database.yml

$ cd  myapp_mysql

Редактируем конф. файл нашего вновь созданного приложения:

~/myapp_mysql $ vim config/database.yml

И в разделе "default" добавляем пароль, сохраняем и выходим:

12       default: &default

13       adapter: mysql2

14       encoding: utf8mb4

15       pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

16       username: root

17       password: <пароль пользователя MySQL>

18       socket: /var/run/mysqld/mysqld.sock 

СОЗДАНИЕ БАЗЫ

Далее создаем базы:

$ rake db:create

.................................................

Created database 'myapp_mysql_development'

Created database 'myapp_mysql_test' 

Когда все настройки завершены, запустите веб-сервер puma rails, используя приведенную ниже команду:

~/myapp_mysql $ rails s -b 192.168.1.50 -p 8080

-b     bundle

-p     port

Rails будет запущен по адресу: 192.168.1.50 на 8080 порту.

=> Booting Puma

=> Rails 6.0.3.4 application starting in development 

=> Run `rails server --help` for more startup options

Puma starting in single mode...

* Version 4.3.6 (ruby 2.7.0-p0), codename: Mysterious Traveller

* Min threads: 5, max threads: 5

* Environment: development

* Listening on tcp://192.168.1.50:8080

Use Ctrl-C to stop

http://192.168.1.50:8080/

POSTGRESQL

С PostgreSQL все будет выглядеть более загадочно.  Установка стандартная с использованием команды apt (в Ubuntu):

$ sudo apt install postgresql postgresql-contrib libpq-dev -y 

После завершения установки запустите службу Postgres и разрешите ей каждый раз запускаться при загрузке системы:

$ systemctl start postgresql

$ sudo systemctl enable postgresql

$ sudo systemctl status postgresql

● postgresql.service - PostgreSQL RDBMS 

Далее зададим пароль для пользователя postgres: $ sudo passwd postgres

и создадим пользователя для установки Rails. Для этого войдите в систему от имени пользователя 'postgres' который будет создан при установке postgres: 

$ cat /etc/passwd

postgres:x:112:116:PostgreSQL administrator,,,:/var/lib/postgresql:/bin/bash

$ su - postgres

Password: ....... и запустите оболочку postgres:

postgres@ubserv:~$ psql

psql (10.14 (Ubuntu 10.14-0ubuntu0.18.04.1))

Type "help" for help.

postgres=#

Для изменения пароля postgres выполните:

postgres=# \password postgres

Enter new password: 

Enter it again: 

postgres=# 

Теперь создайте нового пользователя для установки rails - приложения, например, с именем rails_dev, с привилегией создания базы данных и паролем «aqwe123». Для этого существует формализованный  запрос:

postgres=# create role rails_dev with createdb login password 'aqwe123';

CREATE ROLE

postgres=# 

Теперь проверим все доступные роли в системе.

 postgres=# \du

                                  List of roles

 Role name |                         Attributes                                                           | Member of 

--------------+-------------------------------------------------

 postgres     | Superuser, Create role, Create DB, Replication, Bypass RLS  | {}

 rails_dev    | Create DB                                                                                  | {}

postgres=#

postgres=# \q

postgres@ubserv:~$ logout

user@ubserv:~$     

Или просмотреть список баз:

 postgres=# \l

 Список баз данных

            Имя                                 | Владелец  | Кодировка | LC_COLLATE | LC_CTYPE |     Права доступа     

---------------------------------------+-------------+----------

 myapp_postgre_development    |  rails_dev  |   UTF8        |    C.UTF-8        | C.UTF-8  | 

 postgres                                      |  postgres   |   UTF8        |    C.UTF-8        | C.UTF-8  | 

 template0                                    |  postgres   |   UTF8        |    C.UTF-8        | C.UTF-8  | =c/postgres          +

                                                     |                  |                     |                          |                  | postgres=CTc/postgres

 template1                                    |  postgres   |   UTF8        |    C.UTF-8        | C.UTF-8  | =c/postgres          +

                                                     |                   | postgres=CTc/postgres

(4 строки)

postgres=# 

На этом установка и настройка PostgreSQL завершена.

БАЗОВОЕ ПРИЛОЖЕНИЕ RAILS

Как и в случае с SQLite воспользуемся базовой командой rails, предназначенную для настройки приложения. Создадим новый проект "myapp_postgre" с базой данных по умолчанию PostgreSQL: $ rails new myapp_postgre -d postgresql 

После выполнения команды появится каталог «myapp_postgre», перейдите в этот каталог и отредактируйте файл конфигурации базы данных database.yml с помощью редактора.

$ cd myapp_postgre/

$ vim config/database.yml 

Файл содержит разделы: default, development, test и production. В разделе development раскомментируйте строки указанные ниже и измените их значение на данные, которые вы использовали для создания пользователя postgresql:

 username: rails_dev

    password: aqwe123

    host: localhost

    port 5423 

Для раздела testing (если надо) сделайте аналогичную операцию. Сохраните изменения и закройте редактор. Теперь создайте базу данных и убедитесь что нет ошибок:

$ rails db:setup

$ rails db:migrate

Когда все настройки завершены, запустите веб-сервер puma rails, используя приведенную ниже команду:

$ rails s -b 192.168.1.50 -p 8080  (rails --help)

-b     bundle

-p     port

Rails будет запущен по адресу: 192.168.1.50 на 8080 порту.

=> Booting Puma

=> Rails 6.0.3.3 application starting in development 

=> Run `rails server --help` for more startup options

Puma starting in single mode...

* Version 4.3.6 (ruby 2.7.0-p0), codename: Mysterious Traveller

* Min threads: 5, max threads: 5

* Environment: development

* Listening on tcp://192.168.1.50:8080

Use Ctrl-C to stop 

http://192.168.1.50:8080/

$ su

Password: 

# mysql -u root -p  

Enter password: 

Welcome to the MySQL monitor. 

Пользователи, Права и Пароли

https://www.shellhacks.com/ru/mysql-show-users-privileges-passwords/

Показать всех MySQL пользователей:

mysql> SELECT user FROM mysql.user;

+-------------------------+

| user                            |

+-------------------------+

| user                            |

| debian-sys-maint       |

| mysql.session            |

| mysql.sys                   |

| root                            |

+------------------------+

5 rows in set (0.00 sec)

Вывести только уникальные имена пользователей:

mysql> SELECT DISTINCT user FROM mysql.user;

+------------------------+

| user                           |

+------------------------+

| user                           |

| debian-sys-maint      |

| mysql.session           |

| mysql.sys                  |

| root                           |

+-----------------------+

5 rows in set (0.02 sec)

Права текущего MySQL пользователя:

mysql> SHOW GRANTS;

+---------------------------------------------------------------+

| Grants for root@localhost                                                   |

+---------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |

+---------------------------------------------------------------+

2 rows in set (0.00 sec)

Какие привилегии даны MySQL пользователю (ели вы не указываете значение хоста для имени пользователя, тогда MySQL в качестве хоста берет %):

mysql> SHOW GRANTS FOR 'имя_пользователя';

mysql> SHOW GRANTS FOR 'user';

+----------------------------------+

| Grants for user@%                |

+----------------------------------+

| GRANT USAGE ON *.* TO 'user'@'%' |

+----------------------------------+

1 row in set (0.00 sec) 

Количество запросов к серверу MySQL

$ echo "SHOW PROCESSLIST\G" | mysql -u root -p | grep "Info:" | awk -F":" '{count[$NF]++}END{for(i in count){printf("%d: %s\n", count[i], i)}}' | sort -n

Enter password:


$ mysql -uUser -pPassword -N -s -r -e 'SHOW PROCESSLIST' | grep -cv "SHOW PROCESSLIST" 

Enter password:


Получение информации о базах данных и таблицах  http://www.mysql.ru/man/Getting_information.html

mysql> SHOW DATABASES;

+--------------------------+

| Database                     |

+--------------------------+

| information_schema   |

| mysql                          |

| performance_schema |

| sys                              |

+-------------------------+

4 rows in set (0.00 sec)

Показать MySQL пользователей вместе с хостами с которых им разрешено подключение:

mysql> SELECT user,host FROM mysql.user;

+------------------+---------------+

| user                   |       host       |

+------------------+---------------+

| user                   |         %         |

| debian-sys-maint   | localhost |

| mysql.session        | localhost |

| mysql.sys              | localhost |

| root                       | localhost |

+------------------+---------------+

5 rows in set (0.00 sec) 

Посмотреть MySQL пользователей, их пароли и хосты:

mysql> SELECT user,host,password FROM mysql.user;

начиная с MySQL 5.7:

mysql> SELECT host, user, authentication_string FROM mysql.user;

+-----------+------------------+-------------------------------------------+

| host         |      user             |    authentication_string                     |

+-----------+------------------+-------------------------------------------+

| localhost |       root             |                                                          |

| localhost | mysql.session   | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | mysql.sys         | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |

| localhost | debian-sys-maint | *9DE64AF6A806C2E4C9712C0E3C3019FB4E36DFA2 |

| %            |          user             | *12033B78389744F3F39AC4CE4CCFCAD6960D8EA0 |

+-----------+------------------+-------------------------------------------+

5 rows in set (0.00 sec) 

Показать права, данные конкретному аккаунту в MySQL при подключении с определенного хоста:

mysql> SHOW GRANTS FOR 'имя_пользователя'@'хост';

mysql> SHOW GRANTS FOR 'root'@'localhost';

+----------------------------------------------------------------+

| Grants for root@localhost                                                   |

+----------------------------------------------------------------+

| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |

| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |

+----------------------------------------------------------------+

2 rows in set (0.00 sec) 

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.00 sec)

mysql> exit;

Bye

#

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements 

https://dev.mysql.com/doc/refman/8.0/en/validate-password-options-variables.html    <------------

https://blog.programs74.ru/how-to-resolve-mysql-error-1819/ 

Войти в оболочку MySQL и проверить активацию плагина "validate_password" заодно и всех других:

$ mysql -u root -p  

Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 5

Server version: 5.7.31-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'validate%';

+-----------------------+---------------------------+

| PLUGIN_NAME       | PLUGIN_STATUS |

+-----------------------+---------------------------+

| validate_password     |        ACTIVE           |

+-----------------------+---------------------------+

1 row in set (0.00 sec) 

Посмотреть его настройки:

 mysql> SHOW GLOBAL VARIABLES LIKE 'validate_password%';

+------------------------------------------------+--------+

| Variable_name                                        |  Value  |

+------------------------------------------------+--------+

| validate_password_check_user_name    | OFF    |

| validate_password_dictionary_file         |            |

| validate_password_length                       |    8      |

| validate_password_mixed_case_count   |    1      |

| validate_password_number_count          |    1      |

| validate_password_policy                       | MEDIUM |

| validate_password_special_char_count  |    1      |

+-----------------------------------------------+--------+

7 rows in set (0.01 sec)

Есть вероятность того, что мы его когда то отключили, но забыли об этом, тогда ответ будет таким:

mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'validate%';

Empty set (0.00 sec)

mysql> SHOW GLOBAL VARIABLES LIKE 'validate_password%';

Empty set (0.00 sec) 

Для активации плагина выполните опять:

mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';

Query OK, 0 rows affected (0.03 sec) 

Для деактивации:

mysql> UNINSTALL PLUGIN validate_password;

Query OK, 0 rows affected (0.01 sec)

mysql> exit;

Bye

$  

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Попробуем зайти в MySQL:

$ mysql -u root -p

Enter password: 

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Подумав некоторое время, вдруг понимаем, что пароля для пользователя root MySQL мы НЕ ЗНАЕМ!

Надо заметить, что системный root, это не root MySql, без которого большинство привелигированных запросов выполнить не получится, root MySql это пользователь MySQL имеющий определенные атрибуты, предоставляющие ему определенные права, чтобы исправит это недоразумение надо под системным root-ом зайти в оболочку и выполнить ряд запросов: 

$ sudo mysql -u root -p

Enter password: 

Welcome to the MySQL monitor.

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation

mysql>  

И выпоним следующий запрос

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Gjt[fkb!';

Query OK, 0 rows affected (0.04 sec) 

Который установит пароль для пользователя root, и подтвердим изменения:

mysql> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.01 sec)

mysql> exit;

Bye 

Надо так же заметить, что пароли в MySQL подчинены определенным требованиям безопасности, описаным выше.

https://stackoverflow.com-access-denied-for-user-rootlocalhost

https://dev.mysql.com/doc/refman/8.0/en/alter-user.html   <-----------

https://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html     <--------------

https://qastack.ru/programming/33467337/reset-mysql-ro    <---------- и тут!

https://www.percona.com/blog/password-in-mysql-5-7-with-plugin-auth_socket/   <------ и там


24

    Коммутативность - перестановочность

(commutativus – подвергающийся перемещению, commuto – меняю, обмениваю) – свойство нек-рых бинарных (т.е. двучленных, двуместных) логич. и математич. операций или функций, состоящее в том, что результат применения данной операции к предметам а и b, взятым в одном порядке, совпадает с результатом применения той же операции к тем же предметам, взятым в обратном порядке. К. выражается обычно формулами вида ab=ba, в к-рых вместо стоят знаки рассматриваемых операций.Широко известны законы К. для сложения и умножения в обычной арифметике: а+b = b+а и а·b=b·а или, говоря словами, "при перестановке слагаемых (сомножителей) сумма (соответственно произведение) не меняется".

    Транзитивность (от лат. transitivus — переходный), одно из свойств логического отношения величин. Отношение а * b называется транзитивным, если из а * b и b * c вытекает, что а * c. Например, отношение равенства (а = b) транзитивно, так как из а = b и b = с вытекает а = с. Аналогично, транзитивным является отношение <<a больше b>> (а > b). Отношение же <<a не равно b>> (a ¹ b) не транзитивно, так как из a ¹ b и b ¹ c ещё не вытекает a ¹ c. В геометрии транзитивным является отношение параллельности между двумя прямыми (если a параллельна b, а b параллельна g, то и a параллельна g), отношение же перпендикулярности прямых не транзитивно.

25


Области видимости в программе естественным образом составляют многоуровневую структуру, в которой одни области входят в состав других. Иерархическая структура позволяет разрешать неоднозначности, которые возникают, когда один и тот же идентификатор используется в программе более чем в одном значении. Поиск нужного объекта всегда 

начинается с той области видимости, в которой располагается обращающийся к идентификатору код. Если в данной области видимости находится объект с нужным идентификатором, то именно он и используется. Если такового нет, транслятор продолжает поиск среди идентификаторов, видимых в объемлющей области видимости, если его нет и там — в 

следующей по уровню иерархии.

Использование локальных переменных — имеющих ограниченную область видимости и существующих лишь внутри текущей функции — помогает избежать конфликта имён между двумя переменными с одинаковыми именами. Однако существует два очень разных подхода к вопросу о том, что значит «быть внутри» функции и, соответственно, два варианта реализации локальной области видимости:

Для «чистых» функций, которые оперируют только своими параметрами и локальными переменными, лексическая и динамическая области видимости всегда совпадают. Проблемы возникают, когда функция использует внешние имена, например, глобальные переменные или локальные переменные функций, в которые она входит или из которых вызывается. 

Так, если функция f вызывает не вложенную в неё функцию g, то при лексическом подходе функция g не имеет доступа к локальным переменным функции f. При динамическом же подходе функция g будет иметь доступ к локальным переменным функции f, поскольку g была вызвана во время работы f

В случае с интерпретируемыми языками (например, скриптовыми, оболочками), интерпретатор обрабатывает текст программы непосредственно в момент исполнения и содержит внутренние структуры поддержки исполнения, в том числе таблицы имён переменных и функций с реальными значениями и адресами объектов. Интерпретатору проще и быстрее выполнить динамическое связывание (простым линейным поиском в таблице идентификаторов), чем постоянно отслеживать лексическую область видимости. Поэтому интерпретируемые языки чаще поддерживают динамическое связывание имён.


Локальные переменные хранятся в стеке вызовов. Это означает, что если функция рекурсивно вызывает сама себя, то переменные каждый раз создаются заново и им выделяется            персональная память, а не запись в одно и то же место.

Локальная переменная ограничивается только размером памяти выделенной операционной системой или компьютером под стек.

Локальные переменные делают возможной рекурсию.

Переменные локальной области видимости используются, чтобы избежать проблем с побочными эффектами, которые могут произойти с глобальными переменными.

Локальной переменной является любой параметр функции, что не использует ссылок или указателей.


В Руби имени глобальной переменной должен предшествовать знак $, например, $variable_name, в то время как локальная переменная просто не имеет знака $ перед её именем, например, variable_name (в то время как в Perl все скалярные значения имеют $ спереди).


FUBAR


foo - это имя переменной, используемой для любой переменной, когда само имя не имеет значения, «foo» и «bar» - это просто заполнители для информации, которую вы имеете, такой как имя пользователя, пароль, переменная и т.д.,«метасинтаксическая переменная» синоним «бессмысленного слова», когда нужно назвать переменную или функцию, но фактическое имя не имеет значения. Действительно используется только для демонстрации фрагментов кода. НИКОГДА..! не используйте его в реальном коде. Foo и bar произошли от армейского акронима Второй мировой, FUBAR — «Fucked Up Beyond All Recognition».

EOL    End of Life

https://itisgood.ru/2019/09/11/chto-takoe-end-of-life-eol

http://www.ncomputing.su/lifecycle/

https://www.dlink.ru/ru/support/art/0/83.html  <-----D-Link

https://netstore.su/articles/cisco-eol   <--------Cisco

https://www.oracle.com/solaris/technologies/solaris9--eol  <-------Solaris 9  ......жив бродяга!

Мультиплексирование, Демультиплексирование, Mультиплeксор

https://ru.wikipedia.org/wiki/

https://pue8.ru/silovaya-elektronika/printsip-raboty-multipleksora.html


Чтобы определить, на какой интерфейс следует передать поступившие данные, коммутатор должен выяснить, к какому потоку они относятся. Эта задача должна решаться независимо

от того, поступает на вход коммутатора только один «чистый» поток или «смешанный» поток, являющийся результатом агрегирования нескольких потоков. В последнем случае

к задаче распознавания потоков добавляется задача демультиплексирования, операцию коммутации сопровождает также обратная операция  мультиплек­сирования, мультиплексирование — это способ разделения одного имеющегося физического канала между несколькими одновременно протекающими сеансами связи абонентов сети..


Мультиплексирование (агрегирование) — образование из нескольких отдельных потоков общего агрегированного потока, который передается по одному физическому каналу связи.

Демультиплексирование — разделение суммарного потока на несколько составляющих его потоков.


Частный случай коммутатора, у которого все входящие информационные потоки коммутируются на один выходной интерфейс, где они мультиплексируются в один агрегированный поток, на­ зывается мультиплексором. Коммутатор, который имеет один входной интерфейс и несколько выходных, называется демультиплексором

Time Division Multiplexing, TDM

https://ru.wikipedia.org

https://www.sciencedirect.com/time-division-multiplexing

    Time division multiplexing - мультиплексирование с временным разделением (FDM) - это метод мультиплексирования, при котором пользователям разрешается использовать всю доступную полосу пропускания на основе разделения времени. Здесь временная область разделена на несколько повторяющихся интервалов фиксированной длины, и каждому сигналу выделяется временной интервал на циклической основе. 

Концепция и процесс 

В TDM поток данных каждого входного потока делится на блоки. Одна единица может быть 1 битом, 1 байтом или блоком из нескольких байтов. Каждой единице ввода выделяется временной интервал ввода. Одна входная единица соответствует одной выходной единице, и ей назначается временной интервал вывода. Во время передачи одной единице каждого из входных потоков выделяется одноразовый интервал, периодически, в последовательности, на ротационной основе. Эта система обычно называется циклической системой.

На схеме имеются четыре входных потока: A, B, C, D. Каждый из потоков данных разделен на блоки, которым распределяются временные интервалы циклическим способом.  Следовательно, временной интервал 1 выделяется для A, интервал 2 выделяется для B, интервал 3 выделяется для C, интервал 4 выделяется для D, интервал 5 снова выделяется для A, и это продолжается до тех пор, пока данные во всех потоки передаются.

Statistical Time Division Multiplexing  STDM   -   On-demand

On-demand - «по требованию»

В STDM временные интервалы динамически распределяются по временным интервалам в соответствии с требованиями. Мультиплексор проверяет каждый входной поток циклическим способом и выделяет слот для входной линии только в том случае, если там присутствуют данные, в противном случае он переходит к следующему потоку и проверяет его.

Мультиплексор: 

    Mультиплeксор — устройство, имеющее несколько сигнальных входов, один или более управляющих входов и один выход.

    Мультиплексор позволяет передавать сигнал с одного из нескольких входов на один выход; при этом выбор желаемого входа осуществляется подачей соответствующей комбинации управляющих сигналов. Устройство, противоположное мультиплексору по своей функции, называется демультиплексором.

Схематически мультиплексор можно изобразить в виде коммутатора, обеспечивающего подключение одного из нескольких входов (их называют информационными) к одному выходу устройства. Коммутатор обслуживает управляющая схема, в которой имеются адресные входы и, как правило, разрешающие (стробирующие). Сигналы на адресных входах определяют, какой конкретно информационный канал подключен к выходу. Если между числом информационных входов n и числом адресных входов m действует соотношение n=2^{m}, то такой мультиплексор называют полным. Если n<2^{m}, то мультиплексор называют неполным.

Разрешающие входы используют для расширения функциональных возможностей мультиплексора. Они используются для наращивания разрядности мультиплексора, синхронизации его работы с работой других узлов. Сигналы на разрешающих входах могут разрешать, а могут и запрещать подключение определенного входа к выходу, то есть могут блокировать действие всего устройства. В качестве управляющей схемы обычно используется дешифратор. В цифровых мультиплексорах логические элементы коммутатора и дешифратора обычно объединяются.

Анализ оборудования

https://losst.ru/dispetcher-ustrojstv-v-ubuntu ;

В соответствии с принципом GNU в Linux есть отдельная утилита, для просмотра каждого из типов устройств. Называются они так же, как и технологии, с помощью которых подключены устройства с префиксом ls (list):

http://rus-linux.net/hard/inux_machines_hardware.html

Утилиты из семейства ls позволяют получить доступ к информации обо всем аппаратном обеспечении компьютера

..................... и это хорошо и понятно, НО не понятно от чего в этой статье не упоминается утилита dmesg;

https://linux-faq.ru/page/komanda-dmesg

http://rus-linux.net/Linux_dmesg_Command.html

http://linuxsoid.club/dmesg-what-this-utility

https://ru.wikipedia.org/wiki/Dmesg

    dmesg   - system diagnostic messages «dmesg - отобразить буфер системных сообщений» команда впервые появилась в 7-м выпуске Unix (4.0BSD) , 1979 году, без страницы руководства, используется для проверки содержимого или управления буфером кольца ядра. Действие по умолчанию - отобразить все сообщения из буфера кольца ядра. Кольцевой буфер это область памяти фиксированного размера, в которой осуществляется перезапись устаревших сообщений при добавлении новых, утилита  dmesg использует специальный файл /proc/kmsg (в Linux) для доступа к содержимому этого буфера, и это значит, что вновь добавляемые, или подключаемые ус-ва будут присутствовать в выводе это "чудной" утилиты а при добавлении ключа [-T] будет отражаться и время connect/disconnect.  

 

dmesg                                         в общем и целом сообщения ядра во время загрузки

dmesg | more  [less]

dmesg --level=err,warn,alert             ограничение по уровню сообщенй(идентификаторам) [l]=.....

dmesg --facility=daemon,user          ограничение по объекту(источнику) сообщений [f]=.....

dmesg --facility=daemon --level=debug

dmesg --decode                        преобразовать числовые уровни загрузки в "человеческие"

dmesg | grep error                   просмотр ошибок  # dmesg --level=err

dmesg | grep Memory             кол-во памяти в системе

dmesg | grep [устройство]      сообщения о состоянии устройств и возможно ошибки при инициализации

dmesg -T                                   выводить временные метки

dmesg -H ( --human)                удобочитаемый вывод

dmesg -HT

dmesg -c                                    очистить буфер

dmesg -u   [dmesg -uT]             сообщения пространства пользователя

dmesg -k   [dmesg -kT]             сообщения пространства ядра

dmesg — Linux manual page         

Try 'dmesg --help' for more information.

В качестве примера подключим и отключим накопитель "Western Digital"

 # dmesg --decod -T | grep usb

...............................................

kern  :info  : [Ср янв  6 20:18:08 2021] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3

kern  :info  : [Ср янв  6 20:18:08 2021] usb 1-4: Product: Elements 1023

kern  :info  : [Ср янв  6 20:18:08 2021] usb 1-4: Manufacturer: Western Digital

kern  :info  : [Ср янв  6 20:18:08 2021] usb 1-4: SerialNumber: 575836314534314E57363832

kern  :info  : [Ср янв  6 20:18:09 2021] usb-storage 1-4:1.0: USB Mass Storage device detected

kern  :info  : [Ср янв  6 20:18:09 2021] scsi host6: usb-storage 1-4:1.0

kern  :info  : [Ср янв  6 20:18:09 2021] usbcore: registered new interface driver usb-storage

kern  :info  : [Ср янв  6 20:18:09 2021] usbcore: registered new interface driver uas

kern  :info  : [Ср янв  6 20:20:12 2021] usb 1-4: USB disconnect, device number 3

lsusb, lsscsi  - даст дополнительную информацию

В качестве приоритетов сообщений могут использоваться следующие идентификаторы: # dmesg --decode

В качестве источников сообщений — следующие идентификаторы:

# apt install lshw

# lshw -html > hw.html

# lshw -short

H/W path           Device      Class          Description

=========================================================

                                   system            Inspiron 5520 (Inspiron 5520)

/0                                bus                 0XWH1P

/0/0                             memory         128KiB BIOS

/0/4                             processor       Intel(R) Core(TM) i7-3632QM CPU @ 2.20GHz

/0/4/9                          memory         32KiB L1 cache

/0/4/a                          memory         256KiB L2 cache

/0/4/b                          memory         6MiB L3 cache

/0/8                             memory         32KiB L1 cache

/0/29                           memory         8GiB System Memory

/0/29/0                        memory         4GiB SODIMM DDR3 Synchronous 1600 MHz (0,6 ns)

/0/29/1                        memory         4GiB SODIMM DDR3 Synchronous 1600 MHz (0,6 ns)

..............................

# apt install procinfo

# procinfo

Memory:        Total        Used        Free     Buffers                       

RAM:         8028908     5878796     2150112      368372                       

Swap:        2158588           0     2158588  

.......................................

# apt install usbview

# usbview

Посмотреть текущую частоту оперативной памяти

$ sudo dmidecode -t 17 | awk -F":" '/Speed/ { print $2 }'

 1600 MT/s

 1600 MT/s

$ МТ/с — это сокращение от мега(миллиона) передач(трансфер) данных в секунду и более точное измерение эффективной скорости передачи данных памяти SDRAM DDR при вычислениях.

"Short" Information about loaded kernel modules

$ awk '{print $1}' "/proc/modules" | xargs modinfo | awk '/^(filename|desc|depends)/'

$ modinfo $(cut -d' ' -f1 /proc/modules) | sed '/^dep/s/$/\n/; /^file\|^desc\|^dep/!d'

$ lsmod | cut -d' ' -f1 | xargs modinfo | egrep '^file|^desc|^dep' | sed -e'/^dep/s/$/\n/g'

$ lsmod | tail -n +2 | cut -d' ' -f1 | xargs modinfo | egrep '^file|^desc|^dep' | sed -e'/^dep/s/$/\n/g'

24 

    Распределённая система — система, для которой отношения местоположений элементов (или групп элементов) играют существенную роль с точки зрения функционирования системы, а следовательно, и с точки зрения анализа и синтеза системы.

Для распределённых систем характерно распределение функций, ресурсов между множеством элементов (узлов) и отсутствие единого управляющего центра, поэтому выход из строя одного из узлов не приводит к полной остановке всей системы. Типичной распределённой системой является Интернет. Система доменных имён (DNS) — распределённая система для получения информации о доменах.

    Распределенные сети — Распределенная сеть представляет собой сеть передачи данных, сфера действия которой простирается за пределы локальной сети, что является одним из отличий распределенной сети от локальной.

    Распределенная сеть (wide-area network, WAN). Сеть передачи данных, обслуживающая пользователей, расположенных на обширном географическом пространстве; такие сети часто используют устройства передачи, предоставляемые общими провайдерами. Примерами технологий распределенных сетей могут служить 

Frame Relay,SMDS и Х.25.

    WAN — глобальная сеть; распределенная сеть; территориально распределенная сеть (WAN, Wide-Area Network) — группа размещенных на большом расстоянии друг от друга компьютеров, в том числе как отдельных, так и их локальных сетей, соединенных линиями проводной (кабельной) и/или радиосвязи.

25

Экосистемы в информационных технологиях   PDF

    Цифровая экосистема - описывает ситуацию в мире компьютерных программ, где на базе компьютерной сетевой инфраструктуры,программных средств происходит конкуренция, которая является движущей силой отбора наиболее приспособленных агентов. Этот отбор служит движущей силой эволюции компьютерных программ.

    Агент экосистемы – внутренний или внешний фактор, участник экосистемы, действия которого направлены на поддержание, развитие экосистемы, либо используют ресурсы экосистемы в собственных нуждах.

    Под экосистемой в информационных технологиях следует понимать совокупность сервисов, устройств, прочих продуктов поддерживаемых и развиваемых одной компанией, либо сервисов, устройств, прочих продуктов разных компаний, которые неразрывно связаны в единую сеть определенными организационными и/или технологическими процессами. При этом стоит отметить определенные особенности таких экосистем, а именно:

Децентрализованность – это отсутствие руководящих указаний, определяющих поведение отдельных участников на каждом из этапов развития системы. Экологические системы, сети и сообщества как правило, складываются сами по  себе, без руководящих указаний «сверху».

Самоорганизация – это способность системы поддерживать организацию за счет внутренних ресурсов, за счет отношений между узлами, входящими в состав системы. Системы зачастую действуют эффективно за счет внутренних взаимодействий: относительно простые взаимодействия между простыми элементами системы приводят к возникновению паттернов координации и росту организации без всякого внешнего или центрального управления.

Эмерджентность – это системный эффект возникновения у системы новых свойств за счет взаимодействия составляющих систему узлов. Для возникновения такого эффекта необходим определенный уровень автономии и случайности в действиях отдельных агентов. Коллективное поведение участников экосистемы, сети или сообщества возникает на основе достаточно простых действий, которые совершают агенты.

 http://compizomania/gnome-shell.html  <--------------флаги раскладки

$ sudo -i gedit /usr/share/X11/xkb/rules/evdev.xml

<shortDescription>en</shortDescription>

<shortDescription>us 🇺🇸️</shortDescription>

=======================================

<shortDescription>ru</shortDescription>

<shortDescription>ru 🇷🇺️</shortDescription>


*** $ sudo apt-get reinstall xkb-data

$  cd /usr/share/doc/conky-std

$ la

итого 52K

-rw-r--r-- 1 root root    0 мар  1 23:27 1

-rw-r--r-- 1 root root 3,8K июл 27  2020 AUTHORS.gz

-rw-r--r-- 1 root root  12K авг 17  2020 changelog.Debian.gz

-rw-r--r-- 1 root root 2,9K июл 27  2020 conky.conf

-rw-r--r-- 1 root root 1,9K июл 27  2020 conky_no_x11.conf

-rwxr-xr-x 1 root root 5,6K июл 27  2020 convert.lua  <-------

-rw-r--r-- 1 root root 6,0K авг 10  2020 copyright

drwxr-xr-x 2 root root 4,0K фев 25 15:30 html

-rw-r--r-- 1 root root 2,6K авг 10  2020 NEWS.Debian.gz

-rw-r--r-- 1 root root 1,8K июл 27  2020 README.md.gz

$ sudo ./convert.lua ~/.conkyrc ~/.conkyrc_new  <----------------- 

$ cd

$ rm .conkyrc

$ mv .conkyrc_new conkyrc

conky.config = {

-- conky configuration


-- The list of variables has been removed from this file in favour

-- of keeping the documentation more maintainable.

-- Check link removed as I cant do links


-- For ideas about how to modify conky, please see:

-- link removed as I cant do links


-- For help with conky, please see:

-- link removed as I cant do links


-- Enjoy! :)

--#############################################

-- Settings

--#############################################

background = true,

use_xft = true,

font = 'DejaVu Serif:size=8',

xftalpha = 1,

update_interval = 1.0,

total_run_times = 0,

own_window = true,

own_window_transparent = false,

own_window_argb_visual = false,

own_window_type = 'desktop',

--own_window_argb_visual yes

own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',

double_buffer = true,

minimum_width = 330, minimum_height = 330,

maximum_width = 330,

draw_shades = false,

draw_outline = false,

draw_borders = false,

draw_graph_borders = true,

--default_color 656667

color1 = '#ff0000',

color2 = '#8FBC8F',

color3 = '#00ff00',

color4 = '#6495ED',

color5 = '#00BFFF',

color6 = '#FFD700',

color7 = '#FFA500',

color8 = '#FF0000',

color9 = '#FFFF00',

default_color = '#FFFFFF',

default_shade_color = '#000000',

default_outline_color = '#828282',

alignment = 'top_left',

gap_x = 70,

gap_y = 140,

no_buffers = true,

uppercase = false,

cpu_avg_samples = 2,

override_utf8_locale = false,

--#############################################

--  Output

--#############################################

};

conky.text = [[

${font Liberation Serif:size=33}${color2}${if_match "${time %M}" == "00"}${color 7CFC00}${else}${if_match "${time %M}" == "30"}${color4}${else}${time %H:%M}${color}${font Liberation Serif:size=33}  ${color2}${alignr}${time %d-}${if_match "${time %a}" == "Sun"}${color7}${alignr}${time %a}${else}${color2}${alignr}${time %a}${endif}${font}${color}

$alignc${font Linux Libertine O:size=12:bold}${color4}${kernel}${font}${color}

${hr}

${color7}${gw_iface}: ${color}${addr wlan0}  "${wireless_essid wlan0}"  ${alignr}${color3}${downspeed wlan0}${font}${color}

${color7}IN:${color}${totaldown wlan0}   ${color7}OUT:${color}${totalup wlan0} ${alignr}${color6}${upspeed wlan0}${font}${color}

${color7}lQI: ${color}${wireless_link_qual_perc wlan0}%   ${if_match ${wireless_link_qual_perc wlan0} >=60}${color 7FFF00} ${wireless_link_bar 4  wlan0} ${else}${color2}${wireless_link_bar 4  wlan0}${font}${color}

${downspeedgraph wlan0 20,155 E0FFFF 32CD32 -tl} ${alignr}${upspeedgraph wlan0 20,155 FFEC8B FFA500 -tl}

PORTS${alignr} ${alignr}Connections

${color2}Inbound: ${tcp_portmon 1 32767 count}   Outbound: ${tcp_portmon 32768 61000 count}${alignr}ALL: ${tcp_portmon 1 65535 count}

${color}Inbound Connection ${alignr} Local Service/Port${color2}

${tcp_portmon 1 32767 rhost 0} ${alignr} ${tcp_portmon 1 32767 lservice 0}             

${tcp_portmon 1 32767 rhost 1} ${alignr} ${tcp_portmon 1 32767 lservice 1}      

${tcp_portmon 1 32767 rhost 2} ${alignr} ${tcp_portmon 1 32767 lservice 2}

${color}Outbound Connection ${alignr} Remote Service/Port${color2}

${tcp_portmon 32768 61000 rhost 0} ${alignr} ${tcp_portmon 32768 61000 rservice 0}

${tcp_portmon 32768 61000 rhost 1} ${alignr} ${tcp_portmon 32768 61000 rservice 1}

${tcp_portmon 32768 61000 rhost 2} ${alignr} ${tcp_portmon 32768 61000 rservice 2}${color}


${color6}RAM: ${memperc}% ${if_match ${memperc} <35}${color 7FFF00}${membar 4} ${else}${if_match ${memperc} > 60} ${color FF00FF} ${else}${if_match ${memperc} > 80} ${color DC143C} ${membar 4}${endif}${membar 4}${font}${color}

CACH:${alignr}${cached}%

TOTAL:${alignr}$mem/$memmax

TOTAL & SWAP:${alignr}${exec ps aux | awk '{sum+=$6} END {print sum/1024}'} MiB

${color7}read${color}  ${diskio_read} ${alignr}${diskio_write}  ${color7}write${color}

${diskiograph_read 12,155 FF1493 00CED1 -l} ${alignr}${diskiograph_write 12,155 00CED1 FF1493 -l}


${if_match "${exec skb 1}" == "Rus"} ${image /home/dell/.flags/ru.png -p 112,9 -s 32x32}${else}${image /home/dell/.flags/us.png -p 112,9 -s 32x32}${endif}


${color6}DISK: ${color2}${fs_used_perc}%  ${if_match ${fs_used_perc} >92}${color DC143C}${else}${if_match ${fs_used_perc} >95}${color8}${else} ${fs_bar 4 /}${endif}${font}${color}

/${alignr}${fs_used /}/${fs_size /}

${color6}DATA: ${color2}${fs_used_perc /Data}%  ${if_match ${fs_used_perc /Data} >80}${color 1E90FF}${else}${if_match ${fs_used_perc /Data} >90}${color8}${else} ${fs_bar 4 /Data}${endif}${font}${color}

/Data $alignr${fs_used /Data}/${fs_size /Data}

${color6}CPU: ${cpu cpu}%    ${if_match ${cpu cpu} <2}${color 4169E1}${cpubar 4} ${else}${if_match ${cpu cpu} >15}${color FF8C00}${cpubar 4} ${else}${if_match ${cpu cpu} >30}${color 8B0000}${cpubar 4} ${else}${color 7CFC00}${cpubar 4} ${endif}${font}${color}

${hr}

NAME:                   ${alignr}PID   ${alignr}CPU ${alignr}MEM

${color2}${if_match ${top mem 1} >3}${color9}${else}${if_match ${top mem 1} >10}${color FF0000}${endif}${top name 1} ${alignr}${top pid 1} ${alignr}${top cpu 1} ${alignr}${top mem 1}${color2}

${if_match ${top mem 2} >3}${color9}${else}${if_match ${top mem 2} >10}${color FF0000}${endif}${top name 2} ${alignr}${top pid 2} ${alignr}${top cpu 2} ${alignr}${top mem 2}${color2}

${if_match ${top mem 3} >3}${color9}${else}${if_match ${top mem 3} >10}${color FF0000}${endif}${top name 3} ${alignr}${top pid 3} ${alignr}${top cpu 3} ${alignr}${top mem 3}${color2}

${if_match ${top mem 4} >3}${color9}${else}${if_match ${top mem 4} >10}${color FF0000}${endif}${top name 4} ${alignr}${top pid 4} ${alignr}${top cpu 4} ${alignr}${top mem 4}${color2}${color}

${hr}

${exec ~/.conky/beeep}

]];

Индикация раскладки:   

https://forum.ubuntu.ru/index.php?topic=123423.0

1. скачиваем такую вот шнягу под названием «skb» это индикатор раскладки, здесь: 

https://plhk.ru/static/skb/skb-0.4.tar.gz    https://plhk.ru/

2.распаковываем,устанавливаем:   

$ make 

S sudo make install  

...............

installing executable file to /usr/bin

$ ls -l /usr/bin/skb

-rwxr-xr-x 1 root root 14592 Dec  2 19:36 /usr/bin/skb

PS: Может случиться так, что у нас не окажется libx11-dev и соответсивенно Xlib.h, почему?, потому что она не хер не нужна, например в дистрибютиве CranchBanb ее нет,  и make выдаст ошибку: skb.c:8:10: fatal error: X11/Xlib.h: No such file or directory , тогда спокойно, не матерясь выполняем: 

$ sudo apt install libx11-dev и повторяем команду make по новой. Кроме того можно использовать утилиту xxkb с тем же успехом, что и skb.

3.добавляем в cokyrc такую вот строчку:${exec skb 1}, но это будет лишь текст, чтобы были иконки флагов: 

4.скачиваем флажки здесь: https://winreviewer.com/wp-content/uploads/2014/10/flags.tar.gz 

5.прописываем пути к картинкам, устанавливаем, размер, позицию на экране, например так:

${if_match «${exec skb 1}» == «Rus»} ${image /home/dell/.flags/ru.png -p 112,8 -s 36x36}${else}${image /home/dell/.flags/us.png -p 112,8 -s 36x36}${endif}

...позиции флагов (-p 112,8), что бы они друг друга "перекрывали" надо сделать одинаковой, при желании можно сместить, один относительно другого.

https://server-gu.ru/sudo-no-passwd/

$ sudo visudo /etc/sudoers

# User privilege specification

root ALL=(ALL:ALL) ALL

user    ALL=(ALL:ALL) ALL

user    ALL=(ALL) NOPASSWD:ALL

user    ALL = NOPASSWD: /usr/bin/conky

# Allow members of group sudo to execute any command

%sudo ALL=(ALL:ALL) NOPASSWD: ALL

${exec sudo dmesg -HT | tail -n3 | fold -w52}

${exec sudo  tail -n3 /var/log/syslog | awk '{print $3 $5 $6 $7 $8 $9}' | fold -w52}

#!/bin/bash

#ICAN

wget -O - -q icanhazip.com 

${color7}NMAP: ${color}${execpi 100 perl ~/.conky/net_map.pl}

Звук для часов

$ sudo apt-get install sox  https://www.opennet.ru/man=sox

$ cat > ~/.conky/beeep

#!/bin/bash

T=$(date +"%M")

 t=$(date +"%S")

if [ $T$t -eq "0000" ]

then

play -q -n synth 2 pluck C7 vol 0.5

elif

    [ $T$t -eq "3000" ]

then

play -q -n synth 0.1 sine 4000 vol 0.2

fi

^C

$ chmod +x  ~/.conky/beeep

play -n synth <duration in seconds> sine <freq in Hz> vol <volume (0-1)>

    play -n synth 0.1 sine 880 vol 0.5

    play -q -n synth 0.1 sine 4000 vol 0.5

    play -q -n synth 2 pluck C5 vol 0.5

    beep -f 4400 -r 3 -l 100 -d 50 (через динамик консоли (аппаратный))

    play -q -n synth 0.1 sine 4000 vol 0.5; play -q -n synth 0.3 sine 4000 vol 0.5

    play  -q -n  synth 2 pluck C7 vol 0.5; play  -q -n  synth 3 pluck C8 vol 0.5

    .......и т.д

Может понадобиться ключ -d, --default-device

$ play --help:  Use the default audio device (where available)

Синтезированный гитарный тон для каждой из струн стандартно настроенной гитары.

$ for n in E2 A2 D3 G3 B3 E4;do play -n synth 2 pluck $n repeat 2;done

https://www.opennet.ru/man=play

${exec ~/.conky/beeep} 

Conky-Monitor

Второе окно conky делается созданием еще одного конфигурационного файла например ~/conkyrc  (запускается с ключом -с: $ conky -c conkyrc) с соответствующим кодом, далее привязывается к нужной комбинации клавиш, в top будут два conky работающие паралельно ....как их оперативно "убить" (без терминала или сис-монитора) ....?:

$ ps aux | grep [c]onky     ([c]onky - убрать из вывода grep "grep")

dell 15476  3.3  0.2 785000 22652 ?  conky --daemonize --pause=1

dell 84620  0.5  0.1 185020 12980 ?  conky -c conkyrc

$ kill 84620

$ ps aux | grep [c]onky | awk 'NR == 2{print$2}'

84620 

Подставить вывод AWK в kill -9, в итоге немного криво, но если доработать:

$ ps aux | grep [c]onky | kill -9 $(awk 'NR == 2{print$2}')

Например так:

$ ps -ef | grep [c]onky | awk 'NR == 2{print$2}' | xargs kill

И то же привязать к клавише в виде скрипта или команды.



 --#############################################

--  Output

--#############################################

};

conky.text = [[

$alignc${font bold}${color}${kernel}${font}

${hr}

${font bold}SYSTEM:  LSOF-TCP ${font}

${color E0FFFF}${execi 60 lsof -i tcp | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM:  LSOF-UDP ${font}

${color 7FFFD4}${execi 60 lsof -i udp | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM LOG:  DMESG ${font}

${color ADFF2F}${execi 60 sudo dmesg -HT | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM LOG:  SYSLOG ${font}

${color F0E68C}${execi 60 sudo tail -n18 /var/log/syslog | cat -n | fold -w125}

]];

Утилита SS <------------ https://sites.google.com/site/komandy-terminala-SS

$ ss -t | awk '{print $1,$4,OFS,$5,OFS,$6,OFS,$7}'

$ ss -p | tail -5 | awk '{print $5,OFS,$6,OFS,$7}'

#!/usr/bin/perl

#NMAP net_map.pl

$adapter= @ARGV[0];  # скалярное присваивание

# обработка аргументов командной строки - @ARGV в Perl

if (@ARGV[0] eq""){    #сравнение (eq   равно)

$adapter ="wlan0";

}#fi   

#get my ip 

$string = `ifconfig $adapter`; 

$string =~m/([0-9]+\.){3}[0-9]+/g;  #регулярные выражения

$myip=$&;   #встроенная переменная "совпадение с шаблоном поиска"

#connected? 

$status= system ("ping -c 1 $myip -t 2 >/dev/null"); 

if ($status != 0) { 

print "not connected to a network :-(\n"; 

exit (-1); #no network connection 

}     

#get the subnet 

$str= $myip;   

while($myip =~ m/\w\.\b/g) {$lastpos= pos($myip), " " }; 

$subnet = substr($myip,0, $lastpos-1); 

$subnet= "$subnet.1-255\n";   

#parse the nmap result 

$retval = `nmap -sn $subnet`; 

$ctr=0; 

$_=$retval; 

while (/([0-9]+\.){3}[0-9]+/g) { 

if ($ctr%2 == 0) { 

print "$&\t"; 

}else{ 

print "$&\n"; 

}#fi 

$ctr++; 

}   

if ($ctr%2 ==0) { 

print ""; 

}else{ 

print"\n"; 

print "$ctr hosts up\n"; 

Perl автоматически предоставляет массив с именем @ARGV , который содержит все значения из командной строки. Вам не нужно объявлять переменную, даже если вы используете strict.Эта переменная всегда существует, и значения из командной строки автоматически помещаются в эту переменную.

Для тех кому не нравиться AWK и Xargs. существует великолепная команды pkill, команда убивающая процесс по "патерну", синтаксис таков: pkill -f my_pattern например:

$ ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=1 ttl=104 time=34.6 ms

$ ps aux | grep [p]ing 

40160  0.0  0.0   7540  1116 pts/3    S+   13:09   0:00 ping 8.8.8.8

$ pkill -f ping

$......................................

64 bytes from 8.8.8.8: icmp_seq=121 ttl=104 time=33.4 ms

64 bytes from 8.8.8.8: icmp_seq=122 ttl=104 time=33.5 ms

Terminated

Для Debian 12, немного иначе, поскольку /var/log/syslog

отсутствует  и все перенесено в journalctl

--  Output

--#############################################

};

conky.text = [[

$alignc${font bold}${color}${kernel}${font}

${hr}

${font bold}SYSTEM:  LSOF -i tcp ${font}

${color E0FFFF}${execi 60 lsof -i tcp | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM:  LSOF -i udp ${font}

${color 7FFFD4}${execi 60 lsof -i udp | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM LOG:  DMESG (dmesg -HT tail -n10) ${font}

${color ADFF2F}${execi 60 sudo dmesg -HT | tail -n10 | cat -n | fold -w125}${color}

${hr}

${font bold}SYSTEM LOG:  SYSLOG (journalctl -f tail -n10) ${font}

${color F0E68C}${execi 60 sudo timeout 2 journalctl -f | tail -n10 | fold -w125}

]]; 

Linux kernel

Апрель 1991: 21-летний Линус Торвальдс начал работу над некоторыми механизмами операционной системы: эмулятор терминала и планировщика задач.

25 августа 1991: Торвальдс поместил сообщение в новостную группу по Minix.

17 сентября 1991: Linux версии 0.01 (10 239 строк кода).

5 октября 1991: Linux версии 0.02 [2] (англ.).

Декабрь 1991: Linux версии 0.11. Это была первая версия Linux, на которой можно было собрать Linux из исходных кодов.

19 января 1992: Первое сообщение в группе новостей alt.os.linux (англ.).

31 марта 1992: Создана группа новостей comp.os.linux (англ.).

Апрель 1992: Linux версии 0.96, на котором стало возможно запустить графический сервер X Window System.

Весь 1993 и начало 1994: 15 тестовых выпусков версии 0.99.* (в июле 1993 введено понятие BogoMips).

14 марта 1994: Linux версии 1.0.0 (176 250 строк кода).

Март 1995: Linux версии 1.2.0 (310 950 строк кода).

9 мая 1996: Выбран символ Linux — пингвин Tux.

9 июня 1996: Linux версии 2.0.0 (777 956 строк кода).

25 января 1999: Linux версии 2.2.0, изначально довольно недоработанный (1 800 847 строк кода). Обновлена сетевая подсистема

4 января 2001: Linux версии 2.4.0 (3 377 902 строки кода).

18 декабря 2003: Linux версии 2.6.0 (5 929 913 строк кода).

23 марта 2009: Linux версии 2.6.29, временный символ Linux — тасманский дьявол Tuz (11 010 647 строк кода).

22 июля 2011: релиз Linux 3.0 (14,6 млн строк кода).

24 октября 2011: релиз Linux 3.1.

15 января 2012: релиз Linux 3.3 преодолел отметку в 15 млн строк кода.

23 февраля 2015: первый релиз-кандидат Linux 4.0 (более 19 млн строк кода).

7 января 2019: первый релиз-кандидат Linux 5.0 (более 26 млн строк кода).

03/04/2021 Thursday $ uname -r: 5.10.0-kali3-amd64

04/13/2021 Tuesday $ uname -r: 5.10.0-kali6-amd64

08/21/2021 Saturday $ uname -r: 5.10.0-kali9-amd64

12/23/2021 Thursday $ uname -r  5.14.0-kali4-amd64

04/08/2022 Friday $ uname -r: 5.15.0-kali2-amd64 

08/13/2022 Saturday      $ uname -r: 5.18.0-kali2-amd64

11/13/2022 Sunday $ uname -r: 5.19.0-kali2-amd64

1/26/2022 Saturday $ uname -r: 6.0.0-kali3-amd64

Escape последовательность


Управляющая последовательность, исключённая последовательность, экранированная последовательность, логическое кодирование, escape sequence

Необходимость логического кодирования текстовых знаков возникает от того, что некоторые из них в программах, работающих с текстом, имеют специальное (управляющее) значение. Для того, чтобы использовать эти знаки непосредственно как текст, их кодируют специфическими для каждой системы обозначения (программы) способами (управляющими последовательностями):


Пример:

Campus Area Network

Campus колледж, унивирсиет, територия университета, учереждения.

CAN (Campus Area Network — кампусная сеть) — это группа локальных сетей, развернутых на компактной территории (кампусе)

 Скаляр

Если компьютер способен одновременно выполнять несколько последовательных команд программы, то он называется  суперскалярным. Суперскалярность обычно присуща RISC-процессорам (Reduced Instruction Set Computing, то есть процессорам с сокращенным набором команд.). Процессоры этого класса имеют значительно больший состав регистров общего 

назначения – регистров сверхоперативной памяти, что и определяет улучшенные возможности параллельной работы последовательности команд программы.

К RISC-архитектуре традиционно относят микропроцессоры фирм AMD и Dell. Упрощенный состав операций микропроцессора обеспечивает более простое построение его ядра и соответственно повышенную скорость работы.

Хотя числа и строки — это совершенно разные вещи, в Perl они используются практически как взаимозаменяемые понятия.Над скалярной величиной можно производить операции (например, суммирование или конкатенацию), полученный результат, как правило, также является скаляром. Скалярную величину можно сохранять в скалярной переменной. Скаляры можно читать из файлов и с устройств, а также записывать в файлы и на устройства.  http://perl.find-info.ru/perl/016/scalar.htm

Тернарный оператор

Тернарный оператор (Perl) возвращает либо второй, либо третий операнд в зависимости от значения первого операнда. Если первый операнд — это истина, то тогда возвращается второй операнд, если же первый операнд — это ложь, то тогда возвращается третий операнд

Тернарная условная операция (ternarius — «тройной») — реализованная во многих языках программирования операция, возвращающая свой второй или третий операнд в зависимости от значения логического выражения, заданного первым операндом.


Инкремент-Дикремент


Увеличение значения, например переменной, есть "инкрементирование", а сама операция называется "инкремент" (x++) 

Обратная опереция "декриментирование"

Инкремент  — дословно увеличение, например  в циклах где при каждой итерации какая либо величина становится больше на единицу.

Кое где например в MDB-Modular Debugger это глобальная переменная


Инкрементная модель разработки(програмного обеспечения) является итеративным методом, основанным на последовательных этапах разработки.

Итеративная модель разработки включает в себя последовательность итераций, каждая из которых фокусируется на реализации 

ограниченного набора требований. 

Инкрементная модель разработки ориентирована на постепенное увеличение функциональности продукта, в то время 

как итеративная модель сконцентрирована на поэтапной реализации ограниченного набора требований.


Инкрементная модель — это метод, в котором проект проектируется, реализуется и тестируется инкрементно (то есть каждый раз с 

небольшими добавлениями) до самого окончания разработки. Это включает в себя как разработку, так и дальнейшую поддержку продукта. Он считается законченным в то время, когда удовлетворяет всем требованиям.


Инкрементно/Дикрементный способ адресации (например внутри сегмента памяти) то есть аналитический, линейный, поступательный.


Pragma

В компьютерном программировании директива или pragma (от «прагматика») является языковой конструкцией , который указывает, как компилятор (или другой переводчик ) должен обрабатывать свой ввод. Директивы не являются частью грамматики языка программирования и могут отличаться от компилятора к компилятору.  Они могут обрабатываться препроцессором , чтобы указать поведение компилятора, или функционировать как форма внутриполосной параметризации.

Предикат, предицировать

Предицировать — утверждать, заявлять От лат. praedicare «провозглашать, объявлять во всеуслышанье»

Предикат (лат. praedicatum «заявленное, упомянутое, сказанное») — это утверждение, высказанное о субъекте. Субъектом высказывания называется то, о чём делается утверждение.

Предикат (программирование) — выражение, использующее одну или более величину с результатом булева типа либо величину с результатом логического типа.

Предикат утверждение, которое либо истинно, либо ложно. В программировании это обычно функция, которая возвращает логическое значение для некоторых входных данных.

Предикат это не просто выражение, которое оценивается как истинное или ложное, термин "predicate" используется для обозначения выражения, которое определяет , является ли что-то истинным или ложным, другими словами, он делает утверждение и возвращает истину или ложь. Функции-предикаты (или функции-вопросы) отвечают на какой-то вопрос и всегда (без исключений!) возвращают либо true, либо false.

Логика предикатов — это раздел символической логики, изучающий рассуждения и другие языковые контексты с учётом внутренней структуры входящих в них простых высказываний, при этом выражения языка трактуются функционально, то есть как знаки некоторых функций или же как знаки аргументов этих функций.

Символическая логика  математическая логика, теоретическая логика – область логики, в которой логические выводы исследуются посредством логических исчислений на основе строгого символического языка. 

Логика предикатов .pdf

Предикат – это высказывание, в которое можно подставлять аргументы. Если аргумент один – то предикат выражает свойство аргумента, если больше – то отношение между аргументами.

Пример предикатов: Сократ - человек,  Платон - человек. Оба эти высказывания выражают свойство "быть человеком". Таким образом, мы можем рассматривать, ("появляется") предикат - "быть человеком" и возможно сказать, что он выполняется для Сократа и Платона или логически оперировать уже не высказыванием а предикатом, не объектом а свойством, суммой свойств.

"Все люди смертны"  "Сократ - человек" ..значит  "Сократ смертен"

Это рассуждение на языке логики высказываний (пропозициональная логика) можно записать тремя отдельными высказываниями. Однако никакой связи между ними установить не удастся. На языке логики предикатов эти предложения можно выразить с помощью двух предикатов: быть человеком и быть смертным, и тогда первое выражение "Все люди смертны"  устанавливает связь между этими предикатами.


Или так: "Шеф все пропало, все пропало..."  "Все когда нибудь заканчивается" (хотя скорее это обобщение)


Логика предикатов разбивает элементарное высказывание на субъект (подлежащее или дополнение) и предикат (сказуемое или определение). Субъект – это то, о чем что-то утверждается в высказывании, предикат – это то, что утверждается о субъекте. Пример:

Высказывание: «7 – простое число»

«7» – субъект, 

«простое число» – предикат. 

Это высказывание утверждает, что число 7 обладает свойством быть простым.....так вот и выходит, что в общем и целом предикат это "заявление" "утверждение о субъекте", или так: "...предикат представляет собой любое суждение об объекте, которое либо отрицается либо, утверждается.", короче иначе как "функцию" его не представишь.

Предикат в определенном смысле является инструментом, инструментом формирования новых и новых уровней абстракции, по которым двигается наше сознание в процессе мышления. ... поскольку веши возникающие  существуют, всегда приобретая [грядущее] в своем претерпевании в иное и иное и предицирование наверное их "органичное" свойство.

Булева алгебра часть символической логики

Символическая логика занимается разработкой и исследованием правил преобразования символов, предшествиницей символьной логики была аристотелева логика формулирующая четыре аксиомы:

1. Закон тождества: Мысль должна быть однозначной. В процессе доказательства не допускается подмена одного понятия другим, то есть мысль должна соответствовать самой себе, иметь конкретное значение, быть точной и понятной.

2. Закон исключения третьего: На один и тот же правильно поставленный и понятый вопрос не допустимо отвечать не определенно. Из двух противоречащих высказываний одно необходимо истина другое ложно (третьего не дано), или  два противоречащих утверждения не должны быть одинаково ложными.

3. Закон противоречия: Мысль должна протекать не противоречиво. О положении признанным верным нельзя говорить как о не верном, или две отрицающих друг друга мысли не могут быть одинаково верными.

4. Закон достаточного основания, правило вывода: Всякая мысль лишь тогда верна когда она вытекает из другой правильной мысли которая была для нее основанием, истинная мысль должна быть основана на аргументах, чтобы быть истинной.

Формальная логика — наука о правилах преобразования высказываний, сохраняющих их истинностное значение безотносительно к содержанию входящих в эти высказывания понятий, а также конструирование этих правил. Будучи основателем формальной логики как науки, Аристотель называл её «аналитика», термин же «логика» в сознании европейцев вошёл в обиход уже после его смерти. После Аристотеля, логика отделилась от философии в самостоятельную область знания, которая в западном сознании на протяжении всего средневековья развивалась как аристотелевская логика — традиционная формальная логика (термин “формальная логика” был введен Кантом), математическая логика пример "формальной логики". Сегодня различая различные области знаний мы подразумеваем что, логика - это при самом общем разделении; формальная (математическая) логика, философская логика и логика здравого смысла или просто "логика смыслов". Еще Платон говорил о необходимости “найти общезначимые законы Логоса”, а термин “логика” был введен стоиками (IV—III вв. до Р.Х.), но обозначал он широкое понятие учения о мышлении и языке в духе всеобщей необходимости и логической предопределенности и очевидно что это совсем не то что мы понимаем под логикой сейчас.

".....Как науки, которые теперь имеются, бесполезны для новых открытий, так и логика, которая теперь имеется, бесполезна для открытия знаний. Логика, которой теперь пользуются, скорее служит укреплению и сохранению заблуждений, имеющих свое основание в общепринятых понятиях, чем отысканию истины. Поэтому она более вредна, чем полезна”

“Есть четыре вида идолов, которые осаждают умы людей. 

Первый вид идол рода, 

Второй — идол пещеры, 

Третий — идол площади 

Четвертый — идол театра”       Френсис Бэкон

https://bogoslov.ru/article 

Можно ли постигать истину на уровне рассудка? Если диалектически, тогда диалектика есть такая рассудочная деятельность, которая подводит человека вплотную к границам рассудка. Иными словами, диалектика — это умение видеть сущность предметов, т. е. их умопостигаемые основания их логосы. В формальном смысле, диалектика — это логика, из которой изъят закон исключенного третьего. 

2. Закон исключения третьего: На один и тот же правильно поставленный и понятый вопрос не допустимо отвечать не определенно. Из двух противоречащих высказываний одно необходимо истина другое ложно (третьего не дано), или  два противоречащих утверждения не должны быть одинаково ложными.

Например: Бог познаваем и непознаваем, и поскольку Он познаваем, Он — сущность, а поскольку непознаваем — энергия.  Спрашивается, почему одно и то же не может быть сразу и познаваемым, и непознаваемым? , в силу закона исключенного третьего, утверждающий, что одно и тоже не может быть чем-то и не быть им в одно и то же время в одном и том же смысле. Что же, спросим мы, Бог подпадает под действие этого закона? А если нет, то к чему предицировать Богу содержания, полученные в результате действия нашей подлежащей этому закону «эпинойи»("примышление")? 

Для диалектика тут все просто, ему не нужны дополнительные термины: Бог познаваем и непознаваем в одно и то же время в одном и том же смысле, везде и всегда, в каждом акте познания, и мы, когда познаем это, то познаем умом и не рассуждая. Это столь же мало значит, что Бог есть всецело сущность, сколь и что Он всецело энергия, ибо Он — ни то, ни другое, Он — то третье, которое как раз и исключается тем самым законом, которому рабствуют мыслители, мнящие себя богопросвещенными «антиномистами».

Плотин "О Диалектике" ст.140 

Учебник Платоновской философии Альбин-Алкиной ст.629: "Первым началом диалектики можно считать усмотрение сущности всякой вещи, затем усмотрение ее свойств. Диалектика рассматривает то, чем является всякая вещь, сверху вниз — путем разделения и определения — и снизу  вверх — путем анализа; принадлежащие сущности свойства она рассматривает, идя от менее общего — путем индукции  и от более общего — путем силлогизма. Поэтому части диалектики суть разделение, определение, анализ, а также 

индукция и силлогизм."

Дедуктивное умозаключение, дедукция — метод мышления, следствием которого является логический вывод, истинность которого гарантируется истинностью посылок. Также может определяться логико-методологическая процедура, посредством которой осуществляется переход от общего к частному в процессе рассуждения.


Индукция (inductio — наведение, влечь за собой, установить) — умозаключение от фактов к некоторой гипотезе (общему утверждению). 

Полная индукция — обобщение относится к конечно-обозримой области фактов,

Неполная индукция — когда оно относится к бесконечно или конечно-необозримой области фактов.

Редукция — (reductio — сведение, возведение, приведение обратно) в логике и математике — сведения сложного к простому

Индуктивное умозаключение связывает частные предпосылки с заключением не строго через законы логики, а через некоторые фактические, психологические или математические представления.


Объективным основанием индуктивного умозаключения является всеобщая связь явлений в природе. Итого, полная индукция — метод доказательства, при котором утверждение доказывается для конечного числа частных случаев, исчерпывающих все возможности, неполная индукция — наблюдения за отдельными частными случаями наводят 

на гипотезу, которая, конечно, нуждается в доказательстве.

Также для доказательств используются метод математической индукции и трансфинитная индукция, которые позволяют осуществить полную индукцию для бесконечных счётного и несчётного множеств объектов соответственно.

Термин впервые встречается у Сократа (ἐπαγωγή). Индукция Сократа имеет мало общего с современной индукцией. Сократ под индукцией подразумевает нахождение общего определения путём сравнения частных случаев и исключения ложных, слишком узких определений.

Аристотель указал на особенности индуктивного умозаключения,определяет его как восхождение от частного к общему. Он отличал полную индукцию от неполной, указал на роль индукции при образовании первых принципов, но не выяснил основы неполной индукции и её права. Он рассматривал её как способ умозаключения, противоположный силлогизму. Силлогизм, по мнению Аристотеля, указывает посредством среднего понятия на принадлежность высшего понятия третьему, а индукция третьим понятием показывает принадлежность высшего среднему.

В сущности, и введение обременяющих мысль рассудочных различий не может затемнить ту диалектическую истину, что Бог нечто третье исключенное Аристотелевской аксиомой, однако ведет к продолжительным и бессмысленным спорам, в которых вводящий такие различия вынужден доказывать, что тем самым он не делает Бога сложным, что доказывать весьма проблематично, ибо это требует интеллектуального созерцания, которое лишь латентно присутствует в рассудочном методе, опирающемся на закон исключенного третьего и, следовательно, имеющем сферу применения лишь среди вещей чувственных. Поэтому диалектика — «царский путь», во всяком случае, в рассуждении о вещах божественных, находящихся выше противоположностей, путь, позволяющий  отделить сами предметы от «примышлений» "эпинойи".

Гносеология Плотина к сожаления, оставляет открытым вопрос об отношении диалектики к эмпирическому познанию.

Том II_Аналитика I-II_Аристотель.pdf

hp psc 1300 series


https://support.hp.com/ru-ru/drivers/hp-psc-1310-all-in-one-printer-series 

Сервер печати CUPS 

HPLIP is an HP developed solution for printing, scanning, and faxing  

УСТАНОВКА СКАНЕРА В LINUX 


Инструкция по замене шестерни привода принтера HP PSC, 

Ремонт HP PSC 1315 

восстановить засохший картридж 


sudo apt-get install cups

sudo /etc/init.d/cups restart

http://localhost:631/admin

sudo apt-get install sane sane-utils libsane

sudo apt install xsane


$ ./hplip-3.21.12.run

sudo pt-get install hplip-gui

lp - print files 

$ lpstat -p -d   #найти доступные принтеры

printer psc_1310 is idle.  enabled since Thu 27 Jan 2022 11:28:09

no system default destination

~$ 

$ lpoptions -d psc_1310  #выбрать один из них по умолчанию

copies=1 device-uri=hp:/usb/psc_1310_series?serial ......

$ lpoptions | tr " " '\n' #просмотреть настройки(lpoptions)

copies=1

device-uri=hp:/usb/psc_1310_series?serial=MY53LC90VGO2

finishings=3

...............

number-up=1

printer-commands=none

printer-info

printer-is-accepting-jobs=true

printer-is-shared=true

printer-is-temporary=false

printer-location

printer-make-and-model='HP

PSC

1310

Series,

.................

$ lpq  #узнать, является ли принтер принтером по умолчанию.

psc_1310 is ready

no entries

$ lpstat -p -d

printer psc_1310 is idle.  enabled since Thu 27 Jan 2022 11:28:09 AM MSK

system default destination: psc_1310

$ lp <file>

$ cal | lp

request id is psc_1310-14 (0 file(s))

$

Запись вывода терминала, если файл  для записи не указан, то умолчание 'typescript'.

$ script

Script started, output log file is 'typescript'.

$ cat typescript

..............................

$ sudo usermod -a -G scanner,plugdev user

$ id user

uid=1000(user) gid=1000(user) groups=1000(user),27(sudo),46(plugdev),125(kismet),132(scanner),144(debian-transmission),129(ubridge),998(docker)

$

$ getent group scanner plugdev

scanner:x:132:saned,user

plugdev:x:46:user

$

 lpstat  (http://localhost:631/help/man-lpstat.html?TOPIC=Man+Pages&QUERY=)

$ lpstat -a     #показать доступные принтеры

psc_1310 accepting requests since Fri 28 Jan 2022 12:34:27 PM MSK

$ lpstat -s     #подробно

system default destination: psc_1310

device for psc_1310: hp:/usb/psc_1310_series?serial=MY53LC90VGO2

$ lpstat -a psc_1310  #состояние очереди печаьти для указанного принтера

psc_1310 accepting requests since Fri 28 Jan 2022 12:34:27 PM MSK

$ lpstat -p psc_1310    #состояние указанного принтера. Если принтер не указан, выводится информация обо всех принтерах

printer psc_1310 is idle.  enabled since Fri 28 Jan 2022 12:34:27 PM MSK

$ lpstat -r     #состояние сервера печати

scheduler is running

$ lpstat -t #Вывести полный отчет о состоянии

scheduler is running

system default destination: psc_1310

device for psc_1310: hp:/usb/psc_1310_series?serial=MY53LC90VGO2

psc_1310 accepting requests since Fri 28 Jan 2022 12:34:27 PM MSK

printer psc_1310 is idle.  enabled since Fri 28 Jan 2022 12:34:27 PM MSK

lprm - cancel print jobs  (https://www.cups.org/doc/man-lprm.html)

$ lprm -

lprm: Forbidden

Failed start GDM

Перезапуск gdm.service, правка конфигурационого файла ни к чему доброму не привели, пришлось переставить на lightdm, Alt+F2:

apt install lightdm

dpkg-reconfigure lightdm

можно и так:

apt purge gdm3

reboot

apt install gdm3

service gdm start

Следующая проблема после переустановки ядра 5.19.0, не стартует демон PulseAudio, перезапуск systemd, решит проблему но до следуешей перезагрузки, редактирование 

sudo vim /etc/pulse/client.conf, строка 25 должна быть: ;autospawn = yes, как и расширение прав на домашнюю дирректорию, тоже без результата, проблема решается кординально то есть:

$ sudo apt purge pulseaudio

$ sudo apt clean

$ sudo apt autoremove

$ rm -r ~/.pulse ~/.asound* ~/.pulse-cookie ~/.config/pulse

$ sudo reboot

...и далее:

$ sudo apt install pulseaudio pavucontrol

PS: Но поскольку PulseAudio в Linux это все равно что корове седло,

...вообщем можно не ставить alsa вполне достаточно (Debian).

[26]

Соединение конечных узлов через сеть транзитных узлов называют коммутацией. Последова­тельность узлов, лежащих на пути от отправителя к получателю, образует маршрут.

Обобщенная задача коммутации

В самом общем виде задача коммутации может быть представлена в виде следующих взаимосвязанных частных задач.

1. Определение информационных потоков, для которых требуется прокладывать маршруты.

2. Маршрутизация потоков.

3. Продвижение потоков, то есть распознавание потоков и их локальная коммутация на каждом транзитном узле.

4. Мультиплексирование и демультиплексирование потоков.


Информационным потоком, или потоком данных, называют непрерывную последовательность данных, объединенных набором общих признаков, выделяющих эти данные из общего сетевого трафика.

Термины «коммутация», «таблица коммутации» и «коммутатор» в телекоммуникационных сетях мо­гут трактоваться неоднозначно. C одной стороны это процесс соединения абонентов

сети через транзитные узлы. Этим же термином мы обозначаем и соединение интерфейсов в преде­лах отдельного транзитного узла. Коммутатором в широком смысле называется устройство любого типа, способное выполнять операции переключения потока данных с одного интерфейса на другой. Операция коммутации может выполняться в соответствии с различными правилами и алгоритмами. Некоторые способы коммутации и соответствующие им таблицы и устройства получили специальные названия. Например, в технологии IP для обозначения аналогичных понятий используются термины «маршрутизация», «таблица маршрутизации», «маршрутизатор». В то же время за другими специ­альными типами коммутации и соответствующими устройствами закрепились те же самые названия «коммутация», «таблица коммутации» и «коммутатор», применяемые в узком смысле, например как коммутация и коммутатор в локальной сети Ethernet. Для телефонных сетей, которые появились на­ много раньше компьютерных, также характерна аналогичная терминология, «коммутатор» является

здесь синонимом «телефонной станции».

[27]

Главное отличие пакетных коммутаторов от коммутаторов в сетях с коммутацией каналов со­стоит в том, что они имеют внутреннюю буферную память для временного хранения пакетов.

пакетный коммутатор не может принять решения о продвижении пакета, не имея в своей памяти всего пакета. Коммутатор проверяет контрольную сумму, и только если она говорит о том, что данные пакета не искажены, начинает обрабатывать пакет и по адресу назначения определяет следующий коммутатор. Поэтому каждый пакет последо­вательно, бит за битом, помещается во входной буфер. Имея в виду это свойство, говорят, что сети с коммутацией пакетов используют технику сохранения с продвижением (store-and-forward).

Коммутатору нужны буферы для согласования скоростей передачи данных в линиях связи, подключенных к его интерфейсам. 

Буферизация необходима пакетному коммутатору также для согласования скорости поступления пакетов со скоростью их коммутации.

Современные способы построения коммутирующего блока основаны на многопроцессорном подходе, когда каждый интерфейс имеет свой встроенный процессор для обработки пакетов. Кроме того, существует центральный процессор, координирующий работу интерфейсных процессоров. Использование интерфейсных процессоров повышает производительность коммутатора и уменьшает очереди на входных интерфейсах.

Пакетный коммутатор может работать на основании одного из трех методов продвижения пакетов:

[28]

Дейтаграммная передача

Дейтаграммный способ передачи данных основан на том, что все передаваемые пакеты продвигаются независимо друг от друга на основании одних и тех же правил.

Процедура обработки пакета определяется только значениями параметров, которые пакет несет "в себе", и текущим состоянием сети (например, в зависимости от ее нагрузки пакет может стоять в очереди на обслуживание большее или меньшее время). Однако никакая информация об уже переданных пакетах сетью не хранится и в ходе обработки 

очередного пакета во внимание не принимается. То есть каждый отдельный пакет рассматривается сетью как совершенно независимая единица передачи - дейтаграмма.

Дейтаграммный способ это быстро, можно даже сказать это "хорошо" так как никаких предварительных действий перед отправкой данных проводить не требуется. Однако факт доставки пакета узлу назначения практически проверить не возможно. В этом методе доставка пакета не гарантируется, а выполняется по мере возможности — для описания такого 

свойства используется термин доставка по возможности (best effort), что предопределяет тип данных передаваемых этим методом.


Передача с установлением логического соединения

Это следующий способ продвижения пакетов который основывается на знании устройствами сети «истории» обмена данными, например на запоминании узлом-отправителем числа отправленных, а узлом-получателем — числа полученных пакетов, подобное знание фиксируется в рамках логического соединения протоколом транспортного уровня как итог процедуры согласования двумя конечными узлами сети определенных параметров процесса обмена пакетами и называется установлением логического соединения. Параметры, о которых договариваются два взаимодействующих узла, называются параметрами логического соединения.

Параметры соединения могут быть: постоянными , то есть не изменяющимися в течение всего соединения (например, идентификатор соединения, способ шифрования пакета или максимальный размер поля данных пакета), или переменными, то есть динамически отражающими текущее состояние соединения (например, последовательные номера передаваемых 

пакетов). Когда отправитель и получатель фиксируют начало нового соединения, они прежде всего «договариваются» о начальных значениях параметров процедуры обмена и только после этого начинают передачу собственно данных. Процедура установления соединения как правило состоит из трех шагов:

1. Узел-инициатор соединения отправляет узлу-получателю служебный пакет с предложением установить соединение.

2. Если узел-получатель согласен с этим, то он посылает в ответ другой служебный пакет,подтверждающий установление соединения и предлагающий некоторые параметры,которые должны использоваться в рамках данного логического соединения. Это могут быть, идентификатор соединения, количество кадров, которые можно от­ править без получения подтверждения, и т. п.

3. Узел-инициатор соединения заканчивает процесс установления соединения от­правкой третьего служебного пакета, в котором сообщает, что предложенные параметры ему подходят или нет.

Логическое соединение может быть рассчитано на передачу данных как в одном направлении — от инициатора соединения, так и в обоих направлениях. После передачи некоторого законченного набора данных, например определенного файла, узел-отправитель инициирует разрыв данного логического соединения, посылая соответствующий служебный кадр.

После того как соединение установлено и все параметры согласованы, конечные узлы начинают передачу собственно данных. Пакеты данных обрабатываются коммутаторами точно так же, как и при дейтаграммной передаче: из заголовков пакетов извлекаются адреса назначения и сравниваются с записями в таблицах коммутации, содержащих информацию о следующих шагах по маршруту. Так же как и дейтаграммы, пакеты, относящиеся к одному логическому соединению, в некоторых случаях (например, при отказе линии связи) могут доставляться адресату по разным маршрутам. 

Передача с установлением соединения имеет важное отличие от дейтаграммной передачи, поскольку в ней помимо обработки пакетов на коммутаторах имеет место дополнителъная обработка пакетов на конечных узлах. Например, если при установлении соединения была оговорена передача данных в зашифрованном виде, то шифрование пакетов выполняется узлом-отправителем, а дешифрирование — узлом-получателем. Аналогично для обеспечения в рамках логического соединения надежности всю работу по нумерации пакетов, отслеживанию номеров доставленных и недоставленных пакетов, посылке копий и отбрасыванию дубликатов берут на себя конечные узлы и как следствие этот способ более медленный, так как он подразумевает дополнительные вычислительные затраты на установление и поддержание логического соединения. Тем не менне механизм установления логических соединений позволяет реализовывать дифференцированное обслуживание информационных потоков. Разное обслуживание могут получить даже потоки, относящиеся к одной и той же паре конечных узлов. Например, пара конечных узлов может установить два  параллельно работающих логических соединения,в одном из которых передавать данные в зашифрованном виде, а в другом — открытым текстом.


Передача с установлением виртуального канала

Единственный заранее проложенный фиксированный маршрут, соединяющий конечные узлы в сети с коммутацией пакетов, называют виртуальным каналом (virtual circuit, или virtual channel).

Передача с установлением виртуального канала, способ продвижения данных основанный на частном случае логического соединения, в число параметров которого входит жестко определенный для всех пакетов маршрут. То есть все пакеты, передаваемые в рамках данного соединения, должны проходить по одному и тому же закрепленному за этим соединением 

пути. Виртуальные каналы прокладываются для устойчивых информационных потоков. С целью выделения потока данных из общего трафика каждый пакет этого потока помечается признаком особого вида — меткой. Так же как в сетях с установлением логических соединений, прокладка виртуального канала начинается с отправки узлом-источником специального пакета — запроса на установление соединения. В запросе указываются адрес назначения  и метка потока, для которого прокладывается этот виртуальный канал. Запрос, проходя по сети, формирует новую запись в каждом из коммутаторов, расположенных на пути от отправителя до получателя которая говорит о том, каким образом коммутатор должен обслуживать пакет, имеющий заданную метку. В результате образуется виртуальный канал который идентифицируется той же меткой. Во всех пакетах, которые переносят пользовательские данные, адрес назначения уже не указывается, его роль играет метка виртуального канала. При поступлении пакета на входной интерфейс коммутатор читает значение метки из заголовка пришедшего пакета и просматривает свою таблицу коммутации, по которой определяет, на какой выходной порт передать пришедший пакет.

В дальнейшем способ передачи данных напоминает дейтаграмный способ, при том что, таблица коммутации в сетях, использующих виртуальные каналы, отличается от таблицы коммутации в дейтаграммных сетях. Она содержит записи только о проходящих через коммутатор виртуальных каналах, а не обо всех возможных адресах назначения, как это 

имеет место в сетях с дейтаграммным алгоритмом продвижения. Обычно в крупной сети количество проложенных через узел виртуальных каналов существенно меньше общего количества узлов, поэтому и таблицы коммутации в этом случае намного короче, а следовательно, анализ такой таблицы занимает у коммутатора меньше времени.

В одной и той же сетевой технологии могут быть задействованы разные способы продвижения данных. Так, дейтаграммный протокол IP используется для передачи данных между отдельными сетями, составляющими Интернет. В то же время обеспечением надежной доставки данных между конечными узлами этой сети занимается протокол TCP, устанавливающий логические соединения без фиксации маршрута. И наконец, Интернет — это пример сети, применяющей технику виртуальных каналов, так как в состав Интернета входит немало сетей ATM и Frame Relay, поддерживающих виртуальные каналы.


PS: О маршрутизации в виртуальных сетях, необходимо сделать  одно замечание. Многие пользователи сетей Интернет и Ethernet фанатично привязаны к сетям без установления соединения и неистово противопоставляют их любым системам, в которых есть хотя бы намек на соединение на сетевом или канальном уровне. Однако в виртуальных сетях один технический момент как раз-таки очень сильно напоминает установку соединения. Речь идет о том, что работа виртуальной сети невозможна без того, чтобы в каждом кадре был идентификатор, использующийся в качестве индекса таблицы, встроенной в коммутатор. По этой таблице определяется дальнейший вполне определенный маршрут кадра. Именно это и происходит в сетях, ориентированных на соединение. В системах без установления соединения маршрут определяется по адресу назначения, и там отсутствуют какие либо идентификаторы конкретных линий, через которые должен пройти кадр.

[29]

Сетевая архитектура — это концептуальная схема функционирования компьютерной сети, определяющая принципы работы аппаратных и программных сетевых компонентов, орга­низацию их связей, протоколы взаимодействия и способы физической передачи данных. Архитектура сети отражает декомпозицию общей задачи взаимодействия компьютеров на от­дельные подзадачи, которые должны решаться отдельными компонентами сети — конечными узлами (компьютерами) и промежуточными узлами (коммутаторами и маршрутизаторами).

.......Олифер: Компьютерные сети. Принципы, технологии, протоколы   PDF ст.105  Архитектура, стандартизация и классификация сетей

В зависимости от способа коммутации сети подразделяются на два фундаментально различных класса:

Техника коммутации пакетов, в свою очередь, допускает несколько вариаций, отличающихся способом продвижения пакетов, в соответствии с чем сети делятся на:

Кроме того:

В зависимости от функциональной роли, которую играют некоторые части сети, ее относят к сети доступа, магистральной сети или сети агрегирования трафика

трафик, поступающий от большого числа сетей доступа. В сетях среднего и небольшого размера сети агрегирования  обычно отсутствуют.


Различают также первичные и наложенные телекоммуникационные сети:

кабелям выполняют функции физического уровня сетей. Однако в отличие от кабелей первичные сети включают дополнительное коммуникационное оборудование, которое

путем соответствующего конфигурирования позволяет прокладывать новые физические каналы между конечными точками сети. Другими словами, первичная сеть — это

гибкая среда для создания физических каналов связи.

[30]

https://spectrum.ieee.org/topic/computing/ 

IEEE (Institute of Electrical and Electronics Engineers) — Институт инженеров электротехники и электроники  — международная некоммерческая ассоциация специалистов в области техники, мировой лидер в области разработки стандартов по радиоэлектронике, электротехнике и аппаратному обеспечению вычислительных систем и сетей. Корпоративный офис находится в Нью-Йорке, а центр операций в Пискатавэе (Нью-Джерси). Образован в 1963 году путём объединения Американского института инженеров-электриков и Института радиоинженеров. По состоянию на 2018 год это крупнейшая в мире ассоциация технических специалистов, насчитывающая более 423 000 членов в более чем 160 странах мира. Целями Института являются образовательный и технический прогресс в области электроники и электротехники, телекоммуникаций, вычислительной техники и смежных дисциплин.

В 1980 году в институте IEEE был организован комитет 802 по стандартизации технологий LAN — комитет по стандартам IEEE 802 LAN/MAN Standards Committee (LMSC). Службы и протоколы, указанные в IEEE 802, находятся на двух нижних уровнях (канальный и физический) сетевой модели OSI и по скольку IEEE 802 разделяет канальный уровень OSI на два подуровня — Media Access Control (MAC) и  Logical Link Control (LLC), уровни располагаются в следующем виде:

Подуровень LLC

Подуровень MAC

Результатом работы комитета IEEE 802 стало принятие семейства стандартов IEEE 802.x, содержащих рекомендации по проектированию локальных сетей, стандарты изначально базировались на обобщении фир­менных стандартов, таких как Ethernet и Token Ring.

Комитет IEEE 802 и сегодня является основным международным органом, разрабатыва­ющим стандарты технологий локальных сетей, в том числе стандарты коммутируемых локальных сетей, а также беспроводных локальных сетей на разделяемой среде. Помимо IEEE в работе по стандартизации протоколов LAN принимали и принимают уча­стие и другие организации. Так, для сетей, работающих на оптоволокне, институтом ANSI был разработан стандарт FDDI, обеспечивающий скорость передачи данных 100 Мбит/с. Это был первый протокол LAN, который достиг такой скорости, в 10 раз превысив скорость технологии Ethernet.

Международная электротехническая комиссия International Electrotechnical Commission 

Старейшая международная некоммерческая организация по стандартизации в области электрических, электронных и смежных технологий.

МЭК способствовала развитию и распространению стандартов для единиц измерения. Именно IEC предложила систему стандартов, которая, в конечном счёте, вошла в систему единиц СИ.

В 2000 году IEC утвердила стандарт IEC 60027-2,предусматривающий новые обозначения, в которых к основной приставке добавляется слог bi ( двоичный). Так, если единица измерения емкости кратна байту, предлагаются следующие названия и обозначения: 

kibibyte(KiB), mebibyte (MiB), gibibyte (GiB), tebibyte (TiB), pebibyte (PiB), exbibyte (EiB), zettabyte (ZiB), yottabyte (YiB) [100]. 

В русской транскрипции соответственно — кибибайт (КиБ), мебибайт (МиБ), гибибайт (ГиБ), тебибайт (ТиБ) и т. д.

[31]

Инжиниринга трафика (Traffic Engineering) выбор маршрутов для потоков (или классов) трафика с учетом соблюдения требований QoS. С помощью этих методов стремятся добиться одной цели — по возможности максимально и сбалансиро­ванно загрузить все ресурсы сети, чтобы сеть при заданном уровне качества обслуживания обладала как можно более высокой суммарной производительностью.

[32]

Уровень технологического развития государства в современнных условиях определяется степенью прецизионности оборудования используемого в технологиях производства микроэлектронных, биомолекулярных и биомедицинских изделий.

Прецизионность (precision) — Степень близости друг к другу независимых результатов измерений, полученных в конкретных регламентированных условиях.

Точность (accuracy) — Степень близости результата измерений к цели (истинному значению).


Узнать дату последнего обновления сайта с помощью скрипта JavaScript

Откройте сайт, дату обновления которого нужно проверить. Нажмите клавишу F12 на клавиатуре. Откроется панель инструментов разработчика. На вкладке «Консоль» введите следующее:  javascript:alert(document.lastModified) нажмите Enter, на странице, которую вы проверете, будет активировано оповещение, которое будет содержать дату и время обновления страницы.

Узнать дату последнего обновления сайта с помощью кэша Google:

Добавьте адрес страницы после двоеточия:  https://webcache.googleusercontent.com/search?q=cache:

Когда откроется кэшированная версия, сверху вы увидите «Это версия страницы http://tech-geek.ru/ из кеша Google. Она представляет собой снимок страницы по состоянию» и дату обновления.

Комутация в data-центрах 

Сеть хранения данных (Storage Area Network, SAN) — архитектурное решение для подключения внешних устройств хранения данных, таких как дисковые массивы, ленточные библиотеки, оптические приводы к серверам таким образом, чтобы операционная система распознала подключённые ресурсы как локальные, обычно посредством протоколов Fibre Channel, iSCSI или AoE (ATA over Ethernet).

Сетевые хранилища данных (Network Attached Storage, NAS) предназначены для предоставление доступа к хранящимся на их файловой системе данным при помощи сетевой файловой системы (такой как NFS, SMB/CIFS, или Apple Filing Protocol).

SAS(Server Attached Storage)/DAS(Direct Attached Storage) прямое "direct" подсоединение системы хранения к одной или нескольким хост-системам через высокоскоростной канальный интерфейс, высокоскоростная обработка данных больших объемов на одной или нескольких хост-системах, например организация зеркального RAID-а на сервере(как один из вариантов) — дешево и эффективно. https://habr.com/ru/post 

Oversubscription(переподписка) превышение лимита подписки в сети хранения данных (SAN storage area network) — это практика выделения большей пропускной способности сети для устройств, подключенных к этой сети, чем физически доступно. Oversubscription используется для компенсации затрат на инфраструктуру SAN, Помимо хранилищь, термин применяется и в других областях, включая корпоративные сети, виртуализацию серверов и финансы

Кауфман/Сидман "Практическое руководство ...."

Цифровая логика Том_1 ст.260

Кауфман_Сидман_1.PDF
Кауфман_Сидман_2.PDF

Полоса пропускания

Таненбаум "Компютерные Сети": Ряды Фурье                       PDF ст.107


Полоса пропускания (прозрачности) — диапазон частот, в пределах которого амплитудно-частотная характеристика (АЧХ) акустического, радиотехнического, оптического или механического устройства достаточно равномерна для того, чтобы обеспечить передачу сигнала без существенного искажения его формы.

Полоса пропускания является физической характеристикой среды передачи данных и зависит на практике от  "бесконечного" количества условий, например, от конструкции, толщины и длины носителя — провода или оптоволокна и т.д. включая погоду....(Ширина полосы пропускания полоса частот, в пределах которой не равномерность частотной характеристики не превышает заданной). 

Ширина полосы обычно определяется как разность верхней и нижней граничных частот участка АЧХ f2-f1, на котором амплитуда колебаний равняется 1/корень квадратный из 2(или, что эквивалентно 1/2 для мощности) от максимальной. Этот уровень приблизительно соответствует 3 дБ.

Термин «полоса пропускания» не однозначен, так как для инженера-электротехника и деятеля компьютерных наук он означает разные вещи. Для инженера-электротехника (аналоговая) полоса пропускания, это значение в герцах, указывающее ширину диапазона частот. Для компьютерного специалиста (цифровая) полоса пропускания — это максимальная скорость данных в канале или "ширина канала (полосы)", то есть значение, измеряемое в битах в секунду, но фактически скорость данных определяется аналоговой полосой пропускания физического канала, применяемого для передачи цифровой информации, так что эти два представления связаны не посредственно.

Самый очевидный и распространенный способ передачи информации по проводам это изменение какой-либо физической величины, например напряжения или силы тока на "передатчике" и фиксирование этих изменений на "приемнике", стало быть представив значение напряжения или силы тока в виде однозначной функции по времени, f(t), возможно смоделировать поведение сигнала и подвергнуть его математическому анализу и следовательно в дальнейшем моделировать формы "поведения" передачи этой информации. 

Краеугольным инструментом подобного моделирования явились труды французского математика Жана-Батиста Фурье (Jean-Baptiste Fourier), который доказал, что любая периодическая функция g(t) с периодом T может быть разложена в ряд (возможно, бесконечный),  что было не ново, а новым явился триногометрический ряд Фурье состоящий из сумм синусов и косинусов с возможностью их воссоединения, решение его сходимости и суммы: (Ряды Фурье -->PDF) 

И так, согласно теории Фурье-анализа любая периодическая функция g(t) с периодом T может быть разложена (как и восстановлена) в ряд по функциям синуса и косинуса – что и является рядом Фурье:

где f = 1/T — основная частота (гармоника совокупность гармоник сигнала называют его спектром.), аn и bn — амплитуды синусов и косинусов n-й гармоники, а c — константа. Разложенная в ряд Фурье функция может  быть восстановлена по элементам этого ряда,то есть если период T и амплитуды гармоник известны, то исходная функция может быть восстановлена с помощью суммы ряда 2.1.

Информационный сигнал, имеющий конечную длительность (все информационные сигналы имеют конечную длительность), так же может быть разложен в ряд Фурье, если представить, что весь сигнал бесконечно повторяется (то есть интервал от T до 2T полностью повторяет интервал от 0 до T и т. д.). Амплитуды an могут быть вычислены для любой заданной функции g(t). Для этого нужно умножить левую и  правую стороны выражения на sin(2nπkft), а затем проинтегрировать от 0 до T. Поскольку:

остается только один член ряда: an. Ряд bn исчезает полностью. Аналогично, умножая выражение на cos(2nπkft) и интегрируя по времени от 0 до T, мы можем вычислить значения bn. Если проинтегрировать обе части выражения, не изменяя его, то можно получить значение константы c, и далее оперировать конкретными математическими значениями 

Результаты этих действий будут следующими:

**** Сигналы с ограниченным спектром, то есть сигналы, спектр Фурье которых отличен от нуля только в пределах ограниченного участка области определения. 

В зависимости от физических характеристик каналов сигналы с разными частотами ведут себя в них поразному. Рассмотрим конкретный пример — передачу двоичного кода ASCII символа «b». Для этогопотребуется 8 бит (то есть 1 байт). Задача — передать следующую последовательность бит: 01100010.

На рис. 2.1, слева изображена зависимость выходного напряжения от времени на передающем компьютере, среднеквадратичные амплитуды, корень квадратный из суммы an а вквадрате и  bn b в квадрате , для нескольких первых гармоник показаны на рис. 2.1, а справа. Эти значения представляют интерес, поскольку их квадраты пропорциональны энергии, передаваемой на соответствующей частоте. В результате анализа Фурье для данного сигнала получаем следующие значения коэффициентов:

Следует еще раз уточнить, что понимается под термином "гармоника", при проведении частотного анализа как элекрических так и других видов сигналов: В рамках теории частотного анализа сигналов зависимость тока или напряжения от времени можно заменить  некоторым набором синусоидальных колебаний тока (напряжения) с различными частотами, фазами и  амплитудами. ... Каждое из этих синусоидальных (гармонических) колебаний называют словом "гармоника"..., Гармоника — это одна из мод колебаний (частота из какого-то сложного колебания... ) их обычно много.. .(как  например в акустике, где с этим все очень не просто), или мод колебания которое можно выделить как гармоническое.

Среднеквадратичные (то есть не ниже среднего) амплитуды, для нескольких первых гармоник показаны на рис. 2.1, а справа. Эти значения представляют интерес, поскольку их квадраты пропорциональны энергии, передаваемой на соответствующей частоте.

Ни один канал связи не может передавать сигналы без потери мощности. Если бы все гармоники ряда Фурье уменьшались при передаче в равной степени, то сигнал уменьшался бы по амплитуде, но не  искажался (то есть у него была бы та же самая замечательная прямоугольная форма, как на рис. 2.1, а).  К сожалению, все каналы связи уменьшают гармоники ряда Фурье в разной степени, тем самым искажая передаваемый сигнал. Как правило, по кабельным сетям амплитуды передаются почти без уменьшения  в частотном диапазоне от 0 до некоей частоты fc(измеряемой в периодах в секунду или герцах (Гц)), при этом высокочастотная составляющая сигнала (выше частоты fc, называемой частотой среза) заметно ослабляется. Этот диапазон частот и называется полосой пропускания. На практике срез вовсе не является таким резким, поэтому обычно в упомянутую выше полосу пропускания включают те частоты, которые передаются с потерей мощности, не превышающей 50 %, в чем основное преимущество витой пары, плюс однозначное определение коллизий.

Полоса пропускания — это также некий разрешенный диапазон частот, и возможность передачи информации  зависит только от его ширины, но не от начального и конечного значения частот. Сигналы, передающиеся в диапазоне частот от 0 и до верхней границы полосы, называются модулирующими сигналами. Сигналы, которые сдвигаются в верхний диапазон частот, как, например, для всех видов беспроводной передачи  данных, называются сигналами в полосе.

Теперь посмотрим, как будет выглядеть сигнал, изображенный на рис. 2.1, а, если полоса пропускания канала будет такой, что через него будут проходить только самые низкие частоты (то есть функция g(t)  будет аппроксимирована (заменена приблизительно равным) лишь несколькими первыми членами рядов выражения (2.1)). 

На рис. 2.1, б  показан сигнал на выходе канала, пропускающего лишь первую (основную, f ) гармонику сигнала.  Аналогично,рис. 2.1, в –> д показывают спектры и восстановленные сигналы для каналов с более широкой полосой пропускания. Что касается цифровых данных, то главная задача  - передавать их с минимальным качеством, позволяющим восстановить первоначальную последовательность битов. Для этого достаточно сигнала, показанного на рис. 2.1, д; следовательно, совершенно не нужно тратить ресурсы и использовать большее количество гармоник для получения более точной копии. При заданной скорости передачи в битах, равной b бит/с, время, требуемое для передачи, скажем, 8 бит, будет равно 8/b секунд. Таким образом, частота первой гармоники равна b/8 Гц. 

Обычная телефонная линия, часто называемая речевым каналом,имеет искусственно созданную частоту среза около 3000 Гц. Это ограничение означает, что номер самой высокой гармоники, прошедшей сквозь телефонный канал, примерно (срез не очень крутой)  равен 3000/(b/8) или 24 000/b. Для некоторых скоростей передачи данных эти значения показаны в  табл. 2.1. Из приведенных данных ясно, что попытка передать по речевому каналу данные на скорости  9600 бит/с превратит сигнал, показанный на рис. 2.1, а, в нечто подобное рис. 2.1, в, что сделает  прием исходного потока битов с приемлемым качеством практически невозможным. Очевидно, что у  сигналов, передаваемых со скоростью 38 400 бит/с и выше, нет никаких шансов пройти через речевой канал,  даже при полном отсутствии помех на линии. Другими словами, ограничение полосы пропускания частот канала ограничивает его пропускную способность для передачи двоичных данных даже для идеальных каналов. Однако схемы, использующие несколько уровней напряжений, существуют и позволяют достичь более высоких скоростей передачи данных

[33]

Предметная область — множество всех предметов, свойства которых и отношения между которыми рассматриваются в научной теории. В логике — подразумеваемая область возможных значений предметных переменных логического языка.

Предметная область — часть реального мира, рассматриваемая в пределах данного контекста. Под контекстом здесь может пониматься, например, область исследования или область, которая является объектом некоторой деятельности.

Предметная область не только определяет множество объектов, рассматриваемых в пределах одного рассуждения или в научной теории, но также их свойства, отношения, функциональные связи. При этом сама по себе предметная область является абстрактным понятием, это некоторый способ "объединения предметов в мысли".

[34]

Курс CCNA 1: основы сетевых технологий ст.518

Алгоритмы динамической маршрутиризаци, два класса алгоритмов:

Дистанционно-векторные (distanse-vector)  маршрутизация по слухам:  

Кратко так: в таблицу маршрутиризации заносятся данные кому передаются данные с учетом длинны маршрута, стоимости, сначала происходит обмен информацией между ближайшими соседями и заносится в таблицу маршрутов, далее соседи обмениваются векторами - направлениями  и дистанциями (счетчик узлов - растояния измеренными в той или иной метрике), далее обмениваются следующие соседи и т.д, то-есть есть дистанции и есть вектор (направление) как сумма этих дистанций, в итоге получается полная таблица маршрутов с кротчайшим маршрутом до точки назначения. Алгоритм дистанционно векторной маршрутизации определяет направление (вектор) и расстояние (счетчик узлов) для каждого из каналов связи, образующих сеть.

Свое название алгоритм получил вследствие того, что ни по завершении работы алгоритма, ни в процессе её, ни одна вершина(маршрутиризатор) не обладает топологическими сведениями ни об одном маршруте. Каждый обнаруженный путь представлен лишь вершиной-адресатом, стоимостью пути и следующей вершиной на пути к вершине-адресату, и 

представление пути не содержит промежуточных вершин и ребер. Стоимость пути - это дистанция, а вершина-адресат и следующая вершина представляют собой вектор.

Задача, которую решает дистанционно-векторный алгоритм проста, – это задача нахождения кратчайших путей между вершинами графа, где граф – это математическая абстракция, в которой вершины соединены между собой ребрами. Каждое ребро имеет некоторую стоимость своего использования. Путь между двумя вершинами является набором  промежуточных ребер и вершин, соединяющих две исходные вершины. Стоимость пути определяется как сумма стоимостей ребер, составляющих его. Кратчайшим путем между двумя вершинами при этом считается путь с наименьшей стоимостью.

В дистанционно-векторных алгоритмах каждый маршрутизатор периодически и широковещательно (30 сек.) рассылает по сети вектор (пакет), компонентами которого являются расстояния (измеренные в той или иной метрике, проще говоря свою таблицу маршрутиризации) от данного маршрутизатора до всех известных ему сетей. Пакеты протоколов маршрутизации обычно называют объявлениями о расстояниях, так как с их помощью маршрутизатор объявляет остальным маршрутизаторам известные ему сведения о конфигурации сети. Получив от некоторого соседа вектор расстояний (дистанций) до и звестных тому сетей, маршрутизатор наращивает компоненты вектора на величину расстояния от себя до данного соседа. Кроме того, он дополняет вектор информацией об известных ему самому других сетях, о которых он узнал непосредственно (если они подключены к его портам) или из аналогичных объявлений других маршрутизаторов. Обновленное значение вектора маршрутизатор рассылает своим соседям. В конце концов, каждый маршрутизатор узнает через соседние маршрутизаторы информацию обо всех имеющихся в составной сети сетях и о расстояниях до них.


Алгоритмы состояния связей (link-state technology), алгоритмы графа связей:

Метод когда на каждом узле связи(маршрутиризаторе) строится база данных графа всей сети, где узлы связи это узлы графа, а ребра это линии сязи которые имеют вес или "стоимость", далее маршрутиризатор производит расчет оптимального маршрута с учетом стоимости и дистанции, задача в зависимости от топологии ресурсоемкая, но метод или алгоритм более быстрый и производительный, по сути за счет повыщения вычислительной мощности узлов сети достигается масштабируемость, и как пример дистанционно-векторный протокол RIP способен обеспечить 16 переходов, а протокол OSPF как класический пример протоколов состояния каналов связи 256 переходов(hops) и это не означае что дистанционно-векторные протоколы плохи или не нужны, все зависит от объема вычислительных задач решаемых маршрутиризатором, например протоколу BGP совсем не обязательно иметь и расчитывать граф всей сети, а протокол RIP или "протокол маршрутной информации" очень даже востребован в небольших сетях или для создания служебных связей между  маршрутиризаторами

VRF

https://ipwithease-com./VRF-basics 

https://blog.sedicomm/VRF-lite-isco-ios/ 

https://docs.eltex-co.ru/nastrojka-VRF

https://habr.com/ru/VRF Lite for fun and profit <--------------  

VRF (Virtual routing and Forwarding) — дословно виртуальная маршрутизация и переадресация , которая представляет собой технологию, позволяющая нескольким экземплярам таблицы маршрутизации сосуществовать на одном и том же маршрутизаторе одновременно, экземпляры маршрутизации независимы, что позволяет  использовать перекрывающиеся IP-адреса, не конфликтуя друг с другом. Несколько экземпляров маршрутизации могут проходить по разным путям (т. е. использовать разные исходящие интерфейсы).

VRF — это методы сетевой изоляции/виртуализации, наряду с VLAN. VLAN используются на L2, а VRF являются инструментами L3. VRF относятся к таблице маршрутизации так же, как VLAN к LAN. Используя виртуальную маршрутизацию и переадресацию — VRF, мы виртуализируем таблицу маршрутизации в несколько таблиц маршрутизации, как VLAN виртуализирует поток данных посредствам тэгирования в несколько широковещательных доменов. Можно сказать, что VLAN выполняют виртуализацию L2, а VRF выполняют виртуализацию L3. VLAN делают один коммутатор похожим на несколько коммутаторов VRF делает один маршрутизатор похожим на несколько маршрутизаторов, что естественно отражается на его нагрузке, увеличивая производительность. Сравнения  VRF и VLAN, конечно похожи но несколько "притянуты", в случае VRF скорее можно говорить о виртуализации оборудования в отличии от VLAN где разговор ведется о виртуализации потоков данных, по скольку наряду с коммутатором подразумевается наличие протокола 802. 1Q, в отличии от VRF, хотя все это частности и можно спорить.

VRF Lite это более легкая версия полноценного VRF не требующая настройки MPBGP, VRF Lite разделяет трафик различных зон трафика без необходимости использования выделенных физических устройств для выполнения этих задач

[35]

extensivus — расширяющий, удлиняющий

Интенсивные и экстенсивные величины — две противоположные разновидности физических величин. Величина называется интенсивной, если её значение не зависит от размеров системы — например, температура или плотность. Напротив, экстенсивные величины, такие как энергия и электрический заряд, обычно обладают свойством аддитивности 

(по массе или объёму), то есть значение величины, соответствующее целому объекту, равно сумме значений величин, соответствующих его частям.

Аддитивность величины в математике и естественных науках — свойство величины, определённой на некотором классе математических или физических объектов, состоящее в том, что значение величины, соответствующее целому объекту, равно сумме значений величин, соответствующих его (непересекающимся) частям при любом разбиении объекта на части.

Объём аддитивен, потому что объём целого тела равен сумме объёмов составляющих его частей. Аналогичным свойством аддитивности обладают площадь и длина.

Электрический заряд, напряжённость магнитного поля, внутренняя энергия, энтропия аддитивны.

Температура, плотность и т. п. не аддитивны, поскольку суммирование этих значений для разных частей тела не имеет смысла.

Интенсивные величины


химический потенциал

концентрация смеси

плотность

магнитная проницаемость

температура плавления

температура кипения

давление

показатель преломления

удельная теплоёмкость

удельный объём

поверхностное натяжение

температура

теплопроводность

вязкость

Экстенсивные величины


энергия

импульс

энтропия

количество вещества (в случае смеси не взаимодействующих химических ингредиентов)

мощность

электрический заряд

магнитный поток

Экстенсивный(extensivus — расширяющий, удлиняющий) Направленный вширь, связанный с количественным (а не качественным) увеличением, распространением. 

Экстенсивный(extensivus — расширяющий, удлиняющий) Направленный в сторону количественного увеличения, расширения, распространения.

Экстенсивное выражение — расширенное


Интенсивный / Экстенсивный (пути развития) — два типа развития чего-либо: 

Интенсивное развитие происходит за счет использования более эффективных наукоемких технологий, более совершенных форм и методов организации труда, информационного обеспечения, за счет активизации так наз. человеческого фактора, т. е. за счет «вложения в человека», в развитие его общекультурного и профессионального уровня. 

Экстенсивное развитие происходит за счет количественного приращения добычи природных ресурсов, вовлечения в хозяйственный процесс дополнительных земель, человеческих ресурсов, распространения во времени и пространстве устаревших технологий, форм и методов организации труда, простого увеличения объема информации без ее качественной переработки.

[36]

Tracker — обеспечивает универсальное решение для всех метаданных, тегов, общих объектов базы данных, средства поиска и индексирования. (https://debian.org/tracker-miner-fs )

tracker-miner-fs — используется для обхода файловой системы и сбора данных

tracker-store — индексатор базы данных и демон запроса

ls /etc/xdg/autostart/

............

tracker-miner-fs-3.desktop


$ apt-cache rdepends tracker

tracker

Reverse Depends:

  shared-mime-info

  tracker-utils

  tracker-miner-fs

  tracker-gui

  tracker-gui

  tracker-gui

  ...........

SYN_RECV

$ netstat -pant 2> /dev/null | grep SYN_ | awk '{print $5;}' | cut -d: -f1 | sort | uniq -c | sort -n | tail -20

TCP-соединения — это handshake, состоящее из 3 пакетов:

Каждый шаг связан с переходом и SYN_RECV указывает, что соединение находится между шагами № 2 и 3. Обычно это состояние является временным, поскольку handshake происходит почти мгновенно, и соединение переходит в следующее состояние: ESTABLISHED. https://qna.habr.com/ 

[37]

Редокс (reduction-oxidation — восстановление-окисление) — встречно-параллельные химические реакции, протекающие с изменением степеней окисления атомов, входящих в состав реагирующих веществ, реализующиеся путём перераспределения электронов между атомом-окислителем (акцептором) и атомом-восстановителем (донором).

Редокс — в функциональном программировании подвыражение выражения для которого существуют некоторые правила вычисления, "сократить редокс" вычислить это подвыражение, сокращение всех редоксов равнозначно концу вычисления. Наверное от слова "редукция" в математике это сведение сложного к простому в ФП это и есть "вычисление".

Редокс — перспективная Unix подобная ОС написанная на Rust, использующая инновации Rust в современном микроядре и полном наборе приложений.

Человеческое сознание с болью реагирует на "колеблющийся мир" и невольно тяготеет к самоанализу и моральной рефлексии, ибо нет более подходящих обстоятельств для морализирования, чем переходные, кризисные эпохи, потребность обрести внутренние душеспасающие устои при внешней зыбкости бытия становится неизбежной психологической потребностью.

В.Виндельбанд_История древней фолософии.pdf

[39]

Wayland 

Перезапустить Gnome 

Запустить вложенную(виртуальную) оболочку Gnome-а:

 $ dbus-run-session -- gnome-shell --nested --wayland


Перезапустить сеанс: 

Alt + F2 -----> r        $ killall -3 gnome-shell

Sudoers

Created Sunday 08 October 2023


Редактирование файла /etc/sudoers с помощью  sudo visudo это правильно но не совсем, начиная с sudo 1.7.2p1-1 файл включает в себя  строку: @includedir /etc/sudoers.d , это директория с единственным файлом (директория не может быть пустой!) README, ее смысл в хранении дополнительных файлов для Sudoers, преимуществом такой организации является: файлы в директории не подвержены изменениям в результате обновлений, избежание ошибок при редактировании  "/etc/sudoers" с помощью  "sudo visudo" и наверное с точки зрения разработчиков является более безопасным. Что бы добавить файл в директорию /etc/sudoers.d не требуется ни чего кроме прав, например команда:

$ echo "$USER ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/dont-prompt-$USER-for-sudo-password

PS: tee -a допишет, без опции -a перезапишет 

создаст файл; /etc/sudoers.d/dont-prompt-<USERNAME>-for-sudo-password , следующего содержания;

<USERNAME> ALL=(ALL:ALL) NOPASSWD: ALL

что в свою очередь будет учитываться Sudoers, можно так же заметить что добавление подобной записи в /etc/sudoers с помощью  sudo visudo, в Debian 12. не привело к желаемым результатам, в отличии от добавления файла в /etc/sudoers.d


PS: В домашней дирректории будет создан скрытый файл ".sudo_as_admin_successful" который  блокирует выдачу подсказки про использование команды sudo для входа в режим администратора и ни чего плохого не делает, удалять не надо. 

Debian sudoers: The admin_flag option specifies the path to a file that is created the first time a user that is a member of the sudo or admin groups runs sudo. Only available if sudo is configured with the --enable-admin-flag option. The default value is ~/.sudo_as_admin_successful.

sshd_config

Относительно стандартная конфигурация SSH, должна работать "типа" из коробки:


$ sudo cat /etc/ssh/sshd_config 


# This is the sshd server system-wide configuration file.  See

# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/bin:/usr/games

# The strategy used for options in the default sshd_config shipped with

# OpenSSH is to specify options with their default value where

# possible, but leave them commented.  Uncommented options override the

# default value.

Include /etc/ssh/sshd_config.d/*.conf


Port 22

#AddressFamily any

#ListenAddress 0.0.0.0

#ListenAddress ::

#HostKey /etc/ssh/ssh_host_rsa_key

#HostKey /etc/ssh/ssh_host_ecdsa_key

#HostKey /etc/ssh/ssh_host_ed25519_key


# Ciphers and keying

#RekeyLimit default none


# Logging

#SyslogFacility AUTH

#LogLevel INFO


# Authentication:

PermitRootLogin no # Запретить входить под root

AllowUsers user # Разрешить только перечисленным пользователяи


#LoginGraceTime 2m

#PermitRootLogin prohibit-password

#StrictModes yes

#MaxAuthTries 6

#MaxSessions 10


PubkeyAuthentication yes


# Expect .ssh/authorized_keys2 to be disregarded by default in future.

#AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2


#AuthorizedPrincipalsFile none


#AuthorizedKeysCommand none

#AuthorizedKeysCommandUser nobody


# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts

#HostbasedAuthentication no

# Change to yes if you don't trust ~/.ssh/known_hosts for

# HostbasedAuthentication

#IgnoreUserKnownHosts no

# Don't read the user's ~/.rhosts and ~/.shosts files

#IgnoreRhosts yes


# To disable tunneled clear text passwords, change to no here!

#PasswordAuthentication yes

#PermitEmptyPasswords no


# Change to yes to enable challenge-response passwords (beware issues with

# some PAM modules and threads)

KbdInteractiveAuthentication no


# Kerberos options

#KerberosAuthentication no

#KerberosOrLocalPasswd yes

#KerberosTicketCleanup yes

#KerberosGetAFSToken no


# GSSAPI options

#GSSAPIAuthentication no

#GSSAPICleanupCredentials yes

#GSSAPIStrictAcceptorCheck yes

#GSSAPIKeyExchange no


# Set this to 'yes' to enable PAM authentication, account processing,

# and session processing. If this is enabled, PAM authentication will

# be allowed through the KbdInteractiveAuthentication and

# PasswordAuthentication.  Depending on your PAM configuration,

# PAM authentication via KbdInteractiveAuthentication may bypass

# the setting of "PermitRootLogin prohibit-password".

# If you just want the PAM account and session checks to run without

# PAM authentication, then enable this but set PasswordAuthentication

# and KbdInteractiveAuthentication to 'no'.

UsePAM yes


#AllowAgentForwarding yes

#AllowTcpForwarding yes

#GatewayPorts no

X11Forwarding yes

#X11DisplayOffset 10

#X11UseLocalhost yes

#PermitTTY yes

PrintMotd no

#PrintLastLog yes

#TCPKeepAlive yes

#PermitUserEnvironment no

#Compression delayed

#ClientAliveInterval 0

#ClientAliveCountMax 3

#UseDNS no

#PidFile /run/sshd.pid

#MaxStartups 10:30:100

#PermitTunnel no

#ChrootDirectory none

#VersionAddendum none


# no default banner path

#Banner none


# Allow client to pass locale environment variables

AcceptEnv LANG LC_*


# override default of no subsystems

Subsystem sftp /usr/lib/openssh/sftp-server


# Example of overriding settings on a per-user basis

#Match User anoncvs

# X11Forwarding no

# AllowTcpForwarding no

# PermitTTY no

# ForceCommand cvs server

PS: 

$ sudo service ssh stop ...start ...restart  

#/etc/init.d/ssh start ....stop ....restart 

[40]

Размер окна терминала при запуске можно задать вот такой командой

$ xfce4-terminal --geometry 120x25 

$ gnome-terminal --geometry 80x20

$ terminator --geometry=GEOMETRY  # где GEOMETRY см.x(7) ниже

x(7) - Linux man page 

Terminator: 

cat ~/.config/terminatot/config

.......................................

[layouts]

  [[default]]

    [[[child1]]]

      type = Terminal

      parent = window0

    [[[window0]]]

      type = Window

      parent = ""

      size = 1000, 600 # дописать (например)

      position = 100:100 # дописать (например)

Запустить терминал а в нем приложение использующее другой терминал:

$ terminator -x mc

Или так: 

$ terminator --command=(например mc)

Можно и так:

$ terminator --command="program --argument"

PS: Не обязательно использовать terminator:     https://qa.yodo.im/t/vypolnit-komandu 

[41]


$ sudo apt install speedtest-cli

$ sudo apt install iw

$ { speedtest-cli | egrep 'Download:|Upload:'; date; iw dev | grep ssid; } | sed -e 's/ssid/SSID:/g' -e '$ a === end of report ===' | tee -a speedtest

Download: 15.83 Mbit/s

Upload: 9.77 Mbit/s

Tue Nov 14 01:09:28 PM MSK 2023

SSID: ROSTELECOM

=== end of report ===

$ cat speedtest

Download: 15.83 Mbit/s

Upload: 9.77 Mbit/s

Tue Nov 14 01:09:28 PM MSK 2023

SSID: ROSTELECOM

=== end of report ===


Функция:

speed() {

{ speedtest-cli | egrep 'Download:|Upload:'; date; iw dev | grep ssid; } | sed -e 's/ssid/SSID:/g' -e '$ a === end of report ===' | tee -a speedtest

}

[42]


Погода в терминале:

curl http://wttr.in

если локализация не правильная, указать непосредственно: curl http://wttr.in/moscow

[43]


xrandr

Текущее разрешение экрана:

$ xrandr | grep \* | awk '{print $1}'

1366x768

или так:

$ xrandr -q | awk -F'current' -F',' 'NR==1 {gsub("( |current)","");print $2}' 

1366x768

Возможные разрешения:

$ xrandr

Установить разрешение:

# xrandr --output LVDS1 --mode 1366x768 -r 60 

[44]


Resident Set Size RSS (сколько в момент вывода команды занято в оперативной памяти)    $ ps -aux --sort -rss

Virtual Memory Size VSZ  виртуальная память (анологично)                                                       $ ps -aux --sort -vsz


$ ps -A -o rss,command | grep [C]hrome | awk '{sum+=$1} END {printf("%sMB\n",sum/1024)}' 

3.25781MB

$ ps -A -o vsz,command | grep [C]hrome | awk '{sum+=$1} END {printf("%sMB\n",sum/1024)}'

65570.3MB

...вот какое замечательное приложение Chrome.

Убить все процессы принадлежащие Chrome:

$ kill $(ps x | grep '\/chrome *.* --type=renderer ' | awk '{print $1}')

[45]

kworker -- подсистема ядра создающая рабочие очереди в основном использующиеся как обработчики аппаратных прерываний. Цифры -- номер ядра процессора и номер потока. Подробнее: Concurrency Managed Workqueue (cmwq) и Reducing OS jitter due to per-cpu kthreads.

literal

literal буквально, дословно

Литерал или "безымянная константа"(nameless constant) — запись в исходном коде компьютерной программы, представляющая собой фиксированное значение. Почему безымянная?, потому что это просто значение, прямое указание значения в коде,  например, число 42 или текст "привет".

number = 1

string = "Кот"

1 литерал, "Кот" литерал;

number переменная, strring переменная;

PS: Это не самый удачный пример поскольку понятие "литерал" здесь накладывается на понятие "значение переменной", и причем здесь "фиксированное значение" тогда, и тем не менее "1" и "Кот" это литералы, лучше другой пример, воспользуемся Lua:

$ lua -e "print (2.4567 + 3.2345)" 

5.6912

2.4567 литерал, 3.2345 литерал.

Для понимания литераля наверное важно то, что это "фиксированное" значение, то есть во время исполнения кода они не

меняются, в отличии от переменных, изменены могут лишь в процессе редактирования, написания кода. Литералы решают проблему представления данных в самом простом и наглядном виде. Вместо того, чтобы каждый раз вычислять или  загружать значение, программист может напрямую "вписать" его в код. Это делает программу быстрее и уменьшает вероятность ошибок, так как значение уже известно и не требует дополнительных действий для его определения.

...и все было бы просто и не интересно если бы не существовали "именованные константы", но это уже другая история.

Литералы в программировании 

Anti DDOS

Takes IP from web logs and pipes to iptables, use grep to white list IPs.. use if a particular file is getting requested by many different addresses. Sure, its already down pipe and you bandwidth may suffer but that isnt the concern. This one liner saved me from all the traffic hitting the server a second time, reconfigure your system so your system will work like blog-post-1.php or the similar so legitimate users can continue working while the botnet kills itself.

$ tail -f /var/www/logs/domain.com.log | grep "POST /scripts/blog-post.php" | grep -v 192.168. | awk '{print $1}' | xargs -I{} iptables -I DDOS -s {} -j DROP