пятница, 24 декабря 2021 г.

Связки баз разных СУБД

По аналогии с DBLink. При необходимости использования одной базы в качестве источника данных для другой базы на уровне SQL-запросов можно использовать:

- oracle_fdw;

- postgres_fdw;

- firebird_fdw.

четверг, 9 декабря 2021 г.

Видеомонтаж (начало)

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

1. Видеоредактор "Kdenlive" (https://kdenlive.org/en/), но результат экспорта получается очень большой (сотни мегабайт), поэтому:

2. Результат сжимаю с помощью https://www.youcompress.com/ru/

четверг, 18 ноября 2021 г.

Если при обращении к JIRA API возвращается код состояния HTTP 403 - дело в капче

Если при обращении к JIRA API возвращается код состояния HTTP 403, скорее всего, причина в капче. Такая ситуация чаще всего случается в период смены пароля, например, когда истек срок его действия: если в этот период вовремя не скорректировать данные для авторизации микросервиса, который обращается к JIRA API по паре логин-пароль, тогда JIRA для учетной записи с таким логином включает режим требования ввода капчи (это можно увидеть, если вручную более трёх раз ввести некорректно пароль в интернет-браузере). В таком режиме микросервис не может подключиться, так как JIRA API будет возвращать код состояния HTTP:
HTTP 403 Forbidden
Дополнительную информацию можно также увидеть в какой-либо среде разработки, например, SoapUi или Postman:
Решение:
- ввести капчу вручную (режим требования ввода капчи JIRA отключает после первого же успешного ее (капчи) ввода);
- перевести микросервис на другой тип авторизации, например, по токену.

пятница, 22 октября 2021 г.

Confluence: "Expand all"

В оформлении страниц в 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.

вторник, 12 октября 2021 г.

Шаблон для доработок

*Описание проблемы:*

*Цель/потребность доработки:*

*Предлагаемое решение Заказчика:*

*Заключение сотрудника БФТ (L2):*

+Предлагаемое решение Сотрудника БФТ (L2) (согласовано с Заказчиком):+

*История обращений:*
[SP-|https://sd.bftcom.com/browse/SP-] → [FIN-|https://jira.bftcom.com/browse/FIN-]

*Контактные данные Заказчика:*

Шаблон для дефектов

*Описание проблемы:*

*Предусловия:*

*Порядок действий:*

*Ожидаемый результат:*

*Фактический результат:*

*БД:*

*Заключение:*

*Обоснование заключения:*

*Временное решение:*

*Информация о критичности:*

среда, 8 сентября 2021 г.

Менеджер удаленных подключений

MobaXterm понравился больше, чем mRemoteNG, потому что MobaXterm "пробрасывает" сочетания горячих клавиш в RDP-сессиях, а mRemoteNG - нет.

Но бесплатная версия MobaXterm с ограничениями.

среда, 1 сентября 2021 г.

Открытие URL-адресов с помощью мыши в Sublime Text

 Установить плагины:

- 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.


Источники: 1, 2.

вторник, 31 августа 2021 г.

gpedit.msc для "Windows 10 Home Edition"

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

Запустить с привилегиями администратора.

 Источник.

понедельник, 16 августа 2021 г.

Python: последовательное подключение к СУБД Oracle, затем PostgreSQL

 Попытка подключения сначала к СУБД 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()

вторник, 27 июля 2021 г.

pip

 Вместо "pip install ..." можно использовать "python -m pip install ...".

Полезно, когда работаешь на "чужом" сервере и не знаешь, куда установлена (и установлена ли) утилита "pip".

пятница, 29 января 2021 г.

Подключение к Firebird 3.0 с помощью Python 3

Описание проблемы:

Выполнение 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".

Архив