Записки IT специалиста
7.96K subscribers
1.56K photos
48 videos
15 files
2.22K links
IT-канал, просто о сложном
https://interface31.ru

Купить рекламу:
https://telega.in/c/interface31
加入频道
​​Что такое SRV-записи DNS и для чего они нужны

В комментариях к нашим заметкам по DNS уже не раз спрашивали: что такое SRV-записи и для чего они нужны.

Начнем немного издалека. Все знают, что основная задача DNS сервера – это разрешение имен, т.е. преобразование понятных человеку доменных имен в IP-адреса. Для этого используется запись типа А, которая прямо сопоставляет имя и IP-адрес. Например:

pc-petya   IN A 192.168.121.156


Она говорит, что узел сети с именем pc-petya имеет адрес 192.168.121.156.

Если провести аналогию, то это некоторая справочная служба, у которой можно всегда узнать, где живет Петя. В данном случае вам ответят, что Петя живет в 121-м доме в 156-й квартире.

С этим понятно, если мы знаем имя узла, то DNS всегда поможет нам узнать его адрес. Но как быть, если имя узла мы не знаем?

Как может произойти подобная ситуация? Да очень просто, мы хотим отправить почту, но не знаем кому. Ведь просто так почту первому встречному не отдашь, ее надо передать в почтовое отделение.

Что мы будем делать в реальном мире? Правильно, спросим: а где тут почта?

В DNS для ответа на этот вопрос есть сервисные записи, которые сообщают расположение некоторых сетевых служб, обслуживающих домен (как пространство имен).

Одной из первых таких записей была MX-запись, которая указывала на узлы, принимающие почту в домене. С этим типом записей знакомы все, кто касался работы электронной почты.

Но одной электронной почтой сетевые службы не исчерпываются и скоро стало понятно, что заводить для каждой из них свою запись – это бардак и расточительство. Поэтому был введен новый, универсальный тип записи – SRV.

Она более сложна, по сравнению с обычными записями, но содержит всю исчерпывающую информацию, которая может понадобиться.

Но благодаря этому одним типом записи мы можем закрыть все текущие службы и новые, которые могут появиться в будущем. Достаточно лишь знать название службы, а остальное нам сообщит наша универсальная справочная (DNS-сервер).

Таким образом, если продолжать аналогию, при помощи SRV-записей мы можем узнать не только где тут поблизости почта, но и как пройти в библиотеку, столовую или даже, в конце концов, в туалет.

Давайте посмотрим на реальные SRV-записи, например, служб Яндекса. Начнем с такой:

_xmpp-server._tcp 21600 IN SRV 20 0 5269 domain-xmpp.yandex.net.


Имя записи: _xmpp-server._tcp – т.е. межсерверное общение XMPP-серверов по протоколу TCP.

Далее идет TTL – 21 600 сек (6 часов) и тип записи IN SRV, после чего указан ее приоритет – 20 (здесь как в MX – чем ниже, тем предпочтительнее) и вес 0 (используется для выбора нескольких записей с одинаковым приоритетом), затем порт – 5269 и узел, на котором располагается данная служба - domain-xmpp.yandex.net.

Обратите внимание на точку на конце – она обозначает абсолютный путь, в противном случае такой адрес служба DNS дополнит текущим доменом.

А вот еще запись:

_xmpp-client._tcp 21600 IN SRV 20 0 5222 domain-xmpp.yandex.net.


Она отличается только именем _xmpp-client._tcp и сообщает куда должны подключаться XMPP-клиенты через TCP. Также можем увидеть здесь другой порт.

Таким образом если вы запускаете XMPP-клиент, то при наличии SRV-записей он автоматически найдет XMPP-сервер и попробует к нему подключиться.

А ваш сервер, если его клиент захочет пообщаться с клиентом из другого домена также легко определит адрес отвечающего за коммуникации сервера и попробует передать сообщение ему.

Также SRV-записи широко используются в Active Directory, с их помощью клиенты находят контроллеры домена, глобальные каталоги, узлы Kerberos и т.д.

