Как стать автором
Поиск
Написать публикацию
Обновить

SMC — оболочка для модульных конструкций

Доброго времени суток.

Я являюсь автором программы SMC (Shell for module constructions) – оболочки для модульных конструкций. Далее постараюсь вкратце рассказать о ней, зачем она нужна, а так же показать как её использовать.

Основная идея — комбинируя существующие куски кода (утилиты, классы или библиотеки) создавать полноценные программы. Наиболее ярко такой подход применялся в *nix системах, когда для решения той или иной задачи в скрипте комбинировались вызовы маленьких утилит. SMC продолжает эту идею, внося ряд улучшений, правил и интерфейсов.

Программа бесплатна.

Немного терминов


Модули — обособленная подпрограмма, написанная на одном из поддерживаемых языков (java, python, js, cpp), соблюдающая ряд требований и упакованная в определенный формат (расширение smcm).

Приложение — самостоятельная программа, собранная из экземпляров модулей, имеющее свое описание, настройки и органы управления (можно запустить, остановить, установить, удалить). Особенность модульных приложений — возможность в любой момент изменить приложение на уровне модулей (добавить, удалить, изменить параметры), без ограничений.

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

Особенности системы


  • Интерфейс для приложений, позволяющий использовать готовые модульные приложения знакомым образом.
  • Встроенный репозиторий приложений и модулей позволяет установить проверенные приложения и модули из облачного хранилища.
  • Динамическая загрузка/выгрузка модулей и приложений.
  • Открытый код программ — можно в любой момент посмотреть и изменить любую программу.
  • Динамическое изменение программ. Изменение, даже значительное, элементов программы, как правило, не требует перезагружать программу целиком.
  • Встроенное хранилище данных позволяет просматривать данные, сгенерированные каждым модулем в процессе работы. Помимо прочего, её можно использовать, например, в качестве системы логирования.
  • Клиент-серверная архитектура позволяет запускать серверную и клиентскую часть на разных машинах.
  • Графический и консольный клиент.
  • Унифицированный интерфейс модулей. Освоившись с особенностями работы в системе, изучение новых модулей и разработка программ с ними становится легким делом. Не зависимо от внутренней сложности модулей, их внешний интерфейс будет понятен.
  • Самодокументированные модули. Все что необходимо знать о модуле предоставляет сам модуль посредством описания и помощи через стандартный интерфейс.

Как использовать


Установка

скачайте файл с сайта: www.smcsystem.ru/download/smc_full.zip
и разархивируйте его:
для Windows — C:\Program Files
для Unix-like — /opt

для запуска сервера:
для Windows — C:\Program Files\smc\smc_server\server.bat
для Unix-like — /opt/smc/smc_server/server.sh

для запуска клиента:
для Windows — C:\Program Files\smc\smc_client\start.bat
для Unix-like — /opt/smc/smc_client/start.sh

более подробно это расписано в документе: www.smcsystem.ru/documents/install_ru.pdf

Работа с приложениями


В статье опишу лишь один аспект использования системы — работу с уже созданными приложениями.

При запуске клиента (графического) открывается вкладка Приложения. При первом запуске установленных приложений у нас нет. Снизу нажмите кнопку Установить из репозитория.

Выделите TextEditorWindow и нажмите кнопку установить. У вас в списке появится редактор. Окно репозитория пока можно закрыть. При выделении приложения в основном окне появляется дополнительная панель с информацией о приложении и органами управления.

Для запуска приложения нажмите кнопку Запустить.
Стоит заметить что само приложение текстового редактора примитивно, но к нему есть ряд дочерних приложений — плагинов, увеличивающих функциональность. Поставите их из репозитория (для этого надо раскрыть текстовый редактор).

Как видно, работа с приложениями организована знакомым образом.

Для кого предназначена


здесь я напишу то как сам это вижу. тем не менее считаю что сфер применения куда больше.

  • Пользователи приложений. Для них система — еще один лаунчер на рабочем столе.
  • Программисты модулей на одном из поддерживаемых языков (сейчас это java, python, js, cpp). Думаю для многих будет интересен подход разбиения монолитной программы на обособленные куски и затем из них уже собрать готовую программу — именно так проектируют архитекторы сложные системы.
  • Так же, возможно, эта система будет интересна для программистов на скриптовых языках в качестве платформы для распространения на клиентские компьютеры — пользователям не нужно ставить node.js и тп, они просто ставят нужную программу (необходимые модули установятся автоматически).
  • Бизнес пользователи. Любое приложение можно посмотреть в дизайнере и там же отредактировать, зачастую без прекращения её работы. Плюс все коммуникации между экземплярами модулей можно сохранять, и в дальнейшем, проанализировать.
  • В качестве сервера приложений. Систему можно представить в виде лайтового сервера
    приложений. Любой модуль и приложение можно динамически загружать/удалять.

Сайт проекта
Документы

Если у вас возникнут вопросы, пожелания, замечания — пишите, пожалуйста, постараюсь ответить на всё.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.