четверг, 19 декабря 2019 г.

Обновление QDP под Windows

Устранения непоняточек псто.

Про указание путей в "upd.properties", когда веб-сервер установлен на Windows.

Правильный пример:
#Путь к папке, где находится томкат с приложением
tcHome=c:/azk/a/bin/analysis_stable/tomcat

#URI к репозитарию обновлений. Пока поддерживается только протокол файловой системы
buildRepo.uri=file:///c:/azk/a/bin/analysis_stable/update_dirs

В случаях некорректного формата указывания значений для этих параметров выполнение утилиты обновления ("updater.bat / updater (bash)") прерывается с ошибкой:
ERROR Provider "c" not installed

среда, 30 октября 2019 г.

Oracle VirtualBox 6.0 + КриптоПро CSP 4.0 + Windows 10 = BSOD

При запуске гостевой ОС на "Oracle VirtualBox 6.0.14" хост с ОС "Windows Pro 10 Сборка 1903 x64" завершает работу "синим экраном" с сообщением:
Код остановки: SYSTEM_SERVICE_EXCEPTION
Что вызвало проблему: CProCtrl.4.0.0.19.sys


При этом на хосте установлен "КриптоПро CSP 4.0.9963".

Решение:
Нужно после установки VirtualBox 6 импортировать в реестр следующее содержимое и перезагрузить хост (на основе рекомендаций на форуме КриптоПро):
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude]

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxHeadless]
"FileName"="VBoxHeadless.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetDHCP]
"FileName"="VBoxNetDHCP.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetNAT]
"FileName"="VBoxNetNAT.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBox]
"FileName"="VirtualBox.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBalloonCtrl]
"FileName"="VBoxBalloonCtrl.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxBugReport]
"FileName"="VBoxBugReport.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxDTrace]
"FileName"="VBoxDTrace.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxExtPackHelperApp]
"FileName"="VBoxExtPackHelperApp.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\vbox-img]
"FileName"="vbox-img.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxManage]
"FileName"="VBoxManage.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxNetNAT]
"FileName"="VBoxNetNAT.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDL]
"FileName"="VBoxSDL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSDS]
"FileName"="VBoxSDS.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxSVC]
"FileName"="VBoxSVC.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxTestOGL]
"FileName"="VBoxTestOGL.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VBoxWebSrv]
"FileName"="VBoxWebSrv.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBoxVM]
"FileName"="VirtualBoxVM.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CProExclude\VirtualBoxVM_]
"FileName"="VirtualBoxVM.e"

понедельник, 14 октября 2019 г.

ПЗ на FTP

