четверг, 7 декабря 2017 г.

Установка web-службы для АЦК-Мониторинг (_installService.bat)

На обучении по АЦК-Мониторинг был предоставлен батник "installService.bat" для установки web-службы АЦК-М.
После его применения в окне настройки web-службы нужно было еще вручную дописывать некоторые параметры.
Со временем стало понятно, что эти ручные операции можно запихнуть в тот же самый батник.

_installService.bat:
SET SERVICE_NAME=M_IRKOBL_161213
SET SERVICE_DISPLAY_NAME="Apache Tomcat 8.0 %SERVICE_NAME%"
tomcat8.exe //IS//%SERVICE_NAME% ^
  --DisplayName=%SERVICE_DISPLAY_NAME% ^
  --Description="АЦК-Мониторинг" ^
  --Install="%cd%\tomcat8.exe" ^
  --Classpath=".\bin\bootstrap.jar;.\bin\tomcat-juli.jar" ^
  --StartMode=jvm ^
  --StopMode=jvm ^
  --StartClass=org.apache.catalina.startup.Bootstrap ^
  --StartPath=%cd%\..\ ^
  --StartParams=start ^
  --StopClass=org.apache.catalina.startup.Bootstrap ^
  --StopParams=stop ^
  --LogPath=..\logs ^
  --LogLevel=Info ^
  --StdOutput=auto ^
  --StdError=auto ^
  --StopPath=%cd%\..\ ^
  --Jvm=%JRE_HOME%\bin\server\jvm.dll ^
  --JvmMs=2048 ^
  --JvmMx=2048 ^
  --JvmOptions=-Dcatalina.home=.;-Dcatalina.base=.;-Djava.endorsed.dirs=.\endorsed;-Djava.io.tmpdir=.\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=.\conf\logging.properties;-XX:ReservedCodeCacheSize=96m;-XX:+HeapDumpOnOutOfMemoryError;-XX:HeapDumpPath=.\;-Dorg.jboss.logging.provider=slf4j
copy /Y tomcat8w.exe %SERVICE_NAME%.exe
pause

вторник, 28 ноября 2017 г.

logback.xml с периодическим автоматическим сканированием параметров

Пример "logback.xml" с автосканированием параметров журнализации через заданный период времени (автосканирование регулируется параметрами "scan" и "scanPeriod"):

<?xml version="1.0" encoding="UTF-8"?>
<!--Конфигурирование логера с помощью внешнего XML-файла, подробности см. на logback.qos.ch-->
<configuration scan="true" scanPeriod="120 seconds">
    <!--Возможные значения уровня журнализации: DEBUG, INFO, WARN, ERROR, FATAL, OFF-->
    <!--Параметры журнализации в консоль-->
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>INFO</level><!--Уровень журнализации сервера приложений в стандартный поток вывода-->
        </filter>
        <encoder>
            <charset>Cp866</charset><!--Кодировка (Cp866,Cp1251,KOI8_R,ISO8859_5,UTF-8)-->
            <pattern>%d{dd.MM.yy HH:mm:ss.SSS},%t,%p,%c{0},%m%n</pattern>
        </encoder>
    </appender>

    <!--Параметры журнализации в файл-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>TRACE</level><!--Уровень журнализации сервера приложений-->
        </filter>
        <append>true</append>
        <File>azk2.log</File><!--путь к файла и имя файла лога-->
        <encoder>
            <charset>Cp1251</charset><!--Кодировка (Cp866,Cp1251,KOI8_R,ISO8859_5,UTF-8)-->
            <pattern>%d{dd.MM.yy HH:mm:ss.SSS},%t,%p,%c{0},%m%n</pattern>
        </encoder>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>log/azk2log%d{yyyy-MM-dd }.%i.log.zip
            </FileNamePattern><!--путь к файлу и имя файла, используемое для сохранения архивов логов-->
