Страницы

18 июня 2012 г.

PostgreSQL. Обработка исключений внутри функций.

Добро пожаловать в "Будни программиста"
       Сегодня вернулся к написанию хранимых процедур на plpgsql. После долгого периода некоторые моменты изрядно подзабылись. В том числе и синтаксис, да и вообще механизм обработки исключений. В связи с этим, хочу создать этот пост-пометку. Надеюсь он мне больше не понадобится, ибо если я забуду это еще раз, надо будет бежать к хирургу и просить вставить еще пару планок памяти :).

       Общий синтаксис функции с обработчиком исключений выглядит следующим образом:

[ DECLARE
 declarations ]
BEGIN
 statements
EXCEPTION
 WHEN condition [ OR condition ... ] THEN
  handler_statements
 [ WHEN condition [ OR condition ... ] THEN
  handler_statements
   ... ]

END;

16 июня 2012 г.

pgScript. Генераторы случайных последовательностей. Дата и время

       Приветствую Вас с своем скромном блоге.
       Сегодня мне хотелось бы продолжить ряд статей (который дополняется медленно, но верно :) ) посвященных генерации случайных последовательностей в pgScript. Далее пойдет речь о последовательностях типа Data, Time и Timestamp. 
Итак, начнем... Синтаксис определения генераторов всех выше указанных типов идентичен:
DATE(min, max, [sequence], [seed])
TIME(min, max, [sequence], [seed])
DATETIME(min, max, [sequence], [seed]) 
где,
min - Минимальная граница диапазона генерации значений;
max - Максимальная граница диапазона генерации значений;
[sequence] - необязательный параметр, устанавливает способ генерации. Различает только нулевое и ненулевое значение. 
[seed] - необязательный параметр, указывает функции номер значения в последовательности которое должна вернуть функция. Это целесообразно использовать в случаях когда необходимо генерировать одинаковое значение при нескольких обращениях к одному генератору, иначе (по умолчанию) при каждом обращении будет генерироваться произвольное значение.

7 июня 2012 г.

Регистрация COM сервера в системе

       Здравствуйте.
       Тем, кто уже работал с COM-серверами и успешно переносил их на другие машины - можно не читать.
       На начальном этапе программеров смущает тот факт, что при переносе на новую машину клиенты их COM-серверов (я работал только Out-precess) выдают ошибку "Interface not supported". Лично мой сервер является приложением, а не библиотекой. Где-то я вычитал что сервера-приложения сами себя регистрируют при запуске, что меня в конечном итоге и сбило с толку. При переносе на другую машину столкнулся с вышеописанной ошибкой. Все оказалось не так просто...
Итак, COM-сервера бывают 2-х видов:
  • В виде DLL;
  • В виде исполняемого файла.

4 июня 2012 г.

COM - объекты. Параметры фабрики классов.

Приветствую Вас в блоге "Будни программиста".

       Я заметил, что многие задают вопросы типа "А как сделать чтобы к одному Com-серверу можно было подключиться множеством клиентов?", "А как сделать чтоб для всех клиентов создавался один объект на сервере?" и т.д.
       Совсем недавно, немного познакомившись с технологией COM, я и сам искал ответы на эти вопросы. В этом посте я постараюсь подвести итог моих поисков.
Итак, имеется два параметра фабрики классов управляющие генерацией COM-объектов на сервере:
  • Instancing;
  • Threading Model;

3 июня 2012 г.

GRUB. Убираем дублирование вариантов загрузки ОСей.

       Доброго времени суток. Добро пожаловать в мой скромный блог.

       Речь пойдет и Linux Ubuntu и загрузчике GRUB который позволяет управлять вариантами загрузки системы (или систем если их несколько на ПК).
       Итак, в линуксе я относительно недавно и потому был очень удивлен, увидев что со временем вариантов загрузки системы становится все больше и больше. Варианты загрузки появляются при обновлении ядра Linux. Новое ядро прописывается в конфиг загрузчика, а старая версия не удаляется... Вот как раз 3 мин. назад установилось новое обновление, которое потребовало перезагрузки, сейчас ребутнусь, заодно и сделаю фото для наглядности. :)
Перезагрузка принесла нам фото, вот так это выглядит: