26 июн. 2011 г.

Структура презентации проекта

  1. Общая информация о предприятии. Название. Сфера деятельности. Базовые показатели: численность персонала, объемы выпуска, количество единиц машино-тракторного парка и т.п. Где находится. Как добраться. (Только для первой презентации).
  2. Уровень автоматизации предприятия. История взаимоотношений (для наших клиентов). Установленное ПО. Ответственные лица. Базовые параметры: количество компьютеров, наличие сети, конфигурация сервера и т.п.
  3. Действующее соглашение с клиентом. Условия подписанного договора. Сроки.
  4. Информация об автоматизируемом участке. Описание технологического процесса. Участники технологического процесса.
  5. Текущая организация документоооборота и информационных потоков на автоматизируемом участке. Участники, с подробным описанием роли и выполняемых операций каждого.
  6. Реализуемая организация документооборота и информационных потоков. Участники, с подробным описанием роли и выполняемых операций каждого. Подробное, пошаговое описание действий при ежедневной эксплуатации, закрытии периода и построении отчетных форм.
  7. Информация по проекту. Какие базовые настройки будут использованы. Какие настройки будут разработаны специально для клиента. Структуры данных. Документы. Алгоритмы. Типовые хозяйственные операции. Корреспонденция счетов. Взаимодействие и обмен данными со сторонним ПО. Сопряжение с действующими модулями в рамках платформы Гедымин. Подключение внешнего оборудования.
  8. Выходные формы. Образей для каждой. Информация на основании чего строится форма, как вычисляется/заполняется каждое поле.
  9. Таймлайн. Порядок выполнения работ. Сроки. Ответственные.

25 июн. 2011 г.

Быстродействие триггера на коммит транзакции

Насколько замедлит выполнение кода наличие триггера на коммит транзакции?

Тестовый пример 10 000 раз извлекает имя контакта с идентификатором 650 001.
EXECUTE BLOCK
AS
  DECLARE VARIABLE I INTEGER = 0;
  DECLARE VARIABLE S VARCHAR(60);
BEGIN
  WHILE (:I < 10000) DO
  BEGIN
    EXECUTE STATEMENT
      'SELECT name FROM gd_contact WHERE id=650001'
    WITH COMMON TRANSACTION
    INTO :S;
    I = :I + 1;
  END
END
На общей транзакции время выполнения у нас составило 367 мс. Теперь повторим тоже самое, но каждый селект будет выполняться на своей, автономной транзакции:
EXECUTE BLOCK
AS
  DECLARE VARIABLE I INTEGER = 0;
  DECLARE VARIABLE S VARCHAR(60);
BEGIN
  WHILE (:I < 10000) DO
  BEGIN
    EXECUTE STATEMENT
      'SELECT name FROM gd_contact WHERE id=650001'
    WITH AUTONOMOUS TRANSACTION
    INTO :S;
    I = :I + 1;
  END
END
Время выполнения составило 13 000 мс. Как видно, 10 000 стартов и коммитов транзакции не даются нам даром. Создадим пустой триггер на коммит транзакции:
CREATE OR ALTER TRIGGER tc_test
  ACTIVE
  ON TRANSACTION COMMIT
  POSITION 9000
AS
BEGIN
END
Время выполнения с таким триггером также составляет 13 000 мс. Для сравнения добавим в триггер операторы:
CREATE OR ALTER TRIGGER tc_test
  ACTIVE
  ON TRANSACTION COMMIT
  POSITION 9000
AS
  DECLARE VARIABLE S VARCHAR(255);
BEGIN
  S = RDB$GET_CONTEXT('USER_TRANSACTION', 'TEST');
  IF (:S IS NULL) THEN
  BEGIN
    S = 'A';
  END
END
Время выполнения увеличилось на 700 мс (по 0.7 мс в расчете на одну итерацию).

Вывод: Для Firebird 2.5 само по себе наличие триггера на коммит транзакции не увеличивает время выполнения кода.

23 июн. 2011 г.

Жизнь под оккупацией

22 июня. День нападения Германии на Беларусь во второй мировой войне. Семдесят лет спустя сотни фашистов в черном вели настоящую охоту за людьми в центре Минска. Хватали, избивали, кидали в автозаки. Около полутысячи задержанных по всей стране.

Шокирующие снимки от Антона Мотолько. Извините, но это уже не люди. Это звери в униформе.

Для справки, Конституция Республики Беларусь:

Статья 33. Каждому гарантируется свобода мнений, убеждений и их свободное выражение. Никто не может быть принужден к выражению своих убеждений или отказу от них. Монополизация средств массовой информации государством, общественными объединениями или отдельными гражданами, а также цензура не допускаются.

Статья 35. Свобода собраний, митингов, уличных шествий, демонстраций и пикетирования, не нарушающих правопорядок и права других граждан Республики Беларусь, гарантируется государством. Порядок проведения указанных мероприятий определяется законом.

UPD: Прошли суды над незаконно задержанными.