👉1 сентября 2025 г. вступили в силу новые изменения ФФД. В обновленном ФФД вводятся сведения:
- о безналичной оплате (теперь передается идентификатор безналичной транзакции);
- об оплате в интернете (адрес сайта, где была покупка);
- о результате проверки маркированных товаров;
- а также вводятся минимальные размеры шрифта и QR-кода на чеке.
Что требуется для частного случая с ККТ АТОЛ:
1. Обновить прошивку кассы.
2. Обновить драйвер ККТ в операционной системе.
3. Обновить версию конфигурации 1С и перенастроить оборудование.
❗️Но если 2-а пункта не выполнены, а 1С вы обновили, то получите указанную ошибку. При этом касса продолжит работать, это только предупреждение -> нужно обновить прошивку и драйвер.
- о безналичной оплате (теперь передается идентификатор безналичной транзакции);
- об оплате в интернете (адрес сайта, где была покупка);
- о результате проверки маркированных товаров;
- а также вводятся минимальные размеры шрифта и QR-кода на чеке.
Что требуется для частного случая с ККТ АТОЛ:
1. Обновить прошивку кассы.
2. Обновить драйвер ККТ в операционной системе.
3. Обновить версию конфигурации 1С и перенастроить оборудование.
❗️Но если 2-а пункта не выполнены, а 1С вы обновили, то получите указанную ошибку. При этом касса продолжит работать, это только предупреждение -> нужно обновить прошивку и драйвер.
👍3
👉В этой статье мы рассмотрим проброс каталогов и томов в контейнеры Docker.
👉Первое используется для удобства редактирования файлов, второе для надёжного хранения данных.
Статья
👉Первое используется для удобства редактирования файлов, второе для надёжного хранения данных.
Статья
Sysadminium
Проброс каталогов и томов в Docker - Sysadminium
В этой статье мы рассмотрим проброс каталогов и томов в контейнеры Docker. Первое используется для удобства редактирования файлов, второе для надёжного хранения данных.
👍5
📌Процессы с PID 0 и 1
В Linux процессы с PID 0 и PID 1 имеют особое значение, но они не являются обычными процессами, и их природа различается.
🔷PID 0 - idle процесс:
- Поток ядра, который также называется idle task или swapper.
- Его задача - выполняться, когда нет других готовых к выполнению процессов.
- Запускается ядром на этапе инициализации до любого пользовательского кода.
- Не отображается в выводе
Зачем нужен такой поток? Он гарантирует, что у планировщика всегда есть "что запустить". Так было проще реализовать сам планировщик (scheduler), чем обрабатывать специальное состояние когда нет процессов готовых для запуска.
Когда запускается idle процесс, CPU переходит в энергосберегающий режим. Без этого процессор бы грузился постоянно на 100% даже в простое.
Другие утилиты (
🔷PID 1 - init-процесс:
- Первый пользовательский процесс, запускаемый ядром после завершения этапа инициализации ядра.
- Обязательно существует во всех системах Linux (и Unix-подобных).
Ответственен за:
- Запуск остальных процессов.
- Приём "осиротевших" процессов - если родительский процесс завершился раньше своего дочернего.
В старых системах таким процессом были: sysvinit, Upstart. В современных (чаще всего): systemd (проверить можно:
Если PID 1 завершается -> происходит kernel panic (система зависает или перезагружается).
В Linux процессы с PID 0 и PID 1 имеют особое значение, но они не являются обычными процессами, и их природа различается.
🔷PID 0 - idle процесс:
- Поток ядра, который также называется idle task или swapper.
- Его задача - выполняться, когда нет других готовых к выполнению процессов.
- Запускается ядром на этапе инициализации до любого пользовательского кода.
- Не отображается в выводе
ps, и на большинстве систем нет /proc/0. Поэтому часто не виден напрямую, но логически соответствует "нулевому" потоку планировщика.Зачем нужен такой поток? Он гарантирует, что у планировщика всегда есть "что запустить". Так было проще реализовать сам планировщик (scheduler), чем обрабатывать специальное состояние когда нет процессов готовых для запуска.
Когда запускается idle процесс, CPU переходит в энергосберегающий режим. Без этого процессор бы грузился постоянно на 100% даже в простое.
Другие утилиты (
top, htop, vmstat, sar) используют счётчики из /proc/stat чтобы знать сколько времени CPU был в состоянии idle, чтобы отобразить % загрузки CPU.🔷PID 1 - init-процесс:
- Первый пользовательский процесс, запускаемый ядром после завершения этапа инициализации ядра.
- Обязательно существует во всех системах Linux (и Unix-подобных).
Ответственен за:
- Запуск остальных процессов.
- Приём "осиротевших" процессов - если родительский процесс завершился раньше своего дочернего.
В старых системах таким процессом были: sysvinit, Upstart. В современных (чаще всего): systemd (проверить можно:
ps -p 1 -o comm=).Если PID 1 завершается -> происходит kernel panic (система зависает или перезагружается).
👍2
📌Вышла уже 4-ая статья из цикла про Docker.
👉Оптимизация образов Docker — одна из задач Devops-инженера. В этой статье описаны некоторые методы, которые вы можете применять для оптимизации своих образов Docker.
👉Разбираю оптимизацию на примере приложений написанных на Python и на Go.
👉Оптимизация образов Docker — одна из задач Devops-инженера. В этой статье описаны некоторые методы, которые вы можете применять для оптимизации своих образов Docker.
👉Разбираю оптимизацию на примере приложений написанных на Python и на Go.
👍2
Перед новым годом многие обновляют конфигурации 1С, прошивки касс и их драйвера.🥳
Если вы обновили драйвер в системе (например, установили новую версию "Тест драйвера" для кассы АТОЛ), а затем пытаетесь перенастроить подключение к кассовому аппарату в 1С (с использованием новых драйверов), то можете столкнуться с такой ошибкой.
Решение!
Запустите 1С от имени администратора, выполните настройку кассового аппарата. После этого дальнейшая работа возможна уже под обычным пользователем.
💡 Важно
На платформе 8.3.27.1859 может потребоваться запускать именно 1cv8c.exe (тонкий клиент) от имени администратора. В моём случае запуск 1cestart.exe (главного запускателя) с повышенными привилегиями не решал проблему.
📌 Ещё один момент
Следите за совпадением разрядности: драйвер кассового аппарата и платформы 1С должны быть одинаковой архитектуры (32- или 64-битные).
Если вы обновили драйвер в системе (например, установили новую версию "Тест драйвера" для кассы АТОЛ), а затем пытаетесь перенастроить подключение к кассовому аппарату в 1С (с использованием новых драйверов), то можете столкнуться с такой ошибкой.
Решение!
Запустите 1С от имени администратора, выполните настройку кассового аппарата. После этого дальнейшая работа возможна уже под обычным пользователем.
💡 Важно
На платформе 8.3.27.1859 может потребоваться запускать именно 1cv8c.exe (тонкий клиент) от имени администратора. В моём случае запуск 1cestart.exe (главного запускателя) с повышенными привилегиями не решал проблему.
📌 Ещё один момент
Следите за совпадением разрядности: драйвер кассового аппарата и платформы 1С должны быть одинаковой архитектуры (32- или 64-битные).
👍3
Всем привет!
Нужна обратная связь. Как вам удобнее читать небольшие заметки:
🔷 в виде карточек (как несколько последних постов)
🔷 в виде текста (как это было раньше)
В Telegram с форматирование текста всё неплохо. Я могу выделять жирным и курсивным важные детали, и могу создавать блоки с кодом.
Карточки мне нравятся больше, но на их создание уходит немного больше времени. И если для вас они кажутся менее удобочитаемы, то лучше продолжу писать заметки текстом.
Проголосуйте пожалуйста ниже.
Нужна обратная связь. Как вам удобнее читать небольшие заметки:
🔷 в виде карточек (как несколько последних постов)
🔷 в виде текста (как это было раньше)
В Telegram с форматирование текста всё неплохо. Я могу выделять жирным и курсивным важные детали, и могу создавать блоки с кодом.
Например так
Карточки мне нравятся больше, но на их создание уходит немного больше времени. И если для вас они кажутся менее удобочитаемы, то лучше продолжу писать заметки текстом.
Проголосуйте пожалуйста ниже.
Как удобнее читать небольшие технические заметки?
Anonymous Poll
25%
В виде карточек (картинка)
75%
В виде простого текста
👉Из статьи вы узнаете, как устроены сети в Docker и чем отличаются стандартные сети от пользовательских.
👉На практических примерах показано, как контейнеры находят друг друга по имени, как работает изоляция сетей и как при необходимости подключать контейнер к нескольким сетям.
👉Статья будет полезна для понимания базовой сетевой модели Docker и её практического применения.
Статья: https://sysadminium.ru/networks-in-docker/
👉На практических примерах показано, как контейнеры находят друг друга по имени, как работает изоляция сетей и как при необходимости подключать контейнер к нескольким сетям.
👉Статья будет полезна для понимания базовой сетевой модели Docker и её практического применения.
Статья: https://sysadminium.ru/networks-in-docker/
Sysadminium
Сети в Docker - Sysadminium
Из статьи вы узнаете, как устроены сети в Docker, зачем нужны пользовательские сети и как с их помощью изолировать и связывать контейнеры
👍5
👉Иногда возникает необходимость выяснить, как настроен сервер, который настраивали не вы. Вам нужно узнать, какие пакеты были установлены в системе и как они были настроены.
👉В этом вам может помочь утилита debsums. Её можно установить на любую deb-подобную систему (Debian, Ubuntu, Proxmox, Devuan):
Затем выполняете:
Из вывода вы узнаете, какие конфиги для установленных пакетов были изменены.
👉Утилита проверяет не только пакеты установленные из репозиториев. Любой пакет, установленный через dpkg будет проверен. Главное, чтобы пакет содержал checksums (а их может и не быть). Обычно в
А чтобы вывести список пакетов, у которых нет checksums, можно выполнить:
👉Кстати, утилита найдет не только установленное и настроенное ПО. Она также сможет определить, если в системе появились повреждённые или изменённые патчами приложения (вероятно, вредоносное ПО).
👉В этом вам может помочь утилита debsums. Её можно установить на любую deb-подобную систему (Debian, Ubuntu, Proxmox, Devuan):
sudo apt install debsums
Затем выполняете:
debsums -ca
-c - вывести только изменённые файлы;-a - проверить все файлы.Из вывода вы узнаете, какие конфиги для установленных пакетов были изменены.
👉Утилита проверяет не только пакеты установленные из репозиториев. Любой пакет, установленный через dpkg будет проверен. Главное, чтобы пакет содержал checksums (а их может и не быть). Обычно в
/var/lib/dpkg/info/ хранятся контрольные суммы пакетов. То есть в этом каталоге лежит файл вида имя_пакета.md5sums - именно в нём утилита ищет контрольные суммы.А чтобы вывести список пакетов, у которых нет checksums, можно выполнить:
debsums -l
👉Кстати, утилита найдет не только установленное и настроенное ПО. Она также сможет определить, если в системе появились повреждённые или изменённые патчами приложения (вероятно, вредоносное ПО).
👍7
Когда процесс завершает свою работу, он освобождает все свои ресурсы, но не освобождает свой PID (Process ID) в таблице процессов. Ядро отправляет родительскому процессу сигнал SIGCHLD, сообщая о завершении. Родитель должен считать статус завершения дочернего процесса (через
Отрезок времени между завершением процесса и освобождением его PID, называется состоянием Zombie 🧟. Процесс может остаться в состоянии Zombie, если родительский процесс жив, но не делает
Если родительский процесс завершится раньше дочернего, дочерний процесс будет переусыновлён процессом с PID=1 (init/systemd) 👶➡️👨👦. После чего именно он будет обрабатывать статус дочернего процесса, когда тот завершится.
Zombie-процессы не потребляют ресурсы (RAM/CPU) 💤, но занимают PID. Если исчерпать все PID, запуск новых процессов станет невозможен 🚫. В современных системах pid_max ≈ 4 млн, поэтому это возможно только при баге 🐞 или fork-бомбе 💣.
Zombie-процесс нельзя убить сигналами, так как он уже и так мёртв ☠️. А очистка возможна только через родительский процесс:
1️⃣ Находим zombie-процессы:
2️⃣ Определяем родителя:
3️⃣ Смотрим на родительский процесс:
4️⃣ Пытаемся завершить родительский процесс:
Если не помогло, действуем жёстче⚠️:
В этом случае все его дочерние процессы будут переусыновлены init/systemd, который и очистит PIDs Zombie.
Если же родителем является PID=1, то это уже баг системы, и поможет только перезагрузка 🔄.
Оцените пост лайком. Для меня это ценно! 👍
wait()), после чего ядро освобождает PID.Отрезок времени между завершением процесса и освобождением его PID, называется состоянием Zombie 🧟. Процесс может остаться в состоянии Zombie, если родительский процесс жив, но не делает
wait().Если родительский процесс завершится раньше дочернего, дочерний процесс будет переусыновлён процессом с PID=1 (init/systemd) 👶➡️👨👦. После чего именно он будет обрабатывать статус дочернего процесса, когда тот завершится.
Zombie-процессы не потребляют ресурсы (RAM/CPU) 💤, но занимают PID. Если исчерпать все PID, запуск новых процессов станет невозможен 🚫. В современных системах pid_max ≈ 4 млн, поэтому это возможно только при баге 🐞 или fork-бомбе 💣.
Zombie-процесс нельзя убить сигналами, так как он уже и так мёртв ☠️. А очистка возможна только через родительский процесс:
1️⃣ Находим zombie-процессы:
ps -eo pid,ppid,state,cmd | awk '$3=="Z"'
2️⃣ Определяем родителя:
ps -o ppid= <Child PID>
3️⃣ Смотрим на родительский процесс:
ps auxww | grep <Parent PID>
4️⃣ Пытаемся завершить родительский процесс:
kill -s SIGCHLD <Parent PID>
Если не помогло, действуем жёстче⚠️:
kill -9 <Parent PID>
В этом случае все его дочерние процессы будут переусыновлены init/systemd, который и очистит PIDs Zombie.
Если же родителем является PID=1, то это уже баг системы, и поможет только перезагрузка 🔄.
Оцените пост лайком. Для меня это ценно! 👍
👍19
✅Получить размер базы данных (вместо
✅Посмотреть перечень таблиц в базе:
✅Размер таблицы:
✅Самая большая таблица в текущей базе:
✅Перечень подключенных пользователей:
✅Текущая активность пользователя:
✅При настройке postgresql нужно править конфиг с параметрами. После правки некоторых параметров нужно перезагружать службу, а для некоторых хватает reload. Чтобы понять, какие параметры требуют перезапуска, можно использовать такую команду. Вы получите postmaster, если требуется restart. В примере я проверяю параметр shared_buffers.
✅Выполнить Vacuum и Analyze по всем базам (с помощью утилиты vacuumdb, а не консоли psql):
Спасибо что читаете😊 и ставите 👍
current_database() можем указать имя нужной базы):SELECT pg_size_pretty(pg_database_size(current_database()));
✅Посмотреть перечень таблиц в базе:
\dt
✅Размер таблицы:
SELECT pg_size_pretty(pg_relation_size('table_name'));✅Самая большая таблица в текущей базе:
SELECT
table_schema,
table_name,
pg_size_pretty(pg_total_relation_size(table_schema || '.' || table_name)) AS total_size
FROM
information_schema.tables
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema')
AND table_type = 'BASE TABLE'
ORDER BY
pg_total_relation_size(table_schema || '.' || table_name) DESC
LIMIT 1;
✅Перечень подключенных пользователей:
# SELECT datname,usename,client_addr,client_port FROM pg_stat_activity;
✅Текущая активность пользователя:
SELECT datname FROM pg_stat_activity WHERE usename = 'postgres';
✅При настройке postgresql нужно править конфиг с параметрами. После правки некоторых параметров нужно перезагружать службу, а для некоторых хватает reload. Чтобы понять, какие параметры требуют перезапуска, можно использовать такую команду. Вы получите postmaster, если требуется restart. В примере я проверяю параметр shared_buffers.
SELECT name, context FROM pg_settings WHERE name = 'shared_buffers';
✅Выполнить Vacuum и Analyze по всем базам (с помощью утилиты vacuumdb, а не консоли psql):
vacuumdb -U postgres --all --analyze
Спасибо что читаете😊 и ставите 👍
👍15
Я решил немного отойти от серьёзных тем и передохнуть. Несколько следующих постов будут про простые Linux игры, доступные в репозиториях Mint/Ubuntu. Но уже скоро новая статья про Docker😀
✔️Quadrapassel - классический тетрис с графическим интерфейсом. Падающие фигуры, сбор линий и постепенное ускорение. Игра похожа на оригинальный Tetris.
Устанавливается из стандартных репозиториев Mint/Ubuntu:
✔️Quadrapassel - классический тетрис с графическим интерфейсом. Падающие фигуры, сбор линий и постепенное ускорение. Игра похожа на оригинальный Tetris.
Устанавливается из стандартных репозиториев Mint/Ubuntu:
sudo apt update
sudo apt install quadrapassel
👍6
📌В этой статье познакомимся с Docker Compose — инструментом для создания многоконтейнерных систем с помощью одного конфигурационного файла.
✅Docker Compose — это инструмент для подготовки и запуска многоконтейнерных систем. Он позволяет с помощью одного файла описать всю инфраструктуру приложения и затем запустить её одной командой. Таким образом, вместо ручного запуска десятков контейнеров, вы получаете централизованное и управляемое описание всего стека.
С помощью Docker Compose можно:
🔹Описать все сервисы (контейнеры) в одном файле docker-compose.yml.
🔹Запустить весь стек одной командой: docker compose up.
🔹Docker Compose автоматически создаёт сеть, тома и настраивает проброс портов.
🔹В результате, становится легко масштабировать сервисы, пересобирать контейнеры и работать с логами.
✅Docker Compose — это инструмент для подготовки и запуска многоконтейнерных систем. Он позволяет с помощью одного файла описать всю инфраструктуру приложения и затем запустить её одной командой. Таким образом, вместо ручного запуска десятков контейнеров, вы получаете централизованное и управляемое описание всего стека.
С помощью Docker Compose можно:
🔹Описать все сервисы (контейнеры) в одном файле docker-compose.yml.
🔹Запустить весь стек одной командой: docker compose up.
🔹Docker Compose автоматически создаёт сеть, тома и настраивает проброс портов.
🔹В результате, становится легко масштабировать сервисы, пересобирать контейнеры и работать с логами.
👍9