Как видим, SRV-записи, хоть и более сложны, но чрезвычайно полезны и помогают узлам автоматически находить необходимые сетевые службы, существенно упрощая жизнь как пользователям, так и администраторам.
👍532👌1
​​Postgres + 1C = сильно тормозит?

Самое частое нарекание на работу свежеустановленной связки PostgreSQL + 1С:Предприятие – это тормоза. Причем именно тормоза, а не замедление, и часто видимые невооруженным глазом.

Означает ли это, что Postgres плох? Вовсе нет, просто привычный подход Далее – Далее – Готово здесь не работает.

Если MS SQL из коробки имеет вполне оптимальные настройки и без проблем будет работать на небольших инсталляциях 1С, то Postgres настроен на запуск и работу в минимальной конфигурации, что сразу сказывается на производительности.

Поэтому, вне зависимости от используемой платформы и версии PostgreSQL сразу после установки следует выполнить несложный тюнинг, после которого работа Postgres перестанет вызывать нарекания.

Как это сделать – написано в нашей статье: Оптимизация производительности PostgreSQL для работы с 1С:Предприятие
👍2411
Сообщение Роскомнадзора о том, что в России принимают меры по частичному ограничению звонков в Telegram и WhatsApp:

«По данным правоохранительных органов и многочисленных обращений граждан, иностранные мессенджеры Telegram и WhatsApp стали основными голосовыми сервисами, используемыми для обмана и вымогательства денег, вовлечения в диверсионную и террористическую деятельность российских граждан. Неоднократно направлявшиеся требования о принятии мер противодействия владельцами мессенджеров проигнорированы.

Информируем, что для противодействия преступникам в соответствии с материалами правоохранительных органов принимаются меры по частичному ограничению звонков в данных иностранных мессенджерах. Никаких иных ограничений их функционала не вводится.

Борьба со звонками преступников ведётся последовательно. С 2024 года работает система «Антифрод», обеспечивающая блокировку звонков с подменой номера в традиционных телефонных сетях российских операторов связи. В результате подобные звонки практически все перешли в иностранные мессенджеры, отказывающиеся обеспечивать безопасность российских пользователей и общества».

Доступ к звонкам в иностранных мессенджерах будет восстановлен после выполнения ими требований российского законодательства, пояснили в Минцифры РФ.
🤣37🤬20👍11🤡8🤔1
1С:Предприятие и многопоточность. Часть 1. Общие вопросы

В сознании администраторов давно и прочно укоренился миф, что 1С:Предприятие однопоточное приложение со всеми вытекающими из этого выводами и последствиями.

На самом деле это не так, хотя дыма, естественно, без огня не бывает. Поэтому в данном цикле заметок мы постараемся всесторонне рассмотреть этот вопрос в доступной форме для неспециалистов по 1С.

Современная 1С – это сложное клиент-серверное приложение, хранящее данные в СУБД, что представляет собой классическую трехзвенную схему: фронтенд, бэкенд, база данных.

СУБД, применительно к 1С, хранит не только пользовательские данные, но и исходный код конфигурации (прикладного решения), однако это в рассматриваемом нами контексте не имеет никакого значения.

Взаимодействие с СУБД и основную обработку данных осуществляет бэкенд, он же Сервер – в терминах 1С. Не следует путать его с одноименным приложением – Сервер 1С:Предприятие. Сервер – это рабочий процесс, выполняющий роль бэкенда, он есть даже у файловой базы данных.

Фронтенд, в терминах 1С – Клиент – выполняет взаимодействие с пользователем, выводит ему полученные от Сервера данные и передает Серверу данные, введенные пользователем для обработки. Также выполняет несложные вычисления, не требующие обращения к хранимым в СУБД данным.

Клиент не может напрямую обратиться к СУБД, это привилегия Сервера, поэтому любые запросы на чтение или запись информации в или из базы данных требуют вызов сервера.

При этом снова не путаем Клиент – рабочий процесс фронтенда с типами клиентского приложения: толстым, тонким и веб-клиентами. Это разные сущности, так, например, толстый клиент включает в себя рабочие процессы как Клиента, так и Сервера. Но к этому мы вернемся позже.