Пример:
XML-файл для ПЗ, который был выгружен из ЛК ФО (его копия есть в "Объекты контроля по ч.5 ст.99 (3).zip" (Sopr2018-1, #14855)).
Он же в "PurchasePlanExtract_01343000750_5658117_13392017.xml" по адресу ftp://ftp.zakupki.gov.ru/fcs_regions/Irkutskaja_obl/control99docs/purchaseplans/control99doc_Irkutskaja_obl_20181101000000_20181201000000_035.zip.

пятница, 11 октября 2019 г.

среда, 2 октября 2019 г.

Получение тестовой ЭП УЦ Крипто-Про

Для контейнера закрытого ключа можно использовать ПО для виртуальных носителей, например, ImDisk.
Предварительно, нужно установить криптопровайдер "Крипто-Про CSP".

1. Получение сертификата УЦ:
1.1. открыть страницу «Тестовый Удостоверяющий Центр ООО "КРИПТО-ПРО"» (ознакомьтесь с информацией в разделе "Требования", особое внимание обратите на требования к используемым интернет-браузерам) (Примечание: для формирования ЭП по ГОСТ Р 34.10-2012 можно использовать Тестовый Удостоверяющий Центр ООО ”КРИПТО-ПРО” ГОСТ 2012);
1.2. щелкнуть внизу страницы по ссылке "Получить сертификат Удостоверяющего Центра или действующий список отозванных сертификатов";
1.3. в открывшемся окне параметру "Метод шифрования" присвоить значение "Base 64";
1.4. нажать на ссылку "Загрузка цепочки сертификатов ЦС" - начнется загрузка файла "certnew.p7b".

2. Установка сертификата УЦ:
2.1. щелкнуть правой кнопкой мыши по файлу "certnew.p7b", выбрать пункт "Установить сертификат" (откроется окно "Мастер импорта сертификатов") - выбрать хранилище "Доверенные корневые центры сертификации".

3. Создание ЭП:
3.1. Формирование ключа и запроса на сертификат:
3.2. вернуться на страницу «Тестовый Удостоверяющий Центр ООО "КРИПТО-ПРО"»;
3.3. щелкнуть по ссылке "Сформировать ключи и отправить запрос на сертификат";
3.4. в поле "Тип требуемого сертификата:" выбрать значение, в зависимости от назначения, например, "Сертификат проверки подлинности клиента" (запомните значение, которое укажете в поле "Имя" блока "Идентифицирующие сведения") (остальные параметры можно не менять, их значения по умолчанию: "Формат запроса" = PKCS10);
3.5. нажать кнопку "Выдать" - в открывшемся окне выбрать носитель для размещения контейнера закрытой части ЭП (и при необходимости задать пароль контейнера);
3.6. в окне браузера щелкнуть по ссылке "Установить этот сертификат" и дождаться сообщения "Новый сертификат успешно установлен";

4. Получение сертификата пользователя:
4.1. открыть свойства браузера "MS Internet Explorer" —> вкладка "Содержание" —> кнопка "Сертификаты" —> вкладка "Личные";
4.2. в открывшемся списке выбрать сертификат, у которого в столбце "Кому выдан" указано значение, которое нужно было запомнить в пункте 3.4, и нажать кнопку "Экспорт";
4.3. при экспорте выберите формат в кодировке "Base-64" - сертификат пользователя будет экспортирован по выбранному вами пути.

5. Установка сертификата пользователя:
(это может понадобиться, если все описанные выше действия выполнялись на другом компьютере)
5.1. открыть оснастку "КриптоПро CSP" —> вкладка "Сервис" —> кнопка "Установить личный сертификат"

Примечание:
Т.к. ключ тестовый, то сертификаты (сертификат УЦ из п. 1.4 и сертификат пользователя из п. 4.3) можно скопировать в контейнер закрытого ключа, например:
A:\<папка контейнера закрытого ключа>\сертификаты\
- Сертификат пользователя.cer
- Сертификат УЦ.p7b
Это облегчит процедуру передачи ЭП кому-то другому.

Инструкция успешно проверена на Яндекс.Браузере 19.9.3.314.

вторник, 1 октября 2019 г.

Блокировка рекламы в Viber Desktop

1) В файле "%WINDIR%\System32\drivers\etc\hosts" прописать строки:
127.0.0.1 ads.viber.com
127.0.0.1 ads.aws.viber.com
127.0.0.1 ads-d.viber.com
127.0.0.1 images.taboola.com
127.0.0.1 api.taboola.com
127.0.0.1 rmp.rakuten.com
127.0.0.1 s-clk.rmp.rakuten.com
127.0.0.1 s-bid.rmp.rakuten.com
2) Перезапустить Viber.

среда, 25 сентября 2019 г.

JSP: "include file"

Проблема отображения кириллических символов из "center.html", при включении этой страницы в другую с помощью директивы "include file", приводила к некорректному отображению этих самых символов.
index.jsp:
<%@include file="center.html"%>

Проблема решилась после добавления в "center.html" тега
<%@ page contentType="text/html; charset=utf-8" pageEncoding="UTF-8" %>

пятница, 20 сентября 2019 г.

Онлайн-инструменты для штрих-кодов

Декодировать не очень качественный скан штрих-кода с банковского извещения пока смог только один онлайн-инструмент:
https://online-barcode-reader.inliteresearch.com/
но с ограничением: в текстовое поле с результатом декодирования текст выводится с лишними пробелом и символом переноса строки.

Пример скана:


