http://127.0.0.1:50003/cservice?act=GetVersion
https://127.0.0.1:50004/cservice?act=GetVersion
Обе ссылки должны выдавать один и тот же результат, пример:
{"result": "1.0.4.3"}
{"result": "1.0.4.3"}
Выбор алгоритма шифрования в "Яндекс.Браузер" зависит от параметра "Подключаться к сайтам, использующим шифрование по ГОСТ. Требуется КриптоПро CSP.".
Если параметр отключен, то шифрование соединения будет не по ГОСТ, пример при открытии сайта https://www.cryptopro.ru/certsrv/:
Когда параметр включен, то соединение шифруется по ГОСТ:
Атрибут userPrincipalName — это имя входа для пользователя. атрибут состоит из имени участника-пользователя (UPN), которое является наиболее распространенным именем для входа Windows пользователей. Пользователи обычно используют свое имя участника-пользователя для входа в домен. Этот атрибут является индексированной строкой с одним значением.
UPN — это имя входа в стиле Интернета для пользователя, основанное на стандарте RFC 822.
Утилита whoami:
Отображает сведения о пользователе, группе и привилегии для пользователя, который в данный момент вошел в локальную систему. Если используется без параметров, Whoami отображает текущий домен и имя пользователя.
Пример запуска:
showme_azknums.py 2.54.0.500_FB_21003_UFALEI_2022-01-04
Пример результата:
C:\apps\azk\f\2.54.0.500_FB_21003_UFALEI_2022-01-04АЦК-Финансы: 2.54.0.500
Отчеты АЦК: 2.54.0.80
СОФИТ: 2.54.0.447
Модуль ЕИС: 12.0.0.1
Исходный код скрипта:
# 09.01.2022# Утилита сообщает версии системной сборки АЦК-Финансы и ее подсистем - отчеты, СОФИТ, ЕИС - в указанной пользователем папке.
# Принцип утилиты строится на том, что в каждой сборке АЦК-Финансы есть определенные jar-файлы (символизирующие системную сборку и ее подсистемы), содержащие определенные properties-файлы, в которых есть переменные "version.major", "version.minor", "version.release", "version.build" с информацией о полном номере версии (патча).
import sys, os, zipfile, webbrowser
# Список проверяемых jar-файлов и properties-файлов:
check_list = [
# АЦК-Финансы:
{"jar": "server/AzkServer.jar", "properties": "com/bssys/version.properties", "encoding": "windows-1251"}
,{"jar": "server/AzkRepKernel.jar", "properties": "com/bssys/azkserver/reports/repversion.properties", "encoding": "windows-1251"}
,{"jar": "server/AzkSofit.jar", "properties": "com/bssys/azkserver/sofit/sofitversion.properties", "encoding": "windows-1251"}
,{"jar": "server/eis.jar", "properties": "azk/eis/version.properties", "encoding": "windows-1251"}
# АЦК-Госзаказ:
,{"jar": "server/ordersrv.jar", "properties": "com/bssys/version.properties", "encoding": "unicode_escape"}
]
# Папка сборки АЦК, которую пользователь указал в командной строке при запуске утилиты:
azkdir = ''
if len(sys.argv) == 2: azkdir = sys.argv[1]
tmp_env_dir = os.environ['TEMP']
tmpdir = os.path.join(tmp_env_dir, 'showme_nums_temp')
outputfile = os.path.join(tmp_env_dir, 'showme_nums_output.txt')
outputfile_write = open(outputfile,'w')
ss_out = sys.stdout
sys.stdout = outputfile_write
if len(azkdir) > 0 and os.path.isdir(azkdir):
print(os.path.abspath(azkdir))
for jarfile in check_list:
product_name = ''
version_major = ''
version_minor = ''
version_release = ''
version_build = ''
# jarpath - полный путь к jar-файлу из check_list:
jarpath = os.path.join(azkdir, jarfile["jar"])
if os.path.isfile(jarpath) and zipfile.is_zipfile(jarpath):
# Извлекаем properties-файлы из jar-файла:
zipfile.ZipFile(jarpath).extract(jarfile["properties"], path=tmpdir)
# print(tmpdir + check_list[jarfile])
tmpjarfile = os.path.join(tmpdir, jarfile["properties"])
tmpjarfile_read = open(tmpjarfile, mode="r", encoding=jarfile["encoding"])
for tmpjarfile_line in tmpjarfile_read:
# Убираем лишний символ переноса в конце строки jar-файла:
tmpjarfile_line = tmpjarfile_line.replace('\n','')
# Делим строку по символу "=":
tmpjarfile_split = tmpjarfile_line.split('=')
if tmpjarfile_split[0] == 'product.name':
product_name = tmpjarfile_split[1]
if tmpjarfile_split[0] == 'version.major':
version_major = tmpjarfile_split[1]
if tmpjarfile_split[0] == 'version.minor':
version_minor = tmpjarfile_split[1]
if tmpjarfile_split[0] == 'version.release':
version_release = tmpjarfile_split[1]
if tmpjarfile_split[0] == 'version.build':
version_build = tmpjarfile_split[1]
if len(product_name) > 0:
print(f'{product_name}: {version_major}.{version_minor}.{version_release}.{version_build}')
elif len(azkdir) > 0 and not os.path.isdir(azkdir):
print(f"Указана несуществующая папка сборки АЦК: {azkdir}")
else:
print(f"Утилиту \"{os.path.basename(__file__)}\" нужно запускать с указанием папки сборки АЦК, в формате:\n{os.path.basename(__file__)} <папка сборки АЦК>\n\nПример:\n{os.path.basename(__file__)} azkfin2.54.0.500_ORA_21001_AMUR")
outputfile_write.close()
sys.stdout = ss_out
#input("\nНажмите клавишу \"Enter\" для закрытия окна...")
#Открыть файл с результатом в ассоциированном приложении:
webbrowser.open(outputfile)
- oracle_fdw;
- postgres_fdw;
- firebird_fdw.
1. Видеоредактор "Kdenlive" (https://kdenlive.org/en/), но результат экспорта получается очень большой (сотни мегабайт), поэтому:
2. Результат сжимаю с помощью https://www.youcompress.com/ru/
HTTP 403 ForbiddenДополнительную информацию можно также увидеть в какой-либо среде разработки, например, SoapUi или Postman: Решение:
В оформлении страниц в Confluence применяется макрос "Expand macro", который позволяет создавать в тексте развертываемые (свертываемые) блоки. Могут встречаться страницы, на которых таких блоков (макросов) очень много и приходится тратить существенное время на то, чтобы раскрыть их все (например, если вам нужно проверить наличие своего имени в каждом из таких блоков).
Для решения такой проблемы хочется иметь кнопку, которая позволяет раскрыть все такие одним нажатием.
Вариант решения с созданием такой кнопки описан здесь: обсуждение "Can I toggle expand all Expand Macros in a page?" в community.atlassian.com.
Описание решения: нужно добавить на панель закладок закладку, которая вместо страницы будет содержать текст:
javascript:(function()%7B%24(".expand-control").each(function()%7B %24(this).trigger("click")%3B%7D)%7D)()
Успешно проверено в Google Chrome 94.0 и Confluence 6.4.3.
*Описание проблемы:*
*Цель/потребность доработки:*
*Предлагаемое решение Заказчика:*
*Заключение сотрудника БФТ (L2):*
+Предлагаемое решение Сотрудника БФТ (L2) (согласовано с Заказчиком):+
*История обращений:*
[SP-|https://sd.bftcom.com/browse/SP-] → [FIN-|https://jira.bftcom.com/browse/FIN-]
*Контактные данные Заказчика:*
*Описание проблемы:*
*Предусловия:*
*Порядок действий:*
*Ожидаемый результат:*
*Фактический результат:*
*БД:*
*Заключение:*
*Обоснование заключения:*
*Временное решение:*
*Информация о критичности:*
Установить плагины:
- Clickable URLs
- PackageResourceViewer
Открыть файл "Default (<название операционной системы>).sublime-mousemap" с помощью:
Ctrl+Shift+P -> "PackageResourceViewer: Open Resource"-> "Default" -> "Default (...OS...).sublime-mousemap"
Добавить туда блок:
{
"button": "button1",
"count": 2,
"modifiers": ["ctrl"],
"press_command": "drag_select",
"command": "open_url_under_cursor"
}
Теперь URL-адрес будет открываться после двойного щелчка по нему левой кнопкой мыши с зажатой клавишей Ctrl.
bat-файл:
@echo on
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txt
dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum >>List.txt
for /f %%i in ('findstr /i . List.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
pause
Запустить с привилегиями администратора.
https://smev3.gosuslugi.ru/portal/
Методические рекомендации для СМЭВ 3,
Новости СМЭВ 3,
Описание ЛК УВ и т.п.
Попытка подключения сначала к СУБД Oracle, а затем к PostgreSQL в таком виде:
import jaydebeapi
...
jaydebeapi.connect('oracle.jdbc.driver.OracleDriver', ora_url, [db_username, ora_password], './ojdbc6.jar')
jaydebeapi.connect('org.postgresql.Driver', pg_url, [pg_user, pg_password], './postgresql-42.2.1.jar')
приводит к ошибке:
TypeError: Class org.postgresql.Driver is not found
Решение: предварительно загрузить JDBC-драйвер СУБД PosgreSQL в экземпляр JVM - см. строку "jpype.startJVM(... classpath=...":
import jaydebeapi
import jpype
...
jHome = jpype.getDefaultJVMPath()
jpype.startJVM(jHome, classpath=['./ojdbc6.jar','./postgresql-42.2.1.jar'])
jaydebeapi.connect('oracle.jdbc.driver.OracleDriver', ora_url, [db_username, ora_password], './ojdbc6.jar')
jaydebeapi.connect('org.postgresql.Driver', pg_url, [pg_user, pg_password], './postgresql-42.2.1.jar')
jpype.shutdownJVM()
Вместо "pip install ..." можно использовать "python -m pip install ...".
Полезно, когда работаешь на "чужом" сервере и не знаешь, куда установлена (и установлена ли) утилита "pip".
Описание проблемы:
Выполнение python-кода:
import fdb
con = fdb.connect(dsn='127.0.0.1/3050:base.fdb', user='SYSDBA', password='masterkey', charset='WIN1251')
прерывается ошибкой:
Traceback (most recent call last):
File "try.py", line 4, in <module>
con = fdb.connect(dsn='127.0.0.1/3050:base.fdb', user='SYSDBA', password='masterkey')
File "C:\python38-32\\lib\site-packages\fdb\fbcore.py", line 800, in connect
load_api(fb_library_name)
File "C:\python38-32\\lib\site-packages\fdb\fbcore.py", line 231, in load_api
setattr(sys.modules[__name__], 'api', ibase.fbclient_API(fb_library_name))
File "C:\python38-32\\lib\site-packages\fdb\ibase.py", line 1385, in __init__
raise Exception("The location of Firebird Client Library could not be determined.")
Exception: The location of Firebird Client Library could not be determined.
Решение:
Создаем строковый параметр, который указан в строках немногим выше той, что указана в этой строке стека ошибки:
File "C:\python38-32\\lib\site-packages\fdb\ibase.py", line 1385, in __init__
например, "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Firebird Project\Firebird Server\Instances\DefaultInstance" с путем до программной папки Firebird, например, "C:\firebird\3.0.6.33328-0_x64\".
Создаем папку "C:\firebird\3.0.6.33328-0_x64\bin\".
Копируем туда "C:\firebird\3.0.6.33328-0_x64\bin\fbclient.dll" разрядности "x32".