<maxHistory>30</maxHistory> <!--колличество дней в архиве-->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>300MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>

    <root level="TRACE">
        <appender-ref ref="stdout"/>
        <appender-ref ref="file"/>
    </root>


    <!--Параметры журнализации в файл конкретного класса-->
    <!--<appender name="classappender" class="ch.qos.logback.core.rolling.RollingFileAppender">-->
        <!--<File>azk2class.log</File><!–путь к файла и имя файла лога–>-->
        <!--<encoder>-->
            <!--<charset>UTF-8</charset><!–Используемая кодировка для вывода в файл (Cp866,Cp1251,KOI8_R,ISO8859_5,UTF-8)–>-->
            <!--<pattern>%d{dd.MM.yy HH:mm:ss.SSS},%t,%p,%c{0},%m%n</pattern><!–формат вывода–>-->
        <!--</encoder>-->
        <!--<rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">-->
            <!--<!–Размер "револьверного" буфера архивов логов. При формировании–>-->
            <!--<!–нового архива лога старые файлы будут увеличивать–>-->
            <!--<maxIndex>5</maxIndex>-->
            <!--<FileNamePattern>/log/azk2classlog.%i.log.zip-->
            <!--</FileNamePattern><!–путь к файлу и имя файла, используемое для сохранения архивов логов–>-->
        <!--</rollingPolicy>-->
        <!--<triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">-->
            <!--<MaxFileSize>100MB</MaxFileSize><!–размер файла при привыщение которого происходит архивация–>-->
        <!--</triggeringPolicy>-->
    <!--</appender>-->
    <!--<!–указываем класс для которого хотим изменить уровень логирования–>-->
    <!--<logger name="com.bssys.server.invocation.Server" level="DEBUG">-->
        <!--<appender-ref ref="classappender"/>-->
    <!--</logger>-->
</configuration>


Примечания:
в этой строке настройки
            <FileNamePattern>log/azk2log%d{yyyy-MM-dd }.%i.log.zip
            </FileNamePattern><!--путь к файлу и имя файла, используемое для сохранения архивов логов-->
добавлено ".log" - чтобы в архивы револьверного буфера логи попадали с расширением ".log" (иначе они архивировались без него).

пятница, 17 ноября 2017 г.

В чем ценность блокчейн-технологии?

См "Сказка про Блокчейн. Несокрушимый Сундук"

showme_webapps_url.bat

Батник открывает текстовый файл, в котором указан адрес страниц web-приложений, которые запущены текущим Tomcat (работает только локально на WEB-сервере) (положить батник нужно в корень папки Tomcat) (положить сюда:
<tomcat>/
и батник будет проверять папку
<tomcat>/webapps/
):
@echo off
setlocal EnableDelayedExpansion
set adr_begin=https://localhost:23991/
set output_file=%TEMP%\tomcat_webaddresses.txt
if exist %output_file% del %output_file%
for /F %%a in ('dir /B /A:D ..\webapps') do echo %adr_begin%%%a>> %output_file%
if exist %output_file% (start %output_file%) else (echo Папка webapps пуста && pause)

Что нужно доработать?
- Нужно реализовать автоматический анализ файла
<tomcat>/conf/server.xml
сейчас сделана "заглушка" в коде - просто вручную прописан номер порта "23991" в строке №3.
- сделать версию для Linux (когда возникнет необходимость).

вторник, 14 ноября 2017 г.

[одна из причин] ORA-12541: TNS:no listener

После восстановления сервера СУБД Oracle с сохранением базы данных (т.е. были сохранены все табличные пространства и схемы в них) появилась следующая проблема:
- sqlplus открывался успешно;
- IDE к этому серверу с удаленных рабочих мест открывались успешно;
- impdp (утилита импорта) выдавала ошибку:
UDI-12541: operation generated ORACLE error 12541
ORA-12541: TNS:no listener

Причина: разные значения параметра HOST в файлах:
cat $ORACLE_HOME/network/admin/tnsnames.ora:
# tnsnames.ora Network Configuration File: /mnt/hd2tb/oracle_ee/product/11.2.0.4/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.

