Поиск пути

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

По своей сути алгоритм поиска пути ищет на графе, начиная с одной (стартовой) точки и исследуя смежные узлы до тех пор, пока не будет достигнут узел назначения (конечный узел). Кроме того, в алгоритмах поиска пути в большинстве случаев заложена также цель найти самый короткий путь. Некоторые методы поиска на графе, такие как поиск в ширину, могут найти путь, если дано достаточно времени. Другие методы, которые «исследуют» граф, могут достичь точки назначения намного быстрее. Здесь можно привести аналогию с человеком, идущим через комнату. Человек может перед началом пути заранее исследовать все характеристики и препятствия в пространстве, вычислить оптимальный маршрут и только тогда начать непосредственное движение. В другом случае человек может сразу пойти в приблизительном или предполагаемом направлении цели и потом, уже во время пути, делать корректировки своего движения для избегания столкновений с препятствиями.

К самым известным и популярным алгоритмам поиска пути относятся такие алгоритмы:

  • Алгоритм поиска A*
  • Алгоритм Дейкстры
  • Волновой алгоритм
  • Маршрутные алгоритмы
  • Навигационная сетка (Navmesh)
  • Иерархические алгоритмы
  • Обход препятствий
  • Разделяй и властвуй
  • Алгоритм поворота Креша

Пример визуализации поиска пути:

Калькуляторы матриц онлайн

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

MATRIX.RESHISH.RU

Это наиболее удобный бесплатный калькулятор матриц. На сайте реализованы все основные операции над матрицами, а также методы для решения систем линейных уравнений. Для методов и операций, требующих сложных вычислений, реализована опция ‘очень подробное решение’. Благодаря ей, наш калькулятор решает вашу задачу онлайн рациональным способом так, как это сделал бы человек, отображая каждый шаг.

Ссылка: https://matrix.reshish.ru/

Способы поиска количества ядер CPU в Linux

Обсудим, как найти количество ядер CPU в Linux.

Использование файловой системы Proc

Для того чтобы найти количество ядер CPU в Linux, можно воспользоваться файловой системой proc. Эта процедура представляет собой псевдо-файловую систему, которая отслеживает среду выполнения.

Для того, чтобы получить информацию центрального процессора, выполните:

cat /proc/cpuinfo

Это дает детальную информацию о процессоре, таком как VENDOR_ID, семейства CPU, модель, CPU МГц и т.д.

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

cat /proc/cpuinfo | grep processor

Или выполните команду:

cat /proc/cpuinfo | grep processor | wc -l

С помощью команды lscpu

Вы также можете найти количество ядер CPU в Linux с помощью команды lscpu:

lscpu

После выполнения команды ищите заголовок CPU(s).

Использование команды nproc

Команда nproc поможет найти количество ядер CPU в Linux напрямую, без grep или расчета:

nproc

С помощью команды dmidecode

Команда dmidecode также предоставляет информацию о процессоре вместе с другой аппаратной информацией, такой как системная информация, информация о вентиляторах. Чтобы получить точно или найти количество ядер CPU в Linux с помощью команды dmidecode, вам нужно указать grep со словом CPU, как показано ниже:

dmidecode | grep -i CPU

Распаковка архива .tar.gz?

.tar.gz — это архив созданный программой tar, и после этого заархивированный программой gzip. Такая двойная архивация обусловлена тем, что программа gzip сжимает хорошо и быстро, но делает это только с одним файлом. Поэтому чтобы запаковать несколько файлов, для начала из них создается один tar-архив, а после этого он уже пакуется программой gzip. Причем стоит отметить, что первичный архив tar практически не сжимает информацию, а лишь объединяет ее в один файл. В конечном варианте мы получаем архив с двойным расширением archive.tar.gz или archive.tgz

Для распаковки архива *.tar.gz, вы должны выполнить:

tar -xzf archive.tar.gz

Если в этом архиве есть программное обеспечение, которое необходимо скомпилировать, обычно делается следующее:

tar -xzf archive.tar.gz
cd archive
./configure
make
sudo make install

Будьте внимательны! Не вводите вслепую приведенные выше инструкции; во-первых, прочитайте любые документы под названием «README» или «INSTALLATION», которые вы найдете в архиве.

Создание самоподписанного SSL-сертификата

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

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

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

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

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

Мы можем создать самоподписанный ключ и пару сертификатов OpenSSL с помощью одной команды:

openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout key.pem -out cert.pem

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

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

  • openssl: это базовый инструмент командной строки для создания и управления сертификатами OpenSSL, ключами и другими файлами.
  • req: данная субкоманда указывает, что мы хотим использовать управление запросами подписи сертификатов X.509 (CSR). X.509 — это стандарт инфраструктуры открытых ключей, используемый SSL и TLS для управления ключами и сертификатами. Вы хотим создать новый сертификат X.509, и поэтому используем эту субкоманду.
  • -x509: это дополнительно изменяет предыдущую субкоманду, сообщая утилите, что мы хотим создать самоподписанный сертификат, а не сгенерировать запрос на подпись сертификата, как обычно происходит.
  • -nodes: этот параметр указывает OpenSSL пропустить опцию защиты сертификата с помощью пароля.
  • -days 3650: данный параметр устанавливает срок, в течение которого сертификат будет считаться действительным. Здесь мы устанавливаем срок действия в 3650 дне.
  • -newkey rsa:2048: указывает, что мы хотим генерировать новый сертификат и новый ключ одновременно. Мы не создали требуемый ключ для подписи сертификата на предыдущем шаге, и поэтому нам нужно создать его вместе с сертификатом. Часть rsa:2048 указывает, что мы создаем ключ RSA длиной 2048 бит.
  • -keyout: эта строка указывает OpenSSL, где мы разместим создаваемый закрытый ключ.
  • -out: данный параметр указывает OpenSSL, куда поместить создаваемый сертификат.
  • значение cert.pem — local_cert: путь к локальному сертификату в файловой системе. Файл pem, который содержит сертификат и закрытый ключ. Он дополнительно может содержать открытый ключ эмитента. Закрытый ключ также может содержаться в отдельном файле, заданным local_pk.
  • значение key.pem — local_pk: путь к локальному файлу с приватным ключом в случае отдельных файлов сертификата (local_cert) и приватного ключа.

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

Укажите подходящие ответы. Самая важная строка — это строка, где запрашивается обычное имя (т. е. FQDN сервера или ВАШЕ имя). Вам нужно ввести доменное имя, связанное с вашим сервером или, что более вероятно, публичный IP-адрес вашего сервера.

Тут содержится полное описание аргументов openssl req.

Как исправить не работающее нажатие правой кнопки мыши на сенсорной панели в Ubuntu

Кратко: если вы обнаружите, что щелчок правой кнопкой мыши на сенсорной панели не работает в Ubuntu, вот простое решение.

Итак, вы установили совершенно новую систему Ubuntu и наслаждаетесь блестящим рабочим столом GNOME, когда вдруг понимаете, что щелчок правой кнопкой мыши на сенсорной панели не работает.

Вы можете подумать, что что-то сломалось на вашем рабочем столе Ubuntu, но здесь это не так. Здесь ничего не сломано. На самом деле это не баг, а фича. В Ubuntu 18.04 появилось новое поведение тачпада. Если на сенсорной панели вашего ноутбука нет «физических кнопок» для щелчка левой и правой кнопкой мыши, щелчок правой кнопкой мыши выполняется касанием двумя пальцами.

Это означает, что щелчок в правом нижнем углу сенсорной панели не будет работать в Ubuntu 18.04 по умолчанию.

Вы можете легко изменить это поведение и включить щелчок правой кнопкой мыши на Ubuntu.

Сначала вам нужно установить инструмент GNOME Tweaks . Он доступен в программном центре Ubuntu.

Кроме того, вы можете установить его с помощью команды ниже:

sudo apt install gnome-tweaks

После установки нажмите клавишу Super/Windows, чтобы открыть меню приложений и выполнить поиск «tweaks». Нажмите Tweaks, чтобы запустить программу.

В настройках GNOME перейдите в раздел «Клавиатура и мышь» на левой боковой панели и в разделе «Эмуляция нажатия мышкой» выберите «Область» .

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

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

CentOS

CentOS — это 100%-совместимый пересобранный Red Hat Enterprise Linux, полностью удовлетворяющий требованиям Red Hat по дальнейшему распространению. CentOS предназначена для людей, которым нужна стабильность операционной системы промышленного класса без дорогостоящей сертификации и технической поддержки.

Формат пакетов

RPM (.rpm) — Разработан компанией Red Hat и внедрен в дистрибутив RHEL, также применяется в таких системах как Fedora и CentOS.