Пример распознавания (имеются лишние пробел в конце строки и символ переноса строки):
ST00011|Name=ÓÔÊ ïî Ñâåðäëîâñêîé îáëà
ñòè (Ìåæðàéîííàÿ ÈÔÍÑ Ðîññèè ¹16 ïî Ñ
âåðäëîâñêîé îáëàñòè)|PersonalAcc=4010181050000001
0010|BankName=ÓÐÀËÜÑÊÎÅ ÃÓ ÁÀÍÊÀ ÐÎÑÑÈÈ|BIC=046
577001|CorrespAcc=00000000000000000000|Purpose=Åäèíû
é íàëîã íà âìåíåííûé äîõîä äëÿ îòä
åëüíûõ âèäîâ äåÿòåëüíîñòè ïðî÷èå íà÷èñ
ëåíèÿ 4 êâ 2014 ã.|Sum=5300|KPP=662301001|lastNam
e=Ïëàòåæêè íå óäàëÿòü|payerAddress=Ñâå
ðäëîâñêàÿ îáëàñòü,,Åêàòåðèíáóðã ã,,,,,|Payee
INN=6623000850|PayerINN=509440598889|DrawerStatus=09|CBC=1821050
2010021000110|OKTMO=80701000|PaytReason=ÒÐ|DocNo=418248|DocDate=
07.02.2015|docIdx=0

На самом деле внутри штрих-кода вот такое значение:
ST00011|Name=ÓÔÊ ïî Ñâåðäëîâñêîé îáëàñòè (Ìåæðàéîííàÿ ÈÔÍÑ Ðîññèè ¹16 ïî Ñâåðäëîâñêîé îáëàñòè)|PersonalAcc=40101810500000010010|BankName=ÓÐÀËÜÑÊÎÅ ÃÓ ÁÀÍÊÀ ÐÎÑÑÈÈ|BIC=046577001|CorrespAcc=00000000000000000000|Purpose=Åäèíûé íàëîã íà âìåíåííûé äîõîä äëÿ îòäåëüíûõ âèäîâ äåÿòåëüíîñòè ïðî÷èå íà÷èñëåíèÿ 4 êâ 2014 ã.|Sum=5300|KPP=662301001|lastName=Ïëàòåæêè íå óäàëÿòü|payerAddress=Ñâåðäëîâñêàÿ îáëàñòü,,Åêàòåðèíáóðã ã,,,,,|PayeeINN=6623000850|PayerINN=509440598889|DrawerStatus=09|CBC=18210502010021000110|OKTMO=80701000|PaytReason=ÒÐ|DocNo=418248|DocDate=07.02.2015|docIdx=0


среда, 18 сентября 2019 г.

azk xml action synchronize

azkf:
AMUROBL: acctype.xml, bankoper.xml, finsource.xml, operkind.xml, payground.xml, pl_calcmethod.xml, unidoctype.xml (25.03.2021)
BELGOBL: acctype.xml repkind.xml (убрать из "@azk2_sys.lst"), pl_calcmethod.xml (25.09.2019)
IRKOBL: operkind.xml, unidoctype.xml (02.10.2019)

          KBR: acctype.xml (10.01.2021)

KRASKRAY: acctype.xml, operkind.xml (06.11.2020)
LENOBL: acctype.xml, unidoctype.xml, pl_calcmethod.xml (20.11.2019)
NAGAYBAKSKE_RN(CHELOBL): operkind.xml (27.09.2019)
NERUNGRI (YAKUT): operkind.xml (07.04.2020)
NIZHOBL: acctype.xml, operkind.xml (15.10.2019)
PENZOBL: acctype.xml, pl_calcmethod.xml (18.11.2019)
PERMKRAY: acctype.xml, pl_calcmethod.xml (13.10.2020) 
ROSTOVOBL: acctype.xml, payground.xml, pl_calcmethod.xml (27.04.2020)

          SOSNOVSKE (NIZHOBL): acctype.xml (20.01.2021)

          SURGUT: ok (09.01.2021) 

TOLYATTI: pl_calcmethod.xml (28.05.2020)
TOMSKOBL: acctype.xml, bankoper.xml (27.05.2021)
TUMOBL: repkind.xml (убрать из "@azk2_sys.lst") (10.10.2019)
ULOBL: acctype.xml, operkind.xml (21.10.2021)
USTKUTSKE_R(IRKOBL): unidoctype.xml (10.10.2019)
VOLGOBL: acctype.xml, planinrefkind.xml (убрать из "@azk2_sys.lst") (25.06.2021)
YAKUTSK: operkind.xml (23.12.2019)
ZLATO(CHELOBL): XML\module\core\clndtype.xml (убрать из "@all.lst") (18.09.2020)