А пока перейдем к предметной части. Предметная часть 1С:Предприятия – это учет, не важно, бухгалтерский или управленческий, но это учет и у него есть свои особенности и требования.

Основная особенность предметной части состоит в том, что учетные операции крайне слабо поддаются распараллеливанию на уровне алгоритмов. Основная причина – необходимость строгого соблюдения последовательности.

Даже при наличии вычислительных ресурсов и возможностей мы не можем обработать документ продажи раньше документа поступления на склад просто потому, что нам нечего будет с этого склада продать.

Но это самый простой пример, сугубо для понимания проблемы. Если мы тронем бухгалтерский или налоговый учет, то там нарушение последовательности способно натворить немало бед, причем исчисляемых вполне осязаемыми рублями.

И поэтому начав операцию А мы не можем начать операцию Б, даже если у нас полно свободных вычислительных ресурсов. Да, технически это возможно, но с точки зрения предметной области мы не имеем право этого делать, так как операция Б может зависеть от результатов операции А или исказить данные, используемые в текущих вычислениях.

Да, с точки зрения айтишника в вакууме это может быть смешно и непонятно, ведь можно…

Можно, но не нужно. Там, где на кону стоят реальные деньги имеют место крайне консервативные подходы. Поэтому большинство учетных вычислений строго последовательны, потому как это единственный абсолютно надежный способ получить правильный результат.

Таким образом работа обычного пользователя в открытом им приложении (сеансе) 1С будет преимущественно однопоточной. Т.е. он не сможет переходить к новым задачам пока не выполнит предыдущие. Это может быть неудобно со стороны пользователя, но обеспечивает правильность учета согласно предметной части.

Но значит ли это, что 1С:Предприятие не умеет использовать все возможности современных систем с их многопоточностью и многоядерностью? Вовсе нет, но об этом поговорим в следующих заметках цикла.
👍28🤡2🥱2🤝1
​​Спрашивают – отвечаем. Какой утилитой можно посмотреть какой процесс сколько занимает памяти.

Вопрос не праздный, часто нужно понять кто занял всю память или весь swap, причем сделать это в удобной форме, без лишней консольной магии.

Для этих целей следует использовать утилиту smem, которая доступна в стандартных репозиториях.

Утилита достаточно проста, прежде всего запустим ее с ключом -h, чтобы посмотреть доступные ключи. Их немного.

Если запустить утилиту без параметров, то вы получите список процессов в указанием занимаемой ими памяти в килобайтах отсортированный по возрастанию значений колонки PSS.

Всего колонок четыре, коротко разберем что они обозначают:

🔸 RSS – реальный объем памяти, выделяемый процессу, но это число не является точным, так как включает в себя в том числе память, занимаемую разделяемыми библиотеками, которые загружаются в память один раз, но в тоже время дает понять общие аппетиты процесса.

🔸 PSS – пропорциональный объем памяти, наиболее интересное с практической точки зрения число, так как объем памяти разделяемых библиотек делится пропорционально между процессами, например, если у нас три процесса используют одну и ту же библиотеку, то занимаемый ею объем памяти поделится на троих.

🔸 USS – уникальный объем памяти, который принадлежит собственно процессу, без учета разделяемых библиотек. Показывает фактическую стоимость запуска процесса и именно этот объем памяти будет возвращен в систему если процесс завершить.

🔸 Swap – объем сброшенных в подкачку страниц памяти процесса.

Сразу запоминаем полезные ключи программы:

▫️ -t - выводит снизу результирующую строку по всем колонкам
▫️ -p – представляет значение в процентах от общего объема памяти, а не в килобайтах
▫️ – подстраивает ширину колонок под текущий размер окна терминала

Как мы уже говорили, сортировка ведется по возрастанию колонки PSS, т.е. самые «жирные» процессы будут внизу.

Это поведение можно изменить ключами -s и -r, после которых следует указать имя колонки для сортировки. Ключ -r сортирует значения в обратном порядке – по убыванию значений.