ORACL11B =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost.localdomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ORACL11B)
)
)

cat $ORACLE_HOME/network/admin/listener.ora:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.146.9)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
)

ADR_BASE_LISTENER = /mnt/hd2tb/oracle_ee

После уравнивания значений проблема решилась.

MS Skype For Business (отключение Ctrl+Enter)

Если вас напрягает комбинация клавиш Ctrl+Enter в MS Skype For Business, которая запускает звонок собеседнику в окне переписки, тогда прочтите письмо дальше.
После того, как вы примените «Disable_CtrlEnter_SkypeForBusiness.reg» (во вложении), то нажатие Ctrl+Enter в окне переписки не будет ничего делать.

Инструкция:
1) Примените «Disable_CtrlEnter_SkypeForBusiness.reg»;
2) Перезагрузите компьютер.

Disable_CtrlEnter_SkypeForBusiness.reg:
Windows Registry Editor Version 5.00

;Для MS Office 2010
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\14.0\Lync\DisabledShortcutKeysCheckBoxes]
"CtrlEnter"="13,8"
"CtrlShiftEnter"="13,12"

;Для MS Office 2013
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\15.0\Lync\DisabledShortcutKeysCheckBoxes]
"CtrlEnter"="13,8"
"CtrlShiftEnter"="13,12"

;Для MS Office 2016
[HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\16.0\Lync\DisabledShortcutKeysCheckBoxes]
"CtrlEnter"="13,8"
"CtrlShiftEnter"="13,12"

понедельник, 13 ноября 2017 г.

2018-11-08

Распределение новых записей по:
- АЦК-Ф Web;
- АЦК-БК;
- АЦК-Т;
- ЭП;
- ГИС ГМП;

I - Blknko;
II - Arshtv.

Письма о выпуске патчей по:
- АЦК-Ф (+модули, +док);
- АЦК-Т;
- АЦК-БК;
Arshtv (контролирует Brzv, Kreev).

Письма о выпуске патчей по:
- СОФИТ;
- UfebsScript;
- FormatFK;
- и др.скрипты по AZKExchange;
Sprnva (заместитель Arshtv).

Письма о выпуске патчей по:
- Отчетам;
Zgda (заместитель Arshtv).

Зависимости по отпускам:
Blknko - Arshtv;
Sprnva - Brzv;
Sprnva - Zgda;
Brzv - Kreev.

Ключевые по направлениям сопровождения:
ЭП: Blknko, Arshtv, Brzv;
Отчеты: Zgda, Sprnva, Rktnsk;
СОФИТ, Exch: Sprnva, Brzv.

АЦК-Т: Blknko, Arshtv;
АЦК-БК: Blknko, Arshtv.

Восстановление DBSERVER

Причина:
частично вышел из строя HDD-160GB, на котором была установлена ОС.
Разбираться и проверять времени не было, поэтому просто заменили его на другой HDD-160GB.

Перед переустановкой ОС сохранить копии:
/etc/fstab
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf

db_informer расположен в [HDD 2TB]/db_informer/;
distr расположен в [HDD 2TB]/distr/;
0bmenka расположен в [HDD 2TB]/0bmenka/;
oracle расположен [RAID-0 из двух HDD-1TB]/:
- oracle_ee/;
- oraInventory/.
(Директории Oracle нужно переместить в другое место, затем установить Oracle в те же папки, затем остановить его и заменить директории на перемещенные)

ОС Oracle Enterprise Linux 5.11 x64
При установке:
- SELinux - disabled;
- KEDump - disabled;
- Firewall - disabled.

После установки:
yum install samba
затем заменить
/etc/samba/smb.conf
/etc/sysconfig/vncservers
/etc/mdadm.conf (заменять его не пришлось, пока не понял почему - ОС каким-то образом сама нашла RAID-0, сама его собрала, мне оставалось его только смонтировать)

После подачи Интернет:
yum автоматически скачает обновленный образ загрузки (я пока не знаю, как это отключить), но этот обновленный образ приводит к ошибке (я пока тоже не знаю как это исправить), поэтому в указанном файле нужно будет в параметре "default" указать пункт меню, который отвечает за загрузку прежнего образа:
/etc/grub.conf

Текущие точки монтирования (их и нужно придерживаться)
[root@dbserver38 /]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdd1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
/dev/sdc1 on /mnt/diska type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/md0 on /mnt/hd2tb type ext4 (rw,noatime,nodiratime,max_batch_time=0,nobarrier)

Дополнительно:
- оказалось, что раздел с RAID-0 (/dev/md0) содержит ошибки, поэтому лечим их ("до монтирования"): fsck.ext4 -a /dev/md0
- не поднялся OEM - нужно пересоздать репозиторий (но это в нерабочее время):
1) emca -deconfig dbcontrol db -repos drop
2) emca -config dbcontrol db -repos create

grub.conf

dbserver:
загрузчик GRUB.
После автоматического обновления ПО в grub.conf появилась новая запись о свежей версии образа для загрузки, но она загружается с ошибками.
Чтобы вернуть прежний образ загрузки изменил:
grub.conf:
default=1 (было 0)
(чтобы загружался этот пункт меню)
title Oracle Linux Server-base (2.6.18-398.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-398.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet numa=off transparent_hugepage=never
initrd /initrd-2.6.18-398.el5.img

пятница, 10 ноября 2017 г.

GRUB, первое знакомство

В консоли GRUB:
- "cd /" - показывает файлы в текущей директории (типа "ls");
- кнопка "tab" показывает список возможных команд.

вторник, 7 ноября 2017 г.

Проверка корректности файла со штампом времени

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

Для этой цели можно использовать TSP-клиент.
Пример:
1) скачиваем файл со штампом времени с тестового сервера КриптоПро по адресу http://www.cryptopro.ru/tsp/tsp.srf или https://www.cryptopro.ru/tsp/tsp.srf.
2) с помощью tsputil считываем его:
tsputil stampinfo tsp.srf
Пример результата должен быть таким:
C:\Program Files (x86)\Crypto Pro\TSP\tsputil.exe stampinfo tsp.srf
Policy ID: 1.2.643.2.2.9
Serial Number: 4B7A 0321 0000 0000 0000 0003
Accuracy (microseconds): -1
Ordering: 0
HasNonce: 1
TSA:
Stamp time: 002CDBD0
Hash algorithm: 1.2.643.2.2.9, ALG_ID: 0x801E
Hash size: 32
Hash: 3B76 3FD5 1ABA CCF3 0D0C 00E3 A916 A3DC 6147 480A CB07 5127 DAD1 5013 672C
B54E
Certificate of signer of time-stamp: NOT found.
Certificates from time-stamp (0):

Потоки ввода-вывода

https://ru.wikipedia.org/wiki/Перенаправление ввода-вывода

Дескриптор Название Описание
0 stdin Стандартный ввод
1 stdout Стандартный вывод
2 stderr Стандартный вывод ошибок

Пример вывода только ошибок при выполнении программы:
nslookup mail.ru999 2> only_errors.txt


Спасибо Юрину В.

среда, 4 октября 2017 г.

ГИС ЖКХ, заметки

https://dom.gosuslugi.ru/#!/regulations - это раздел "Регламенты и инструкции" (на главной странице сайта ссылка на раздел находится в самом верху страницы).

Среди прочего здесь есть:
- "Реестр реквизитов зарегистрированных в ГИС ЖКХ Поставщиков ЖКУ" - обновляется 1 раз в неделю в пятницу в 18:00.
- "Регламент и форматы информационного взаимодействия внешних информационных систем с ГИС ЖКХ".

https://my.sit02.dom.test.gosuslugi.ru - тестовая площадка, для доступа необходимо обратится в службу техподдержки ГИС ЖКХ или СМЭВ.
Для нас доступ уже есть (пришлют позже).

вторник, 26 сентября 2017 г.

Oracle 11g: Расположение alert-log

Расположен тут:
$ORACLE_BASE/diag/rdbms/<тут $ORACLE_SID но маленькими буквами>/$ORACLE_SID/trace/alert_$ORACLE_SID.log

С помощью awk:
$ORACLE_BASE/diag/rdbms/`echo $ORACLE_SID|awk '{print tolower($0)}'`/$ORACLE_SID/trace/alert_$ORACLE_SID.log

Скважина для воды

Малогабаритные Установки Скважина
+79025669950
65 метров, нижняя граница водоносного слоя, 2500 рублей/метр. С насосом, трубой, оголовком, тросом и фитингами 193700.

четверг, 21 сентября 2017 г.

Windows: пользовательские переменные среды

Пользовательские переменные среды хранятся в реестре:
HKEY_CURRENT_USER\Environment
Если в значении переменной не используются другие переменные, тогда ее тип должен быть "Строковый параметр" (REG_SZ). Например:
PATH=C:\Users\user1\mydir

Иначе - "Расширяемый строковый параметр" (REG_EXPAND_SZ). Например:

PATH=%USERPROFILE%\mydir

Пример:



среда, 23 августа 2017 г.

Внешний IP-адрес из cmd

@echo off
nslookup myip.opendns.com resolver1.opendns.com > %TEMP%\myip.txt
FOR /F "skip=4 delims=: tokens=2" %%a in (%TEMP%\myip.txt) do set myipp1=%%a
FOR /F "usebackq delims= tokens=*" %%i in (`echo %myipp1%`) do set myipp2=%%i
echo %myipp2%> %TEMP%\showme_myip.txt
start notepad %TEMP%\showme_myip.txt

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

qdp.properties in qdpconf

Под разными ОС расположение файла "qdp.properties" Tomcat ищет в разных папках:
- для Windows: <Tomcat АЦК-М>\qdpconf\qdp.properties
- для Linux: <Tomcat АЦК-М>/bin/qdpconf/qdp.properties
Нужно избавиться от этого нюанса.

Похожий нюанс с расположением лога вэб-приложения из папки "webapps" Tomcat - путь к логу, указанный в logback.xml для разных ОС (Windows, Linux) читается по-разному, например, при значении "../logs/mon.log" в "tomcat\webapps\azkmon\WEB-INF\classes\logback.xml" лог пишется по разным путям:
- для Windows: <Tomcat АЦК-М>\..\logs\mon.log
- для Linux: <Tomcat АЦК-М>/logs/mon.log
Нужно избавиться от этого нюанса тоже.
=============================================
В qdp.properties нужно обязательно указывать 5 строк о подключении к БД:
main.dataSource.driverClassName=oracle.jdbc.OracleDriver
main.dataSource.url=...
main.dataSource.username=...
main.dataSource.password=...
main.hibernate.dialect=org.hibernate.dialect.Oracle10gDialect
=============================================
r:40c5acc6c50a1b760a62662fedeb8cddb336f4c8
a:a40546cc4fd6a12572828bb803380888ad1bfdab
=============================================
USERROLE_USERACCOUNT.ROLES_NAME='superUser' where USERROLE_USERACCOUNT.USERS_NAME=...

Firebird 3, инициализация security3.fdb

После установки Firebird 3 (если установка производилась из ZIP-архива) нужно инициализировать "security3.fdb".
Сделать это можно, следуя инструкциям из https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-compat-initsec.html

HTML Parser on Java

https://www.youtube.com/watch?v=qlSgxlyDQyM
http://htmlparser.sourceforge.net/

воскресенье, 20 августа 2017 г.

Автоматическое обновление HTML-страницы

Чтобы страница сама себя обновляла каждые, например, 23 секунды, можно добавить в блок HEAD инструкцию:
<meta http-equiv="refresh" content="23">

четверг, 17 августа 2017 г.

вторник, 15 августа 2017 г.

Прерывание команды timeout при нажатии кнопки "Развернуть" в окне cmd

Для автоматического прерывания команды timeout при нажатии кнопки "Развернуть" в окне cmd нужно отключить галочку "Использовать прежнюю версию консоли (требуется перезапуск)" на вкладке "Настройки" окна "Свойства" cmd.

Проверено на Windows 10 x64 (build 1703)

среда, 9 августа 2017 г.

PostgreSQL: пример исполняемого блока для создания таблицы DUAL

DO $$
DECLARE
b_parent_id numeric(15);
b_ppo_id numeric(15);
v_doc_id numeric(15);
v_rr_id numeric(15);
v_gen numeric(15);
v_gen1 numeric(15);
r RECORD; -- некоторая промежуточная запись
ru RECORD; -- некоторая промежуточная запись
dd RECORD; -- некоторая промежуточная запись
sysdate Date := now(); -- текущая дата
BEGIN
-- удалим временную таблицу, если существует
drop table if EXISTS dual;
-- создадим временную таблицу
create temp table dual (dummy integer); -- пустышка
execute 'insert into dual(dummy) values(0)';
end $$;

четверг, 20 июля 2017 г.

ЕИС для 44-ФЗ и 223-ФЗ

Как узнать текущую версию форматов ЕИС по 44-фз и 223-фз?
Нужно на портале открыть любой документ (ПЗ или ПГ, например) по этим законам и посмотреть в левый-нижний угол, см. пример:


ФТП-ресурс для обмена информацией с ЕИС по 223-ФЗ
ftp://fz223free:fz223free@ftp.zakupki.gov.ru

четверг, 29 июня 2017 г.

Firebird: execute statement [пример]

--#INTERBASE
create or alter procedure arys_lpad_chk as
/* Процедура проверки наличия функции LPAD в базе: если такой функции нет, то объявляем ее */
/* Процедура создана для красоты - без нее батник, при повторном использовании, выдавал ошибку, т.к. функция объявлялась второй раз */
declare variable cnt numeric(1,0); declare variable stmt1 varchar(200); declare variable stmt2 varchar(200);
begin
    select count(*) from rdb$functions where upper(rdb$function_name) = 'LPAD' into :cnt;
    stmt1 = 'DECLARE EXTERNAL FUNCTION lpad CSTRING(255), INTEGER, CSTRING(1) RETURNS CSTRING(255) FREE_IT ENTRY_POINT ''IB_UDF_lpad'' MODULE_NAME ''ib_udf''';
    stmt2 = 'DROP EXTERNAL FUNCTION lpad';
    if(cnt=0) then
        begin
            execute statement :stmt1;
        end
    else
        begin
            execute statement :stmt2;
            execute statement :stmt1;
        end
end;
--#INTERBASE
execute procedure arys_lpad_chk
--#INTERBASE
drop procedure arys_lpad_chk

среда, 28 июня 2017 г.

(wmic) Отфильтрованный список запущенных процессов с полной информацией

Пример команды, которая создает HTML-файл "C:\proclist.htm" со списком запущенных процессов с информацией о пути к исполняемому файлу процесса и отфильтрованный по наименованию исполняемого файла (в примере это "java.exe"):
wmic /output:C:\proclist.htm process where "name='java.exe'" list full /format:htable

среда, 14 июня 2017 г.

Сравнение двух текстовых файлов с помощью vim

Открыть один файл.
Набрать в консоли
vs <путь и имя другого файла>
В результате в vim будут открыты 2 файла, а экран будет разделен вертикально (vs = vertical split).
Переключаться между экранами можно с помощью
Ctrl + w
Для каждого файла нужно выполнить команду:
diffthis

вторник, 16 мая 2017 г.

(решено) Сбой "Oracle SQL Developer" после запуска дополнительной видеокарты (Windows)

После установки дополнительной видеокарты для работы с двумя мониторами одновременно IDE "Oracle SQL Developer" стал аварийно завершать работу через произвольный промежуток времени после запуска.
Это позволило мне узнать, что:
- отчеты о сбое "Hot Spot" ВМ Java хранятся здесь: <сборка Orale SQL Developer>\sqldeveloper\bin\hs_err_<PID>.log
- настройки IDE хранятся здесь: <сборка Orale SQL Developer>\sqldeveloper\bin\sqldeveloper.conf

Рекомендации по сбою нашел здесь:
http://stackoverflow.com/questions/40651162/sql-developer-crashes-randomly-every-time:

The crash has happened inside atiglpxx.dll, which seems to be a part of graphics driver.
Try one or more of the following options:
1) Add -Dsun.awt.nopixfmt=true JVM argument;
2) Remove -Dsun.java2d.noddraw=true and -Dsun.java2d.ddoffscreen=false arguments;
3) Install different graphics driver.

Помогли рекомендации из пп. 1 и 2.

вторник, 18 апреля 2017 г.

Текстовые редакторы для больших текстовых файлов (для Windows)

"Notepad++" при работе с большими файлами, либо тормозит, либо сообщает об ошибке (например, для файла размером 271 МБ):
---------------------------
File open problem
---------------------------
File is too big to be opened by Notepad++
---------------------------
ОК
---------------------------


"Akelpad" этот файл открывает успешно, но очень сильно тормозит.

Альтернативы:
FAR или "Vim for Windows"

пятница, 7 апреля 2017 г.

Парсинг XML с помощью функционала Oracle SQL

Пример:

with some_table as
(
select '<a><tag at="fcasd"><untag><tag at="svsa">sss</tag></untag></tag></a>' request from dual
union all
select '<a><tag at="dsavA"/><tag at="csa"></tag></a>' request from dual
)
select
st.*,
xml."at"
from
some_table st,
xmltable('//tag' passing xmltype(st.request)
columns "at" varchar2 (20) path '@at') xml;

Источник.

четверг, 9 марта 2017 г.

(изучить) Что-то новое в SQL

select id, dispstatus_id, doc_number, doc_date
from document where id in (
select min(id) from (select level, id, dispstatus_id, doc_number, doc_date, parent_id, connect_by_root id as root
from document
where documentclass_id = 244
start with parent_id is null
connect by nocycle prior id = parent_id) t
where t.dispstatus_id in (28,33)
group by t.root
having count(*)>1
)
;

Чтобы понять, что такое рекурсивные запросы, нужно понять, что такое рекурсивные запросы.

Понятия:
- Корень - нет родителя, есть потомки;
- Ветвь - есть родитель, есть потомки;
- Лист - есть родителя, нет потомков.

среда, 1 марта 2017 г.

"Database link" для Oracle

/* Создание дблинка.
Запрос предназначен для выполнения под пользователем с привилегиями DBA на стороне сервера, на котором находится БД-приемник.
Перед использованием необходимо заменить шаблонные значения на собственные, требуемые для подключения к БД-источнику.
1. <Имя схемы БД-источника>;
2. <Пароль схемы БД-источника>;
3. <IP-адрес СУБД со схемой БД-источника>;
4. <Порт СУБД со схемой БД-источника>;
5. <SID экземпляра СУБД со схемой БД-источника>;
*/
CREATE PUBLIC DATABASE LINK mydblink1
CONNECT TO <Имя схемы БД-источника>
IDENTIFIED BY "<Пароль схемы БД-источника>"
USING '<IP-адрес СУБД со схемой БД-источника>:<Порт СУБД со схемой БД-источника>/<SID экземпляра СУБД со схемой БД-источника>';


/* Запрос предназначен для выполнения под пользователем схемы БД-приемника.
Пример связки двух таблиц: одна из БД-источника, другая - БД-источника (обращение к ее таблице записывается в формате <имя табицы>@<имя дблинка>.
*/
select *
from PARTNERS@mydblink1 p
join ORDERS o on o.PARTNER_ID = p.ID;

/* Удаление дблинка */
drop public database link mydblink1;

среда, 22 февраля 2017 г.

Связь документов АЦК-Ф с документами АЦК-ГЗ (по КСЗ)

ЭД 54 "План-график" (АЦК-ГЗ) = ЭД 259 "Сведения из плана-графика" (АЦК-Ф):
PLAN3DOC.DOCUMENT_ID (АЦК-ГЗ) = CONTRACTINFO.FOREIGN_KEY (АЦК-Ф).

ЭД 32 "Контракт" (в АЦК-ГЗ) = ЭД 262 "Сведения из проекта контракта" (в АЦК-Ф):
CONTRACTDOC.DOCUMENT_ID (АЦК-ГЗ) = CONTRACTINFO.FOREIGN_KEY (АЦК-Ф).

ЭД 54 "План закупок" (в АЦК-ГЗ) = ЭД 244 "План закупок" (в АЦК-Ф):
PLAN3DOC.DOCUMENT_ID (АЦК-ГЗ) = CONTRACT.DOCUMENT_ID (АЦК-Ф).

Примечание:
Таблица "CONTRACTINFO" в АЦК-Финансы содержит:
- ЭД 259 "Сведения из плана-графика";
- ЭД 260 "Сведения из извещения/документации";
- ЭД 262 "Сведения из проекта контракта";
- ЭД 263 "Сведения из информации, включаемой в реестр контрактов".

четверг, 16 февраля 2017 г.

Сбой Java

Во время сбоя виртуальной машины Java в папке приложения появляются файлы:
hs_err_pid<код процесса>.log
hs_err_pid<код процесса>.mdmp

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

"cmd /k" вместо "& pause"

Чтобы увидеть результаты выполнения утилит командной строки (например, "ipconfig /all", "route print", "systeminfo" и т.д.) нужно, либо сначала открывать сам интерпретатор командной строки ("cmd"), либо перенаправлять вывод в текстовый файл, либо дописывать к концу команды "& pause" (но это решение помогает только если нужно увидеть результат выполнения пакетного файла).

Вариант №1
Проще давать команду интерпретатору "не закрывать консоль после выполнения команды" с помощью конструкции "cmd /k <команда>":
cmd /k ipconfig /all
cmd /k route print
cmd /k systeminfo
и т.д.

Вариант №2
У строкового параметра "(По умолчанию)" В ветках
HKEY_CLASSES_ROOT\batfile\shell\open\command
HKEY_CLASSES_ROOT\cmdfile\shell\open\command
нужно заменить значение
"%1" %*
на
cmd /k "%1" %*

четверг, 26 января 2017 г.

"Database link" для Firebird

Пример:
execute block returns (myblob blob) as
begin
FOR EXECUTE STATEMENT 'select data from anydata'
ON EXTERNAL DATA SOURCE '127.0.0.1/3050:c:/BASE.FDB' AS USER 'SYSDBA' PASSWORD 'masterkey'
INTO :myblob
DO SUSPEND;
end

Узнал отсюда:
http://www.firebirdfaq.org/faq16/

воскресенье, 22 января 2017 г.

Потолок

Знакомый специалист (сантехник, автомеханик, электрик) Кудинова А. посоветовал использовать натяжной потолок, как альтернативу зашпаклеванному потолку. Доводы:
- дешевизна (если не использовать варианты с 3D-печатью и подобным);
- долговечность;
- эстетичность.

суббота, 21 января 2017 г.

Водосберегающая насадка для душа с клапаном

Задача:
При отключении из насадки для душа вода стекает обратно.

Решение:
Использовать водосберегающие:
- насадку для душа с клапаном или лейку с клапаном;
- насадку-аэратор для душа или лейку-аэратор.

Архив