Compare commits
167 Commits
Author | SHA1 | Date | |
---|---|---|---|
9206a9ff3a | |||
25b194750e | |||
25491b80c4 | |||
8c3a99eff9 | |||
a2cca2dd8c | |||
8e3f80d82c | |||
763ec72402 | |||
7505316c2c | |||
8639788c93 | |||
0e27e5e68d | |||
578274e444 | |||
2de1503574 | |||
64e5aa161f | |||
2b629c9dc9 | |||
6579472659 | |||
61fa5230ae | |||
dd840cdbc9 | |||
8fa46a57be | |||
e1bfd02131 | |||
0afb335879 | |||
daf7136008 | |||
d14d71910c | |||
1c6f6c4945 | |||
bf875c1842 | |||
373fe00cb3 | |||
b2cfbfafca | |||
c3930f59f9 | |||
1a7e8c5a56 | |||
2af87bc633 | |||
5b2ac484f8 | |||
cc81e6ac8c | |||
79193d4152 | |||
71cbd8a230 | |||
11d1c31ce7 | |||
6353b7839e | |||
4fdc1e4951 | |||
562d2ecddf | |||
101ea1880d | |||
72e6b66a52 | |||
3617a09b2e | |||
3d3aac6206 | |||
12c6f6396f | |||
6897baf6c6 | |||
8b92ccf57a | |||
057a213a80 | |||
af643e1e35 | |||
363822b166 | |||
c723a9d7b5 | |||
33ead8f7e6 | |||
3cfc262a3d | |||
bc250dd0bf | |||
0d83b3637c | |||
6bd1d03d3b | |||
32853cc8f4 | |||
311c812181 | |||
d4bc574a94 | |||
876ff1ade5 | |||
afa58987da | |||
0643cb5f73 | |||
4717bd0336 | |||
36d088e75c | |||
ac859dc4ec | |||
e0a18fc66d | |||
b0a8898f1f | |||
9857fa778d | |||
7da59f9b83 | |||
e208752f44 | |||
78ecf3b655 | |||
12dbf54505 | |||
3858c49164 | |||
dfd884e36b | |||
31c6c022bc | |||
e243b899b3 | |||
84990e2821 | |||
16e8ef3bdb | |||
9a9bea6b1b | |||
fc6b02c833 | |||
329145eb50 | |||
7cab7eab1b | |||
fa7da4ab1b | |||
303837da8e | |||
0f27298764 | |||
2a6147b3db | |||
de13ec6e73 | |||
dc59d8785d | |||
12b1019cab | |||
4b640a0a34 | |||
8750675e43 | |||
5761bcb0fc | |||
9530058f05 | |||
ee4f156901 | |||
019eea73cf | |||
16f6a40456 | |||
3a2222cde3 | |||
8a4866ce9f | |||
2d0baaf290 | |||
3ca7530a29 | |||
6d71ca630a | |||
cf7d33f8b2 | |||
5f85ae0f8f | |||
9b4fe8fdb1 | |||
c89fed2c07 | |||
c22fcdfdd8 | |||
65a80b8d80 | |||
634cce1c8d | |||
ec06dd2a01 | |||
6d0d152039 | |||
2d8a272d2d | |||
59492ba5c6 | |||
e9970d2b2b | |||
bdda710617 | |||
e4d5715a06 | |||
3fe8173a31 | |||
ed3f6faa1b | |||
65007b699d | |||
0160aab51f | |||
4bdb12c95e | |||
305da06de1 | |||
e1873d9579 | |||
5facc2edd6 | |||
37e74cdbaf | |||
8f38d1d96c | |||
964fb48b9a | |||
78505cfa75 | |||
5602fbc30e | |||
0f1804e3fb | |||
c6648d7ae8 | |||
b9ef4fb756 | |||
002213aa87 | |||
ac5e2dd88e | |||
b7d2c2e280 | |||
40fac363ce | |||
b8d878287c | |||
a6d0505adb | |||
c99b5f0559 | |||
5fa1f983b8 | |||
5eb808d587 | |||
ee24a0d933 | |||
7430389f3c | |||
d84e23e0ad | |||
221a63a827 | |||
07bafa380d | |||
83f97f482e | |||
321e48c500 | |||
22067a2a3d | |||
494c9f31d6 | |||
2bcf387ba4 | |||
5bf5a20624 | |||
fff4e996d2 | |||
218f22c8d2 | |||
d931b5aaea | |||
ec16a3a380 | |||
c41683d9e2 | |||
2abd41f429 | |||
f0cba8e7f6 | |||
8e1b48e868 | |||
d3fe32a96b | |||
62ab8db450 | |||
2af67616c8 | |||
d07e6a66f8 | |||
51adf6eb5a | |||
007afda3d1 | |||
3355f9185e | |||
1e5b6aa485 | |||
679bf869e8 | |||
1aaacb1df7 | |||
1068f502bb |
8
.gitignore
vendored
@ -1,3 +1,5 @@
|
||||
/.asciidoctor
|
||||
|
||||
cache/*
|
||||
cache-ascii/*
|
||||
cache-full/*
|
||||
@ -7,6 +9,10 @@ __pycache__
|
||||
wiki/trash
|
||||
wiki/notes.sqlite
|
||||
upload.sh
|
||||
wiki/**/*.png
|
||||
wiki/**/diag*.png
|
||||
wiki/**/*.png.cache
|
||||
|
||||
*.pyc
|
||||
*.txt
|
||||
upload-*.sh
|
||||
|
||||
|
29
.gitmodules
vendored
@ -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
|
||||
[submodule "plugins/official"]
|
||||
path = plugins/official
|
||||
url = git@github.com:/getpelican/pelican-plugins.git
|
||||
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@git.246060.ru:f1x1t/pelican-plugins-official
|
||||
|
2
Makefile
@ -2,7 +2,7 @@ build:
|
||||
pelican -s pelicanconf.py
|
||||
|
||||
web:
|
||||
pelican -s pelicanconf-web.py
|
||||
COMPRESS=1 pelican -s pelicanconf.py
|
||||
|
||||
clean:
|
||||
rm -rf cache __pycache__
|
||||
|
@ -2,8 +2,8 @@
|
||||
========
|
||||
|
||||
```sh
|
||||
sudo apt-get install pelican asciidoctor ruby-asciidoctor-pdf plantuml yui-compressor
|
||||
sudo gem install asciidoctor-diagram
|
||||
sudo apt-get install pelican plantuml yui-compressor
|
||||
sudo gem install asciidoctor asciidoctor-pdf asciidoctor-diagram
|
||||
```
|
||||
|
||||
Установка:
|
||||
@ -18,6 +18,7 @@ git submodule update --init plugins/thirdparty/pelidoc
|
||||
git submodule update --init plugins/thirdparty/yuicompressor-opt
|
||||
git submodule update --init plugins/thirdparty/pandoc_reader
|
||||
git submodule update --init plugins/thirdparty/replacer
|
||||
git submodule update --init plugins/thirdparty/asciidoctor
|
||||
git submodule update --init themes/bootstrap4
|
||||
```
|
||||
|
||||
|
@ -1,122 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
import os
|
||||
|
||||
class i18n(object):
|
||||
# looks for translations in
|
||||
# {LOCALE_DIR}/{LANGUAGE}/LC_MESSAGES/{DOMAIN}.mo
|
||||
# if not present, falls back to default
|
||||
|
||||
DOMAIN = 'messages'
|
||||
LOCALE_DIR = '{THEME}/translations'
|
||||
LANGUAGES = ['ru']
|
||||
NEWSTYLE = True
|
||||
|
||||
__name__ = 'i18n'
|
||||
|
||||
def register(self):
|
||||
from pelican.signals import generator_init
|
||||
generator_init.connect(self.install_translator)
|
||||
|
||||
def install_translator(self, generator):
|
||||
import gettext
|
||||
try:
|
||||
translator = gettext.translation(
|
||||
self.DOMAIN,
|
||||
self.LOCALE_DIR.format(THEME=THEME),
|
||||
self.LANGUAGES)
|
||||
except (OSError, IOError):
|
||||
translator = gettext.NullTranslations()
|
||||
generator.env.install_gettext_translations(translator, self.NEWSTYLE)
|
||||
|
||||
# ABOUT_ME = ' '
|
||||
AUTHOR = 'Андрей Астафьев'
|
||||
SITENAME = 'ДСП'
|
||||
SITEURL = 'https://dsp.246060.ru'
|
||||
|
||||
PATH = 'wiki'
|
||||
CACHE_PATH = 'cache'
|
||||
|
||||
TIMEZONE = 'Europe/Moscow'
|
||||
|
||||
DEFAULT_LANG = 'ru'
|
||||
|
||||
# Generation time
|
||||
CACHE_CONTENT = True
|
||||
LOAD_CONTENT_CACHE = True
|
||||
|
||||
# Feed generation is usually not desired when developing
|
||||
FEED_ALL_ATOM = None
|
||||
CATEGORY_FEED_ATOM = None
|
||||
TRANSLATION_FEED_ATOM = None
|
||||
AUTHOR_FEED_ATOM = None
|
||||
AUTHOR_FEED_RSS = None
|
||||
USE_FOLDER_AS_CATEGORY = True
|
||||
DEFAULT_DATE = 'fs'
|
||||
STATIC_PATHS = [ 'images', 'files', 'extras' ]
|
||||
DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search')
|
||||
|
||||
EXTRA_PATH_METADATA = {
|
||||
'extras/favicon.ico': {'path': 'favicon.ico'},
|
||||
}
|
||||
|
||||
DISPLAY_CATEGORIES_ON_MENU = False
|
||||
DISPLAY_CATEGORIES_ON_SIDEBAR = True
|
||||
DISPLAY_TAGS_ON_SIDEBAR = True
|
||||
|
||||
THEME = 'themes/bootstrap4'
|
||||
BOOTSTRAP_THEME = 'litera'
|
||||
|
||||
I18N_TEMPLATES_LANG = 'ru'
|
||||
I18N_GETTEXT_NEWSTYLE = True
|
||||
I18N_GETTEXT_LOCALEDIR = 'themes/bootstrap4/translations'
|
||||
I18N_GETTEXT_DOMAIN = 'messages'
|
||||
JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
|
||||
|
||||
PLUGIN_PATHS = ["plugins/official", "plugins/thirdparty"]
|
||||
PLUGINS = [i18n(), "pelican-css", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
|
||||
|
||||
|
||||
ASCIIDOCTOR_CMD = "asciidoctor"
|
||||
ASCIIDOCTOR_EXTRA_OPTIONS = [
|
||||
'--require', 'asciidoctor-diagram',
|
||||
'--attribute=imagesdir={}/wiki/images'.format(os.getcwd()),
|
||||
'--attribute=source-highlighter=pygments',
|
||||
'--attribute=pygments-style=manni',
|
||||
'--attribute=pygments-css=class',
|
||||
'--attribute=lang=ru',
|
||||
'--attribute=figure-caption=Рис.',
|
||||
'--attribute=toc-title=Содержание',
|
||||
'--attribute=experimental',
|
||||
]
|
||||
|
||||
REPLACES = (
|
||||
('{}/wiki/'.format(os.getcwd()), u''),
|
||||
)
|
||||
|
||||
YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
|
||||
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
|
||||
PLUGINS += ["yuicompressor-opt"]
|
||||
|
||||
PDF_PROCESSOR = True
|
||||
|
||||
# Blogroll
|
||||
LINKS = ()
|
||||
# LINKS = (('Pelican', 'http://getpelican.com/'),
|
||||
# ('Python.org', 'http://python.org/'),
|
||||
# ('Jinja2', 'http://jinja.pocoo.org/'),
|
||||
# ('You can modify those links in your config file', '#'),)
|
||||
|
||||
# Social widget
|
||||
SOCIAL = ()
|
||||
# SOCIAL = (('You can add links in your config file', '#'),
|
||||
# ('Another social link', '#'),)
|
||||
|
||||
PYGMENTS_STYLE='asciidoctor-pastie'
|
||||
|
||||
DEFAULT_PAGINATION = 20
|
||||
|
||||
# Uncomment following line if you want document-relative URLs when developing
|
||||
RELATIVE_URLS = True
|
||||
|
@ -1,35 +1,7 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*- #
|
||||
from __future__ import unicode_literals
|
||||
import os
|
||||
|
||||
class i18n(object):
|
||||
# looks for translations in
|
||||
# {LOCALE_DIR}/{LANGUAGE}/LC_MESSAGES/{DOMAIN}.mo
|
||||
# if not present, falls back to default
|
||||
|
||||
DOMAIN = 'messages'
|
||||
LOCALE_DIR = '{THEME}/translations'
|
||||
LANGUAGES = ['ru']
|
||||
NEWSTYLE = True
|
||||
|
||||
__name__ = 'i18n'
|
||||
|
||||
def register(self):
|
||||
from pelican.signals import generator_init
|
||||
generator_init.connect(self.install_translator)
|
||||
|
||||
def install_translator(self, generator):
|
||||
import gettext
|
||||
try:
|
||||
translator = gettext.translation(
|
||||
self.DOMAIN,
|
||||
self.LOCALE_DIR.format(THEME=THEME),
|
||||
self.LANGUAGES)
|
||||
except (OSError, IOError):
|
||||
translator = gettext.NullTranslations()
|
||||
generator.env.install_gettext_translations(translator, self.NEWSTYLE)
|
||||
|
||||
# ABOUT_ME = ' '
|
||||
AUTHOR = 'Андрей Астафьев'
|
||||
SITENAME = 'ДСП'
|
||||
@ -68,27 +40,31 @@ DISPLAY_TAGS_ON_SIDEBAR = True
|
||||
THEME = 'themes/bootstrap4'
|
||||
BOOTSTRAP_THEME = 'litera'
|
||||
|
||||
I18N_TEMPLATES_LANG = 'ru'
|
||||
# I18N_GETTEXT_LOCALEDIR = 'translations'
|
||||
# I18N_GETTEXT_DOMAIN = 'messages'
|
||||
|
||||
# Обязательно в виде массива
|
||||
I18N_TEMPLATES_LANG = ['ru']
|
||||
I18N_GETTEXT_NEWSTYLE = True
|
||||
I18N_GETTEXT_LOCALEDIR = 'themes/bootstrap4/translations'
|
||||
I18N_GETTEXT_DOMAIN = 'messages'
|
||||
JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
|
||||
|
||||
PLUGIN_PATHS = ["plugins/official", "plugins/thirdparty"]
|
||||
PLUGINS = [i18n(), "pelican-css", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
|
||||
PLUGINS = ["i18n_subsites", "pelican-css", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
|
||||
|
||||
|
||||
ASCIIDOCTOR_CMD = "asciidoctor"
|
||||
ASCIIDOCTOR_EXTRA_OPTIONS = [
|
||||
'--require', 'asciidoctor-diagram',
|
||||
'--require', '{}/themes/pdf/qa.rb'.format(os.getcwd()),
|
||||
'--attribute=imagesdir={}/wiki/images'.format(os.getcwd()),
|
||||
'--attribute=source-highlighter=pygments',
|
||||
'--attribute=pygments-style=manni',
|
||||
'--attribute=pygments-css=class',
|
||||
'--attribute=lang=ru',
|
||||
'--attribute=figure-caption=Рис.',
|
||||
'--attribute=toc-title=Содержание',
|
||||
'--attribute=l10ndir={}/themes/l10n'.format(os.getcwd()),
|
||||
'--attribute=experimental',
|
||||
'--attribute=pdf-themesdir={}/themes/pdf'.format(os.getcwd()),
|
||||
'--attribute=pdf-theme=wiki',
|
||||
]
|
||||
|
||||
REPLACES = (
|
||||
@ -97,7 +73,10 @@ REPLACES = (
|
||||
|
||||
YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
|
||||
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
|
||||
#PLUGINS += ["yuicompressor-opt"]
|
||||
|
||||
if 'COMPRESS' in os.environ:
|
||||
PLUGINS += ["yuicompressor-opt"]
|
||||
|
||||
|
||||
PDF_PROCESSOR = True
|
||||
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 8cea2c6492f98e11341c48556978da7f6756f8a0
|
||||
Subproject commit 7e8c591b519581dce80912abeb5070c4a299b547
|
2
plugins/thirdparty/asciidoctor
vendored
@ -1 +1 @@
|
||||
Subproject commit 288c5aeba001bc605d20c573c37d1fb9384262e8
|
||||
Subproject commit b597cccb6b894bca614414706af0249078d3283c
|
@ -1 +1 @@
|
||||
Subproject commit ce6b18660a933855dbe996fc5b5d3d0ac1c25223
|
||||
Subproject commit 4168da84689e24c9d96ad3f8b979ea79a5b78771
|
23
themes/l10n/ru.adoc
Normal file
@ -0,0 +1,23 @@
|
||||
// Russian translation, courtesy of Alexander Zobkov <alexander.zobkov@gmail.com>
|
||||
:appendix-caption: Приложение
|
||||
:appendix-refsig: {appendix-caption}
|
||||
:caution-caption: Внимание
|
||||
:chapter-label: Глава
|
||||
:chapter-refsig: {chapter-label}
|
||||
:example-caption: Пример
|
||||
:figure-caption: Рисунок
|
||||
:important-caption: Важно
|
||||
:last-update-label: Последнее обновление
|
||||
ifdef::listing-caption[:listing-caption: Листинг]
|
||||
ifdef::manname-title[:manname-title: Название]
|
||||
:note-caption: Примечание
|
||||
:part-label: Часть
|
||||
:part-refsig: {part-label}
|
||||
ifdef::preface-title[:preface-title: Предисловие]
|
||||
:section-refsig: Раздел
|
||||
:table-caption: Таблица
|
||||
:tip-caption: Подсказка
|
||||
:toc-title: Содержание
|
||||
:untitled-label: Без названия
|
||||
:version-label: Версия
|
||||
:warning-caption: Предупреждение
|
60
themes/pdf/qa.rb
Normal file
@ -0,0 +1,60 @@
|
||||
require 'asciidoctor/extensions'
|
||||
|
||||
class QuestionBlock < Asciidoctor::Extensions::BlockProcessor
|
||||
use_dsl
|
||||
named :QUESTION
|
||||
on_context :example
|
||||
|
||||
def process parent, reader, attrs
|
||||
attrs['name'] = 'question'
|
||||
attrs['caption'] = 'Question'
|
||||
admon = create_block parent, :admonition, nil, attrs, content_model: :compound
|
||||
parse_content admon, reader
|
||||
admon
|
||||
end
|
||||
end
|
||||
|
||||
class QuestionBlockCss < Asciidoctor::Extensions::DocinfoProcessor
|
||||
use_dsl
|
||||
|
||||
def process doc
|
||||
'<style>
|
||||
.admonitionblock td.icon .icon-question:before{content:"\f128";color:#000}
|
||||
</style>'
|
||||
end
|
||||
end
|
||||
|
||||
Asciidoctor::Extensions.register do
|
||||
block QuestionBlock
|
||||
docinfo_processor QuestionBlockCss
|
||||
end
|
||||
|
||||
class AnswerBlock < Asciidoctor::Extensions::BlockProcessor
|
||||
use_dsl
|
||||
named :ANSWER
|
||||
on_context :example
|
||||
|
||||
def process parent, reader, attrs
|
||||
attrs['name'] = 'answer'
|
||||
attrs['caption'] = 'Answer'
|
||||
admon = create_block parent, :admonition, nil, attrs, content_model: :compound
|
||||
parse_content admon, reader
|
||||
admon
|
||||
end
|
||||
end
|
||||
|
||||
class AnswerBlockCss < Asciidoctor::Extensions::DocinfoProcessor
|
||||
use_dsl
|
||||
|
||||
def process doc
|
||||
'<style>
|
||||
.admonitionblock td.icon .icon-answer:before{content:"\f0eb";color:#000}
|
||||
</style>'
|
||||
end
|
||||
end
|
||||
|
||||
Asciidoctor::Extensions.register do
|
||||
block AnswerBlock
|
||||
docinfo_processor AnswerBlockCss
|
||||
end
|
||||
|
22
themes/pdf/wiki-theme.yml
Normal file
@ -0,0 +1,22 @@
|
||||
extends: default
|
||||
page:
|
||||
size: A4
|
||||
layout: portrait
|
||||
# margin: [15mm, 20mm, 15mm, 10mm]
|
||||
image:
|
||||
caption:
|
||||
align: inherit
|
||||
font-style: normal
|
||||
caption:
|
||||
font-style: normal
|
||||
admonition:
|
||||
icon:
|
||||
question:
|
||||
name: fa-question
|
||||
stroke_color: 000000
|
||||
size: 24
|
||||
answer:
|
||||
name: fa-lightbulb
|
||||
stroke_color: 000000
|
||||
size: 24
|
||||
|
44
wiki/Linux/System/Настройка Redis.adoc
Normal 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
|
||||
----
|
||||
|
29
wiki/Linux/System/Настройка параметров локальной сети.adoc
Normal 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
|
||||
----
|
||||
|
@ -7,16 +7,16 @@
|
||||
Windows{nbsp}10. Пример приведён ниже:
|
||||
|
||||
.Экран 1
|
||||
image::oo-shutup/1.jpg[1]
|
||||
image::oo-shutup/1.jpg[1,align="center"]
|
||||
|
||||
.Экран 2
|
||||
image::oo-shutup/2.jpg[2]
|
||||
image::oo-shutup/2.jpg[2,align="center"]
|
||||
|
||||
.Экран 3
|
||||
image::oo-shutup/3.jpg[3]
|
||||
image::oo-shutup/3.jpg[3,align="center"]
|
||||
|
||||
.Экран 4
|
||||
image::oo-shutup/4.jpg[4]
|
||||
image::oo-shutup/4.jpg[4,align="center"]
|
||||
|
||||
.Экран 5
|
||||
image::oo-shutup/5.jpg[5]
|
||||
image::oo-shutup/5.jpg[5,align="center"]
|
||||
|
1606
wiki/Prog/Development/CMake управление проектом v2.adoc
Normal file
@ -14,18 +14,18 @@ https://software.intel.com/en-us/parallel-studio-xe[дистрибутив] и
|
||||
скопировать его в полученный каталог.
|
||||
. Если есть файл лицензии `parallel_studio.lic`, скопировать его в
|
||||
каталог `/opt/intel/licenses`.
|
||||
. От суперпользователя установить в каталог `/opt/intel` командой
|
||||
`sudo ./install.sh -s silent.cfg`.
|
||||
. Добавить полномочия для сбора статистики:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_amplifier/bin64/amplxe-cl
|
||||
sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_amplifier/bin64/amplxe-perf
|
||||
sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_profiler/bin64/vtune
|
||||
sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_profiler/bin64/amplxe-perf
|
||||
----
|
||||
|
||||
[arabic, start=5]
|
||||
. От суперпользователя установить в каталог `/opt/intel` командой
|
||||
`sudo ./install.sh -s silent.cfg`.
|
||||
. Создать образ
|
||||
[arabic, start=6]
|
||||
. Создать образ:
|
||||
`mksquashfs /opt/intel/* /home/user/intel.sfs -comp xz -Xbcj x86 -all-root -b 512K`
|
||||
. Удалить содержимое каталога `/opt/intel`.
|
||||
. Примонтировать образ:
|
||||
@ -35,5 +35,35 @@ sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_amplifier/bin64/amplxe-perf
|
||||
[source,sh]
|
||||
----
|
||||
source /opt/intel/bin/compilervars.sh intel64
|
||||
source /opt/intel/vtune_amplifier/amplxe-vars.sh
|
||||
source /opt/intel/vtune_profiler/amplxe-vars.sh
|
||||
----
|
||||
|
||||
[arabic, start=10]
|
||||
. Создать файл `/etc/sysctl.d/97-vtune.conf`:
|
||||
|
||||
[source,text]
|
||||
----
|
||||
kernel.kptr_restrict=0
|
||||
kernel.perf_event_paranoid=0
|
||||
kernel.yama.ptrace_scope=0
|
||||
----
|
||||
|
||||
[arabic, start=11]
|
||||
. Прочитать его: `sysctl -p /etc/sysctl.d/97-vtune.conf`
|
||||
. Создать группу `vtune` и добавить в неё пользователя:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
groupadd vtune
|
||||
usermod -a -G vtune user
|
||||
----
|
||||
|
||||
[arabic, start=13]
|
||||
. Установить модули ядра для упрощения доступа к отладочной информации:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
sudo apt-get install dkms build-essential linux-headers-generic
|
||||
sudo dpkg -i /opt/intel/vtune-dkms*deb
|
||||
----
|
||||
|
||||
|
129
wiki/Prog/Development/Настройка Qt Creator.adoc
Normal file
@ -0,0 +1,129 @@
|
||||
= Настройка Qt Creator
|
||||
:title-separator: {sp}|
|
||||
:category: Linux/Программы
|
||||
:tags: Linux, Qt, Qt Creator, C++,
|
||||
:toc:
|
||||
:icons: font
|
||||
include::{l10ndir}/{lang}.adoc[]
|
||||
|
||||
Перед настройкой Qt Creator желательно установить пакеты для разработки
|
||||
и выполнить дополнительные настройки:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
sudo apt-get install git ninja-build cmake uncrustify dos2unix doxygen
|
||||
sudo apt-get install clazy clang-tidy build-essential qt5-default
|
||||
git clone https://git.246060.ru/f1x1t/uncrustify-config ~/.config/uncrustify
|
||||
----
|
||||
|
||||
<<<
|
||||
|
||||
== Плагины
|
||||
|
||||
[.text-center]
|
||||
.menu:Справка[О модулях] (часть 1)
|
||||
image::qtcreator-setup/qtcreator21.png[qtcreator21,pdfwidth=70%,scaledwidth=90%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
[.text-center]
|
||||
.menu:Справка[О модулях] (часть 2)
|
||||
image::qtcreator-setup/qtcreator22.png[qtcreator22,pdfwidth=70%,scaledwidth=90%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
[.text-center]
|
||||
.menu:Справка[О модулях] (часть 3)
|
||||
image::qtcreator-setup/qtcreator23.png[qtcreator23,pdfwidth=70%,scaledwidth=90%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
[.text-center]
|
||||
.menu:Справка[О модулях] (часть 4)
|
||||
image::qtcreator-setup/qtcreator24.png[qtcreator24,pdfwidth=70%,scaledwidth=90%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
== Комплекты
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Комплекты > Комплекты]
|
||||
image::qtcreator-setup/qtcreator34.png[qtcreator34,pdfwidth=80%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Комплекты > Комплекты > Генератор CMake > Изменить]
|
||||
image::qtcreator-setup/qtcreator35.png[qtcreator35,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
<<<
|
||||
|
||||
== Среда
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Среда > Система]
|
||||
image::qtcreator-setup/qtcreator41.png[qtcreator41,pdfwidth=80%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
== Редактор
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Текстовый редактор > Поведение]
|
||||
image::qtcreator-setup/qtcreator42.png[qtcreator42,pdfwidth=80%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
|
||||
== C++
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > С++ > Именование файлов]
|
||||
image::qtcreator-setup/qtcreator51.png[qtcreator51,pdfwidth=78%,scaledwidth=78%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
== Стилизатор
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Стилизатор > Uncrustify]
|
||||
image::qtcreator-setup/qtcreator55.png[qtcreator55,pdfwidth=78%,scaledwidth=78%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
|
||||
== Сборка и запуск
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > Сборка и запуск > Основное]
|
||||
image::qtcreator-setup/qtcreator61.png[qtcreator61,pdfwidth=78%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
<<<
|
||||
|
||||
== To-Do
|
||||
|
||||
[.text-center]
|
||||
.menu:Инструменты[Параметры > To-Do]
|
||||
image::qtcreator-setup/qtcreator67.png[qtcreator67,pdfwidth=78%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
|
||||
== Импорт проекта на CMake
|
||||
|
||||
[.text-center]
|
||||
.menu:Импорт проекта[Настроить проект]
|
||||
image::qtcreator-setup/qtcreator74.png[qtcreator74,pdfwidth=80%,scaledwidth=80%,align="center"]
|
||||
|
||||
{empty} +
|
||||
|
||||
== Сборка
|
||||
|
||||
[.text-center]
|
||||
.menu:Проект[Настройки сборки]
|
||||
image::qtcreator-setup/qtcreator81.png[qtcreator81,pdfwidth=80%,scaledwidth=80%,align="center"]
|
||||
|
@ -0,0 +1,269 @@
|
||||
= Программный проект и иерархия каталогов
|
||||
:title-separator: {sp}|
|
||||
:category: Программирование
|
||||
:tags: Linux, файлы, каталоги, программирование, cmake
|
||||
:toc:
|
||||
include::{l10ndir}/{lang}.adoc[]
|
||||
|
||||
Для операционных систем типа Linux принят стандарт
|
||||
https://ru.wikipedia.org/wiki/FHS[FHS] («стандарт иерархии файловой
|
||||
системы»), унифицирующий местонахождение файлов и каталогов с общим
|
||||
назначением в файловой системе. Полная текущая версия стандарта
|
||||
находится http://refspecs.linuxfoundation.org/fhs.shtml[здесь].
|
||||
|
||||
== Типы расположения проекта
|
||||
|
||||
В соответствии с данным стандартом, а также принятыми в ведущих
|
||||
дистрибутивах правилами размещения исполняемых файлов в каталогах
|
||||
пользователей, можно выделить следующие типы расположения:
|
||||
|
||||
* системная иерархия в каталоге `/usr` используется для установки
|
||||
бинарных пакетов для данного дистрибутива;
|
||||
|
||||
* системная иерархия в каталоге `/usr/local` используется для установки
|
||||
программного обеспечения системным администратором без использования
|
||||
пакетов (не рекомендуется для использования из-за проблем поддержки
|
||||
в актуальном состоянии);
|
||||
|
||||
* системная иерархия в каталоге `/opt` используется для установки
|
||||
стороннего программного обеспечения. В рамках данной иерархии
|
||||
предполагается, что каждый программный продукт располагается в
|
||||
собственном каталоге. При таком типе сборки обычно используются
|
||||
дополнительные методы (статическая компоновка, включение в состав
|
||||
пакета своего набора динамических библиотек) для обеспечения работы
|
||||
пакета в операционных системам с отличающимся составом библиотек
|
||||
и другим циклом обновления;
|
||||
|
||||
* системная иерархия в домашнем каталоге пользователя не имеет
|
||||
определённого стандарта, обычно производители дистрибутивов
|
||||
предлагают использовать для исполняемых файлов каталоги
|
||||
`$HOME/bin` или `$HOME/.local/bin`.
|
||||
|
||||
Система автоматизации сборки программного обеспечения https://cmake.org[CMake]
|
||||
позволяет организовать окружение подобное перечисленным выше.
|
||||
На этапе сборки проекта можно создать структуру каталогов,
|
||||
которая будет отвечать требованиям по логическому разделению
|
||||
файлов на исполняемые, заголовочные, библиотеки, файлы настроек и т.д.
|
||||
|
||||
== Автоматическая адаптация к текущему окружению
|
||||
|
||||
Для обеспечения единообразной работы вне зависимости от варианта
|
||||
иерархии каталогов, в которой находится исполняемый файл, можно
|
||||
выполнять автоматическую настройку на работу в текущем окружении.
|
||||
|
||||
В библиотеке https://git.246060.ru/f1x1t/myxlib[myxlib] реализован
|
||||
класс, который анализирует расположение и окружение исполняемого
|
||||
файла и предоставляет методы для получения имён каталогов,
|
||||
соответствующих текущему окружению. Названия методов и описания
|
||||
возвращаемых значений приведены в таблице.
|
||||
|
||||
.Имена методов и описания
|
||||
[cols="2m,4",options="header"]
|
||||
|===
|
||||
| Метод | Описание
|
||||
| homeDirectory() | Полный путь к домашнему каталогу текущего пользователя
|
||||
| tempDirectory() | Полный путь к каталогу с временными файлами
|
||||
| userConfigDirectory() | Полный путь к пользовательскому каталогу с файлами настройки
|
||||
| userConstDataDirectory() | Полный путь к пользовательскому каталогу с неизменяемыми файлами
|
||||
| userVarDataDirectory() | Полный путь к пользовательскому каталогу с изменяемыми файлами
|
||||
| userLogDirectory() | Полный путь к пользовательскому каталогу с журналами работы
|
||||
| executableFilePath() | Полный путь к исполняемому файлу
|
||||
| systemConfigDirectory() | Полный путь к системному каталогу с файлами настройки
|
||||
| systemConstDataDirectory() | Полный путь к системному каталогу с неизменяемыми файлами
|
||||
| systemVarDataDirectory() | Полный путь к системному каталогу с изменяемыми файлами
|
||||
| systemLogDirectory() | Полный путь к системному каталогу с журналами работы
|
||||
| executableFileDirectory() | Полный путь к каталогу с исполняемым файлом
|
||||
| executableFileName() | Имя исполняемого файла
|
||||
| projectName() | Имя подкаталога для проекта
|
||||
|===
|
||||
|
||||
Пример использования:
|
||||
|
||||
[source,cpp]
|
||||
----
|
||||
#include <myx/filesystem/paths.hpp>
|
||||
namespace MF = myx::filesystem;
|
||||
|
||||
MF::Paths& paths = MF::Paths::instance();
|
||||
paths.init();
|
||||
qDebug() << paths.systemConstDataDirectory().path();
|
||||
----
|
||||
|
||||
== Правила выбора типа окружения
|
||||
|
||||
Класс `myx::filesystem::Paths` реализован в виде синглтона,
|
||||
чтобы повторно не выполнять проверку окружения в разных частях программы.
|
||||
Сначала определяются имена пользовательского и временного каталогов с
|
||||
помощью вызовов функций https://doc.qt.io/qt-5/qdir.html#homePath[`QDir::homePath`]
|
||||
и https://doc.qt.io/qt-5/qdir.html#tempPath[`QDir::tempPath`], затем
|
||||
имена пользовательских каталогов для настроек, постоянных и изменяемых
|
||||
данных и журналов. Эти значения не зависят от расположения исполняемого файла,
|
||||
а определяются в соответствии со значениям переменных окружения `HOME`,
|
||||
`TMPDIR`, `XDG_CONFIG_HOME` и `XDG_DATA_HOME`, либо устанавливаются значения,
|
||||
принятые в стандартах. Пример имён каталогов для пользователя `user`,
|
||||
названия организации `org`, названия выполняемой работы `theme` и проекта
|
||||
`project` приведён в таблице.
|
||||
|
||||
.Стандартные каталоги для текущего пользователя
|
||||
[cols="4,4m,6m",options="header"]
|
||||
|===
|
||||
| Назначение каталога | Метод | Значение
|
||||
| Домашний каталог | homeDirectory() | /home/user
|
||||
| Временные файлы | tempDirectory() | /tmp
|
||||
| Файлы настройки | 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
|
||||
|===
|
||||
|
||||
=== Общая проверка
|
||||
|
||||
Для определения типа текущего окружения используется полный путь
|
||||
к исполняемому файлу, если он находится в каталоге `bin`, то выполняются
|
||||
проверки работы в одной из возможных вариантов иерархий,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и дальнейшие проверки не выполняются.
|
||||
|
||||
IMPORTANT: При проверке типов иерархии всегда проверяется наличие
|
||||
всех необходимых каталогов, при отсутствии хотя бы одного будет
|
||||
принято решение, что файлы всех типов находятся в одном каталоге
|
||||
с исполняемым.
|
||||
|
||||
|
||||
=== Проверка на работу в иерархии `/opt`
|
||||
|
||||
Если полный путь к исполняемому файлу начинается с `/opt` и
|
||||
содержит в себе название текущего проекта, например
|
||||
`/opt/org-theme/project/bin/application`, то выполняется проверка
|
||||
на наличие сопутствующих системных каталогов. Если они присутствуют,
|
||||
то принимается решение, что окружение в иерархии `/opt` сформировано правильно,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и дальнейшие проверки не выполняются.
|
||||
Пример правильной структуры каталогов для данной иерархии приведён в таблице.
|
||||
|
||||
|
||||
.Каталоги в иерархии `/opt`
|
||||
[cols="4,4m,5m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | 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
|
||||
|===
|
||||
|
||||
|
||||
=== Проверка на работу в иерархии `/usr/local`
|
||||
|
||||
Если полный путь к исполняемому файлу начинается с `/usr/local`,
|
||||
например `/usr/local/bin/application`, то выполняется проверка
|
||||
на наличие сопутствующих системных каталогов. Если они присутствуют,
|
||||
то принимается решение, что окружение в иерархии `/usr/local` сформировано правильно,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и дальнейшие проверки не выполняются.
|
||||
Пример правильной структуры каталогов для данной иерархии приведён в таблице.
|
||||
|
||||
|
||||
.Каталоги в иерархии `/usr/local`
|
||||
[cols="4,4m,5m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | executableFilePath() | /usr/local/bin/application
|
||||
| Файлы настройки | systemConfigDirectory() | /usr/local/etc/project
|
||||
| Неизменяемые файлы | systemConstDataDirectory() | /usr/local/share/project
|
||||
| Изменяемые файлы | systemVarDataDirectory() | /var/lib/project
|
||||
| Журналы работы | systemLogDirectory() | /var/log/project
|
||||
|===
|
||||
|
||||
|
||||
=== Проверка на работу в иерархии `/usr`
|
||||
|
||||
Если полный путь к исполняемому файлу начинается с `/usr`,
|
||||
например `/usr/bin/application`, то выполняется проверка
|
||||
на наличие сопутствующих системных каталогов. Если они присутствуют,
|
||||
то принимается решение, что окружение в иерархии `/usr` сформировано правильно,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и дальнейшие проверки не выполняются.
|
||||
Пример правильной структуры каталогов для данной иерархии приведён в таблице.
|
||||
|
||||
|
||||
.Каталоги в иерархии `/usr`
|
||||
[cols="4,4m,5m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | executableFilePath() | /usr/bin/application
|
||||
| Файлы настройки | systemConfigDirectory() | /etc/project
|
||||
| Неизменяемые файлы | systemConstDataDirectory() | /usr/share/project
|
||||
| Изменяемые файлы | systemVarDataDirectory() | /var/lib/project
|
||||
| Журналы работы | systemLogDirectory() | /var/log/project
|
||||
|===
|
||||
|
||||
|
||||
=== Проверка на работу в домашнем каталоге
|
||||
|
||||
Если полный путь к исполняемому файлу начинается с `/home/user/bin` или
|
||||
`/home/user/.local/bin`, например `/home/user/bin/application`, то выполняется
|
||||
проверка на наличие сопутствующих системных каталогов. Если они присутствуют,
|
||||
то принимается решение, что окружение в домашнем каталоге сформировано правильно,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и дальнейшие проверки не выполняются.
|
||||
Пример правильной структуры каталогов для данной иерархии приведён в таблице.
|
||||
|
||||
|
||||
.Каталоги при работе в домашнем каталоге
|
||||
[cols="4,4m,6m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | executableFilePath() | /home/user/bin/application
|
||||
| Файлы настройки | 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
|
||||
|===
|
||||
|
||||
|
||||
=== Проверка на работу в окружении для разработки
|
||||
|
||||
Если исполняемый файл находится в каталоге `bin` и при этом окружение не совпадает
|
||||
ни с одним из перечисленных выше, то делается предположение, что исполняемый файл
|
||||
запускается из окружения, сформированного системой управления проектом, и в данный
|
||||
момент идёт разработка (отладка) приложения. В этом случае целесообразно считать
|
||||
системными каталогами те, которые находятся внутри иерархии каталогов программного
|
||||
проекта. Если присутствуют каталоги, созданные системой управления проекта,
|
||||
то принимается решение, что окружение сформировано правильно,
|
||||
иначе делается заключение о том, что файлы всех типов находятся
|
||||
в одном каталоге с исполняемым и на этом проверки заканчиваются.
|
||||
|
||||
Пример правильной структуры каталогов для данной иерархии приведён в таблице.
|
||||
|
||||
.Каталоги при работе в окружении для разработки
|
||||
[cols="4,4m,6m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | executableFilePath() | /home/user/work/project/_build/debug/bin/application
|
||||
| Файлы настройки | 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
|
||||
|===
|
||||
|
||||
|
||||
=== Расположение в одном каталоге
|
||||
|
||||
Если в ходе перечисленных выше проверок не удалось найти правильно
|
||||
сформированное окружение, то применяется настройка по умолчанию,
|
||||
которая соответствует ситуации, когда все типы файлов расположены
|
||||
в одном каталоге с исполняемым файлом. Пример для такого случая приведён в таблице.
|
||||
|
||||
|
||||
.Каталоги в неопределённой иерархии
|
||||
[cols="4,4m,6m",options="header"]
|
||||
|===
|
||||
| Назначение файла / каталога | Метод | Значение
|
||||
| Исполняемый файл | executableFilePath() | /home/user/work/project/application
|
||||
| Файлы настройки | systemConfigDirectory() | /home/user/work/project
|
||||
| Неизменяемые файлы | systemConstDataDirectory() | /home/user/work/project
|
||||
| Изменяемые файлы | systemVarDataDirectory() | /home/user/work/project
|
||||
| Журналы работы | systemLogDirectory() | /home/user/work/project
|
||||
|===
|
@ -13,14 +13,14 @@
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
sudo apt-get install clang-tidy-6.0
|
||||
sudo apt-get install clang-tidy-10
|
||||
----
|
||||
|
||||
Использование:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-6.0" path/to/source
|
||||
cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-10" path/to/source
|
||||
----
|
||||
|
||||
В каталоге проекта нужно создать файл `.clang-tidy` в формате YAML со
|
||||
@ -30,12 +30,25 @@ cmake "-DCMAKE_CXX_CLANG_TIDY=/usr/bin/clang-tidy-6.0" path/to/source
|
||||
----
|
||||
---
|
||||
Checks: '-*,
|
||||
clang-diagnostic-*,
|
||||
readability-*,
|
||||
modernize-*,
|
||||
cppcoreguidelines-*,
|
||||
google-*,
|
||||
bugprone-*'
|
||||
bugprone-*,
|
||||
clang-analyzer-*,
|
||||
cppcoreguidelines-*,
|
||||
google-*,
|
||||
llvm-*,
|
||||
misc-*,
|
||||
modernize-*,
|
||||
readability-*,
|
||||
performance-*,
|
||||
portability-*,
|
||||
-cppcoreguidelines-owning-memory,
|
||||
-cppcoreguidelines-avoid-magic-numbers,
|
||||
-cppcoreguidelines-pro-bounds-array-to-pointer-decay,
|
||||
-readability-magic-numbers,
|
||||
-readability-else-after-return,
|
||||
-modernize-use-trailing-return-type,
|
||||
-modernize-avoid-c-arrays,
|
||||
-performance-no-automatic-move,
|
||||
'
|
||||
CheckOptions:
|
||||
- key: readability-identifier-naming.ClassCase
|
||||
value: CamelCase
|
||||
@ -124,7 +137,7 @@ cmake -DCMAKE_LINK_WHAT_YOU_USE=TRUE ..
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
sudo apt-get install clazy clang-6.0
|
||||
sudo apt-get install clazy clang-9
|
||||
----
|
||||
|
||||
Использование:
|
||||
@ -132,7 +145,6 @@ sudo apt-get install clazy clang-6.0
|
||||
[source,sh]
|
||||
----
|
||||
CLAZY_CHECKS=level2 cmake -DCMAKE_CXX_COMPILER=clazy ..
|
||||
CLANGXX=clang++-6.0 make
|
||||
CLANGXX=clang++-9 make
|
||||
----
|
||||
|
||||
=== PVS-Studio
|
||||
|
44
wiki/Prog/Development/ЧАВО.adoc
Normal file
@ -0,0 +1,44 @@
|
||||
= Разные вопросы и ответы
|
||||
:title-separator: {sp}|
|
||||
:category: Linux/Программы
|
||||
:tags: Linux, Qt, Qt Creator, C++,
|
||||
:toc:
|
||||
:icons: font
|
||||
include::{l10ndir}/{lang}.adoc[]
|
||||
|
||||
[QUESTION]
|
||||
====
|
||||
|
||||
[float]
|
||||
==== Проект на CMake перестал настраиваться.
|
||||
|
||||
Сообщения вида:
|
||||
|
||||
----
|
||||
Не удалось разобрать проект CMake: потеряно соединение с сервером CMake.
|
||||
----
|
||||
====
|
||||
|
||||
[ANSWER]
|
||||
====
|
||||
. Закрыть проект в Qt Creator
|
||||
. Удалить файл `CMakeLists.txt.user` и целевой каталог сборки, например `_build`
|
||||
. Открыть проект в Qt Creator
|
||||
====
|
||||
|
||||
|
||||
[QUESTION]
|
||||
====
|
||||
|
||||
[float]
|
||||
==== Отсутствует необходимый для сборки пакет.
|
||||
Пример:
|
||||
|
||||
image::qtcreator-setup/errors01.png[errors01,align="center"]
|
||||
====
|
||||
|
||||
[ANSWER]
|
||||
====
|
||||
. Установить недостающий пакет
|
||||
. Выполнить menu:Сборка[Запустить CMake]
|
||||
====
|
@ -3,15 +3,35 @@
|
||||
:category: Программирование
|
||||
:tags: программирование, git,
|
||||
|
||||
Если у подмодуля, находящегося в каталоге `thirdparty/example` нужно
|
||||
заменить адрес синхронизации и имя используемой ветки, то в каталоге с
|
||||
файлом `.gitmodules`, в котором содержится информация об этом подмодуле,
|
||||
нужно выполнить команды:
|
||||
Если у подмодулей необходимо заменить адрес синхронизации и/или
|
||||
имя используемой ветки, то можно отредактировать в корневом
|
||||
каталоге проекта файл `.gitmodules` и выполнить данный скрипт:
|
||||
|
||||
[source,sh]
|
||||
----
|
||||
git config --file=.gitmodules submodule.thirdparty/example.url https://github.com/username/ABC.git
|
||||
git config --file=.gitmodules submodule.thirdparty/example.branch new-branch-name
|
||||
git submodule sync --recursive
|
||||
git submodule update --init --recursive --remote
|
||||
#!/bin/bash
|
||||
|
||||
# Замена адресов для подмодулей:
|
||||
# 1. Отредактировать файл .gitmodules
|
||||
# 2. Запустить этот скрипт
|
||||
#
|
||||
# Параметры:
|
||||
# - имя подмодуля (если присутствует, то замена
|
||||
# адреса производится только для данного подмодуля)
|
||||
|
||||
M="#"
|
||||
[ ! -z $1 ] && M="$1"
|
||||
|
||||
cat .gitmodules | while read s; do
|
||||
s=${s/\*/}
|
||||
s=${s/path = /}
|
||||
if [ "$M" = "#" -o "x$M" = "x$s" ]; then
|
||||
rm -rf .git/modules/$s
|
||||
rm -rf $s
|
||||
fi
|
||||
done
|
||||
|
||||
git submodule sync
|
||||
git submodule update
|
||||
----
|
||||
|
||||
|
@ -23,27 +23,15 @@ sudo apt-get install git
|
||||
|
||||
[width="100%",cols="18%,20%,62%",options="header",]
|
||||
|===
|
||||
|Термин |Англ |Определение
|
||||
|Рабочий каталог |working tree, working directory |Набор файлов в
|
||||
текущем каталоге
|
||||
|
||||
|Репозиторий |repository, repo |Контейнер, хранящий историю изменений
|
||||
файлов проекта
|
||||
|
||||
|Индекс |index, staging area |Область между рабочим каталогом и
|
||||
репозиторием, в котором осуществляется подготовка к фиксации
|
||||
|
||||
|SHA-1 |SHA-1 |Уникальный идентификатор, отражающий информацию об
|
||||
истории
|
||||
|
||||
|Ветка |branch |Именованная последовательность в истории изменений
|
||||
|
||||
|Фиксация (коммит) |commit |Набор файлов, записанных в историю
|
||||
одновременно
|
||||
|
||||
|`HEAD` |`HEAD` |Имя ссылки на последнюю фиксацию в текущей ветке
|
||||
|
||||
|Метка |tag |Именованная ссылка на некоторую фиксацию в истории
|
||||
| Термин | Англ | Определение
|
||||
| Рабочий каталог | working tree, working directory | Набор файлов в текущем каталоге
|
||||
| Репозиторий | repository, repo | Контейнер, хранящий историю изменений файлов проекта
|
||||
| Индекс | index, staging area | Область между рабочим каталогом и репозиторием, в котором осуществляется подготовка к фиксации
|
||||
| SHA-1 | SHA-1 | Уникальный идентификатор, отражающий информацию об истории
|
||||
| Ветка | branch | Именованная последовательность в истории изменений
|
||||
| Фиксация (коммит) | commit | Набор файлов, записанных в историю одновременно
|
||||
| `HEAD` | `HEAD` | Имя ссылки на последнюю фиксацию в текущей ветке
|
||||
| Метка | tag | Именованная ссылка на некоторую фиксацию в истории
|
||||
|===
|
||||
|
||||
== Состояния
|
||||
@ -63,20 +51,20 @@ sudo apt-get install git
|
||||
@startuml
|
||||
skinparam padding 16
|
||||
|
||||
participant untracked as "Неотслеживамые\n(untracked)"
|
||||
participant untracked as "Неотслеживамые\n(untracked)"
|
||||
box "Отслеживаемые"
|
||||
participant staged as "Подготовленные к фиксации\n(indexed)" #55FF55
|
||||
participant staged as "Подготовленные к фиксации\n(indexed)" #55FF55
|
||||
participant unmodified as "Неизменённые\n(unmodified)" #99FF99
|
||||
participant modified as "Изменённые\n(modified)" #77FF77
|
||||
participant modified as "Изменённые\n(modified)" #77FF77
|
||||
end box
|
||||
|
||||
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
|
||||
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
|
||||
@enduml
|
||||
----
|
||||
|
||||
@ -92,14 +80,14 @@ staged -> untracked: git rm --cached
|
||||
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
|
||||
participant index as "Индекс\n(index)" #77FF77
|
||||
participant local as "Локальный репозиторий\n(local repository)" #FF7777
|
||||
participant remote as "Удалённый репозиторий\n(remote repository)" #7777FF
|
||||
|
||||
workspace -> local : git commit -a
|
||||
workspace -> index : git add (-u)
|
||||
index -> local : git commit
|
||||
local -> remote : git push
|
||||
index -> local : git commit
|
||||
local -> remote : git push
|
||||
|
||||
== Обновление с сервера ==
|
||||
|
||||
@ -130,29 +118,63 @@ 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
|
||||
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
|
||||
remote -> local : <font color=red>Получение изменений с сервера</font>\n<b>git fetch</b>
|
||||
remote -> local : <font color=red>Обновление подмодулей</font>\n<b>git submodule update --remote</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>
|
||||
local <-> workspace : <font color=red>Создание новой ветки</font>\n<b>git branch temp</b>
|
||||
local <-> workspace : <font color=red>Переход на новую ветку</font>\n<b>git checkout temp</b>
|
||||
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>
|
||||
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>
|
||||
local <-> workspace : <font color=red>Создание новой ветки</font>\n<b>git branch temp</b>
|
||||
local <-> workspace : <font color=red>Переход на новую ветку</font>\n<b>git checkout temp</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>
|
||||
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>
|
||||
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>
|
||||
remote ->] : <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 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>Слияние изменений с сервера в текущую ветку (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
|
||||
----
|
||||
@ -161,45 +183,31 @@ deactivate workspace
|
||||
|
||||
[width="100%",cols="15%,35%,50%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git config` |`--global user.name "John Doe"` |Имя текущего
|
||||
пользователя
|
||||
|
||||
|`git config` |`--global user.email "mail@example.com"` |Почта текущего
|
||||
пользователя
|
||||
|
||||
|`git config` |`--list` |Вывод текущей конфигурации
|
||||
|
||||
|`git config` |`--global --list` |Вывод глобальной конфигурации
|
||||
| Команда | Ключи | Описание
|
||||
| `git config` | `--global user.name "John Doe"` | Имя текущего пользователя
|
||||
| `git config` | `--global user.email "mail@example.com"` | Почта текущего пользователя
|
||||
| `git config` | `--list` | Вывод текущей конфигурации
|
||||
| `git config` | `--global --list` | Вывод глобальной конфигурации
|
||||
|===
|
||||
|
||||
== Инициализация
|
||||
|
||||
[width="100%",cols="15%,35%,50%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git init` |`<dir>` |Создать пустой репозиторий в каталоге `<dir>`
|
||||
|
||||
|`git clone` |`<giturl>` `<dir>` |Создать в каталоге `<dir>` копию
|
||||
репозитория, находящегося по адресу `<giturl>`
|
||||
|
||||
|`git clone` |`--recursive <giturl>` `<dir>` |Создать в каталоге `<dir>`
|
||||
копию репозитория, находящегося по адресу `<giturl>`, с учётом
|
||||
подмодулей
|
||||
| Команда | Ключи | Описание
|
||||
| `git init` | `<dir>` | Создать пустой репозиторий в каталоге `<dir>`
|
||||
| `git clone` | `<giturl>` `<dir>` | Создать в каталоге `<dir>` копию репозитория, находящегося по адресу `<giturl>`
|
||||
| `git clone` | `--recursive <giturl>` `<dir>` | Создать в каталоге `<dir>` копию репозитория, находящегося по адресу `<giturl>`, с учётом подмодулей
|
||||
|===
|
||||
|
||||
== Подмодули
|
||||
|
||||
[width="100%",cols="15%,25%,60%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git submodule` |`add <giturl> <dir>` |Добавить в каталог `<dir>`
|
||||
текущего репозитория подмодуль, находящийся по адресу `<giturl>`
|
||||
|
||||
|`git submodule` |`update --recursive --remote` |Обновить подмодули
|
||||
|
||||
|`git submodule` |`sync --recursive` |Заменить адреса подмодулей на
|
||||
указанные в файле `.gitmodules`
|
||||
| Команда | Ключи | Описание
|
||||
| `git submodule` | `add <giturl> <dir>` | Добавить в каталог `<dir>` текущего репозитория подмодуль, находящийся по адресу `<giturl>`
|
||||
| `git submodule` | `update --recursive --remote` | Обновить подмодули
|
||||
| `git submodule` | `sync --recursive` | Заменить адреса подмодулей на указанные в файле `.gitmodules`
|
||||
|===
|
||||
|
||||
Удаление подмодуля:
|
||||
@ -214,54 +222,42 @@ git rm <path/to/submodule>
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git add` |`<filename>` |Подготовить файл `<filename>` к фиксации
|
||||
|
||||
|`git commit` | |Зафиксировать подготовленные файлы
|
||||
|
||||
|`git commit` |`-a` |Зафиксировать все отслеживаемые файлы, которые были
|
||||
изменены
|
||||
| Команда | Ключи | Описание
|
||||
| `git add` | `<filename>` | Подготовить файл `<filename>` к фиксации
|
||||
| `git commit` | | Зафиксировать подготовленные файлы
|
||||
| `git commit` | `-a` | Зафиксировать все отслеживаемые файлы, которые были изменены
|
||||
|===
|
||||
|
||||
== Удаление
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git rm` |`<filename>` |Удалить файл из индекса и рабочего каталога
|
||||
|
||||
|`git rm` |`-f <filename>` |Принудительное удаление файла
|
||||
|
||||
|`git rm` |`--cached <filename>` |Удаление файла из проекта, но не из
|
||||
рабочего каталога
|
||||
| Команда | Ключи | Описание
|
||||
| `git rm` | `<filename>` | Удалить файл из индекса и рабочего каталога
|
||||
| `git rm` | `-f <filename>` | Принудительное удаление файла
|
||||
| `git rm` | `--cached <filename>` | Удаление файла из проекта, но не из рабочего каталога
|
||||
|===
|
||||
|
||||
== Информация
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git status` |`-s` |Вывод информации о рабочем каталоге в краткой форме
|
||||
|`git log` |`--oneline` |Вывод журнала изменений в краткой форме
|
||||
|`git ls-files` | |Вывод списка отслеживаемых и подготовленных файлов
|
||||
| Команда | Ключи | Описание
|
||||
| `git status` | `-s` | Вывод информации о рабочем каталоге в краткой форме
|
||||
| `git log` | `--oneline` | Вывод журнала изменений в краткой форме
|
||||
| `git ls-files` | | Вывод списка отслеживаемых и подготовленных файлов
|
||||
|===
|
||||
|
||||
== Удалённый репозиторий
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git remote` |`-v` |Список адресов удалённых репозиториев
|
||||
|
||||
|`git branch` |`-r` |Список веток в удалённых репозиториях
|
||||
|
||||
|`git remote` |`add <name> <url>` |Создать ссылку `<name>` на удалённый
|
||||
репозиторий, находящийся по адресу `<url>`
|
||||
|
||||
|`git remote` |`rename <old> <new>` |Переименовать ссылку `<old>` на
|
||||
`<new>`
|
||||
|
||||
|`git remote` |`rm <name>` |Удалить ссылку `<name>`
|
||||
| Команда | Ключи | Описание
|
||||
| `git remote` | `-v` | Список адресов удалённых репозиториев
|
||||
| `git branch` | `-r` | Список веток в удалённых репозиториях
|
||||
| `git remote` | `add <name> <url>` | Создать ссылку `<name>` на удалённый репозиторий, находящийся по адресу `<url>`
|
||||
| `git remote` | `rename <old> <new>` | Переименовать ссылку `<old>` на `<new>`
|
||||
| `git remote` | `rm <name>` | Удалить ссылку `<name>`
|
||||
|===
|
||||
|
||||
* Обращение к удалённому репозиторию осуществляется по ссылке,
|
||||
@ -272,32 +268,21 @@ git rm <path/to/submodule>
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git push` |`<remote> <branch>` |Отправить ветку `<branch>` в удалённый
|
||||
репозиторий `<remote>`
|
||||
|
||||
|`git push` |`<remote> --all` |Отправить все ветки в удалённый
|
||||
репозиторий `<remote>`
|
||||
|
||||
|`git push` |`--d <remote> <branch>` |Удалить ветку `<branch>` из
|
||||
удалённого репозитория `<remote>`
|
||||
| Команда | Ключи | Описание
|
||||
| `git push` | `<remote> <branch>` | Отправить ветку `<branch>` в удалённый репозиторий `<remote>`
|
||||
| `git push` | `<remote> --all` | Отправить все ветки в удалённый репозиторий `<remote>`
|
||||
| `git push` | `--d <remote> <branch>` | Удалить ветку `<branch>` из удалённого репозитория `<remote>`
|
||||
|===
|
||||
|
||||
== Получение изменений
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git fetch` |`<remote>` |Получить изменения из всех веток репозитория
|
||||
`<remote>`, но не выполнять слияние
|
||||
|
||||
|`git fetch` |`<remote> <branch>` |Получить изменения из ветки
|
||||
`<branch>` репозитория `<remote>`, но не выполнять слияние
|
||||
|
||||
|`git merge` |`<remote>/<branch>` |Выполнить слияние с веткой `<branch>`
|
||||
репозитория `<remote>`
|
||||
|
||||
|`git pull` |`<remote>` |Получение и слияние
|
||||
| Команда | Ключи | Описание
|
||||
| `git fetch` | `<remote>` | Получить изменения из всех веток репозитория `<remote>`, но не выполнять слияние
|
||||
| `git fetch` | `<remote> <branch>` | Получить изменения из ветки `<branch>` репозитория `<remote>`, но не выполнять слияние
|
||||
| `git merge` | `<remote>/<branch>` | Выполнить слияние с веткой `<branch>` репозитория `<remote>`
|
||||
| `git pull` | `<remote>` | Получение и слияние
|
||||
|===
|
||||
|
||||
== Ветки
|
||||
@ -305,42 +290,25 @@ git rm <path/to/submodule>
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git branch` |`-a` |Список локальных и удалённых веток
|
||||
|
||||
|`git branch` | |Список локальных веток
|
||||
|
||||
|`git branch` |`<branch>` |Создать ветку `<branch>`
|
||||
|
||||
|`git checkout` |`<sha-1>` |Перейти к фиксации с идентификатором
|
||||
`<sha-1>`
|
||||
|
||||
|`git branch` |`-m <old> <new>` |Переименовать ветку `<old>` в `<new>`
|
||||
|
||||
|`git merge` |`<branch>` |Слить изменения из ветки `<branch>` в текущую
|
||||
ветку
|
||||
|
||||
|`git branch` |`-d <branch>` |Удалить ветку `<branch>`
|
||||
| `git branch` | `-a` | Список локальных и удалённых веток
|
||||
| `git branch` | | Список локальных веток
|
||||
| `git branch` | `<branch>` | Создать ветку `<branch>`
|
||||
| `git checkout` | `<sha-1>` | Перейти к фиксации с идентификатором `<sha-1>`
|
||||
| `git branch` | `-m <old> <new>` | Переименовать ветку `<old>` в `<new>`
|
||||
| `git merge` | `<branch>` | Слить изменения из ветки `<branch>` в текущую ветку
|
||||
| `git branch` | `-d <branch>` | Удалить ветку `<branch>`
|
||||
|===
|
||||
|
||||
== Сравнение
|
||||
|
||||
[width="100%",cols="15%,20%,65%",options="header",]
|
||||
|===
|
||||
|Команда |Ключи |Описание
|
||||
|`git diff` | |Сравнить рабочий каталог и индекс
|
||||
|
||||
|`git diff` |`–-cached` |Сравнить индекс и последнюю фиксацию
|
||||
|
||||
|`git diff` |`HEAD` |Сравнить последнюю фиксацию и рабочий каталог
|
||||
|
||||
|`git diff` |`--stat` |Краткий вывод результатов
|
||||
|
||||
|`git diff` |`<sha-1> <sha-1>` |Сравнить две точки с указанными
|
||||
идентификаторами
|
||||
|
||||
|`git diff` |`<dir>` `<file>` |Сравнивать только указанный каталог
|
||||
`<dir>` или файл `<file>`
|
||||
|
||||
|`git difftool` | |Отобразить результаты сравнения в программе,
|
||||
определяемой переменной `diff.tool`
|
||||
| Команда | Ключи | Описание
|
||||
| `git diff` | | Сравнить рабочий каталог и индекс
|
||||
| `git diff` | `–-cached` | Сравнить индекс и последнюю фиксацию
|
||||
| `git diff` | `HEAD` | Сравнить последнюю фиксацию и рабочий каталог
|
||||
| `git diff` | `--stat` | Краткий вывод результатов
|
||||
| `git diff` | `<sha-1> <sha-1>` | Сравнить две точки с указанными идентификаторами
|
||||
| `git diff` | `<dir>` `<file>` | Сравнивать только указанный каталог `<dir>` или файл `<file>`
|
||||
| `git difftool` | | Отобразить результаты сравнения в программе, определяемой переменной `diff.tool`
|
||||
|===
|
||||
|
@ -19,11 +19,16 @@ CREATE TABLE example (
|
||||
----
|
||||
const char cart[] = {0x04, 0x43, 0x00, 0x9A};
|
||||
QByteArray binDataArray(QByteArray::fromRawData(cart, 4));
|
||||
QSqlQuery query;
|
||||
query.prepare(QString("INSERT INTO example (id, bin_data) VALUES(:id, :bin_data)");
|
||||
query.bindValue(":id", 10, QSql::In);
|
||||
query.bindValue(":bin_data", binDataArray, QSql::In | QSql::Binary);
|
||||
query.exec();
|
||||
QSqlQuery query1;
|
||||
query1.prepare(QString("INSERT INTO example (id, bin_data) VALUES(:id, :bin_data)");
|
||||
query1.bindValue(":id", 10, QSql::In);
|
||||
query1.bindValue(":bin_data", binDataArray, QSql::In | QSql::Binary);
|
||||
query1.exec();
|
||||
|
||||
QSqlQuery query2;
|
||||
query2.exec(QString("INSERT INTO files VALUES(%1, %2);")
|
||||
.arg(18)
|
||||
.arg(db.driver()->formatValue(dataField)));
|
||||
----
|
||||
|
||||
Чтение данных:
|
||||
|
@ -53,10 +53,10 @@ https://git.246060.ru/f1x1t/clang-tidy-readability-identifier-naming[Проек
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|AbstractClassCase |`CamelCase`
|
||||
|AbstractClassPrefix |`''`
|
||||
|AbstractClassSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| AbstractClassCase | `CamelCase`
|
||||
| AbstractClassPrefix | `''`
|
||||
| AbstractClassSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -83,10 +83,10 @@ class AbstractClass {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ClassCase |`CamelCase`
|
||||
|ClassPrefix |`''`
|
||||
|ClassSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ClassCase | `CamelCase`
|
||||
| ClassPrefix | `''`
|
||||
| ClassSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -115,10 +115,10 @@ class TestClass {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|StructCase |`CamelCase`
|
||||
|StructPrefix |`''`
|
||||
|StructSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| StructCase | `CamelCase`
|
||||
| StructPrefix | `''`
|
||||
| StructSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -143,10 +143,10 @@ struct TestStruct {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|UnionCase |`CamelCase`
|
||||
|UnionPrefix |`''`
|
||||
|UnionSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| UnionCase | `CamelCase`
|
||||
| UnionPrefix | `''`
|
||||
| UnionSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -173,10 +173,10 @@ union TestUnion {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|EnumCase |`CamelCase`
|
||||
|EnumPrefix |`''`
|
||||
|EnumSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| EnumCase | `CamelCase`
|
||||
| EnumPrefix | `''`
|
||||
| EnumSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -197,10 +197,10 @@ enum TestEnum { ONE, TWO };
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|EnumConstantCase |`UPPER_CASE`
|
||||
|EnumConstantPrefix |`''`
|
||||
|EnumConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| EnumConstantCase | `UPPER_CASE`
|
||||
| EnumConstantPrefix | `''`
|
||||
| EnumConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -221,10 +221,10 @@ enum TestEnum { ONE, TWO };
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|NamespaceCase |`lower_case`
|
||||
|NamespacePrefix |`''`
|
||||
|NamespaceSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| NamespaceCase | `lower_case`
|
||||
| NamespacePrefix | `''`
|
||||
| NamespaceSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -249,10 +249,10 @@ namespace test_ns {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|InlineNamespaceCase |`lower_case`
|
||||
|InlineNamespacePrefix |`''`
|
||||
|InlineNamespaceSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| InlineNamespaceCase | `lower_case`
|
||||
| InlineNamespacePrefix | `''`
|
||||
| InlineNamespaceSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -281,10 +281,10 @@ inline namespace inline_namespace {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|TypeAliasCase |`lower_case`
|
||||
|TypeAliasPrefix |`''`
|
||||
|TypeAliasSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| TypeAliasCase | `lower_case`
|
||||
| TypeAliasPrefix | `''`
|
||||
| TypeAliasSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -311,10 +311,10 @@ using MyStructType = MyStructure;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|TypedefCase |`lower_case`
|
||||
|TypedefPrefix |`''`
|
||||
|TypedefSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| TypedefCase | `lower_case`
|
||||
| TypedefPrefix | `''`
|
||||
| TypedefSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -339,10 +339,10 @@ typedef int my_int;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|GlobalVariableCase |`lower_case`
|
||||
|GlobalVariablePrefix |`''`
|
||||
|GlobalVariableSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| GlobalVariableCase | `lower_case`
|
||||
| GlobalVariablePrefix | `''`
|
||||
| GlobalVariableSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -363,10 +363,10 @@ unsigned global_variable;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|LocalVariableCase |`camelBack`
|
||||
|LocalVariablePrefix |`''`
|
||||
|LocalVariableSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| LocalVariableCase | `camelBack`
|
||||
| LocalVariablePrefix | `''`
|
||||
| LocalVariableSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -393,10 +393,10 @@ int function() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|StaticVariableCase |`camelBack`
|
||||
|StaticVariablePrefix |`''`
|
||||
|StatucVariableSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| StaticVariableCase | `camelBack`
|
||||
| StaticVariablePrefix | `''`
|
||||
| StatucVariableSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -423,10 +423,10 @@ int functionWithStaticVariable() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstexprVariableCase |`lower_case`
|
||||
|ConstexprVariablePrefix |`''`
|
||||
|ConstexprVariableSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstexprVariableCase | `lower_case`
|
||||
| ConstexprVariablePrefix | `''`
|
||||
| ConstexprVariableSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -447,10 +447,10 @@ constexpr int const_five = 5;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|GlobalPointerCase |`lower_case`
|
||||
|GlobalPointerPrefix |`''`
|
||||
|GlobalPointerSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| GlobalPointerCase | `lower_case`
|
||||
| GlobalPointerPrefix | `''`
|
||||
| GlobalPointerSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -471,10 +471,10 @@ void* global_pointer;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|LocalPointerCase |`camelBack`
|
||||
|LocalPointerPrefix |`''`
|
||||
|LocalPointerSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| LocalPointerCase | `camelBack`
|
||||
| LocalPointerPrefix | `''`
|
||||
| LocalPointerSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -503,10 +503,10 @@ void* function() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ClassMemberCase |`camelBack`
|
||||
|ClassMemberPrefix |`''`
|
||||
|ClassMemberSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ClassMemberCase | `camelBack`
|
||||
| ClassMemberPrefix | `''`
|
||||
| ClassMemberSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -533,10 +533,10 @@ class ClassWithClassMember {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstantMemberCase |`lower_case`
|
||||
|ConstantMemberPrefix |`''`
|
||||
|ConstantMemberSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstantMemberCase | `lower_case`
|
||||
| ConstantMemberPrefix | `''`
|
||||
| ConstantMemberSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -561,10 +561,10 @@ class ClassWithConstantMember {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|PrivateMemberCase |`camelBack`
|
||||
|PrivateMemberPrefix |`'m_'`
|
||||
|PrivateMemberSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| PrivateMemberCase | `camelBack`
|
||||
| PrivateMemberPrefix | `'m_'`
|
||||
| PrivateMemberSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -591,10 +591,10 @@ class ClassWithPrivateMember {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ProtectedMemberCase |`camelBack`
|
||||
|ProtectedMemberPrefix |`''`
|
||||
|ProtectedMemberSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ProtectedMemberCase | `camelBack`
|
||||
| ProtectedMemberPrefix | `''`
|
||||
| ProtectedMemberSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -621,10 +621,10 @@ class ClassWithProtectedMember {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|PublicMemberCase |`camelBack`
|
||||
|PublicMemberPrefix |`''`
|
||||
|PublicMemberSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| PublicMemberCase | `camelBack`
|
||||
| PublicMemberPrefix | `''`
|
||||
| PublicMemberSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -653,10 +653,10 @@ class ClassWithPublicMember {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstantCase |`UPPER_CASE`
|
||||
|ConstantPrefix |`''`
|
||||
|ConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstantCase | `UPPER_CASE`
|
||||
| ConstantPrefix | `''`
|
||||
| ConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -677,10 +677,10 @@ const int THE_ONE = 1;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|GlobalConstantCase |`UPPER_CASE`
|
||||
|GlobalConstantPrefix |`''`
|
||||
|GlobalConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| GlobalConstantCase | `UPPER_CASE`
|
||||
| GlobalConstantPrefix | `''`
|
||||
| GlobalConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -701,10 +701,10 @@ const int THE_ONE = 1;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|LocalConstantCase |`camelBack`
|
||||
|LocalConstantPrefix |`''`
|
||||
|LocalConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| LocalConstantCase | `camelBack`
|
||||
| LocalConstantPrefix | `''`
|
||||
| LocalConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -731,10 +731,10 @@ int functionWithLocalConstant() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|StaticConstantCase |`camelBack`
|
||||
|StaticConstantPrefix |`''`
|
||||
|StaticConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| StaticConstantCase | `camelBack`
|
||||
| StaticConstantPrefix | `''`
|
||||
| StaticConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -761,10 +761,10 @@ int functionWithStaticConstant() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ClassConstantCase |`UPPER_CASE`
|
||||
|ClassConstantPrefix |`''`
|
||||
|ClassConstantSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ClassConstantCase | `UPPER_CASE`
|
||||
| ClassConstantPrefix | `''`
|
||||
| ClassConstantSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -791,10 +791,10 @@ class ClassWithClassConstant {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|GlobalConstantPointerCase |`lower_case`
|
||||
|GlobalConstantPointerPrefix |`''`
|
||||
|GlobalConstantPointerSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| GlobalConstantPointerCase | `lower_case`
|
||||
| GlobalConstantPointerPrefix | `''`
|
||||
| GlobalConstantPointerSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -817,10 +817,10 @@ void* const global_const_pointer = global_pointer;
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|LocalConstantPointerCase |`camelBack`
|
||||
|LocalConstantPointerPrefix |`''`
|
||||
|LocalConstantPointerSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| LocalConstantPointerCase | `camelBack`
|
||||
| LocalConstantPointerPrefix | `''`
|
||||
| LocalConstantPointerSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -851,10 +851,10 @@ void* functionWithLocalConstPointer() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|FunctionCase |`camelBack`
|
||||
|FunctionPrefix |`''`
|
||||
|FunctionSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| FunctionCase | `camelBack`
|
||||
| FunctionPrefix | `''`
|
||||
| FunctionSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -879,10 +879,10 @@ static int staticFunction() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|GlobalFunctionCase |`camelBack`
|
||||
|GlobalFunctionPrefix |`''`
|
||||
|GlobalFunctionSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| GlobalFunctionCase | `camelBack`
|
||||
| GlobalFunctionPrefix | `''`
|
||||
| GlobalFunctionSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -907,10 +907,10 @@ int globalFunction() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstexprFunctionCase |`camelBack`
|
||||
|ConstexprFunctionPrefix |`''`
|
||||
|ConstexprFunctionSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstexprFunctionCase | `camelBack`
|
||||
| ConstexprFunctionPrefix | `''`
|
||||
| ConstexprFunctionSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -937,10 +937,10 @@ constexpr int getFive() {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ClassMethodCase |`camelBack`
|
||||
|ClassMethodPrefix |`''`
|
||||
|ClassMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ClassMethodCase | `camelBack`
|
||||
| ClassMethodPrefix | `''`
|
||||
| ClassMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -967,10 +967,10 @@ class ClassWithMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstexprMethodCase |`camelBack`
|
||||
|ConstexprMethodPrefix |`''`
|
||||
|ConstexprMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstexprMethodCase | `camelBack`
|
||||
| ConstexprMethodPrefix | `''`
|
||||
| ConstexprMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -997,10 +997,10 @@ class ClassWithConstexprMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|VirtualMethodCase |`camelBack`
|
||||
|VirtualMethodPrefix |`''`
|
||||
|VirtualMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| VirtualMethodCase | `camelBack`
|
||||
| VirtualMethodPrefix | `''`
|
||||
| VirtualMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1027,10 +1027,10 @@ class ClassWithVirtualMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|PrivateMethodCase |`camelBack`
|
||||
|PrivateMethodPrefix |`''`
|
||||
|PrivateMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| PrivateMethodCase | `camelBack`
|
||||
| PrivateMethodPrefix | `''`
|
||||
| PrivateMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1057,10 +1057,10 @@ class ClassWithPrivateMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ProtectedMethodCase |`camelBack`
|
||||
|ProtectedMethodPrefix |`''`
|
||||
|ProtectedMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ProtectedMethodCase | `camelBack`
|
||||
| ProtectedMethodPrefix | `''`
|
||||
| ProtectedMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1087,10 +1087,10 @@ class ClassWithProtectedMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|PublicMethodCase |`camelBack`
|
||||
|PublicMethodPrefix |`''`
|
||||
|PublicMethodSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| PublicMethodCase | `camelBack`
|
||||
| PublicMethodPrefix | `''`
|
||||
| PublicMethodSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1119,10 +1119,10 @@ class ClassWithPublicMethod {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ParameterCase |`camelBack`
|
||||
|ParameterPrefix |`''`
|
||||
|ParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ParameterCase | `camelBack`
|
||||
| ParameterPrefix | `''`
|
||||
| ParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1147,10 +1147,10 @@ int returnInt(int returnValue) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstantParameterCase |`camelBack`
|
||||
|ConstantParameterPrefix |`''`
|
||||
|ConstantParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstantParameterCase | `camelBack`
|
||||
| ConstantParameterPrefix | `''`
|
||||
| ConstantParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1175,10 +1175,10 @@ char returnChar(const char returnValue) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ConstantPointerParameterCase |`camelBack`
|
||||
|ConstantPointerParameterPrefix |`''`
|
||||
|ConstantPointerParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ConstantPointerParameterCase | `camelBack`
|
||||
| ConstantPointerParameterPrefix | `''`
|
||||
| ConstantPointerParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1203,10 +1203,10 @@ void* returnVoid(void* const returnValue) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|PointerParameterCase |`camelBack`
|
||||
|PointerParameterPrefix |`''`
|
||||
|PointerParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| PointerParameterCase | `camelBack`
|
||||
| PointerParameterPrefix | `''`
|
||||
| PointerParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1233,10 +1233,10 @@ void* returnPtr(void* returnValue) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|TemplateParameterCase |`camelBack`
|
||||
|TemplateParameterPrefix |`''`
|
||||
|TemplateParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| TemplateParameterCase | `camelBack`
|
||||
| TemplateParameterPrefix | `''`
|
||||
| TemplateParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1261,10 +1261,10 @@ template<typename TType> int tFunction(TType tValue) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ParameterPackCase |`camelBack`
|
||||
|ParameterPackPrefix |`''`
|
||||
|ParameterPackSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ParameterPackCase | `camelBack`
|
||||
| ParameterPackPrefix | `''`
|
||||
| ParameterPackSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1285,10 +1285,10 @@ template<class ... Types> void f(Types ... parametersPack);
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|TemplateTemplateParameterCase |`camelBack`
|
||||
|TemplateTemplateParameterPrefix |`''`
|
||||
|TemplateTemplateParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| TemplateTemplateParameterCase | `camelBack`
|
||||
| TemplateTemplateParameterPrefix | `''`
|
||||
| TemplateTemplateParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1311,10 +1311,10 @@ class AllmightyClass { };
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|TypeTemplateParameterCase |`CamelCase`
|
||||
|TypeTemplateParameterPrefix |`''`
|
||||
|TypeTemplateParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| TypeTemplateParameterCase | `CamelCase`
|
||||
| TypeTemplateParameterPrefix | `''`
|
||||
| TypeTemplateParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
@ -1339,10 +1339,10 @@ template<typename TType>int tFunction(TType value) {
|
||||
|
||||
[cols=",",options="header",]
|
||||
|===
|
||||
|Параметр |Значение
|
||||
|ValueTemplateParameterCase |`camelBack`
|
||||
|ValueTemplateParameterPrefix |`''`
|
||||
|ValueTemplateParameterSuffix |`''`
|
||||
| Параметр | Значение
|
||||
| ValueTemplateParameterCase | `camelBack`
|
||||
| ValueTemplateParameterPrefix | `''`
|
||||
| ValueTemplateParameterSuffix | `''`
|
||||
|===
|
||||
|
||||
Пример кода до форматирования:
|
||||
|
@ -19,10 +19,9 @@ https://ru.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms[BLAS]
|
||||
* https://github.com/skystrife/cpptoml[cpptoml]: чтение
|
||||
https://github.com/toml-lang/toml[TOML]
|
||||
* https://github.com/martinmoene/gsl-lite/[gsl-lite]: реализация
|
||||
рекомендаций https://github.com/isocpp/CppCoreGuidelines[C++ Core
|
||||
Guidelines]
|
||||
* http://www.holoborodko.com/pavel/mpfr[mpfrc++]: C++ интерфейс для
|
||||
https://www.mpfr.org/[MPFR]
|
||||
рекомендаций https://github.com/isocpp/CppCoreGuidelines/[C{plus}{plus} Core Guidelines]
|
||||
* http://www.holoborodko.com/pavel/mpfr/[mpfrc{plus}{plus}]: C++ интерфейс
|
||||
для https://www.mpfr.org/[MPFR]
|
||||
|
||||
== Qt
|
||||
|
||||
|
18
wiki/Prog/Links/Статьи.adoc
Normal file
@ -0,0 +1,18 @@
|
||||
= Сайты и статьи по программированию
|
||||
:category: Программирование
|
||||
:tags: программирование, C, C++, Qt,
|
||||
|
||||
:toc:
|
||||
|
||||
== С++
|
||||
|
||||
* https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines[C++ Core Guidelines]
|
||||
|
||||
== Qt
|
||||
|
||||
* https://woboq.com/blog/how-qt-signals-slots-work.html[How Qt Signals and Slots Work]
|
||||
|
||||
== Оптимизация
|
||||
|
||||
* https://www.agner.org/optimize[Agner's software optimization resources]
|
||||
* https://jjj.de[jj's pages (FXT library and Matters Computational)]
|
BIN
wiki/images/cmake-fixes/clang-tidy1.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
wiki/images/cmake-fixes/clang-tidy2.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
wiki/images/cmake-fixes/clazy1.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
wiki/images/cmake-fixes/clazy2.png
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
wiki/images/cmake-project/clang-tidy1.png
Normal file
After Width: | Height: | Size: 91 KiB |
BIN
wiki/images/cmake-project/clang-tidy2.png
Normal file
After Width: | Height: | Size: 167 KiB |
BIN
wiki/images/cmake-project/clazy1.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
wiki/images/cmake-project/clazy2.png
Normal file
After Width: | Height: | Size: 166 KiB |
BIN
wiki/images/cmake-project/qtcreator-cmake-option.png
Normal file
After Width: | Height: | Size: 177 KiB |
BIN
wiki/images/qtcreator-setup/errors01.png
Normal file
After Width: | Height: | Size: 35 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator21.png
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator22.png
Normal file
After Width: | Height: | Size: 95 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator23.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator24.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator34.png
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator35.png
Normal file
After Width: | Height: | Size: 21 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator41.png
Normal file
After Width: | Height: | Size: 76 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator42.png
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator51.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator55.png
Normal file
After Width: | Height: | Size: 75 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator61.png
Normal file
After Width: | Height: | Size: 102 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator67.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator74.png
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
wiki/images/qtcreator-setup/qtcreator81.png
Normal file
After Width: | Height: | Size: 88 KiB |