Менеджеры пакетов

  • rpm (red hat package manager) — формат пакетов и низкоуровневый пакетный менеджер систем RED HAT (RHEL, CentOS, Fedora и др.) Как и DPKG, способен работать только с локальными файлами
  • yum (yellowdog updater, modified) — высокоуровневый пакетный менеджер, написанный на языке Python для систем RED HAT (RHEL, CentOS, Fedora). Программа представляет собой своеобразную оболочку для утилиты RPM
  • dnf (dandified yum) — модифицированная версия пакетного менеджера YUM на языке на Python. Разработка утилиты начата в 2011 году. В 2015 году DNF стал основным менеджером пакетов для системы Fedora 22. В DNF были исправлены такие недостатки YUM, как некорректная установка зависимостей, низкая скорость работы, большое потребление оперативной памяти

Обновление всех установленных пакетов

$ dnf check-update
$ dnf update или dnf upgrade

Обновление ядра

см. elrepo

Информация о дистрибутиве

$ uname -mrs
$ cat /etc/os-release
$ hostnamectl

Обновление версии дистрибутива

Обновление CentOS Stream: https://ahelpme.com/linux/centos-stream-9/how-to-upgrade-to-centos-stream-9-from-centos-stream-8/

Руководства

Ссылки на загрузку

Структура каталогов Linux

Файловая структура *nix-систем серьезно отличается от структуры в Windows и заслуживает отдельного внимания.

Начнем с базовых понятий:

  • Файловая структура представляет собой дерево
  • В узлах этого дерева находятся директории — файлы специального типа
  • В листьях дерева расположены файлы

В отличии от Windows, в Linux вас не будут спрашивать куда устанавливать программное обеспечение (ПО), где хранить временные файлы, какие файлы будут являть настройками и т.д.

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

Структура каталогов Linux достаточно жёсткая и имеет иерархическую структуру, т.е. все каталоги сводятся к единому каталогу root directory (обозначается этот каталог как / — косая черта из правого угла в нижний левый).

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

В Linux есть FHS (англ. Filesystem Hierarchy Standard) — базовый стандартизированный набор каталогов. За каждым каталогом закреплена какая-то особая роль: за нас подумали и решили какие каталоги нам необходимы, т.е. как разработчик операционной системы решил — так мы и видим каталоги:

  • / — Корневой каталог (root directory) в котором находятся все остальные каталоги, содержит всю файловую иерархию.
  • /bin — Основные исполняемые файлы. Утилиты, необходимые операционной системе (cat, ls, cp)
  • /boot — Информация необходимая для загрузки операционной системы. Загрузочные файлы (в том числе файлы загрузчика, ядро, initrd, System.map) 
  • /dev — Устройства, которые представлены в виде файлов (например, /dev/null, /dev/zero)
  • /etc — Общесистемные конфигурационные файлы (настройки самой системы и настройки служб системы)
  • /home — Содержит домашние каталоги пользователей, которые в свою очередь содержат персональные настройки и данные пользователя
  • /lib — Основные библиотеки необходимые для бинарных файлов, необходим для работы программ из /bin и /sbin
  • /media — Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM (впервые описано в FHS-2.3)
  • /mnt — Содержит временно монтируемые файловые системы. Временное монтирование блочных устройств
  • /opt — Дополнительное программное обеспечение
  • /proc — Содержит информацию о всех процессах операционной системы. Утилиты работающие с процессами берут информацию из этого каталога. Этот каталог это виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде файлов
  • /root — Домашний каталог для пользователя root
  • /run — Информация о системе с момента её загрузки, в том числе данные, необходимые для работы демонов (pid-файлы, UNIX-сокеты и т.д.)
  • /sbin — Системные исполняемые файлы. Основные системные программы для администрирования и настройки системы (например, init, iptables, ifconfig)
  • /srv — Данные для сервисов, предоставляемых системой (например, www или ftp)
  • /sys — Содержит информацию об устройствах, драйверах, а так же некоторых свойствах ядра
  • /tmp — Временные файлы
  • /usr — Содержит вторичную иерархию для данных пользователя и его бинарных и системных файлов
  • /var — Изменяемые файлы, такие как файлы логов, регистрации, временные почтовые файлы, файлы спулеров

Самые часто используемые каталоги

  • /etc — файлы настроек
  • /var/log — логи
  • /home/<user_name> — домашний каталог пользователя

Сервисы для построения графиков функций

DESMOS.COM

Desmos — графический калькулятор, реализованный как приложение для браузера и мобильное приложение на языке JavaScript.

Ссылка: https://www.desmos.com/calculator?lang=ru

GRAPH.RESHISH.RU

Graph Reshish — наиболее удобный сервис, где вы сможете построить интерактивный график функции онлайн.

Ссылка: https://graph.reshish.ru/

FOO PLOT (ex. fooplot.com)

Foo Plot — является простым инструментом для построения графиков функций.

Ссылка: https://www.toolfk.com/online-plotter-frame