azkgz:
IRKOBL: (проверить наличие таблиц MSG и SYSEVENT, отключить ПДС и ВМК) reportprocessor.xml (20.11.2019)
PENZOBL: (проверить наличие таблиц MSG и SYSEVENT) (20.11.2019)

среда, 11 сентября 2019 г.

Валидация XML по XSD: ошибка "No matching global declaration available for the validation root."

Пример ошибочно сформированного XML-файла, валидация которого приводит к ошибке:
No matching global declaration available for the validation root.

XSD:
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/Devices" xmlns:tns="http://www.example.org/Devices"  elementFormDefault="qualified">
   <element name="devices">
      <complexType>
         <sequence>
            <element name="computerDevice"
                     type="tns:computerDevice"
                     minOccurs="3"
                     maxOccurs="unbounded"/>
         </sequence>
      </complexType>
   </element>
<complexType name="computerDevice">
   <sequence>
      <element name="name" type="string"/>
      <element name="origin" type="string"/>
      <element name="price" type="tns:Range"/>
      <element name="type" type="tns:Type"/>
      <element name="critical" type="tns:Choice"/>
   </sequence>
<attribute name="id" type="ID" use="required"/>
</complexType> 
<simpleType name="Range">
     <restriction base="integer">
       <minInclusive value="0"/>
       <maxInclusive value="1000"/>
     </restriction>
</simpleType>
<complexType name="Type">
   <sequence>
      <element name="peripheral" type="tns:Choice"/>
      <element name="energy_consumption" type="int"/>
      <element name="cooler" type="tns:Choice"/>
      <element name="group" type="string"/>
      <element name="port">
         <simpleType>
            <restriction base="string">
               <enumeration value="HDMI"></enumeration>
               <enumeration value="COM"></enumeration>
               <enumeration value="LPT"></enumeration>
            </restriction>
         </simpleType>
      </element>
   </sequence>
</complexType>
<simpleType name="Choice">
   <restriction base="string">
      <pattern value="Yes|No|yes|no"/>
   </restriction>
</simpleType>
</schema>

XML (с ошибкой):
<?xml version="1.0" encoding="UTF-8"?>
<devices>
    <computerDevice id = "d1">
        <name>Keyboard</name>
        <origin>Chine</origin>
        <price>10</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>2</energy_consumption>
            <cooler>No</cooler>
            <group>Input</group>
            <port>USB</port>
        </type>
        <critical>No</critical>
    </computerDevice>
    <computerDevice id = "d2">
        <name>Monitor</name>
        <origin>Japanese</origin>
        <price>17</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>20</energy_consumption>
            <cooler>No</cooler>
            <group>Output</group>
            <port>HDMI</port>
        </type>
        <critical>Yes</critical>
    </computerDevice>
    <computerDevice id = "d3">
        <name>printer</name>
        <origin>Azerbaijan</origin>
        <price>14</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>50</energy_consumption>
            <cooler>No</cooler>
            <group>Output</group>
            <port>COM</port>
        </type>
        <critical>No</critical>
    </computerDevice>
</devices>

XML (исправленный - см. строку №2):
<?xml version="1.0" encoding="UTF-8"?>
<devices xmlns="http://www.example.org/Devices">
    <computerDevice id = "d1">
        <name>Keyboard</name>
        <origin>Chine</origin>
        <price>10</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>2</energy_consumption>
            <cooler>No</cooler>
            <group>Input</group>
            <port>USB</port>
        </type>
        <critical>No</critical>
    </computerDevice>
    <computerDevice id = "d2">
        <name>Monitor</name>
        <origin>Japanese</origin>
        <price>17</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>20</energy_consumption>
            <cooler>No</cooler>
            <group>Output</group>
            <port>HDMI</port>
        </type>
        <critical>Yes</critical>
    </computerDevice>
    <computerDevice id = "d3">
        <name>printer</name>
        <origin>Azerbaijan</origin>
        <price>14</price>
        <type>
            <peripheral>Yes</peripheral>
            <energy_consumption>50</energy_consumption>
            <cooler>No</cooler>
            <group>Output</group>
            <port>COM</port>
        </type>
        <critical>No</critical>
    </computerDevice>
</devices>

Источник.

вторник, 10 сентября 2019 г.

Виртуальный FDD

Виртуальный FDD:
ImDisk Virtual Disk Driver

Успешно проверено на
- Windows 7 x64 (в RDP-сеансе);
- Windows 10 x64.

