barbitoff programmer`s blog

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

среда, 11 апреля 2018 г.

Linux: найти все симлинки в папке

Поиск симлинков в текущей директории (рекурсивно):
find . -type l
Просмотр, куда ведет симлинк:
readlink /path/to/my/symlink

пятница, 6 апреля 2018 г.

Java: залогировать стек текущего потока

Задача

Залогировать стек текущего потока.

Решение

Немного неочевидное, т.к. Thread имеет метод dumpStack(), который печатает стек в поток ошибок, а нам надо задействовать логгер. Получилось так:
        StringWriter strWr = new StringWriter();
        PrintWriter writer = new PrintWriter(strWr);
        new Throwable().printStackTrace(writer);
        logger.severe(strWr.toString());

вторник, 3 апреля 2018 г.

Oracle Weblogic: ALTER SESSION-команды в Init SQL

Задача - в качестве Init SQL необходимо выполнить 2 ALTER SESSION-команды
Решение - ALTER SESSION-команды в Init SQL заворачиваем в анонимный PL/SQL-блок, а внутри него каждую команду - в execute immediate:
SQL BEGIN execute immediate('alter session set ...');execute immediate('alter session set ...'); END;

Oracle: посчитать число индексов по char/varchar-колонкам

SELECT COUNT(DISTINCT i.INDEX_NAME)
FROM dba_ind_columns i
    JOIN dba_tab_columns c
        ON (c.TABLE_NAME = i.TABLE_NAME AND c.OWNER = i.TABLE_OWNER AND c.COLUMN_NAME = i.COLUMN_NAME)
WHERE
    (UPPER(c.DATA_TYPE) LIKE 'VARCHAR%'
        OR UPPER(c.DATA_TYPE) LIKE 'CHAR%')