Например, чтобы посмотреть кто использует Swap в процентах по убыванию значений, используйте:

smem -tap -r swap


У применения этой утилиты есть одна особенность, будучи запущена с правами пользователя она показывает только процессы текущего пользователя, чтобы получить полное представление на уровне системы ее следует запускать от root или через sudo.

Также мы можем делать отборы по имени процесса или его владельцу, например, посмотрим все процессы Postgres по убыванию в процентах:

smem -tpa -P postgres -r pss


Или все процессы пользователя 1С:Предприятия:

smem -tpa -U usr1cv8  -r pss


Что еще можно посмотреть с ее помощью? Использование памяти в разрезе пользователей с ключом -u или по всей системе с ключом -w.

Отдельного упоминания стоит ключ -m, который показывает маппинги, это файлы отраженные в оперативную память, чаще всего это разделяемые библиотеки, с данным ключом вы можете подробно посмотреть что именно у вас загружено в память и сколько места оно там занимает.
👍3331🥱1
​​Нужен ли сторонний софт для распознавания текста в Windows 11?

Windows 11 уже привыкли ругать, в первую очередь за откровенно неудачный интерфейс, хотя компания уже исправила многие огрехи, в той мере в которой их можно исправить.

Но при этом сама система получила множество новых функций и улучшений. Одно из самых значимых из них как-то незаметно прошло мимо – это оптическое распознавание символов.

Да, вы не ослышались, теперь, чтобы распознать текст с изображения вам не нужен ломаный FineReader или иное программное обеспечение, все это можно сделать стандартными средствами.

Новая возможность появилась в приложении Ножницы, которое многие используют для снятия скриншотов. В Windows 11 это приложение не только стало лучше и удобнее, но и обзавелось новой полезной функцией.

Чтобы распознать текст не нужно даже снимать скриншот картинки, достаточно ее просто открыть в приложении и нажать отмеченную на скриншоте кнопку.

Ножницы уверенно и без ошибок распознали текст даже на повернутом изображении. Но здесь есть нюанс – приложение посчитало началом документа его левый край и при копировании расставило абзацы в обратном порядке, поэтому документы перед распознаванием все-таки лучше поворачивать правильно.

Понятно, что это далеко не полноценный OCR со всеми его возможностями, но для прикладных задач быстро распознать текст с изображения его возможностей более чем достаточно.
1👍35👀6
​​Как получить список подключенных USB-устройств в Windows

Возникла необходимость просмотреть список подключенных устройств на удаленном ПК с Windows. Задача не самая простая, ну не бегать же глазами по диспетчеру устройств. В Linux для этого есть команда lsusb, посмотрим, что может нам предложить PowerShell.

Для этой цели будем использовать командлет Get-PnpDevice, для начала отберем устройства по идентификатору в котором присутствует USB, опция Status OK покажет только активные устройства:

Get-PnpDevice -InstanceId 'USB*' -Status OK


Кроме идентификатора мы можем использовать в отборе класс, но в этом случае в вывод не попадут такие устройства как камеры или смарт-карты (токены), но может попасть совсем не USB-устройство, например, контроллер USB на PCIe шине:

Get-PnpDevice -Class 'USB' -Status OK


При желании можем оба отбора скомбинировать и получить только устройства класса USB подключенные именно как USB:

Get-PnpDevice -InstanceId 'USB*' -Class USB -Status OK


Как видим, PowerShell дает не меньше возможностей и позволяет легко выполнять отборы по требуемым параметрам.
🔥28👍12🤔42🥱1
Установка платформы 1C:Предприятие для разработчиков на платформе Windows

Относительно недавно фирма 1С выпустила новый тип лицензии - бесплатную комьюнити-лицензию, которая предназначена специально для разработки и тестирования.

Это стало огромным шагом вперед, так как позволило многим разработчикам, энтузиастам и просто интересующимся легально попробовать платформу 1C:Предприятие в клиент-серверном варианте.