Оснастка "imdisk.cpl".

Примечания:
- подходят IMG-образы от плагина "VirtualDisk" для Totalcmd;
- в Linux IMG-файлы монтируются командой "mount -o loop,offset=0 /path/to/file.img /mnt/mydirectory".

четверг, 5 сентября 2019 г.

АЦК + ГМП

Чтобы формировался XML-файл с копией запроса к СМЭВ в каталоге "gisgmplog" в папке АЦК при выполнении действия "Выгрузить" над ЭД "Сведения о платеже" на статусе "Готов к выгрузке" нужно:

Для СМЭВ 2:
Бюджетный параметр:
"Используемая версия СМЭВ" = "2.0"
Properties:
gisgmp.wsdlLocation=http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0003663?wsdl
Azk2logback.xml:
<root level="TRACE">

Для СМЭВ 3:
Бюджетный параметр:
"Используемая версия СМЭВ" = "3.0"
Properties:
gisgmp.wsdlLocation=http://smev3-n0.test.gosuslugi.ru:7500/smev/v1.2/ws?wsdl
Azk2logback.xml:
<root level="TRACE">

среда, 4 сентября 2019 г.

АЦК и ЖКХ

Чтобы формировался XML-файл с копией запроса к СМЭВ в каталоге "gisgсhlog" в папке АЦК при выполнении действия "Выгрузить" над ЭД "Сведения о платеже в ГИС ЖКХ" на статусе "Готов к выгрузке" нужно:

Для СМЭВ 2:
Бюджетный параметр "Используемая версия СМЭВ" = "2.0".
Properties:
giszhkh.payments.testmode=true
giszhkh.payments.wsdlLocation=http://smev-mvf.test.gosuslugi.ru:7777/gateway/services/SID0004766?wsdl
Azk2logback.xml:
<root level="TRACE">

Для СМЭВ 3:
Бюджетный параметр "Используемая версия СМЭВ" = "3.0".
Properties:
giszhkh.payments.testmode=true
giszhkh.payments.wsdlLocation=http://smev3-n0.test.gosuslugi.ru:7500/smev/v1.2/ws?wsdl
Azk2logback.xml:
<root level="TRACE">

пятница, 2 августа 2019 г.

JQL: L2, get it!

Фильтры для JSD: 4 вспомогательных и 1 основной для email-уведомлений.

== (вспомогател) Киреевцы ==
filter = 16412
JQL:
«
"Ответственный L2" in (u.belokonenko, a.borzov, e.gorbel, e.zharova, o.dikareva, v.barakovskaya, v.rakityanskiy, e.kireev, D.Aryshtaev, a.kireeva)
».
== (вспомогател) НОВАЯ для L2 ==
filter = 16413
JQL:
«
project = SP
AND "Служебная линия обработки" = L2
AND status = Новая
AND "Ответственный L2" is EMPTY
».
== (вспомогател) ПОЛУЧЕНА ИНФОРМАЦИЯ для L2 от L1 или КЛИЕНТА ==
filter = 16414
JQL:
«
project = SP
AND "Служебная линия обработки" = L2
AND status = "Получена информация"
AND filter = 16412
».
== (вспомогател) ЗАПРОС ИНФОРМАЦИИ от L3 у L2 ==
filter = 16415
JQL:
«
project = SP
AND "Служебная линия обработки" = L2
AND "Линия OLA" = 3
AND status = "Запрос информации внутр"
AND filter = 16412
».
== (email) L2, в работу! (Киреевцы) ==
filter = 15427
JQL:
«
filter in (16413, 16414, 16415)
».

вторник, 9 июля 2019 г.

Не работает favicon

Проблема:
На одной из страниц не работала конструкция:
<link rel="shortcut icon" type="image/png" href="images/favicon.ico">.

Причина:
в самом верху файла, еще до <HTML> была спрятана конструкция
<input type="hidden" name=...>.

Решение:
после переноса input внутрь <HTML> проблема с favicon решилась.

вторник, 11 июня 2019 г.

Методические рекомендации и требования к форматам отчетных форм по приказу 243н Минфина России для загрузки в ГИИС "Электронный бюджет"

