Compare commits

..

14 Commits

Author SHA1 Message Date
c36bbc9678 local 2019-08-29 17:19:41 +03:00
5661034292 Qt: Обмен бинарными данными 2019-06-20 06:56:39 +03:00
322cd0643e next 2019-06-03 16:39:27 +03:00
bf0c4a6c26 next 2019-06-03 10:49:50 +03:00
3b34f960b5 Merge branch 'asciidoc' 2019-06-03 10:04:55 +03:00
02568f482b text 2019-06-03 10:03:24 +03:00
e312541ae7 orfo 2019-06-03 02:26:28 +03:00
f3206726a0 text 2019-06-02 19:31:29 +03:00
adb7098d1c next 2019-06-02 19:30:00 +03:00
f56fff2bd3 Тема 2019-06-02 13:26:42 +03:00
d02e8b7e76 next 2019-06-02 13:20:51 +03:00
f8a740a624 text 2019-05-28 15:57:56 +03:00
0003a98c30 text 2019-05-28 14:15:34 +03:00
0bc4923a7b text 2019-05-28 13:33:01 +03:00
55 changed files with 295 additions and 467 deletions

2
.gitignore vendored
View File

@ -7,4 +7,6 @@ __pycache__
wiki/trash
wiki/notes.sqlite
upload.sh
wiki/**/*.png
wiki/**/*.png.cache

3
.gitmodules vendored
View File

@ -23,3 +23,6 @@
[submodule "plugins/thirdparty/replacer"]
path = plugins/thirdparty/replacer
url = git@github.com:/narusemotoki/replacer
[submodule "plugins/thirdparty/asciidoctor"]
path = plugins/thirdparty/asciidoctor
url = git@git.246060.ru:f1x1t/pelican-asciidoctor

View File

@ -1,9 +1,9 @@
build:
pelican
pelican -s pelicanconf.py
pdf:
pelican -s pelicanconf-full.py
web:
pelican -s pelicanconf-web.py
clean:
rm -rf cache-html cache-full cache __pycache__
rm -rf cache __pycache__

View File

@ -1,6 +1,11 @@
Сайт ДСП
========
```sh
sudo apt-get install pelican asciidoctor ruby-asciidoctor-pdf plantuml yui-compressor
sudo gem install asciidoctor-diagram
```
Установка:
```sh

View File

@ -1,116 +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-ascii'
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' ]
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", "pelidoc", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
PDF_PROCESSOR = True
ASCIIDOCTOR_CMD = "asciidoctor"
ASCIIDOCTOR_IMAGES_PATH = '{}/wiki/images'.format(os.getcwd())
ASCIIDOCTOR_EXTRA_OPTIONS = [
'--require', 'asciidoctor-diagram',
'--attribute=imagesdir='+ASCIIDOCTOR_IMAGES_PATH,
]
REPLACES = (
('{}/wiki/'.format(os.getcwd()), u''),
)
YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
#PLUGINS += ["yuicompressor-opt"]
DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search')
# 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='pastie'
DEFAULT_PAGINATION = 20
# Uncomment following line if you want document-relative URLs when developing
RELATIVE_URLS = True

View File

@ -1,116 +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-ascii'
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' ]
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", "pelidoc", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
PDF_PROCESSOR = True
ASCIIDOCTOR_CMD = "asciidoctor"
ASCIIDOCTOR_IMAGES_PATH = '{}/wiki/images'.format(os.getcwd())
ASCIIDOCTOR_EXTRA_OPTIONS = [
'--require', 'asciidoctor-diagram',
'--attribute=imagesdir='+ASCIIDOCTOR_IMAGES_PATH,
]
REPLACES = (
('{}/wiki/'.format(os.getcwd()), u''),
)
YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
#PLUGINS += ["yuicompressor-opt"]
DIRECT_TEMPLATES = ('index', 'categories', 'authors', 'archives', 'search')
# 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='pastie'
DEFAULT_PAGINATION = 20
# Uncomment following line if you want document-relative URLs when developing
RELATIVE_URLS = True

View File

@ -36,7 +36,7 @@ SITENAME = 'ДСП'
SITEURL = 'https://dsp.246060.ru'
PATH = 'wiki'
CACHE_PATH = 'cache-ascii'
CACHE_PATH = 'cache'
TIMEZONE = 'Europe/Moscow'
@ -75,7 +75,7 @@ I18N_GETTEXT_DOMAIN = 'messages'
JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
PLUGIN_PATHS = ["plugins/official", "plugins/thirdparty"]
PLUGINS = [i18n(), "pelican-css", "pelidoc", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
PLUGINS = [i18n(), "pelican-css", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
ASCIIDOCTOR_CMD = "asciidoctor"
@ -87,6 +87,7 @@ ASCIIDOCTOR_EXTRA_OPTIONS = [
'--attribute=pygments-css=class',
'--attribute=lang=ru',
'--attribute=figure-caption=Рис.',
'--attribute=toc-title=Содержание',
'--attribute=experimental',
]
@ -94,8 +95,8 @@ REPLACES = (
('{}/wiki/'.format(os.getcwd()), u''),
)
#YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
#YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
PLUGINS += ["yuicompressor-opt"]
PDF_PROCESSOR = True

View File

@ -36,7 +36,7 @@ SITENAME = 'ДСП'
SITEURL = 'https://dsp.246060.ru'
PATH = 'wiki'
CACHE_PATH = 'cache-ascii'
CACHE_PATH = 'cache'
TIMEZONE = 'Europe/Moscow'
@ -75,7 +75,7 @@ I18N_GETTEXT_DOMAIN = 'messages'
JINJA_ENVIRONMENT = {'extensions': ['jinja2.ext.i18n']}
PLUGIN_PATHS = ["plugins/official", "plugins/thirdparty"]
PLUGINS = [i18n(), "pelican-css", "pelidoc", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
PLUGINS = [i18n(), "pelican-css", "series", "subcategory", "tag_cloud", "tipue_search", "replacer", "asciidoctor"]
ASCIIDOCTOR_CMD = "asciidoctor"
@ -87,6 +87,7 @@ ASCIIDOCTOR_EXTRA_OPTIONS = [
'--attribute=pygments-css=class',
'--attribute=lang=ru',
'--attribute=figure-caption=Рис.',
'--attribute=toc-title=Содержание',
'--attribute=experimental',
]
@ -98,7 +99,7 @@ YUICOMPRESSOR_EXECUTABLE = "yui-compressor"
YUICOMPRESSOR_EXTRA_OPTIONS = ["--nomunge"]
#PLUGINS += ["yuicompressor-opt"]
#PDF_PROCESSOR = True
PDF_PROCESSOR = True
# Blogroll
LINKS = ()

View File

@ -1,8 +1,8 @@
= LaTeX: висячие строки
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст,
Пакет https://www.ctan.org/pkg/nowidow[`nowidow`] используется для
изменения алгоритма размещения висячих строк. Пример:

View File

@ -1,4 +1,5 @@
= LyX: редактирование ЕСПД
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст, LyX,
@ -10,7 +11,7 @@
sudo apt-get install lyx texlive-xetex
----
Установить стили LaTeX для ЕСПД:
Установить стили LaTeX для http://tiny.cc/u8eo7y[ЕСПД]:
[source,sh]
----
@ -34,54 +35,71 @@ git clone https://git.246060.ru:/f1x1t/lyx-layout-espdx.git ~/.lyx/layouts
Пример настройки:
[.text-center]
.Класс документа
image::lyx-espdx/01.png[Класс документа]
[.text-center]
.Модули
image::lyx-espdx/02.png[Модули]
[.text-center]
.Шрифты
image::lyx-espdx/03.png[Шрифты]
[.text-center]
.Макет текста
image::lyx-espdx/04.png[Макет текста]
[.text-center]
.Макет страницы
image::lyx-espdx/05.png[Макет страницы]
[.text-center]
.Поля страницы
image::lyx-espdx/06.png[Поля страницы]
[.text-center]
.Язык
image::lyx-espdx/07.png[Язык]
[.text-center]
.Нумерация и содержание
image::lyx-espdx/08.png[Нумерация и содержание]
[.text-center]
.Библиография
image::lyx-espdx/09.png[Библиография]
[.text-center]
.Предметный указатель
image::lyx-espdx/10.png[Предметный указатель]
[.text-center]
.Свойства PDF / Общие
image::lyx-espdx/11.png[Свойства PDF / Общие]
[.text-center]
.Свойства PDF / Гиперссылки
image::lyx-espdx/12.png[Свойства PDF / Гиперссылки]
[.text-center]
.Свойства PDF / Закладки
image::lyx-espdx/13.png[Свойства PDF / Закладки]
[.text-center]
.Параметры математики
image::lyx-espdx/14.png[Параметры математики]
[.text-center]
.Размещение плавающих объектов
image::lyx-espdx/15.png[Размещение плавающих объектов]
[.text-center]
.Форматы
image::lyx-espdx/16.png[Форматы]
[.text-center]
.Преамбула LaTeX
image::lyx-espdx/17.png[Преамбула LaTeX]

View File

@ -1,4 +1,5 @@
= LaTeX: защита команд
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст,

View File

@ -1,4 +1,5 @@
= LaTeX: лигатуры
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, шрифты,

View File

@ -1,11 +1,12 @@
= LyX: многостраничные таблицы
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст, LyX, таблицы,
* Создать таблицу как минимум с четырьмя строками.
* Щелкнуть правой кнопкой мыши на таблице, выбрать во всплывающем меню
* Щёлкнуть правой кнопкой мыши на таблице, выбрать во всплывающем меню
*Длинная таблица*.
* Щелкнуть правой кнопкой мыши на таблице, выбрать во всплывающем меню
* Щёлкнуть правой кнопкой мыши на таблице, выбрать во всплывающем меню
*Настройки*.
* Установить курсор на первой строке таблицы, в окне настроек перейти на
вкладку *Длинная таблица*.
@ -17,9 +18,9 @@
* Нажать *Применить*.
* Установить курсор на третьей строке таблицы, в окне настроек перейти
на вкладку *Длинная таблица*.
* Выбрать *Заголовок* и *Первый заколовок*.
* Выбрать *Заголовок* и *Первый заголовок*.
* Нажать *Применить*.
* Щелкнуть правой кнопкой мыши на второй строке таблицы, выбрать в меню
* Щёлкнуть правой кнопкой мыши на второй строке таблицы, выбрать в меню
*Подпись (Ненумерованный)*.
* На первой строке таблицы установить метку и ввести текст подписи к
таблице на начальной странице.

View File

@ -1,4 +1,5 @@
= LaTeX: переносы строк
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст,

View File

@ -1,4 +1,5 @@
= LaTeX: русский язык в выходном PDF
:title-separator: {sp}|
:category: LaTeX
:tags: LaTeX, текст, PDF,

View File

@ -1,4 +1,5 @@
= Astra: авторизация в PostgreSQL через PAM
:title-separator: {sp}|
:category: Linux
:tags: Linux, Astra, postgresql, базы данных,

View File

@ -1,4 +1,5 @@
= CUPS: команды
:title-separator: {sp}|
:category: Linux
:tags: Linux, печать, CUPS,

View File

@ -1,4 +1,5 @@
= GnuPG: шифрование файлов
:title-separator: {sp}|
:category: Linux
:tags: Linux, GnuPG, безопасность

View File

@ -1,4 +1,5 @@
= runit: система инициализации
:title-separator: {sp}|
:category: Linux
:tags: Debian, Ubuntu, Linux, инициализация, runit,

View File

@ -1,4 +1,5 @@
= Linux: полезные ссылки
:title-separator: {sp}|
:category: Linux
:tags: Linux, ссылки,

View File

@ -1,4 +1,5 @@
= Libgen: локальная база данных для Windows
:title-separator: {sp}|
:category: Windows
:tags: windows, libgen, библиотеки, книги,
@ -13,7 +14,6 @@ http://gen.lib.rus.ec/dbdumps/[здесь]. В архиве базы с имен
Для обработки полного архива потребуется около 30 ГБ свободного
пространства. Последовательность действий:
[arabic]
* https://yadi.sk/d/j_ToPE7D3SHGN6[Скачать] и распаковать программу
Libgen.
* Скачать архив базы данных, распаковать его в каталог `upload` и

View File

@ -1,7 +1,7 @@
= CMake: управление проектом
:title-separator: {sp}|
:category: Программирование
:tags: программирование, cmake,
:toc:
== Полезные ссылки
@ -40,7 +40,7 @@ Hitchhikers Guide to the CMake]
Назначение каталогов приведено в таблице.
[cols=",",options="header",]
[cols="1,3",options="header",]
|===
|Каталог |Назначение
|`cmex/_build` |Результаты компиляции
@ -76,6 +76,14 @@ Hitchhikers Guide to the CMake]
== Начало проекта
Проект, в котором выполнены приведённые ниже действия, можно посмотреть
https://git.246060.ru/f1x1t/cmex[здесь] или сделать его копию командой:
[source,sh]
----
git clone --recursive https://git.246060.ru/f1x1t/cmex
----
В каталоге `cmex` нужно создать файл `CMakeLists.txt`:
[source,cmake]
@ -91,12 +99,17 @@ project(cmex VERSION 0.2.0 LANGUAGES C CXX)
Значение версии следует формировать согласно правилам
https://semver.org/lang/ru/[семантического версионирования].
В каталог `cmake/cmlib` установить субмодуль CMLib, содержащий функции
для CMake:
В каталоге `cmex` нужно инициализировать репозиторий и установить
подмодули, содержащие функции для CMake:
....
git submodule add ssh://git@gitlab-server/root/cmlib cmake/cmlib
....
[source,sh]
----
git init .
git submodule add https://git.246060.ru/f1x1t/cmlib cmake/cmlib
git submodule add https://git.246060.ru/f1x1t/cmake-find cmake/find
git submodule add https://git.246060.ru/f1x1t/cmake-generators cmake/generators
git submodule update --remote --init
----
и подключить в файле `CMakeLists.txt`:
@ -390,7 +403,7 @@ include(ExternalProject)
ExternalProject_Add(cmext
EXCLUDE_FROM_ALL TRUE
SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/libcmext
SOURCE_DIR ${CMAKE_SOURCE_DIR}/thirdparty/cmext
INSTALL_DIR ${CMAKE_BINARY_DIR}
DOWNLOAD_COMMAND ""
BUILD_BYPRODUCTS <INSTALL_DIR>/lib/libcmext.a
@ -536,7 +549,7 @@ int main(int argc, char **argv) {
После сборки проекта в каталоге `cmex/l10n` появится файл
`cmex_app_ru_RU.ts`, в котором нужно отредактировать переводы с помощью
программы `linguist`. После сохранения переводов проект нужно
пересобрать, файл переводов в скопилированном виде будет встроен в
пересобрать, файл переводов в скомпилированном виде будет встроен в
исполняемый файл `cmex`, а доступ к нему будет осуществляться с помощью
кода:
@ -694,7 +707,7 @@ target_link_libraries(${current_target} Qt5::Widgets)
----
Во время сборки проекта в файл переводов `cmex/l10n/cmex_app_ru_RU.ts`
будут добавлены повые строки, их нужно перевести с помощью `linguist` и
будут добавлены новые строки, их нужно перевести с помощью `linguist` и
снова скомпилировать проект.
== Удаление установленных файлов
@ -704,7 +717,7 @@ target_link_libraries(${current_target} Qt5::Widgets)
== Архивирование проекта
Стандарный модуль `CPack` осуществляет архивирование проекта. В файле
Стандартный модуль `CPack` осуществляет архивирование проекта. В файле
`cproj/cmake/etc/cpack_ignore.txt` определён список типовых масок файлов
для исключения из архива:

View File

@ -1,4 +1,5 @@
= Intel Parallel Studio: установка в образ для чтения
:title-separator: {sp}|
:category: Linux/Программы
:tags: Linux, Intel, компилятор, C++,
@ -27,7 +28,7 @@ sudo setcap cap_sys_ptrace=eip /opt/intel/vtune_amplifier/bin64/amplxe-perf
. Создать образ
`mksquashfs /opt/intel/* /home/user/intel.sfs -comp xz -Xbcj x86 -all-root -b 512K`
. Удалить содержимое каталога `/opt/intel`.
. Подмонтировать образ:
. Примонтировать образ:
`mount -t squashfs /home/user/intel.sfs /opt/intel`
. Добавить в файл `/home/user/.bashrc` строки:

View File

@ -70,7 +70,7 @@ Analysis, GA). Включить дополнительные правила мо
....
Выбор типов предупреждений осуществляется на основе побитовой маски из
приведенных выше типов. Чтобы выполнить анализ, исключив проверки MISRA,
приведённых выше типов. Чтобы выполнить анализ, исключив проверки MISRA,
нужно выполнить
[source,sh]

View File

@ -1,4 +1,4 @@
= Построение профиля местности в QGis
= Построение профиля местности в Gis
:category: Картография
:tags: картография, qgis, sxf, shp, gdal,
@ -11,11 +11,11 @@
image:qgis-heights/1.png[Слои карты]
[arabic, start=3]
. На панели *Панель слоёв* правой кнопкой мыши щелкнуть на слое,
. На панели *Панель слоёв* правой кнопкой мыши щёлкнуть на слое,
содержащем данные о высотах, и выбрать *Фильтр…*.
. Построить выражение выбирающие только данные с высотами, например,
`"CLNAME" ILIKE '%ГОРИЗОНТАЛИ ОСНОВ%'` и нажить *OK*.
. На панели *Панель слоёв* правой кнопкой мыши щелкнуть на слое,
. На панели *Панель слоёв* правой кнопкой мыши щёлкнуть на слое,
содержащем данные о высотах, и выбрать *Сохранить как…*. Появившийся
новый слой *heights* следует удалить.
. В появившемся диалоговом окне выбрать имя выходного файла, например,
@ -27,7 +27,7 @@ image:qgis-heights/2.png[Имя выходного файла]
. В каталоге `/home/a/work/map` выполнить команду, которая в файле
`heights.shp` из слоя `heights` берёт данные о высотах из поля `SC_4` и
генерирует матрицу высот размером 2000 на 2000 в формате BMP. Настойки
алгоритма посторения матрицы можно изменять с помощью параметра `-a`:
алгоритма построения матрицы можно изменять с помощью параметра `-a`:
[source,sh]
----

View File

@ -1 +0,0 @@
{"checksum":"81886ef1b8d31cdb2b865473bbeb2cf9","width":671,"height":550}

View File

@ -1 +0,0 @@
{"checksum":"e76d88ee3db613b3f806d8c773281fdc","width":685,"height":363}

View File

@ -1,4 +1,5 @@
= Git: автоматическое сохранение в репозиторий
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git,

View File

@ -1,4 +1,5 @@
= Git: замена адреса подмодуля
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git,

View File

@ -1,6 +1,8 @@
= Git: основные команды
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git
:toc:
== Ссылки
@ -19,7 +21,7 @@ sudo apt-get install git
== Термины
[width="100%",cols="16%,17%,67%",options="header",]
[width="100%",cols="18%,20%,62%",options="header",]
|===
|Термин |Англ |Определение
|Рабочий каталог |working tree, working directory |Набор файлов в
@ -29,7 +31,7 @@ sudo apt-get install git
файлов проекта
|Индекс |index, staging area |Область между рабочим каталогом и
репозиторием, в которой осуществляется подготовка к фиксации
репозиторием, в котором осуществляется подготовка к фиксации
|SHA-1 |SHA-1 |Уникальный идентификатор, отражающий информацию об
истории
@ -47,16 +49,23 @@ sudo apt-get install git
== Состояния
Файлы в рабочем каталоге могут отслеживаться системой контроля версий
(tracked) или нет (untracked). Отслеживаемые файлы, которые на диаграмме
(tracked) или нет (untracked). Отслеживаемые файлы, которые на
<<states,диаграмме>>
обозначены зелёным фоном, могут быть неизменёнными (unmodified),
изменёнными (modified) или подготовленными к фиксации (staged).
изменёнными (modified) или подготовленными к фиксации (indexed).
[[states]]
[.text-center]
.Состояния
[plantuml]
----
@startuml
skinparam padding 16
participant untracked as "Неотслеживамые\n(untracked)"
box "Отслеживаемые"
participant staged as "Подготовленные к фиксации\n(staged)" #55FF55
participant staged as "Подготовленные к фиксации\n(indexed)" #55FF55
participant unmodified as "Неизменённые\n(unmodified)" #99FF99
participant modified as "Изменённые\n(modified)" #77FF77
end box
@ -72,12 +81,16 @@ staged -> untracked: git rm --cached
----
Основные команды, осуществляющие взаимодействие между рабочим каталогом,
индексом, локальным и удалённым репозиторием, приведены на диаграмме
ниже.
индексом, локальным и удалённым репозиторием, приведены на <<commands,диаграмме>>.
[[commands]]
[.text-center]
.Команды
[plantuml]
----
@startuml
skinparam padding 16
participant workspace as "Рабочий каталог\n(working dir)"
participant index as "Индекс\n(index)" #77FF77
participant local as "Локальный репозиторий\n(local repository)" #FF7777
@ -104,9 +117,49 @@ index -[#blue]> workspace : git diff
@enduml
----
Пример последовательности действий, выполняемых пользователем в совместном
проекте, приведён на <<workflow,диаграмме>>.
[[workflow]]
[.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
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>
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>
deactivate workspace
@enduml
----
== Настройка
[width="100%",cols="16%,38%,46%",options="header",]
[width="100%",cols="15%,35%,50%",options="header",]
|===
|Команда |Ключи |Описание
|`git config` |`--global user.name "John Doe"` |Имя текущего
@ -122,7 +175,7 @@ index -[#blue]> workspace : git diff
== Инициализация
[width="100%",cols="19%,27%,54%",options="header",]
[width="100%",cols="15%,35%,50%",options="header",]
|===
|Команда |Ключи |Описание
|`git init` |`<dir>` |Создать пустой репозиторий в каталоге `<dir>`
@ -137,11 +190,11 @@ index -[#blue]> workspace : git diff
== Подмодули
[width="100%",cols="19%,27%,54%",options="header",]
[width="100%",cols="15%,25%,60%",options="header",]
|===
|Команда |Ключи |Описание
|`git submodule` |`add <giturl> <dir>` |Добавить в каталог `<dir>`
текущего рапозитория подмодуль, находящийся по адресу `<giturl>`
текущего репозитория подмодуль, находящийся по адресу `<giturl>`
|`git submodule` |`update --recursive --remote` |Обновить подмодули
@ -159,233 +212,135 @@ git rm <path/to/submodule>
== Фиксация
[width="100%",cols="19%,27%,54%",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git add` |`<filename>` |Подготовить файл `<filename>` к фиксации
|`git commit` | |Зафиксировать подготовленные файлы
|`git commit` |`-a` |Зафиксировать все отслеживаемые файлы, которые были
изменены
|===
== Удаление
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git rm` |`<filename>` |Удалить файл из индекса и рабочего каталога
|`git rm` |`-f <filename>` |Force deletion of files from disk
|`git rm` |`-f <filename>` |Принудительное удаление файла
|`git rm` |`--cached <filename>` |Untrack file (without deleting)
|`git rm` |`--cached <filename>` |Удаление файла из проекта, но не из
рабочего каталога
|===
== Информация
[width="100%",cols="20%,20%,60%",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git status` |`-s` |Вывод информации о рабочем каталоге в
краткой форме
|`git status` |`-s` |Вывод информации о рабочем каталоге в краткой форме
|`git log` |`--oneline` |Вывод журнала изменений в краткой форме
|`git ls-files` | |Вывод списка отслеживаемых и подготовленных файлов
|===
== $push branches (see tags for pushing tags)
== Удалённый репозиторий
[cols=",,",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git push` |`<remotename> <branchname>` |Push branch to remote
|`git push` |`<remotename> --all` |Push all branches to remote
|`git push` |`--d <remotename> <branchname>` |`--delete` remote branch
|`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>`
|===
== $remote
* Обращение к удалённому репозиторию осуществляется по ссылке,
создаваемой командой `git remote`
* Команда `git clone` автоматически создаёт ссылку `origin`
* Remote connections are like bookmarks named after remote repos
* `git clone` automatically creates a remote connection usually called
`origin`
== Отправка изменений
[width="100%",cols="36%,26%,38%",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git remote` |`-v` |List remote repository endpoints
|`git push` |`<remote> <branch>` |Отправить ветку `<branch>` в удалённый
репозиторий `<remote>`
|`git branch` |`-r` |List remote repository branches
|`git push` |`<remote> --all` |Отправить все ветки в удалённый
репозиторий `<remote>`
|`git remote` |`add <name> <url>` |Create namespaced connection to a
remote repository
|`git remote` |`rename <oldname> <newname>` |Rename connection
|`git remote` |`rm <name>` |Remove connection
|`git remote` |`add origin <url>` |Set remote origin
|`git push` |`--d <remote> <branch>` |Удалить ветку `<branch>` из
удалённого репозитория `<remote>`
|===
Reference: https://git-scm.com/docs/git-remote
== Получение изменений
*Remove remote origin:*
[source,shell]
----
# Remove `origin` settings from .git/config
git remote rm origin
# Remove `FETCH_HEAD` which still points to remote
git rm .git/FETCH_HEAD
----
== $fetch-pull
[cols=",,",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git fetch` |`<remote>` |Fetch all branches from remote (without merge)
|`git fetch` |`<remote> <branch>` |Fetch specific branch
|`git merge` |`<remote>/<branch>` |Merge fetched remote
|`git pull` |`<remote>` |Fetch and merge in one command
|`git fetch` |`<remote>` |Получить изменения из всех веток репозитория
`<remote>`, но не выполнять слияние
|`git fetch` |`<remote> <branch>` |Получить изменения из ветки
`<branch>` репозитория `<remote>`, но не выполнять слияние
|`git merge` |`<remote>/<branch>` |Выполнить слияние с веткой `<branch>`
репозитория `<remote>`
|`git pull` |`<remote>` |Получение и слияние
|===
Reference: https://git-scm.com/docs/git-fetch,
https://git-scm.com/docs/git-pull
== Ветки
== $branch
[cols=",,",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git branch` | |List branches
|`git branch` |`-a` |Список локальных и удалённых веток
|`git branch` |`<branchname>` |Create new branch
|`git branch` | |Список локальных веток
|`git checkout` |`<sha-1>` |Switch to branch, or commit
|`git branch` |`<branch>` |Создать ветку `<branch>`
|`git branch` |`-m <branchname> <newname>` |Rename branch
|`git checkout` |`<sha-1>` |Перейти к фиксации с идентификатором
`<sha-1>`
|`git merge` |`<branchname>` |Merge changes from `<branchname>` to
current branch
|`git branch` |`-m <old> <new>` |Переименовать ветку `<old>` в `<new>`
|`git branch` |`-d <branchname>` |`--delete` branch
|`git merge` |`<branch>` |Слить изменения из ветки `<branch>` в текущую
ветку
|`git branch` |`-d <branch>` |Удалить ветку `<branch>`
|===
Reference: https://git-scm.com/docs/git-branch
== Сравнение
== $diff
[cols=",,",options="header",]
[width="100%",cols="15%,20%,65%",options="header",]
|===
|Команда |Ключи |Описание
|`git diff` | |Compare *`working directory`* and *`index`*
| |`-cached` |Compare *`index`* and *`latest commit`*
| |`HEAD` |Compare *`latest commit`* and *`working directory`*
| |`--stat` |Optional short format
| |`<sha-1> <sha-1>` |2 points in time to compare
| |`<dir> | <file>` |Compare whole directory or limit to file
|`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`
|===
Reference: https://git-scm.com/docs/git-diff
*Examples:*
[source,shell]
----
## compare changes made to README.md between working tree (default) and latest commit (HEAD)
$ git diff --stat HEAD ./path/README.md
## compare changes made to README.md between 2 specific points in time (e.g. 2 commits)
$ git diff --stat a649900 24bdd58 ./path/README.md
----
== $tag
[width="100%",cols="36%,26%,38%",options="header",]
|===
|Команда |Ключи |Описание
|`git tag` | |List tags
|`git tag` |`<v1.0.0>` |Create tag, from latest commit, lightweight
|`git tag` |`-a <v1.0.0> -m "<msg>"` |Create tag, with `--annotate`,
from latest commit
|`git tag` |`-a <v1.0.0> -m "<msg>" <SHA-1>` |Create tag, with
`--annotate`, from specific commit
|`git tag` |`-d <v1.1.0>` |`--delete` tag
|`git show` |`<v1.0.0>` |Show tag data and message
|`git checkout` |`<v1.0.0>` |Switch to specific point tag (not editable)
|`git push` |`<remote> <tag>` |Push specific tag to `<remote>`
(recommended)
|`git push` |`<remote> --tags` |Push all tags to `<remote>` (only if
necessary)
|===
Инициализация репозитория в каталоге `dir`:
[source,sh]
----
git init dir
----
Клонирование репозитория `repo`, принадлежащего пользователю `user`, с
сервера `gitlab.2` в каталог `dir`:
[source,sh]
----
git clone git@gitlab.2:user/repo.git dir
----
Просмотр состояния рабочего каталога и репозитория:
[source,sh]
----
git status
----
Краткая форма вывода состояния:
[source,sh]
----
git status -s
----
Добавление файла `README.md` под версионный контроль и подготовка к
фиксации:
[source,sh]
----
git add README.md
----
Удаление файла `README.md` из индекса репозитория:
[source,sh]
----
git rm --cached README.md
----
Зафиксировать файлы, подготовленные к фиксации:
[source,sh]
----
git commit
----
Зафиксировать все отслеживаемые файлы, которые были изменены:
[source,sh]
----
git commit -a
----
Отправить все ветки репозитория на сервер с меткой `origin`:
[source,sh]
----
git push origin
----

View File

@ -1,6 +1,8 @@
= Git: распаковка объекта
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git,
:toc:
В случае повреждения репозитория можно восстановить отдельные объекты,
которые сохраняются в формате zlib. Пример команды:

View File

@ -1,4 +1,5 @@
= Git: репозиторий на переносном устройстве
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git,

View File

@ -1,4 +1,5 @@
= Git: частичная копия репозитория
:title-separator: {sp}|
:category: Программирование
:tags: программирование, git,

View File

@ -1,4 +1,5 @@
= GitLab: выполнение по расписанию
:title-separator: {sp}|
:category: Программирование
:tags: программирование, gitlab, git,

View File

@ -0,0 +1,38 @@
= Qt: обмен бинарными данными с БД
:title-separator: {sp}|
:category: Программирование
:tags: программирование, qt, postgresql, бд
Таблица, с которой осуществляется обмен:
[source,sql]
----
CREATE TABLE example (
id INTEGER,
bin_data BYTEA
);
----
Запись данных:
[source,cpp]
----
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();
----
Чтение данных:
[source,cpp]
----
QSqlQuery query;
query.exec("SELECT id, bin_data FROM example LIMIT 1");
query.next();
QByteArray binDataArray = query.value(query.record().indexOf("bin_data")).toByteArray();
----

View File

@ -19,7 +19,7 @@ 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
рекомендаций https://github.com/isocpp/CppCoreGuidelines[C++ Core
Guidelines]
* http://www.holoborodko.com/pavel/mpfr[mpfrc++]: C++ интерфейс для
https://www.mpfr.org/[MPFR]

View File

@ -1,14 +1,12 @@
= Работа с датами и временем
:category: Программирование
:tags: программирование, время, часы, дата,
:toc:
:tags: программирование, время, часы, дата
:toc: auto
== Временные шкалы
В идеале системы учёта времени должны обладать тремя характеристиками:
[arabic]
. _точность_ (время базируется на атомном стандарте, каждая секунда
отсчитывается как секунда в системе СИ, нет високосных секунд, переводов
на зимнее или летнее время и т.п.);
@ -18,7 +16,6 @@
На практике есть возможность выбрать шкалу только с двумя
характеристиками из трёх.
[arabic]
. точность и календарные дни. Примером такой шкалы является UTC, в
которой отсчёт дней и секунд ведётся разными методами (секунды
исчисляются по атомному стандарту, а дни по суточному вращению Земли), а
@ -32,7 +29,6 @@ Std 1003.1-1988), в которой день всегда равен 86400 се
Время можно условно поделить на два класса: физическое и гражданское.
[arabic]
. _Физическое_ время представляет собой точки на непрерывной шкале,
такую концепцию достаточно точно отражает UTC, если можно пренебречь
_секундой координации_ (дополнительная секунда, добавляемая к UTC 30
@ -73,7 +69,6 @@ _секундой координации_ (дополнительная секу
Правила хранения и отображения времени:
[arabic]
. Время всегда хранится в UTC. При необходимости дополнительно
сохраняется информация о временной зоне (смещение и/или название).
. Для вывода на экран время переводится в местное.

View File

@ -1,4 +1,5 @@
= Vim: сравнение файлов
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: замена выделенного блока
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: клавиши Leader и LocalLeader
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: клавиши PageUp и PageDown
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: кодировка файла
:title-separator: {sp}|
:category: Vim
:tags: Vim,

View File

@ -1,4 +1,5 @@
= Vim: комментирование кода
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: менеджер плагинов Plug
:title-separator: {sp}|
:category: Vim
:tags: Vim, плагины Vim,
@ -14,7 +15,6 @@ curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
Чтобы использовать Plug, нужно добавить в `$HOME/.vim/vimrc`:
[arabic]
* Строку `call plug#begin('~/.vim/plugged')`
* Список строк, начинающихся с команды `Plug`, для загрузки плагинов
* Закончить список командой `call plug#end()`

View File

@ -1,4 +1,5 @@
= Vim: навигация по тексту с помощью easymotion
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: навигация по буферам
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: нумерация строк
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

View File

@ -1,4 +1,5 @@
= Vim: проверка орфографии
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim, словарь, орфография,

View File

@ -1,4 +1,5 @@
= Vim: полезные ссылки
:title-separator: {sp}|
:category: Vim
:tags: Vim,

View File

@ -1,4 +1,5 @@
= Vim: управление окнами
:title-separator: {sp}|
:category: Vim
:tags: Vim, команды Vim,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB