Разработка в InterSystems Caché под Linux
В продолжение статьи про установку Caché на Linux опишу, какие IDE есть в арсенале разработчика на технологиях InterSystems, выбравшего Llinux в качестве домашней системы. На текущий момент большого разнообразия возможностей не наблюдается, возможно потому, что официальная среда разработки Caché Studio поставляется только для семейства операционных систем Windows. Но варианты все же есть. Под катом о том, что уже доступно сейчас, и о том, чего возможно стоит ждать в будущем.Caché Studio Начнем с официальной IDE InterSystems. Caché Studio — это Windows приложение, поэтому для запуска ее под Linux потребуется Wine. Дистрибутив можно скачать здесь, пакет Client Components, 32 или 64 битный дистрибутив. Описание установки Wine здесь приводить не буду — его несложно найти в сети. После установки Wine устанавливаем Studio так же, как если бы мы это делали под Windows. Скажу честно, на CentOS 6.5 у меня установщик почему то не завелся, а вот на Ubuntu уже давно вполне успешно работает. Субъективные впечатления — есть проблемы с производительностью, а также не вполне адекватно работают веб-визарды студии для создания новых классов и для работы с шаблонами кода. Так что Studio под Wine очень удобным инструментом для разработки под Linux в Caché я бы не назвал.NBStudio Работая в таких популярных Java IDE как NetBeans, Eclipse, Intelliji IDEA, возникает соблазнительная мысль использовать некоторую их функциональность при разработке кода на Caché. Поэтому я решил попробовать создать альтернативу студии, включающую наиболее востребованные возможности современных IDE, которых нет в Caché Studio. Так я начал проект NBStudio — IDE для Caché на основе платформы NetBeans. Проект с открытыми исходниками, выложен на гитхабе. К сожалению коммиты не частые, но над проектом продолжаю работать. Свободного времени, которое могу потратить на проект не так много, потому очень рад буду любой помощи в виде пулл реквестов и любых предложений по развитию и дизайну, конечно же не откажусь и от материальной поддержки.Первая цель проекта — повторить функциональность оригинальной студии.На сегодня реализовано:
Просмотр и редактирование кода классов и mac-рутин Подсветка кода и некоторых ошибок. Грамматика описана на ANTLR4, реализована не полностью. При подсветке кода и ошибок не все еще работает идеально. Диалоговое окно открытия файла, похожее на то что имеем в студии. Фильтры файлов, кнопки фильтров, выбор подключения. Возможность работы сразу с несколькими серверами, областями (в оригинальной студии возможно только одно одновременное подключение). В планах: Работа с проектами: открыть, создать, управление содержимым проекта. (На данный момент в разработке). Создание новых классов, рутин и т.д. (На данный момент в разработке). Инспектор кода в классе. Поддержка других MUMPS систем. Поддержка разных версий. На данный момент поддерживается версия Caché 2013.1. Шаги по установке NBStudio на Linux CentOS 6.5.Скачать последний релиз NBStudio можно здесь. Для Linux берем nbstudio-linux.sh. Перед установкой NBStudio нужно установить Oracle JavaJDK 7, можно взять здесь. После установки Java запускаем установку NBStudio, установщик графический, как и у NetBeans, довольно простой — затруднений вызвать не должен.Запускаем — если кликнуть на Connections, можно вызвать окно создания нового подключения.
После подключения появляется список классов и рутин.
Еще скриншоты Диалог открытия файлов, доступны фильтры, возможность отобразить системные классы/рутины, и сгенерерированные.
Диалог открытия проекта.
Просмотр открытого проекта.
Создание нового файла (пока в работе).
SublimeCache Это проект Брэндона Хорста, выложен на гитхабе здесь. Как следует из названия, это SublimeText плагин для разработки с Caché. Для работы требуется установленная серверная часть в Caché не ниже 2014.1, которую можно взять здесь. Серверная часть представляет из себя REST приложение, осуществляющее доступ к необходимым функциям.Доступные на данный момент возможности: Подключение к нескольким областям на разных инстансах. Загрузка и выгрузка кода классов и рутин. Возможность открыть класс в браузере, для (CSP/ZEN/SOAP). Импорт/Экспорт в формате XML. Выполнить SQL-запрос и увидеть результат прямо в Sublime. Установка Будем считать, что SublimeText 3 у вас уже установлен, если нет, взять его можно здесь. Необходимо так же, чтобы был установлен плагин PackageControl — про его установку, и где взять дистрибутив описано здесь.Установка PackageControl Есть два способа установки этого плагина: Вручную Скачать файл плагина по ссылке. Меню Preferences > Browse Packages… Откроется папка, там подняться на уровень выше и войти в папку Installed Packages, в эту папку перенести скаченный файл плагина. Перезапустить Sublime Text Простой способ Открываем консоль Ctrl+` или меню View > Show ConsoleВ консоли вводим, текст: import urllib.request, os, hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path (); urllib.request.install_opener (urllib.request.build_opener (urllib.request.ProxyHandler ())); by = urllib.request.urlopen ('http://sublime.wbond.net/' + pf.replace (' ', '%20')).read (); dh = hashlib.sha256(by).hexdigest (); print ('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh!= h else open (os.path.join (ipp, pf), 'wb').write (by) Все, после этого плагин Package Control готов к работе. Установка плагина SublimeCache Добавить репозиторий: Ctrl+Shift+P > Add repository > github.com/brandonhorst/SublimeCache Установка плагина: Ctrl+Shift+P > Install Package > SublimeCache Перед началом работы нужно установить серверную часть. Автор пишет в ограничениях серверной части, что работать будет только под Windows. Связано это видимо с тем, что под Linux еще не полностью работает %Compiler.UDL.TextServices.cls. А именно, из того что я заметил, не совсем корректна работа с блоками XData. И процесс установки, который предлагается самим автором не проходит полностью, так как он пользуется именно этим способом для установки кода.Я загрузил весь код, экспортировал в XML и выложил здесь.Установить его теперь можно одной строчкой. zn »%SYS» s b=##class (SYS.Database).%OpenId ($zu (12, «cachelib»)), bk=b.ReadOnly, b.ReadOnly=0 d b.%Save () s s=«Github_CDEV», sn=»%CDEV.Server», u=»/csp/sys/dev» d ##class (Security.SSLConfigs).Create (s),##class (Security.Applications).Copy (»/csp/sys», u, «CDev REST Application»),##class (Security.Applications).Get (u,.p) s p («DispatchClass»)=sn d ##class (Security.Applications).Modify (u,.p) s r=##class (%Net.HttpRequest).%New (), r.Server=«gist.githubusercontent.com», r.Https=1, r.SSLConfiguration=s d r.Get (»/daimor/11107056/raw/8b505a0b3172d1c0c9c9ad84cc4ab80e9714f9a8/%25CDEV.XML») d $system.OBJ.LoadStream (r.HttpResponse.Data, «c-d») s b.ReadOnly=bk d b.%Save () После выполнения кода, можно проверить его в работе, открыв API по ссылке http://localhost:57772/csp/sys/dev/, проверьте правильность порта сервера Caché в вашем случае.Сервер должен дать такой ответ: {«namespaces»:»/csp/sys/dev/namespaces», «version»: «v0.0.3»} Теперь можно настроить плагин: Ctrl+Shift+P > Cache: Server Configuration Server. Должно быть примерно такое содержимое: { «current-server»: «cache», «servers»: { «cache»: { «host»:»127.0.0.1», «password»: «SYS», «username»:»_SYSTEM», «web_server_port»:»57772» } } } После сохранения настроек, можно выбрать подключение (Ctrl+Shift+P > Cache: Change Server) и рабочую область (Ctrl+Shif+P > Cache: Change Namespace).Загрузка файла: Ctrl+Shift+P > Cache: Download File. Может занять некоторое время, пока Sublime загрузит весь список.У меня сначала возникли проблемы с подсветкой синтаксиса.Решение Создать папку/.config/sublime-text-3/Packages/InterSystems Cache/CacheColorsв нее скачать содержимое репозитория github.com/seanklingensmithперезапустить Sublime Text
Ctrl+Shift+P > Cache: Export File To XML. Показывает открытый файл в формате XML.
Можно поменять текст файла и загрузить обратно на сервер: Ctrl+Shift+P > Cache Upload and Compile File.Так же можно просмотреть и сгенерированный код (другой код): Ctrl+Shift+P > Cache: Open Generated Files
В общем, вполне себе хорошая альтернатива. Понятно, что решение еще требует доработки, но уже вполне работоспособный инструмент.
На этом все проекты IDE Caché под Linux, о которых я знаю. Если вы знаете какие-то еще, будет любопытно увидеть в комментариях.