Compare commits

...

7 Commits

19 changed files with 1824 additions and 61 deletions

3
.gitignore vendored
View File

@ -1,3 +1,5 @@
/.asciidoctor
cache/*
cache-ascii/*
cache-full/*
@ -10,6 +12,7 @@ upload.sh
wiki/**/diag*.png
wiki/**/*.png.cache
*.pyc
*.txt
upload-*.sh

25
.gitmodules vendored
View File

@ -1,28 +1,27 @@
[submodule "plugins/thirdparty/md-metayaml"]
path = plugins/thirdparty/md-metayaml
url = git@git.246060.ru:/f1x1t/pelican-md-metayaml.git
[submodule "plugins/thirdparty/pelican-css"]
path = plugins/thirdparty/pelican-css
url = https://notabug.org/jorgesumle/pelican-css
url = git@git.246060.ru:f1x1t/pelican-md-metayaml.git
[submodule "themes/bootstrap4"]
path = themes/bootstrap4
url = git@git.246060.ru:/f1x1t/pelican-theme-bootstrap4.git
url = git@git.246060.ru:f1x1t/pelican-theme-bootstrap4.git
[submodule "plugins/thirdparty/yuicompressor-opt"]
path = plugins/thirdparty/yuicompressor-opt
url = git@git.246060.ru:/f1x1t/pelican-yuicompressor-opt.git
url = git@git.246060.ru:f1x1t/pelican-yuicompressor-opt.git
[submodule "plugins/thirdparty/pelidoc"]
path = plugins/thirdparty/pelidoc
url = git@git.246060.ru:/f1x1t/pelican-pelidoc.git
url = git@git.246060.ru:f1x1t/pelican-pelidoc.git
[submodule "plugins/thirdparty/pandoc_reader"]
path = plugins/thirdparty/pandoc_reader
url = git@git.246060.ru:/f1x1t/pelican-pandoc-reader
branch = master
[submodule "plugins/thirdparty/replacer"]
path = plugins/thirdparty/replacer
url = git@github.com:/narusemotoki/replacer
url = git@git.246060.ru:f1x1t/pelican-pandoc-reader
[submodule "plugins/thirdparty/asciidoctor"]
path = plugins/thirdparty/asciidoctor
url = git@git.246060.ru:f1x1t/pelican-asciidoctor
[submodule "plugins/thirdparty/replacer"]
path = plugins/thirdparty/replacer
url = git@git.246060.ru:f1x1t/pelican-replacer
[submodule "plugins/thirdparty/pelican-css"]
path = plugins/thirdparty/pelican-css
url = git@git.246060.ru:f1x1t/pelican-css
[submodule "plugins/official"]
path = plugins/official
url = git@github.com:getpelican/pelican-plugins
url = git@git.246060.ru:f1x1t/pelican-plugins-official

View File

@ -0,0 +1,44 @@
= Настройка Redis
:category: Linux
:tags: Linux, Redis,
Создать файл `/etc/sysctl.d/98-redis.conf`:
[source,text]
----
net.core.somaxconn=65535
vm.overcommit_memory=1
----
Перезагрузить систему или выполнить команду:
[source,sh]
----
sudo sysctl -p
----
Создать файл `/etc/systemd/system/disable-transparent-huge-pages.service`:
[source,text]
----
[Unit]
Description=Disable Transparent Huge Pages (THP)
DefaultDependencies=no
After=sysinit.target local-fs.target
Before=mongod.service redis.service redis-server.service
[Service]
Type=oneshot
ExecStart=/bin/sh -c 'echo never | tee /sys/kernel/mm/transparent_hugepage/enabled > /dev/null'
[Install]
WantedBy=basic.target
----
Разрешить автоматический запуск при загрузке системы:
[source,sh]
----
sudo systemctl enable disable-transparent-huge-pages.service
----

View File

@ -0,0 +1,29 @@
= Настройка параметров локальной сети
:category: Linux
:tags: Linux, сеть, ethernet
Создать файл `/etc/sysctl.d/98-network.conf`:
[source,text]
----
net.core.rmem_default=262144
net.core.wmem_default=262144
net.core.rmem_max=33554432
net.core.wmem_max=33554432
net.ipv4.tcp_rmem = 4096 262144 33554432
net.ipv4.tcp_wmem = 4096 262144 33554432
net.ipv4.tcp_mem = 4096 262144 33554432
net.core.netdev_max_backlog = 16384
net.ipv4.ipfrag_high_threshold = 8388608
----
Перезагрузить систему или выполнить команду:
[source,sh]
----
sudo sysctl -p
----

File diff suppressed because it is too large Load Diff

View File

@ -30,7 +30,6 @@ include::{l10ndir}/{lang}.adoc[]
├── .git
├── cmake
│ ├── cmlib
│ ├── doc
│ ├── etc
│ │ └── uncrustify
│ ├── find
@ -68,7 +67,6 @@ include::{l10ndir}/{lang}.adoc[]
|`.git` | Системные файлы репозитория Git
|`cmake` | Файлы с дополнительными функциями для CMake
|`cmake/cmlib` | Библиотека функций для CMake
|`cmake/doc` | Правила для автоматической генерации документации
|`cmake/etc` | Файлы настроек, используемые в CMake
|`cmake/etc/uncrustify` | Файл настройки для программы автоматического форматирования исходных текстов
|`cmake/find` | Модули CMake для поиска внешних программ и библиотек
@ -129,7 +127,6 @@ git init
git submodule add https://git.246060.ru/f1x1t/cmlib.git cmake/cmlib
git submodule add https://git.246060.ru/f1x1t/cmake-find.git cmake/find
git submodule add https://git.246060.ru/f1x1t/cmake-generators.git cmake/generators
git submodule add https://git.246060.ru/f1x1t/cmake-doc.git cmake/doc
git commit -a -m "Начало проекта"
----
@ -158,9 +155,6 @@ git push -u origin master
[submodule "cmake/generators"]
path = cmake/generators
url = git@git.246060.ru:f1x1t/cmake-generators.git
[submodule "cmake/doc"]
path = cmake/doc
url = git@git.246060.ru:f1x1t/cmake-doc.git
----
на
@ -176,9 +170,6 @@ git push -u origin master
[submodule "cmake/generators"]
path = cmake/generators
url = ../../f1x1t/cmake-generators.git
[submodule "cmake/doc"]
path = cmake/doc
url = ../../f1x1t/cmake-doc.git
----
Обновить пути и сохранить изменения:
@ -504,7 +495,8 @@ cmlib_generate_private_config_hpp()
add_subdirectory(src/cmlib-example)
# Документация
add_subdirectory(cmake/doc)
add_breathe_target(doc-breathe)
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
# Создание вспомогательных символических ссылок
add_dependencies(cmlib-example create_auxilary_symlinks)
@ -620,7 +612,8 @@ cmlib_generate_private_config_hpp()
add_subdirectory(src/cmlib-example)
# Документация
add_subdirectory(cmake/doc)
add_breathe_target(doc-breathe)
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
# Создание вспомогательных символических ссылок
add_dependencies(cmlib-example create_auxilary_symlinks)
@ -1545,12 +1538,68 @@ make all_unity
=== Документирование кода
Надо написать.
Для документирования кода используются блоки комментариев,
оформленные для обработки программой https://www.doxygen.nl[Doxygen].
Установка программы:
[source,sh]
----
sudo apt-get install doxygen
----
Пример комментария:
[source,c++]
----
/**
* @brief Базовый класс
*/
class Base {
public:
/**
* @brief Конструктор
*/
Base();
/**
* @brief Деструктор
*/
~Base();
/**
* @brief Вычисление квадратного корня
* @param value Входное значение
* @return Квадратный корень от value
*/
double sqrt(double value);
};
----
Поддержка автоматической генерации документации реализована
в функциях библиотеки CMLib `add_doxygen_target` и
`add_breathe_target`, которые необходимо вызвать в основном
файле `CMakeLists.txt` проекта.
[source,cmake]
----
# Документация
add_doxygen_target(doc-doxygen LATEX YES HTML YES)
add_breathe_target(doc-breathe)
----
В результате будут добавлены цели `doc-doxygen` и `doc-breathe`,
которые можно использовать после конфигурирования проекта:
[source,cmake]
----
make doc-doxygen
make doc-breathe
----
Поддержка документирования кода реализована в функциях
`add_doxygen` и `add_breathe`, для исполнения которых
добавляются цели `doc-doxygen` и `doc-breathe`.
Шаблоны для комментирования файлов, классов и функций
можно автоматически расставить в файлах исходных кодов
исполнением цели `doc-add-comments` при наличии установленной
программы `uncrustify`.
программы `uncrustify`:
[source,cmake]
----
make doc-add-comments
----

View File

@ -74,8 +74,6 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
| systemLogDirectory() | Полный путь к системному каталогу с журналами работы
| executableFileDirectory() | Полный путь к каталогу с исполняемым файлом
| executableFileName() | Имя исполняемого файла
| configFilePath() | Полный путь к файлу настройки
| configFileName() | Имя файла настройки
| projectName() | Имя подкаталога для проекта
|===
@ -87,7 +85,7 @@ https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии фа
namespace MF = myx::filesystem;
MF::Paths& paths = MF::Paths::instance();
paths.init( QStringLiteral( "project_name" ), QStringLiteral( "conf" ) );
paths.init();
qDebug() << paths.systemConstDataDirectory().path();
----
@ -102,8 +100,9 @@ qDebug() << paths.systemConstDataDirectory().path();
данных и журналов. Эти значения не зависят от расположения исполняемого файла,
а определяются в соответствии со значениям переменных окружения `HOME`,
`TMPDIR`, `XDG_CONFIG_HOME` и `XDG_DATA_HOME`, либо устанавливаются значения,
принятые в стандартах. Пример имён каталогов для пользователя `user`
и проекта `project` приведён в таблице.
принятые в стандартах. Пример имён каталогов для пользователя `user`,
названия организации `org`, названия выполняемой работы `theme` и проекта
`project` приведён в таблице.
.Стандартные каталоги для текущего пользователя
[cols="4,4m,6m",options="header"]
@ -111,10 +110,10 @@ qDebug() << paths.systemConstDataDirectory().path();
| Назначение каталога | Метод | Значение
| Домашний каталог | homeDirectory() | /home/user
| Временные файлы | tempDirectory() | /tmp
| Файлы настройки | userConfigDirectory() | /home/user/.config/project
| Неизменяемые файлы | userConstDataDirectory() | /home/user/.local/share/project/data
| Изменяемые файлы | userVarDataDirectory() | /home/user/.local/share/project/lib
| Журналы работы | userLogDirectory() | /home/user/.local/share/project/log
| Файлы настройки | userConfigDirectory() | /home/user/.config/org-theme/project
| Неизменяемые файлы | userConstDataDirectory() | /home/user/.local/share/org-theme/project/share
| Изменяемые файлы | userVarDataDirectory() | /home/user/.local/share/org-theme/project/var
| Журналы работы | userLogDirectory() | /home/user/.local/share/org-theme/project/log
|===
=== Общая проверка
@ -135,7 +134,7 @@ IMPORTANT: При проверке типов иерархии всегда пр
Если полный путь к исполняемому файлу начинается с `/opt` и
содержит в себе название текущего проекта, например
`/opt/org/project/bin/application`, то выполняется проверка
`/opt/org-theme/project/bin/application`, то выполняется проверка
на наличие сопутствующих системных каталогов. Если они присутствуют,
то принимается решение, что окружение в иерархии `/opt` сформировано правильно,
иначе делается заключение о том, что файлы всех типов находятся
@ -147,11 +146,11 @@ IMPORTANT: При проверке типов иерархии всегда пр
[cols="4,4m,5m",options="header"]
|===
| Назначение файла / каталога | Метод | Значение
| Исполняемый файл | executableFilePath() | /opt/org/project/bin/application
| Файлы настройки | systemConfigDirectory() | /opt/org/project/etc
| Неизменяемые файлы | systemConstDataDirectory() | /opt/org/project/files/data
| Изменяемые файлы | systemVarDataDirectory() | /opt/org/project/files/lib
| Журналы работы | systemLogDirectory() | /opt/org/project/files/log
| Исполняемый файл | executableFilePath() | /opt/org-theme/project/bin/application
| Файлы настройки | systemConfigDirectory() | /opt/org-theme/project/etc
| Неизменяемые файлы | systemConstDataDirectory() | /opt/org-theme/project/share
| Изменяемые файлы | systemVarDataDirectory() | /opt/org-theme/project/var
| Журналы работы | systemLogDirectory() | /opt/org-theme/project/log
|===
@ -217,10 +216,10 @@ IMPORTANT: При проверке типов иерархии всегда пр
|===
| Назначение файла / каталога | Метод | Значение
| Исполняемый файл | executableFilePath() | /home/user/bin/application
| Файлы настройки | systemConfigDirectory() | /home/user/.config/project
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/.local/share/project/data
| Изменяемые файлы | systemVarDataDirectory() | /home/user/.local/share/project/lib
| Журналы работы | systemLogDirectory() | /home/user/.local/share/project/log
| Файлы настройки | systemConfigDirectory() | /home/user/.config/org-theme/project
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/.local/share/org-theme/project/share
| Изменяемые файлы | systemVarDataDirectory() | /home/user/.local/share/org-theme/project/var
| Журналы работы | systemLogDirectory() | /home/user/.local/share/org-theme/project/log
|===
@ -243,10 +242,10 @@ IMPORTANT: При проверке типов иерархии всегда пр
|===
| Назначение файла / каталога | Метод | Значение
| Исполняемый файл | executableFilePath() | /home/user/work/project/_build/debug/bin/application
| Файлы настройки | systemConfigDirectory() | /home/user/work/project/_build/debug/etc/
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/work/project/_build/debug/files/data
| Изменяемые файлы | systemVarDataDirectory() | /home/user/work/project/_build/debug/files/lib
| Журналы работы | systemLogDirectory() | /home/user/work/project/_build/debug/files/log
| Файлы настройки | systemConfigDirectory() | /home/user/work/project/_build/debug/etc
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/work/project/_build/debug/share
| Изменяемые файлы | systemVarDataDirectory() | /home/user/work/project/_build/debug/var
| Журналы работы | systemLogDirectory() | /home/user/work/project/_build/debug/log
|===

