Как стать автором
Обновить

Компания InterSystems временно не ведёт блог на Хабре

Сначала показывать

Примеры генерации и отправки Email средствами СУБД Caché

Время на прочтение6 мин
Количество просмотров4.2K
Нередко возникает необходимость в автоматической генерации и отправке электронных писем на основе данных из БД. Это могут быть различные отчёты с таблицами, диаграммами или уведомления о наступлении каких-то событий.
Всё это можно реализовать непосредственно в самой СУБД Caché, выступающей здесь и как почтовый сервер приложений.

Далее рассмотрим следующие примеры:
  • создание текстового письма
  • создание письма в формате HTML
  • добавление вложений
  • добавление изображений в само тело письма
  • другие примеры
Читать дальше →
Всего голосов 3: ↑2 и ↓1+1
Комментарии44

Синхронизация процессов при распараллеливании задачи средствами Caché Event API

Время на прочтение5 мин
Количество просмотров3.6K
Сегодня наличие многоядерных, многопроцессорных и многоузловых систем является уже нормой при обработке большого объёма данных.
Как же можно задействовать все эти вычислительные мощности? Ответ очевиден — распараллелив задачу.
Но тут же встаёт другой вопрос: а как синхронизировать сами подзадачи?
Об этом и пойдёт речь далее
Всего голосов 3: ↑3 и ↓0+3
Комментарии4

Разработка в Caché Studio с использованием TortoiseGit

Время на прочтение4 мин
Количество просмотров7.5K
Caché-Git — это модуль контроля версий для Caché Studio, который обеспечивает вызов диалоговых окон TortoiseGit непосредственно из Studio и полуавтоматическую синхронизацию рутин между Caché и локальным репозиторием.

В каждой области выбираются пакеты, проекты, классы, рутины, dfi-файлы, csp-страницы, csp-приложения которые будут остлеживаться Caché-Git.

Всякий раз при сохранении отслеживаемой программы, она будет экспортироваться на диск в репозиторий. При открытии программа будет загружаться из репозитория, если версия, находящаяся в нём свежее.

Caché-Git работает только на компьютерах, на которых установлен и сервер и клиент Caché. Caché-Git не будет работать при соединении с удалённым сервером.

Где взять


Репозиторий с Caché-Git находится по адресу github.com/intersystems-ru/cache-tort-git. Там же есть wiki, в которой описаны шаги по установке и использованию
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Serenji: IDE для M-технологий

Время на прочтение2 мин
Количество просмотров3.9K
Злые языки вечно утверждают, что среда Caché Studio, увы, не дотягивает до уровня современных IDE.
В кач-ве альтернативной среды разработки мне порекомендовали Serenji
Читать дальше →
Всего голосов 6: ↑3 и ↓30
Комментарии10

Zen Reports и %XML.Writer для генерации отчётов Excel в Caché

Время на прочтение25 мин
Количество просмотров6.3K
Как известно MS Excel последних версий поддерживает описание структуры документа в формате xml. Это обстоятельство позволяет создавать отчеты в Excel с помощью генерации xml-файлов. В СУБД Caché существует несколько способов создания xml. В этой статье будут рассмотрены два, возможно наиболее удобных, способа эффективной программной генерации отчетов в MS Excel: с помощью Zen Reports и с использованием класса %XML.Writer.
Читать дальше →
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

SQL-доступ к NoSQL-данным: реализация SQL-процедуры в Caché с динамическим определением возвращаемых метаданных

Время на прочтение13 мин
Количество просмотров5.5K
Как известно, Caché можно использовать как реляционную СУБД, в том числе через JDBC/ODBC драйверы, с возможностью исполнения произвольных SQL-запросов и вызова SQL-процедур.
Известно также, что все данные в Caché хранятся в многомерных разреженных массивах — глобалах. Это позволяет в случае недостаточной производительности отдельно взятой SQL-процедуры не использовать стандартный CachéSQL-движок, а переписать ее код исполнения на языке серверной бизнес-логики Caché ObjectScript (COS), в котором можно реализовать оптимальный алгоритм выполнения SQL-процедуры, часто используя более оптимальные NoSQL-структуры данных (глобалы).
Однако в стандартной библиотеке классов Caché существует одно ограничение: для SQL-процедур, в которых отбор выполняется самописным COS-кодом, необходимо определять набор возвращаемых полей на этапе компиляции — т.е. нет возможности динамически задать метаданные для SQL-процедуры, работающей с NoSQL структурами.

О том, как снять это ограничение, рассказано под катом.
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии5

Реализация фоновой загрузки файлов на сервер Caché

Время на прочтение10 мин
Количество просмотров5.2K
У разработчиков веб-приложений на Caché и Ensemble часто возникает задача «file upload» — загрузки файлов с браузера. Недавно на форуме по Caché на SQL.ru снова возникло несколько вопросов о том, как сделать фоновую загрузку файлов. Решил описать как это можно сделать с использованием технологий CSP и ZEN.
Читать дальше →
Всего голосов 6: ↑5 и ↓1+4
Комментарии1

InterSystems набирает стажеров

Время на прочтение1 мин
Количество просмотров4.5K
В компании InterSystems открывается новый цикл набора стажеров.
Мы рассматриваем кандидатов на две площадки – InterSystems Russia в Москве и InterSystems HQ в Кембридже, Массачусетс, США.
Ниже условия прохождения стажировки и подробности.
Читать дальше →
Всего голосов 7: ↑3 и ↓4-1
Комментарии2

Клиент Caché ODBC в Linux

Время на прочтение6 мин
Количество просмотров6.2K
Несколько лет назад заказчик, крупный медицинский центр федерального значения, поручил нам разработать софт, обслуживающий информационные киоски. Внешне киоск напоминает платёжный терминал (только без купюроприёмника), его основная функция, как следует из названия, — предоставление пациентам различной информации, такой как расписание приёма врачей, услуги и их стоимость, и так далее.
По понятным причинам для киоска потребовалось разработать упрощённый интерфейс пользователя, который было решено реализовать как web-приложение. Имея в штате опытных web-программистов, уверенно владеющих php, решили (для скорости) поручить им его написание, организовав связь с базой данных нашей медицинской системы. Рассматривалось 3 варианта взаимодействия:
  • ODBC
  • JDBC
  • web-сервисы.
Web-программисты предпочли ODBC как наиболее простой с их точки зрения вариант, и альфа-версия киоска довольно быстро увидела свет. Однако вскоре выяснилось (surprise!), что php-код должен работать не под Windows, как это было у разработчика, а под Linux, несмотря на то, что в те годы наша медицинская система эксплуатировалась заказчиком на платформе Windows 2008. Чтобы «подружить» всех членов триады (Linux – ODBC-драйвер Caché — php5) потребовались определённые усилия. Последовательность проделанных действий я зафиксировал в виде наброска к данной статье, которую и предлагаю вашему вниманию.
Читать дальше →
Всего голосов 10: ↑6 и ↓4+2
Комментарии17

Преодоление разрыва удаленного соединения при отсутствии действий пользователя

Время на прочтение7 мин
Количество просмотров77K
При работе с GUI и терминальными приложениями нередко случается, что пользователь, работая в режиме удаленного доступа (как правило, через Интернет), покинув компьютер минут на 15, по возвращении обнаруживает, что программа зависла. На любое действие она отвечает ошибкой, содержащей примерно такие фразы: «Потеряна связь с сервером», "[WINSOCK] virtual circuit reset by host" и т.п. Наблюдается такое и при выполнении «долгоиграющих» методов (запросов к серверу), в которых не предусмотрен вывод прогресс-бара или какая-либо интерактивность.

Данная проблема характерна не только для GUI и терминальных решений на базе СУБД Caché и Ensemble компании InterSystems, а вообще для любого клиент-серверного взаимодействия по протоколу TCP/IP. Обычно она решается на прикладном уровне путём периодического обмена пустыми сообщениями специального вида, предназначенными лишь для того, чтобы просигнализировать о том, что приложение «живо».

Ниже о том, как можно решать эту проблему без программирования.
Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии2

Конкурс студенческих проектов InterSystems CIS Student Innovator Awards 2012

Время на прочтение2 мин
Количество просмотров2.2K
Открыт прием заявок на ежегодный конкурс программных решений
CIS Students Innovator Awards 2012.
Мы рассматриваем заявки на программные проекты на базе технологий InterSystems: Caché, DeepSee, Ensemble, GlobalsDB.
Прием заявок до 10 декабря.
Подробнее об условиях и темах конкурса
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Каша быстрого приготовления — делаем CRUD в Caché с помощью jqGrid

Время на прочтение10 мин
Количество просмотров6K
Речь пойдет о создании веб-приложения на Intersystems Caché с использованием javascript плагина для отображения табличных данных — jqGrid. Плагин часто упоминается на Хабре, поэтому основное внимание будет уделено особенностям его использования со стороны Caché
Преимущества использования jqGrid:
  • разгрузка сервера от клиентской логики
  • возможность использования различных форматов обмена данными (xml, json)
  • различные способы отображения данных (таблица, дерево, вложенные таблицы)
  • готовый функционал по изменению данных – редактирование в строках, редактирование в формах, проверка данных
  • большое количество настроек, опций и событий с документацией, примерами и исходным кодом
  • богатый пользовательский функционал — сортировка, группировка, фильтрация, поиск, итоги, настройка отображения столбцов (видимость, порядок, размеры), поддержка множества тем визуального оформления от jqueryui

Состав блюда: хранимый класс с данными, класс-страница, класс-сервис данных. Необходимые библиотеки и стили подключаются из сетей доставки данных (CDN) и с сайтов разработчиков, поэтому, для работы примера в локальной сети, их необходимо будет скачать из этих источников.

Предупреждение: пример максимально упрощен, рассматривается только малая часть возможностей плагина, но кода все равно много, хотя он и тщательно задокументирован.
Заварим кашу?
Всего голосов 7: ↑6 и ↓1+5
Комментарии9

Грантовая программа InterSystems

Время на прочтение2 мин
Количество просмотров2.5K
Уважаемые студенты, читатели Хабра!
Закончилось скоротечное и беззаботное лето — впереди два долгих семестра напряженной учебы, гранита науки и адреналиновых сессий.
Компания InterSystems предлагает разнообразить учебный процесс и совместить полезное с прибыльным —
принять участие в грантовой программе InterSystems Campus, научиться новым технологиям и заработать неплохую прибавку к стипендии собственным умом.
Читать дальше →
Всего голосов 3: ↑1 и ↓2-1
Комментарии0

СУБД Cache + Erlang

Время на прочтение3 мин
Количество просмотров6.8K
В этой статье я расскажу о том, как мы подружили Cache + Erlang, и зачем нам это нужно. СУБД Cache была выбрана в качестве хранилища данных. Также мы создали и эксплуатируем MCA(Middleware for Cache Applications) — промежуточное программное обеспечение, обеспечивающее конкурентную модель взаимодействия Erlang и Cache.

Для взаимодействия Erlang и Intersystems Cache реализованы возможности:
  • Обрабатывать в Cache сообщения из Erlang, транслируя Erlang tuples (внутренний древовидный формат данных Erlang) в глобалы Cache.
  • Посылать из Cache сообщения процессам Erlang, транслируя глобалы Cache в Erlang tuples.


Разработанное MCA состоит из трёх основных компонент:
  • Message Dispatcher(MD) — управляет обменом сообщениями в конкурентных условиях между различными Erlang-node(EN) и Cache-процессами, обеспечивает кэширование сообщений по определенным правилам. Запускается в соответствующем EN.
  • C-node — обеспечивает подгрузку С/C++ библиотек и обмен сообщениями между ними, взаимодействие системы с shared-memory, EN, CallIn/CallOut (функциональностью, реализованной в Cache на языке С) и т.д. На данный момент к С-node, для веб-приложений, c использованием Cache, нами подключены библиотеки для поддержки XSLT преобразования, обработки регулярных выражений.
  • Porte – шлюз обмена сообщениями (Messaging Gateway) c MD для Cache. Запускается как отдельный background job, который будем называть Porte-job(PJ).

Как это работает?
Всего голосов 15: ↑12 и ↓3+9
Комментарии20

Релиз InterSystems Caché 2012.2

Время на прочтение6 мин
Количество просмотров2.3K
Ключевые новшества:
1. Обработка неструктурированных данных в BI (iKnow + DeepSee).
2. DeepSee Visual Reporting — WYSIWYG-редактор для DeepSee/Zen отчетов в браузере.
3.Поддержка Node.js,
4. Регулярные выражения в Caché ObjectScript
5. Поддержка .NET eXTreme для максимально быстрого прямого доступа к глобалам.
6. Java eXTreme через TCP,
7. Асинхронный rollback для ECP соединений.
Подробности под хабракатом
Всего голосов 2: ↑1 и ↓10
Комментарии1

Разработка в Caché Studio с использованием Subversion

Время на прочтение6 мин
Количество просмотров6.6K

Было разработано расширение Caché Studio, которое называется Caché-SVN. Это расширение позволяет работать с репозиторием (хранилищем) SVN, не покидая Caché Studio. С его помощью можно выполнять checkout, commit и update.

Caché-SVN работает не с отдельными файлами (классами, программами, csp-страницами и т.д.), а с проектом целиком.

Caché-SVN создаёт временную папку на сервере, где установлено Caché, выгружает туда файлы проекта и выполняет svn commit. Аналогично при svn update полученные xml-описания файлов импортируются в Caché.
Читать дальше →
Всего голосов 7: ↑5 и ↓2+3
Комментарии8

Caché + Java + Flex. Особенности интеграции технологий. Часть 3

Время на прочтение11 мин
Количество просмотров3.8K
Как и было обещано во второй части эта статья посвящена исключительно практическим примерам, демонстрирующим особенности взаимодействия Caché + Java + Flex. Начнем с преобразования типов данных на протяжении всей связки. Мы не стали заострять внимание на преобразованиях таких типов данных, как Integer, Float, String, Boolean, поскольку данные типы идентичны в Caché и Java (а в ActionScript все числовые типы переходят в Number). Другое дело коллекции объектов. Их преобразование проходит достаточно нетривиально, поэтому остановимся на них подробнее.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии7

Caché + Java + Flex. Часть 2

Время на прочтение8 мин
Количество просмотров4.3K
В первой части статьи мы рассмотрели комбинацию Caché + Java. Здесь будет показана структура проекта непосредственно реализующего комбинацию Caché + Java + Flex, а также основные инструменты и их настройки, используемые для её реализации. Стоит отметить, что здесь будет приведен лишь общий вид взаимодействия, в то время как, конкретные примеры будут рассмотрены в заключительной части. Начнем с описания модулей, входящих в состав проекта, и постепенно перейдем к особенностям их взаимодействия.
Читать дальше →
Всего голосов 5: ↑3 и ↓2+1
Комментарии0

Caché + Java + Flex, или как мы делали систему управления учебным планированием

Время на прочтение8 мин
Количество просмотров7.6K
В этой серии статей мы постараемся подробно рассмотреть основные аспекты использования данной связки. Мы применили этот комбайн для реализации одной из подзадач проекта по разработке интеллектуальной системы автоматизированного управления учебным планированием. Для лучшего понимания, стоит сказать несколько слов о самом проекте.

Любые незначительные изменения в учебном плане приводят к огромным трудозатратам на его переработку и согласование в службах университета, поэтому заведующие кафедрами неохотно идут на их изменение. Целью проекта является создание агента заведующего кафедрой, который позволит создавать учебный план и вносить в него изменения таким образом, чтобы пользователь не ощущал груз рутинной работы перепроектирования учебного плана в случае внесения определённых корректировок.

По задумке, к каждому участнику процесса формирования учебного плана (например заведующему кафедры) привязывается агент, являющийся помощником и консультантом. В качестве инструмента, позволяющего легко реализовать таких агентов и обработать их поведение, была выбрана платформа JADE (Java Agent Development Framework).
Читать дальше →
Всего голосов 9: ↑6 и ↓3+3
Комментарии14

InterSystems Database Mirroring. Создание и тестирование зеркала. Часть 2

Время на прочтение10 мин
Количество просмотров2.6K
В предыдущей части рассматривалась настройка зеркала — технологии высокой доступности InterSystems Database Mirroring СУБД Caché.
В этой статье будут рассмотрены сценарии перерывов (отказов) и реакция зеркала на них.

Перерывы могут быть как плановые, так и внеплановые.
Плановые — это когда нам нужно остановить сервер для обновления операционной системы, версии СУБД, версии прикладной системы и мы контролируем процесс.

Примеры плановых перерывов:

  • перезагрузка ОС, например для установки обновлений;
  • перезагрузка СУБД;
  • обновление hardware сервера.

Внеплановые — когда происходит нечто, приводящее к невозможности работы сервера с клиентами информационной системы, причём без нашего ведома. Причиной этому могут быть:

  • зависание СУБД;
  • зависание операционной системы;
  • экстренные (Reset, Power Off);
  • выход из строя оборудования сервера;
  • выход из строя сетевого оборудования;
  • война, эпидемия, снежный буран, космоса чёрные дыры.

Читать дальше →
Всего голосов 2: ↑1 и ↓10
Комментарии1