23 февр. 2014 г.

К нам на сайт вот-вот заглянет миллионный посетитель!

19 февр. 2014 г.

I Am A Ukrainian

Из этих людей можно делать гвозди

Руками остановить БТР. Никто не победит народа, который сражается за свою свободу.

10 февр. 2014 г.

Циклическое сканирование таблиц документов

После упрощения задачи единственная сложность, которая осталась, поиск ссылок на документы в удаляемом периоде.

Пусть, H1, H2, H3... HN -- таблицы шапок документов и связанные с ними 1-к-1 (или "нашей" связью 1-к-1, как в USR$INV_ADDINFO). P1, P2, P3... PN -- таблицы позиций документов и связанные с ними 1-к-1. H1K1, H1K2... H1KN -- поля ссылки на документ в таблице H1. P1K1, P1K2... P1KN -- поля ссылки на документ в таблице P1.

Тогда алгоритм выглядит следующим образом:

  1. Формируем массив ИД документов, которые остаются в БД:

    SELECT SUM(g_his_add(1, id))
    FROM gd_document
    WHERE documentdate >= :D


    Обратите внимание, что и шапки и позиции сразу попадут в выборку, так как у позиции документа дата обязательно совпадает с шапкой.
  2. Организуем цикл по таблицам H. Для каждой формируем и выполняем запрос:

    SELECT
    SUM(g_his_add(1, HjK1)),
    COUNT(HjK1),
    SUM(g_his_add(1, HjK2)),
    COUNT(HjK2),
    ...
    FROM Hj
    WHERE g_his_has(1, documentkey)


    Важно собрать все поля в один запрос, чтобы обойтись только одним сканом таблицы.

  3. Для позиций:

    SELECT
    COUNT(*), SUM(g_his_add(1, documentkey)),
    SUM(g_his_add(1, PjK1)),
    COUNT(PjK1),
    SUM(g_his_add(1, PjK2)),
    COUNT(PjK2),
    ...
    FROM Pj
    WHERE g_his_has(1, masterkeykey)


  4. Если после обработки всех таблиц шапок и всех позиций, все суммы сложились в ноль, то значит ни одной записи не добавилось к сохраняемому множеству ИД. Если больше нуля, то повторяем, начиная с шага 2.
  5. Если после обработки таблицы мы получили:

    COUNT(HjKi)- SUM(g_his_add(1, HjKi)) = 0

    То такую колонку исключаем из дальнейшей обработки. Если в таблице исключены все колонки, то в дальнейшем такую таблицу не обрабатываем.

5 февр. 2014 г.

Перезапись объекта по потенциальному ключу

При загрузке объектов приоритет имеет поиск по потенциальному ключу (там, где перекрыт метод CheckTheSameStatement) перед поиском по РУИДу. Например, пусть у нас имеется исходная база данных с двумя отчетами:

Разработчик копирует ее себе на локальную машину:

...и производит доработку: удаляет отчет "Реестр" и переименовывает отчет "Новый реестр" в просто "Реестр":

Сохраняет доработанный отчет в ПИ и загружает его на исходную БД. Для отчетов у нас определен поиск объектов по имени в пределах одной папки. Т.е. будет найден отчет с именем "Реестр" и перезаписан. Попутно, его РУИД_1 заменится на РУИД_2 из файла.

Перезапись РУИДа означает, что исходный отчет "Новый реестр" вообще останется без РУИДа, потому что РУИД_2 теперь указывает на отчет "Реестр":

Так что будьте аккуратнее с переименованием объектов и следите за тем, что система пишет в лог при загрузке пространства имен.

Наконец-то, LibreOffice начал использовать Firebird вместо какой-то Java-мути.
This allows creation of databases that perform many times faster than the previous built-in HSQLDB.
Кто бы сомневался.
We plan to phase HSQLDB out over the next few releases, and provide a smooth migration path to Firebird.

3 февр. 2014 г.

Боты пытаются пробить Gedemin Web Server

[02/Feb/2014 03:23:56] 81.17.28.108 /cgi-bin/php
[02/Feb/2014 03:23:56] 81.17.28.108 /cgi-bin/php5
[02/Feb/2014 03:23:56] 81.17.28.108 /cgi-bin/php-cgi
[02/Feb/2014 03:23:56] 81.17.28.108 /cgi-bin/php.cgi
[02/Feb/2014 03:23:56] 81.17.28.108 /cgi-bin/php4
[02/Feb/2014 06:22:11] 124.194.118.194 phpTest/zologize/axa.php
[02/Feb/2014 06:59:11] 175.115.53.237 w00tw00t.at.blackhats.romanian.anti-sec:)
[02/Feb/2014 06:59:12] 175.115.53.237 phpmyadmin/scripts/setup.php
[02/Feb/2014 06:59:12] 175.115.53.237 phpMyAdmin/scripts/setup.php
[02/Feb/2014 06:59:13] 175.115.53.237 mysqladmin/scripts/setup.php
[02/Feb/2014 06:59:14] 175.115.53.237 pma/scripts/setup.php
[02/Feb/2014 07:04:09] 97.66.248.195 HNAP1/
[02/Feb/2014 15:53:33] 1.245.71.56 manager/html
[02/Feb/2014 21:13:44] 203.113.174.72 phpTest/zologize/axa.php
[03/Feb/2014 00:50:07] 175.115.53.237 w00tw00t.at.blackhats.romanian.anti-sec:)
[03/Feb/2014 00:50:08] 175.115.53.237 phpmyadmin/scripts/setup.php
[03/Feb/2014 00:50:09] 175.115.53.237 phpMyAdmin/scripts/setup.php
[03/Feb/2014 00:50:10] 175.115.53.237 mysqladmin/scripts/setup.php
[03/Feb/2014 00:50:10] 175.115.53.237 pma/scripts/setup.php
[03/Feb/2014 06:42:04] 24.51.148.129 HNAP1/