Однако практика показывает, что не у всех получается сразу установить и настроить платформу для разработчиков и поэтому решили написать подробное руководство, которое будет рассчитано на широкий круг читателей имеющих минимальный опыт установки и администрирования 1С:Предприятие.

https://interface31.ru/tech_it/2024/08/ustanovka-platformy-1cpredpriyatie-dlya-razrabotchikov-na-platforme-windows.html
👌123🤡3👨‍💻3👍1
Установка платформы 1C:Предприятие для разработчиков на платформе Linux

Относительно недавно фирма 1С выпустила новый тип лицензии - бесплатную комьюнити-лицензию, которая предназначена специально для разработки и тестирования.

Это стало огромным шагом вперед, так как позволило многим разработчикам, энтузиастам и просто интересующимся легально попробовать платформу 1C:Предприятие в клиент-серверном варианте.

Операционные системы семейства Linux также вызывают все больший интерес и могут стать неплохой альтернативой в качестве рабочего места разработчика 1С. Данное руководство пошагово расскажет как установить и настроить платформу для разработчиков в Linux.

https://interface31.ru/tech_it/2024/08/ustanovka-platformy-1cpredpriyatie-dlya-razrabotchikov-na-platforme-linux.html
🔥9👍8👌5🤡21
Установка и настройка сервера лицензирования 1С:Предприятие

Управление лицензиями 1С:Предприятия - задача не простая, особенно если у вас в эксплуатации несколько серверов или используется виртуализация.

Основные проблемы - это оптимизация распределения лицензий и привязка лицензий к параметрам оборудования, что создает трудности в виртуальной среде.

Облегчить работу и централизовать управление лицензиями вам поможет выделенный сервер лицензирования, как его установить и настроить мы расскажем в этой статье.

https://interface31.ru/tech_it/2024/11/ustanovka-i-nastroyka-servera-licenzirovaniya-1spredpriyatie.html
11👍171
​​Порядок получения лицензий 1С:Предприятия клиентским приложением

Все виды клиентов 1С:Предприятия (кроме веб-клиента) осуществляют поиск лицензии в следующей последовательности:

▫️ Если ранее лицензия была успешно получена, то выполняется попытка получения лицензии из того же файла программной лицензии или HASP ключа что и при последнем подключении

▫️ При первом подключении или в том случае если на предыдущем этапе лицензия не была найдена выполняется поиск локальных программных лицензий

▫️ Поиск локального ключа HASP

▫️ Поиск сетевого ключа HASP доступного через HASP LM

▫️ Поиск базовой лицензии на локальном компьютере

❗️ Если лицензия не была найдена, то клиент обращается за лицензией на сервер (веб-сервер), поиск выполняет менеджер кластера, на который назначен сервис сеансовых данных в следующем порядке:

▫️ Программная лицензия или ключ защиты HASP откуда была получена лицензия при последнем удачном подключении

▫️ Поиск локальной программной лицензии

▫️ Поиск локального клиентского ключа HASP

▫️ Поиск сетевого ключа HASP доступного через HASP LM

▫️ Программная лицензия на сервере лицензирования откуда была получена лицензия при последнем удачном запуске

▫️ Поиск программной лицензии на сервере лицензирования

☝️ При этом выдача лицензии сервером имеет свои особенности:

▫️ Лицензия выдается на каждый сеанс, т.е. один клиент может занять несколько лицензий

▫️ Сервер может подключиться только к одному локальному и одному сетевому ключу одной серии

Как видим, алгоритм достаточно сложный и поиск ключей выполняется во многих местах, поэтому для ускорения запуска клиента 1С, если вы не используете аппаратные ключи, следует использовать параметр UseHwLicenses=0 в конфигурационном файле 1cestart.cfg, который отключит поиск лицензий на аппаратных ключах.
1👍201
​​Порядок получения лицензий 1С:Предприятия веб-клиентом

Веб-клиент – особый тип клиентского приложения, предназначенный для работы через браузер. Это один из самых специфичных и ограниченных в возможностях клиентов и поэтому работу через него надо избегать.

Однако в ряде случаев особых альтернатив ему нет, например, для техники Apple или планшетов Andriod.

Получение лицензий таким клиентом имеет свои особенности и зависит от режима работы.

Для файловой базы поиск производится на компьютере, где установлен модуль расширения веб-сервера, все лицензии выдаются только в многопользовательском режиме (на сеанс):

▫️ Получение лицензии из файла программной лицензии или HASP ключа откуда была получена лицензия при последнем удачном подключении

▫️ Поиск локальной программной файловой лицензии

▫️ Поиск локального ключа HASP

▫️ Поиск сетевого ключа HASP доступного через HASP LM

Для клиент-серверных баз локальный поиск ключа на компьютере с установленным модулем расширения веб-сервера не производится, лицензия сразу запрашивается с сервера. Поиск лицензии выполняет менеджер кластера, на который назначен сервис сеансовых данных в следующем порядке:

▫️ Программная лицензия или ключ защиты HASP откуда была получена лицензия при последнем удачном подключении

▫️ Поиск локальной программной лицензии

▫️ Поиск локального клиентского ключа HASP

▫️ Поиск сетевого ключа HASP доступного через HASP LM

▫️ Программная лицензия на сервере лицензирования откуда была получена лицензия при последнем удачном запуске

▫️ Поиск программной лицензии на сервере лицензирования

При этом, если вы используете веб-клиент для подключения к файловым и клиент-серверным базам одновременно вам будет необходимо держать два комплекта лицензий на веб-сервере и сервере 1С Предприятие в количестве достаточном для запуска нужного числа сеансов.
👍84
​​Как легко и просто «сломать» информационную базу 1С:Предприятие, не снимая «замочка» и ничего не понять?

А что, так можно? Не только можно, но и с завидной регулярностью случается. И называется это - расширения.

Вообще, расширения – это удобный механизм доработки конфигурации или исправления ошибок без внесения изменений в саму конфигурацию, но это если в умелых руках.

А если нет? Ну так любой инструмент несет в себе такие же опасности: молотком можно забить гвоздь, а можно отбить пальцы.

Так что не так с расширениями? У расширений есть три типа назначения, про них в документации написано следующее:

Расширение с назначением Исправление предназначено для исправления ошибок в конфигурации. Поэтому оно применяется к конфигурации первым.

Затем применяется расширение с назначением Адаптация. Оно содержит доработки конфигурации при внедрении у конкретного заказчика.

И последним применяется расширение с назначением Дополнение. Оно содержит различные дополнительные сервисы, предназначенные для конфигурации (например, набор дополнительных отчетов).

Предполагается, что расширения с одинаковым назначением не должны «пересекаться» по функционалу и «мешать друг другу».


Ключевая фраза - мешать друг другу, с оговоркой – предполагается.

Что происходит на самом деле? Допустим у нас есть код какого-либо модуля и есть расширения, затрагивающие этот модуль. При запуске 1С берет исходный код модуля и применяет к нему расширение с назначением Изменение. Тем самым получает некоторый промежуточный код, который будет содержать исправления ошибок.

Потом к этому промежуточному коду применится расширение с типом адаптация и мы снова получим некий промежуточный код.
Затем уже к нему применится дополнение, и мы получим некоторый результирующий код.

Если расширений с одним назначением несколько, то они будут применяться в том порядке, в котором были добавлены в информационную базу и изменить этот порядок нельзя.

Если стараться следовать предложенным производителем стандартам, то система получается достаточно логичной. Если исправления ошибок конфликтуют с доработками или дополнениями, то у вас отключатся последние, а исправления применятся.

Если дополнение конфликтует с доработками (адаптация), то откажется работать дополнение. Но в жизни все может быть совсем по-другому. И дополнение с типом адаптация, добавленное первым, может спокойно при обновлении сломать ваши доработки.

Но чаще всего мы получаем странные глюки и ошибки буквально из неоткуда и по абсолютно непонятной причине.

А почему? А потому что раньше процесс изменения конфигурации был делом достаточно сложным и затратным: нужно было найти программиста, заплатить ему денег, снять конфигурацию с замочка, что удорожало ее поддержку и сопровождение… Поэтому чаще всего обходились сравнительно безобидными внешними отчетами и обработками.