Для субъектов:
Минфин России / Деятельность / Электронный бюджет / Единый портал бюджетной системы Российской Федерации / Методические рекомендации для субъектов Российской Федерации по порядку публикации информации на едином портале бюджетной системы Российской Федерации

Для МО:
Минфин России / Деятельность / Электронный бюджет / Единый портал бюджетной системы Российской Федерации / Методические рекомендации для муниципальных образований по порядку публикации информации на едином портале бюджетной системы Российской Федерации

четверг, 16 мая 2019 г.

Пример LDAP на Java

1. Узнаем адрес DC-сервера. Для этого на компьютере, включенном в домен, выполняем команду "systeminfo" и из ее результата запоминаем значения параметров "Домен" и "Сервер входа в сеть". Например:
«...
Домен: mydomain.my
Сервер входа в сеть: \\dc-server

...».
1.1. Получаем имя актуального сервера домена с помощью команды:
«...
nslookup mydomain.my
dc-server

...».

2. Создаем пример класса, с учетом справочной информации "LDAP Authentication", "LDAP & LDAPS URLs", либо берем готовый пример - "LoginLDAP.java" на stackoverflow и компилируем.

3. Запускаем класс из п.2 с учетом информации из п.1.1:
java -cp . test.LoginLDAP url=ldap://dc-server:389 username=myusername@mydomain.my password=mypassword
При успешной авторизации, результатом команды будет нечто подобное:
«
distinguishedName: CN=Иванов Иван Иванович,OU=Подразделение,OU=Филиал,OU=Компания,OU=Организация,DC=mydomain,DC=my
memberOf: CN=...
memberOf: CN=...

».
При неудачной попытке, будет сообщение об ошибке, пример, для некорректного пароля:
«
Exception in thread "main" javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580 ]
...».
P.S. Запускать пример можно уже с компьютера, который в домен не включен. Работоспособный вариант для WinDC (для других LPAD-серверов не проверялось). Не проверялась работоспособность LDAPS, только LDAP.

вторник, 14 мая 2019 г.

Про "log_level" для "taskaudit.xml"

Дополнительное описание параметра "log_level" для taskaudit.xml:
- log_level = 1: информация записывается в таблицу "TASKJOURNAL" (АРМ "Журнал действий пользователей");
- log_level = 2: информация записывается в таблицы "TASKJOURNAL" и "ANYDATA" (при чем в "ANYDATA.DATA" записывается полный текст XML-задания), связь между таблицами TASKJOURNAL.ID = ANYDATA.DATA_KEY.

четверг, 14 марта 2019 г.

Кнопки актуализации кеша интернет-браузера

Браузер В Windows и Linux В Mac OS X
Mozilla Firefox Ctrl+F5 или Ctrl+⇧ Shift+R ⌘ Cmd+R
Internet Explorer Ctrl+F5
Opera Ctrl+R или F5 ⌘ Cmd+R или F5
Safari Ctrl+R ⌘ Cmd+R
Chrome, Chromium Ctrl+F5 или ⇧ Shift+F5 или Ctrl+R ⌘ Cmd+R
Konqueror Ctrl+R
Maxthon Ctrl+R или F5
Microsoft Edge Ctrl+R или F5

#актуализация кеша #актуализация кэша #очистка кеша #очистка кэша

понедельник, 4 марта 2019 г.

Oracle SQL Developer: показ штампа времени в полях с типом DATE

В поле "Date Format" параметров (пункт меню Tools —> Preferences —> Database —> NLS)
вместо "DD.MM.RR"
указать "DD.MM.RR HH24:MI:SS"
тогда значения из полей типа ДАТА (DATE) будут выводится с указанием времени, например:


Спасибо, Сергеичу.

четверг, 28 февраля 2019 г.

Jira: Ошибка "Unexpected server error" в "Rich Filter Controller" при открытии рабочего стола

Описание проблемы:
у некоторых пользователей при открытии рабочего стола Jira видна ошибка "Unexpected server error.", кнопка "Show details" открывает подробности:
REQUEST URL:
/rest/qoti-rich-filters/latest/gadgets/controller/load-quick-filters
REQUEST TYPE:
POST
REQUEST DATA:
{"richFilterId":8,"wantedFilters":"20-26-s25-d168-d105-d107-d111-d110-d123-d125-d126-d127-d128-d121-d167","activeFilters":{"dynamic":{"customfield_26713":["34920"]}}}
STATUS CODE:
500
STACK TRACE:
java.lang.NullPointerException
at java.util.LinkedHashSet.(LinkedHashSet.java:168)
at com.google.common.collect.Maps$7.transformEntry(Maps.java:1812)
at com.google.common.collect.Maps$10.getValue(Maps.java:1857)
at com.google.common.collect.ImmutableMap.copyOf(ImmutableMap.java:292)
...


Причина:
В структуре метаданных задач кто-то изменил поле, идентификатор которого виден в стеке ошибки (выделено красным), в данном случае было изменено наименование поля: было "Продукт (РЕО)" стало "Продукт (РЕО) old".
Увидев приписку "old" я удалил поле из списка "Dynamic Filters" (динамических фильтров) рич-фильтра проблемного рабочего стола.
Но т.к. по этому динам.фильтру у некоторых пользователей была включена фильтрация, то сервер для таких пользователей выдал указанную ошибку.

Как идентифицировать проблемное поле:
Определить поле можно либо, спросив у поддержки, либо использовать его идентификатор в поле для JQL-запросов, обращение к полю указывать в таком виде:
cf[26713] = ...
по выпадающим значениям после знака "=" можно понять, что за поле скрывается под идентификатором 26713.
После идентификации вернул поле в список "Dynamic Filters" рич-фильтра.

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

вторник, 26 февраля 2019 г.

SortTable: сортировка таблицы по колонке с чекбоксом

Чтобы с помощью "sorttable" можно было сортировать таблицу по колонке, в которой отражается чекбокс, можно добавить "hidden span" со значением состояния чекбокса (включен или отключен), например
<span hidden>${my_checkbox==1?'1':'0'}</span>
Тогда сортировка будет работать, визуально якобы, по чекбоксам:

понедельник, 25 февраля 2019 г.

Google Chrome: Uncaught ReferenceError: <JS function name> is not defined

Иногда после обновления веб-приложения (в котором используются JS) на стороне пользователя в интернет-браузере Google Chrome некоторые JS не работают, при этом в консоли видна ошибка:
Uncaught ReferenceError: <JS function name> is not defined
at HTMLAnchorElement.onclick (index.jsp:40)

Решение:
при обнаружении проблемы обновить кеш браузера с помощью Ctrl+F5.

пятница, 15 февраля 2019 г.

JiraSD: поиск подстроки в поле, для которого не работает тильда

Для некоторых полей не поддерживается оператор тильда "~" (CONTAINS), выражается это в появлении сообщения при попытке выполнения JQL:
Оператор '~' не поддерживается 'Бюджет проекта ПУ' полем.
или
The operator '~' is not supported by the 'Бюджет проекта ПУ' field.

Решение:
Пример поиска подстроки "Сопр" (с игнорированием регистра букв) в поле, которое не поддерживает оператор тильда "~" (CONTAINS):
issueFunction in issueFieldMatch("project = FIN AND issuetype in (Доработка) AND statusCategory != Done AND status not in (Сделан) AND \"Бюджет проекта ПУ\" is not null and statusCategory != Done", "Бюджет проекта ПУ", "(?i)Сопр")

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

четверг, 14 февраля 2019 г.

JiraSD: регулярные выражения

Поставлена такая задача:
отфильтровать записи в JiraSD, у которых в текстовом поле (к которому допустимо применять оператор "~") стоит одно значение "+" из трёх допустимых ("+", "-" или "null" (когда поле не задано)).

Найденное решение:
регулярные выражения и функция, которая позволяет их применять:
issueFieldMatch(subQuery, fieldname, regexp)

где, fieldname = "Зафиксирован срок выдачи".

Но эта функция очень ресурсозатратная, чем меньше количество записей, которое возвращает подзапрос "subQuery", тем быстрее отрабатывает весь JQL-запрос.
issueFunction in issueFieldMatch("project = FIN AND issuetype in (Доработка) AND statusCategory != Done AND status not in (Сделан)", "Зафиксирован срок выдачи", "^\\u002b$")

Самым быстрым вариантом оказался с проверкой наличия поля (is not null):
issueFunction in issueFieldMatch("project = FIN AND issuetype in (Доработка) AND statusCategory != Done AND status not in (Сделан) AND \"Зафиксирован срок выдачи\" is not null", "Зафиксирован срок выдачи", "^\\u002b$")

Примечание:
"быстрым" его можно назвать, лишь, относительно: 850 записей он обрабатывает за ~3,5 секунды :-(

среда, 13 февраля 2019 г.

JiraSD: еще про JQL

Выражение
labels not in (Ошибка_БЛ)
то же самое что и
labels != Ошибка_БЛ

Вместо
labels != Ошибка_БЛ
нужно применять
(labels != Ошибка_БЛ or labels is null)

вторник, 5 февраля 2019 г.

JiraSD: выявление задач без трудозатрат

Задачи проекта "SP", у которых:
- "Ответственный L2" = текущий пользователь
- дата создания в текущем месяце
- в журнале работ по текущему пользователю ни одной записи:
project = SP AND "Ответственный L2" = currentUser() AND created >= startOfMonth() AND created < endOfMonth() AND issueFunction not in worklogged("after startOfMonth() before endOfMonth() by currentUser()")

вторник, 29 января 2019 г.

понедельник, 28 января 2019 г.

Запуск win-клиента АЦК-Контроль (когда недоступна серверная часть)

0) закрыть АЦК-Контроль;
1) запустить regedit;
2) в разделе "HKEY_CURRENT_USER\Software\BFT\ControlOffline\Control\<Имя пользователя>"
2.1) параметр "Password" удалить;
2.2) параметру "StorePass" присвоить значение "0";
2.3) в параметре "Preferences" найти запись "REFRESHINTERVAL" и присвоить ей значение "0", чтобы получилось: «REFRESHINTERVAL="0"»;
3) сохранить изменения, запустить АЦК-Контроль, в окне запроса пароля нажать "Отмена".

четверг, 24 января 2019 г.

среда, 23 января 2019 г.

вторник, 22 января 2019 г.

JiraSD: значения смарт-фильтра "Типовая ситуация (L2)"

Значения-маркеры:
(все описанные ниже задачи имеют значение "L2" в поле "Служебная линия обработки")

1 (красный)
Описание:
Задачи, которые поступили в работу на L2 или к ответственному на L2.
JQL-выражение:
Редакция №1:
"Служебная линия обработки" = L2 and (status = Новая or (status = "Получена информация" and "Ответственный L2" = currentUser()))
Редакция №2:
("Служебная линия обработки" = L2 and status = Новая)
or
("Служебная линия обработки" = L2 and status = "Получена информация" and "Ответственный L2" = currentUser())
or
("Служебная линия обработки" = L2 and status = "Запрос информации внутр" and "Ответственный L2" = currentUser() and "Линия OLA" = 3)


2 (белый)
Описание:
JQL-выражение:
"Служебная линия обработки" = L2 and status = "В работе" and "Ответственный L2" = currentUser()

3 (черный)
Исключение:
тут в поле "Служебная линия обработки" значение "L3".
Описание:
доработки, переданные на L3, по которым нужно отслеживать изменения вручную.
JQL-выражение:
"Служебная линия обработки" = L3 and "Ответственный L3" = currentUser()

четверг, 17 января 2019 г.

"Маячок" в "Скайпе для бизнеса"

Когда включаешь в списке контактов у определенного человека параметр "Получать оповещения о состоянии", то в момент, когда его статус меняется на "Доступен" (зеленый), появляется уведомление.

Включение "маячка" - щелкнуть правой кнопкой по контакту и поставить галочку "Получать оповещения о состоянии":


Когда у человека меняется статус на "зеленый" (В сети), то появляется такое уведомление:

Нажатие на уведомление открывает чат с этим человеком.


Когда "маячок" больше не нужен, то при очередном его появлении нажмите на кнопку "Удалить тег":

пятница, 11 января 2019 г.

MS Outlook 2010: поиск по определенным полям

Пример поиска скрипта "DeleteCommonProfiles.sql" по полю "Вложение содержит" в MS Outlook 2010:
На панели "Поиск" с помощью кнопки "Больше" на панель фильтрации можно добавить разные поля, например, "Тема" (для поиска писем по словам в теме) или "Вложение содержит" (для поиска писем по содержимому приложенных к письмам файлов):


Пример результата поиска:

АЦК-Контроль (windows): онлайн-поиск

Пример поиска скрипта "DeleteCommonProfiles.sql" с помощью онлайн-поиска:

Архив