View File

@ -62,9 +62,9 @@ untracked -> staged: git add
staged -> unmodified: git commit
unmodified -> modified: редактирование
modified -> staged: git add
modified -> untracked: git rm --cached
unmodified -> untracked: git rm --cached
staged -> untracked: git rm --cached
modified -> untracked: git rm ~--cached
unmodified -> untracked: git rm ~--cached
staged -> untracked: git rm ~--cached
@enduml
----
@ -125,7 +125,7 @@ participant remote as "Удалённый репозиторий\n(remote rep
[-> workspace : <font color=red>Начало работы</font>
activate workspace
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
remote -> local : <font color=red>Обновление подмодулей</font>\n<b>git submodule update --recursive --init</b>
remote -> local : <font color=red>Обновление подмодулей</font>\n<b>git submodule update ~--recursive ~--init</b>
workspace <-> local : <font color=red>Просмотр информации</font>\n<b>git status</b>
workspace <-> local : <font color=red>Переход на ветку master</font>\n<b>git checkout master</b>
local -> workspace : <font color=red>Слияние с удалённой веткой</font>\n<b>git merge origin/master</b>
@ -135,11 +135,45 @@ workspace ->o workspace : <font color=red>Редактирование</font>
workspace <-> local : <font color=red>Просмотр изменений</font>\n<b>git diff</b>
workspace -> index : <font color=red>Занесение файлов в индекс</font>\n<b>git add</b>
index -> local : <font color=red>Фиксация изменений</font>\n<b>git commit</b>
local ->o local : <font color=red>Присвоение ветки осмысленного названия</font>\n<b>git branch -m temp branch_name</b>
local ->o local : <font color=red>Переход на ветку</font>\n<b>git checkout branch_name</b>
local ->o local : <font color=red>Присвоение ветки осмысленного названия</font>\n<b>git branch -m temp new_task</b>
local ->o local : <font color=red>Переход на ветку</font>\n<b>git checkout new_task</b>
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (branch_name)</font>\n<b>git merge origin/master</b>
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin branch_name</b>
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (new_task)</font>\n<b>git merge origin/master</b>
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin new_task</b>
remote ->] : <font color=red>Создание запроса на слияние</font>
deactivate workspace
@enduml
----
Альтернативный пример действий, выполняемых пользователем в совместном
проекте, приведён на <<workflow-alt,диаграмме>>.
[[workflow-alt]]
[.text-center]
.Альтернативная последовательность действий
[plantuml]
----
@startuml
skinparam defaultFontSize 24
skinparam padding 16
participant workspace as "Рабочий каталог\n(working dir)"
participant index as "Индекс\n(index)" #77FF77
participant local as "Локальный репозиторий\n(local repository)" #FF7777
participant remote as "Удалённый репозиторий\n(remote repository)" #7777FF
[-> workspace : <font color=red>Начало работы</font>
activate workspace
workspace <-> local : <font color=red>Переход на локальную ветку master</font>\n<b>git checkout master</b>
remote -> workspace : <font color=red>Слияние с удалённой веткой и обновление рабочего каталога</font>\n<b>git pull</b>
workspace <-> local : <font color=red>Создание новой ветки</font>\n<b>git checkout -b new_task</b>
workspace ->o workspace : <font color=red>Редактирование</font>
workspace <-> local : <font color=red>Просмотр изменений</font>\n<b>git diff</b>
workspace -> index : <font color=red>Занесение файлов в индекс</font>\n<b>git add</b>
index -> local : <font color=red>Фиксация изменений</font>\n<b>git commit</b>
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
local ->o local : <font color=red>Слияние изменений с сервера в текущую ветку (new_task)</font>\n<b>git merge origin/master</b>
local -> remote : <font color=red>Отправка ветки на сервер</font>\n<b>git push origin new_task</b>
remote ->] : <font color=red>Создание запроса на слияние</font>
deactivate workspace
@enduml

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB