Перейти к главному содержимому

fstab

Дополнительные возможные строки для fstab:

tmpfs  /tmp  tmpfs  rw,nodev,nosuid,noatime  0  0
tmpfs  /run  tmpfs  rw,nodev,nosuid,noatime  0  0
tmpfs  /var/log tmpfs  rw,nodev,nosuid,noatime  0  0

Для входа в chroot:

rt=/mnt/point

mount -t proc /proc $rt/proc
mount -t sysfs /sys $rt/sys
mount -o bind  /dev $rt/dev
mount tmpfs $rt/var/log -t tmpfs -o rw,noatime,nodiratime
mount tmpfs $rt/tmp     -t tmpfs -o rw,nodev,nosuid,noatime,nodiratime
mount tmpfs $rt/run     -t tmpfs -o rw,nodev,nosuid,noatime,nodiratime

Настройка swap-файла в linux

Запускать под root-ом.

Создание файла

## Создание файла
# fallocate -l 2G /swapfile
dd if=/dev/zero of=/swapfile bs=1M count=2048 status=progress

# Создание подкачки
mkswap /swapfile

# Права доступа
chmod 600 /swapfile

# Включение swap
swapon /swapfile

# Показать информацию
swapon --show

В файл /etc/fstab добавить:

/swapfile none swap sw 0 0

В файл /etc/sysctl.conf добавить:

vm.swappiness=10

Получение каталогов в python

Получение домашнего каталога
def my_homedir():
  home_env = os.getenv('HOME')
  if home_env is None:
    home_env = os.path.expanduser('~')
  homedir = home_env
  if homedir[-1:] == '/' or homedir[-1:] == "\\":
    homedir = homedir[0:-1]
  return homedir
Получение каталога, где расположен сам скрипт
mydir = os.path.dirname(os.path.realpath(__file__))
Получение каталога c ресурсами

Учитывает как простой запуск, так и запуск exe, созданного при помощи pyinstaller. Аргументом можно дать имя подкаталога внутри каталога с ресурсами.

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

def resource_path(relative_path = None):
  try:
      base_path = sys._MEIPASS
  except Exception:
      base_path = os.path.abspath(os.path.dirname(__file__))
  if relative_path is None:
    return base_path
  else:
    return os.path.join(base_path, relative_path)
Получение каталога c настройками

Учитывает переменную окружения XDG_CONFIG_HOME.

def system_config_dir():
  p = os.getenv('XDG_CONFIG_HOME', my_homedir() + '/.config')
  return p

LaTeX labels

Метки с произвольным текстом

Метки с произвольным текстом возможно можно делать так:

\makeatletter
\newcommand{\customlabel}[2]{%
   \protected@write \@auxout {}{\string \newlabel {#1}{{#2}{\thepage}{#2}{#1}{}} }%
   \hypertarget{#1}{#2}
}
\makeatother

Исходная ссылка.

Внутри документа

Если как классически, чтоб ещё и задать текст при ссылке:

Можно использовать пары \hypertarget и hyperref.

Можно использовать \ref внутри \hyperref:

\hyperref[fig:SEM]{\ref*{fig:SEM}c}

Исходная ссылка.

Ссылки между документами

Исходная ссылка.

Еще ссылка

Один из вариантов оттуда:

\usepackage{xr-hyper}
\usepackage{hyperref}
\externaldocument[V1-]{volume1}[http://mybook.com/volume1.pdf]
...
... the \nameref{V1-introduction})... \ref{V1-introduction}

Другой текст для навигации в документе

\texorpdfstring{''TEX text''}{''Bookmark Text''}

Исходная ссылка.

Объединение pdf файлов в один

GUI

Под Windows можно использовать бесплатную программу PDFill FREE PDF Tools.

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

CLI

Для использование командной строки можно использовать Ghostscript. Скачать можно на официальном сайте.

Для Linux можно установить при помощи штатного пакетного менеджера.

Для объединения файлов можно использовать:

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf [...] fileN.pdf

Для Windows всё аналогично, только в качестве исполняемого файла следует использовать gswin64c.exe или gswin32c.exe в зависимости от разрядности установленного Ghostscript.

Обычно он устанавливается в Program files и надо либо прописать путь в системной PATH либо писать полный путь каждый раз (не забывая при этом кавычек).

"C:\Program Files\gs\gs9.19\bin\gswin64c.exe" -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf [...] fileN.pdf

Sakura launcher

Эмулятор терминала sakura

Установка в debian

apt install sakura

Запуск с окном заданного размера

sakura --rows=45 --columns=170

Windows Batch files

Файлы с тем же путём, где расположен сам bat-файл

@echo off
:: Path to this file itself
set PP=%~dp0
:: Do something on file *doc.txt* which saved in the same folder
do something %PP%doc.txt %*

Файлы с тем же путём и с тем же именем, что вызывающий bat-файл

@echo off
set PP=%~dp0
set NM=%~n0
:: Run python script with same name as .bat file
python %PP%%NM%.py %*

Пробел в конце переменной

Создать пустую переменную и через пробел подставить её в другую переменную.

set EMPTY=
set NINJA_STATUS=[%%p %%f/%%t] %EMPTY%

ninja %*

Выйти из файла если возникла ошибка в команде

command || echo ERROR && exit /b %errorlevel%

Функции

@echo off
SETLOCAL
CALL :MyFunction 55 , 1
EXIT /B %ERRORLEVEL%

:MyFunction
echo The value of parameter 1 is %~1
echo The value of parameter 2 is %~2
EXIT /B 0

Полезные ссылки: https://dl.gsu.by/doc/use/ntcmds.htm, https://github.com/Lifailon/Batch-Commands

Debian apt backports

apt через прокси

Создать файл 02proxy в каталоге /etc/apt/apt.conf.d/ содержания:

Acquire::Queue-Mode "host";
Acquire::http::Proxy "http://myproxy:3142";
Acquire::https::Proxy "http://myproxy:3142";

Debian 11 (bullseye)

Основной файл sources.list

deb http://ftp.debian.org/debian bullseye main contrib non-free
deb http://ftp.debian.org/debian bullseye-updates main contrib non-free
deb http://security.debian.org/ bullseye-security main contrib non-free

Подключение репозитория backports

В файл /etc/apt/sources.list добавить строку:

deb http://ftp.debian.org/debian bullseye-backports main contrib non-free
# deb http://ftp.debian.org/debian sid main non-free contrib

Эту же строку можно добавить в отдельном файле в каталоге /etc/apt/sources.list.d/

Создание pins

Создать файл pins в каталоге /etc/apt/preferences.d/ с примерно таким содержанием:

Package: *
Pin: release n=bullseye-backports
Pin-Priority: 800

Package: *
Pin: release n=bullseye-updates
Pin-Priority: 700

Package: *
Pin: release n=bullseye
Pin-Priority: 600

#Package: *
#Pin: release n=bullseye
#Pin-Priority: 300

Package: *
Pin: release n=sid
Pin-Priority: 200

Package: *
Pin: release o=Debian
Pin-Priority: -10

Debian 10 (buster)

Подключение репозитория backports

В файл /etc/apt/sources.list добавить строку:

deb http://ftp.debian.org/debian/ buster-backports main contrib non-free
deb http://ftp.debian.org/debian sid main non-free contrib

Эту же строку можно добавить в отдельном файле в каталоге /etc/apt/sources.list.d/

Создание pins

Создать файл pins в каталоге /etc/apt/preferences.d/ с примерно таким содержанием:

Package: *
Pin: release n=buster-backports
Pin-Priority: 800

Package: *
Pin: release n=buster-updates
Pin-Priority: 700

Package: *
Pin: release n=buster
Pin-Priority: 600

#Package: *
#Pin: release n=buster
#Pin-Priority: 300

Package: *
Pin: release n=sid
Pin-Priority: 200

Package: *
Pin: release o=Debian
Pin-Priority: -10