Если же решались на доработку, то занимался этим какой-никакой, но специалист.

Зато теперь – полная свобода самовыражения. Пошли на Инфостарт, накачали расширений и давай «прокачивать» базу. И никаких программистов не надо. Даже конфигуратор открывать не придется.

И, как часто бывает, прокачивая какое-то одно направление мы с большой вероятностью столкнемся с тем, что применяемые расширения где-то пересекаются и начинают мешать друг другу. Причем этот процесс может быть абсолютно непредсказуемым.

Например, в базе А набор расширений может работать без ошибок, а в точно такой же базе Б – глючить напропалую. А почему? А потому что расширения добавлены в разном порядке. Следовательно итоговый код будет разным, с разными последствиями.

Как быть? Да никак, расширения стали нормой жизни, их будут качать и ставить. Но всегда надо иметь это ввиду и при непонятном поведении базы сразу проверять список расширений.

Ну и стараться все-таки, хотя бы по диагонали, смотреть в код расширений, прежде чем их ставить и контролировать из пересечение. Не умеете сами – позовите специалиста.
6💯4👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
1С:Предприятие и многопоточность. Часть 2. Файловая база

По замыслу 1С файловая база предназначена для самых-самых маленьких и имеет серьезные ограничения как по размеру, так и по количеству одновременно работающих пользователей. И очень часто негативный опыт, полученный на файловых базах, переносится на всю систему 1С:Предприятие в целом.

Но начнем мы с краткого рассмотрения типов клиентов 1С, которые можно условно разделить на толстый и тонкие (сам тонкий, веб и мобильный клиенты). Основное отличие толстого клиента в том, что толстый клиент выполняет как серверный, так и клиентский код.

С файловой базой напрямую может работать только толстый клиент. А еще толстый клиент однопоточен. Все задачи ставятся в единую очередь и исполняются в один поток, преимущественно одним ядром. И критическое значение в данном случае имеет однопоточная производительность процессора и его тактовая частота.

Но, если вы уж совсем не сэкономили на процессоре, то это не доставляет пользователю существенных неудобств. Просто потому, что масштабы выполняемых задач не те. А для одного пользователя производительности даже одного потока вполне достаточно.

Кроме основного потока толстый клиент запускает второй, дополнительный поток для работы фоновых заданий. С их помощью могут выполняться как регламентные задания, так и тяжелые, длительные операции, чтобы не блокировать работу пользователя в основном потоке.

Таким образом пользователь может запустить тяжелый отчет или обработку, а сам перейти к другим разделам программы, скажем, вводить документы. И не испытывать при этом никаких особых неудобств, так как основные тяжелые вычисления будут выполняться вторым потоком.

Но следует помнить, что дополнительный поток также один и все фоновые задания будут становиться в нем в очередь. Поэтому внимательно отнеситесь к тому, что у вас запускается в фоне, особенно к регламентным заданиям:

Почему тормозит 1С. Регламентные задания

Но вся эта благодать исчезает, как только в базе появляются дополнительные пользователи. Многим знакома картина, когда производительность файловой базы резко проседает уже при подключении к ней второго пользователя.

В чем тут дело? Вспоминаем, что с данными в СУБД может работать только сервер, в нашем случае сервер – это толстый клиент. Роль СУБД выполняет файловая база, которая является полноценной базой данных собственного формата.

При запуске нескольких толстых клиентов на разных рабочих местах мы получаем несколько серверов, взаимодействующих с СУБД, это приводит не только к кратному увеличению сетевого трафика и нагрузки на дисковую подсистему хранилища файловой базы, но и появлению блокировок.

Блокировка – это специальный режим работы СУБД, когда она для избежания рассогласования информации блокирует таблицы при обращении к ним одного из клиентов и остальным приходится ждать пока таблица освободиться.

А если кто-то запустил на медленном ПК длительную операцию в транзакции, то ждать будет вся сеть.

Файловая структура только все это усугубляет. Если у нас есть пять клиентов и каждый из которых хочет получить справочник номенклатуры, то все пять серверов толстого клиента по разу скачают себе этот справочник и самостоятельно займутся его обработкой. Без всякого кеширования и повторного использования.

Поэтому в файловых базах с разделяемым по сети общим ресурсом узким местом очень быстро становится не однопоточность (точнее двухпоточность), а блокировки и избыточное количество сетевого трафика. И если со вторым еще можно бороться апгрейдом или перепланировкой сети, то блокировки надежно убивают производительность уже начиная с трех-пяти активных клиентов.

Дополнительные материалы:

🔹 1С:Предприятие и многопоточность. Часть 1. Общие вопросы
👍156👀2
🚀⚙️ Хотите упростить свою работу в Linux? Научитесь писать скрипты с помощью Bash!

👉 Присоединяйтесь к открытому вебинару 25 августа в 20:00 МСК и разберитесь, как с помощью Bash автоматизировать рутинные задачи в Linux. Мы объясним, как работать с интерпретатором Bash, создавать переменные, использовать условия и циклы.

💪 Этот вебинар поможет быстро освоить базовые навыки Bash и научиться автоматизировать простые операции, что значительно упростит рабочий процесс.

🎁 Запишитесь на вебинар и получите индивидуальное предложение на курс «Administrator Linux. Basic».

👉 Для участия зарегистрируйтесь: https://otus.pw/eJFt/?erid=2W5zFJ7nNzU

Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
1
​​Amber – делаем программирование на Bash проще

Bash – достаточно сложный в освоении скриптовый язык, особенно для тех, кто не пишет на нем постоянно. Сложности вызывает как синтаксис, так и то, что язык не предоставляет никаких проверок, оставляя все на откуп программиста.

И хорошо, когда у вас есть опыт и вы сразу видите опасные моменты и умеете обкладывать их дополнительными условиями, а если нет, то ваши скрипты могут «порадовать» вас нестандартным поведением в самый неожиданный момент.

Можно ли как-то облегчить процесс написания bash-скриптов? Можно. Одним из вариантов будет использование Amber – нового высокоуровневого языка программирования с синтаксисом, основанным на ECMA Script.

Кстати, широко распространенный JavaScript также основан на спецификации ECMA Script, что облегчает освоение нового языка и снижает порог вхождения. Если вы уже писали на JavaScript, то без особого труда освоите Amber.

Но ключевой особенностью Amber является то, что он не собирается заменить собой bash, наоборот, код, написанный на Amber при компиляции, будет преобразован в bash-скрипт.

В чем еще плюсы такого подхода, кроме более простого синтаксиса? В таких фишках как type-safe и runtime-safe. Для тех, кто не в курсе попробуем объяснить на пальцах.

Bash – язык со слабой, неявной динамической типизацией. Т.е. типы переменных не задаются и зависят от их содержимого, также в процессе исполнения кода типы переменных могут меняться или неявно преобразовываться.

Например, если мы присвоили одной переменной строковое значение, а второй целочисленное, а затем сложили их, то произойдет неявное преобразование числа в строку и последующая конкатенация (сложение двух строк). Итоговая переменная также станет строкой.

Это удобно, но требует от программиста постоянного контроля и проверки типов, в противном случае возможны ошибки, причем не всегда, а в зависимости от полученных скриптом данных или результатов других вычислений.

Amber позволяет взять этот вопрос на себя и на этапе компиляции сообщить вам об ошибках используемых типов данных (type-safe) или возможных проблемах при их обработке во время исполнения программы (runtime-safe).

При том, чтобы начать писать на Amber не нужно вообще ничего, кроме плагина к VS Code, сам Amber является только компилятором и его можно установить на любой Linux или в Windows WSL.

Ближе познакомиться с продуктом можно на сайте проекта: https://amber-lang.com

Несмотря на то, что продукт еще очень молодой он уже представляет определенный интерес и заслуживает внимания.
🫡4👍3🤣21
Please open Telegram to view this post
VIEW IN TELEGRAM