Альфа: SMath Studio 0.85.3578 (18 Октябрь 2009)

Альфа: SMath Studio 0.85.3578 (18 Октябрь 2009) - Сообщения

#1 Опубликовано: 17.10.2009 23:50:24
Andrey Ivashov

Andrey Ivashov

2270 сообщений из 3734 понравились пользователям.

Группа: Super Administrator

Доступна новая альфа версия: SMath Studio 0.85.3578


Цель данного выпуска SMath Studio - познакомить пользователей и сторонних разработчиков с новейшей функцией программы. Теперь SMath Studio поддерживает плагины. Это важнейшее изменение, бесспорно, позволяет расширить функциональность программы за счёт разработки и подключения к программе сторонних дополнений - каждый, кто владеет любым из .Net языков программирования, может привнести что-то новое в проект!

Данная версия программы не является стабильной, а потому может содержать серьёзные ошибки и недочёты существование которых ещё не известно. Старайтесь использовать данный релиз только в ознакомительных целях и для тестирования. Повседневные расчёты рекомендуется выполнять в последней стабильной версии программы. О любой найденной проблеме просьба сообщать в соответствующей ветке форума, с указанием номера версии SMath Studio.

Загрузка



Дополнительно

Инструкция по созданию плагинов, сами дополнения и другие подробности будут добавляться к этой теме по мере их появления. Просьба не сообщать о необходимости дополнительных материалов, т.к. всё, что нужно, уже готовится и будет опубликовано в самое ближайшее время.
#2 Опубликовано: 18.10.2009 00:54:02
Andrey Ivashov

Andrey Ivashov

2270 сообщений из 3734 понравились пользователям.

Группа: Super Administrator

XCas Plugin для SMath Studio Handheld


Плагин расширяет функционал SMath Studio Handheld функциями библиотеки XCas (xcint, xcsolve, xclimit). Для активации данного дополнения, пожалуйста, поместите файлы XCasPlugins.dll и cas.exe (предварительно их необходимо распаковать из архива) в папку "plugins" в установочной директории Вашей копии программы SMath Studio (обычно программа установлена в папке "Program Files\SMath Studio").

Внимание: только для карманной версии программы! Не пытайтесь использовать дополнение на стационарных компьютерах.



Функции

xcint([подынтегральное выражение];[переменная интегрирования]) - Вычисление неопределённого интеграла с помощью XCAS.
xclimit([функция предела],[переменная],[конечное значение]) - Вычисление предела функции с помощью XCAS.
xcsolve([функция],[переменная]) - Решение уравнений с помощью XCAS.

Загрузка

#3 Опубликовано: 18.10.2009 20:26:18
Andrey Ivashov

Andrey Ivashov

2270 сообщений из 3734 понравились пользователям.

Группа: Super Administrator

Инструкция по написанию плагинов к SMath Studio


Целью данной статьи является написание с нуля собственного плагина для программы SMath Studio Desktop для ОС Microsoft Windows, т.к. это требует наименьших усилий со стороны разработчика дополнений. В следующих статьях будет объяснено как планины могут быть написаны для Handheld версии программы под Windows Mobile и для Desktop версии под Linux.

Для написания дополнений к программе SMath Studio необходимо иметь на компьютере установленным следующее программное обеспечение:
  • Microsoft Visual Studio 2005 или Microsoft Visual Studio 2008;
  • SMath Studio 0.85.3578 или более позднюю версию.

    Для написания дополнений к программе SMath Studio разработчик должен владеть следующими навыками:
  • Знание любого из .Net языков программирования, таких как C#, VB.Net, C++.Net и т.п.

    Ниже представлен полный список шагов для написания своего дополнения к программе SMath Studio с нуля. Для демонстрации используется ОС Microsoft Windows Vista Ultimate Eng и IDE Microsoft Visual Studio Team System 2008 Eng. Исходный код в примерах написан с использованием языка C#.

    1. Откройте Visual Studio;

    2. Выберите пункт меню File, New, Project...

    3. В диалоговом окне выбора проекта используйте Windows, Class Library. Используйте .Net Framework 2.0. Задайте имя проекта и нажмите OK.

    4. В Visual Studio загрузится темплейт проекта, с которым и будет вестись дальнейшая работа.

    5. В фрейме Solution Explorer нажмите правой клавишей мыши по элементу дерева References и выберите Add Reference... из появившегося контекстного меню.

    6. В диалоге Add Reference перейдите на вкладку Browse, выберите папку, в которую Вы установили SMath Studio (по-умолчанию: C:\Program Files (x86)\SMath\SMath Studio) и при нажатой клавише Ctrl выберите файлы canvas.dll, ioman.dll, NuLib.dll и SyLib.dll. По окончании выбора файлов нажмите OK.

    7. После закрытия диалога Add Reference дерево в Solution Explorer будет обновлено и в папке References появятся требуемые элементы: canvas, ioman, NuLib, SyLib.

    8. Проделайте операцию по вызову диалога Add References ещё раз, для чего в фрейме Solution Explorer нажмите правой клавишей мыши по элементу дерева References и выберите Add Reference... из появившегося контекстного меню.

    9. В диалоге Add Reference перейдите на вкладку .NET и в списке пространств имён выберите System.Windows.Forms. Для подтверждения выбора нажмите OK.

    10. После закрытия диалога Add Reference дерево в Solution Explorer будет обновлено и в папке References появится элемент System.Windows.Forms.

    11. В редакторе кода Visual Studio подключите следующие пространства имён: SMath.Manager, SMath.Math.Numeric и SMath.Math.Symbolic. Наследуйте класс созданного проекта от интерфейса IPluginFunctionsExtension.
      using System;
      using System.Collections.Generic;
      using System.Text;
      
      using SMath.Manager;
      using SMath.Math.Numeric;
      using SMath.Math.Symbolic;
      
      namespace WowFunction
      {
          public class Class1 : IPluginFunctionsExtension
          {
          }
      }
      

    12. Для реализации всех необходимых методов интерфейса, нажмите правой клавишей по имени интерфейса (IPluginFunctionsExtension) и в появившимся контекстном меню выбирите Implement Interface, Implement Interface.

    13. Все требуемые методы интерфейса IPluginFunctionsExtension будут автоматически сгенерированы IDE Visual Studio.

    14. Создайте локальные переменные для хранения свойств плагина.
              #region Private fields
      
              private FunctionInfo[] availableFunctions;
              private string name;
              private Version version;
              private string description;
              private string author;
      
              #endregion
      

    15. Присвойте значения локальным переменным в методе Initialize().
              public void Initialize()
              {
                  this.name = "Wow function realization";
                  this.version = new Version(0, 1);
                  this.description = "Wow function plugin for SMath Studio. For test purposes only!";
                  this.author = "Andrey Ivashov (http://smath.info/)";
                  this.availableFunctions = new FunctionInfo[] {
                      new FunctionInfo("wow", 2, "wow('number';'number' - Returns something interesting.", FunctionSection.Unknown)
                  };
              }
      

    16. Обработайте обязательное поле Author.
              public string Author
              {
                  get { return this.author; }
              }
      

    17. Обработайте обязательное поле Description.
              public string Description
              {
                  get { return this.description; }
              }
      

    18. Обработайте обязательное поле Name.
              public string Name
              {
                  get { return this.name; }
              }
      

    19. Обработайте обязательное поле Version.
              public Version Version
              {
                  get { return this.version; }
              }
      

    20. Обработайте обязательное поле GetAvailableFunctions.
              public FunctionInfo[] GetAvailableFunctions
              {
                  get { return this.availableFunctions; }
              }
      

    21. Обработайте обязательный метод Dispose().
              public void Dispose()
              {
              }
      

    22. Т.к. в данном примере не будет создаваться ни специальных функций, ни специальной отрисовки функций, просто верните в методах PrepareDrawing, ProceedDrawing и SpecialCalculation false.
              public bool PrepareDrawing(object control, int termIndex)
              {
                  return false;
              }
      
              public bool ProceedDrawing(object control, System.Windows.Forms.PaintEventArgs e, int drawIndex, ref bool bracket)
              {
                  return false;
              }
      
              public bool SpecialCalculation(string name, Term[][] args, ref Store store, ref Term[] result)
              {
                  return false;
              }
      

    23. Обработайте метод NumericCalculation.
              public bool NumericCalculation(string name, object[] args, ref object result)
              {
                  if (name == "wow" && args.Length == 2)
                  {
                      TNumber
                          arg1 = (TNumber)args[0],
                          arg2 = (TNumber)args[1];
      
                      // calculates a^b (arg1^arg2)
                      result = arg1.Power(arg2);
                  }
                  else
                      return false;
      
                  return true;
              }
      

    24. Обработайте метод AnaliticCalculation.
              public bool AnaliticCalculation(string name, object[] args, ref object result)
              {
                  if (name == "wow" && args.Length == 2)
                  {
                      MItem
                          arg1 = (MItem)args[0],
                          arg2 = (MItem)args[1];
      
                      // calculates a^b (arg1^arg2)
                      result = arg1 ^ arg2;
                  }
                  else
                      return false;
      
                  return true;
              }
      

    25. Соберите проект используя меню Build, Build Solution.

    26. Если сборка пройдёт успешно, в статус-строке окна IDE Visual Studio появится надпись Build succeeded.

    27. Перейдите в папку созданного проекта (в примере это Мои Документы\Visual Studio 2008\Projects\WowFunction\WowFunction) и в директории bin\Debug найдите файлы результата сборки (в примере это WowFunction.dll и WowFunction.pdb). Скопируйте эти файлы.

    28. Перейдите в папку установленной копии SMath Studio Desktop (в примере это C:\Program Files (x86)\SMath\SMath Studio) и вставьте скопированные файлы в директорию plugins.

    29. Теперь можно запустить программу SMath Studio Desktop щёлкнув двойным щелчком мыши по ярлыку программы на рабочем столе или в меню Все Программы.

    30. В меню Tools (Опции) выберите Plugins... для проверки успешного подключения созданного плагина.

    31. В диалоге Plugins, рядом со встроенным дополнением Special Functions, появится и только что созданный плагин (в примере это Wow function realization). После проверки закройте диалог.

    32. Попробуйте использовать реализованную функцию на листе программы численно и аналитически (символьно) просто записав имя функции с требуемым количеством параметров (в примере имя функции: "wow", а аргументов: 2).

    33. В более сложных реализациях функций, может потребоваться отладка, которую легко инициировать подключив IDE Visual Studio к процессу запущенной копии программы SMath Studio. Сделать это можно через меню Debug, Attach to Process...

    34. В появившемся диалоге Attach to Process найдите процесс с именем SMathStudio_Desktop.exe и нажмите кнопку Attach.

    35. Поставьте точку останова (Breakpoint) в интересующую Вас строчку щёлкнув левой клавишей мыши по левой от кода границе.

    36. Инициируйте вычисление функции в программе. Выполнение программы остановится на строчке, в которой установлена точка останова.

    37. После создания и отладки плагина необходимо подготовить его для последующего использования. Для этого дополнение надо собрать в режиме Release. Выберите пункт выпадающего списка Release в тулбаре IDE Visual Studio.

    38. Соберите проект используя меню Build, Build Solution.

    39. Перейдите в папку созданного проекта (в примере это Мои Документы\Visual Studio 2008\Projects\WowFunction\WowFunction) и в директории bin\Release найдите файл результата сборки (в примере это WowFunction.dll). Данный файл является готовым плагином к программе SMath Studio. Для его использования достаточно перед запуском программы SMath Studio скопировать его в директорию plugins установочной папки SMath Studio (обычно C:\Program Files (x86)\SMath\SMath Studio).

  • #4 Опубликовано: 12.01.2010 17:27:40
    kt315e

    kt315e

    0 сообщений из 4 понравились пользователям.

    Группа: User

    Для Linux альфа будет?
    Можно ли будет писать плагины из Linux?
    #5 Опубликовано: 12.01.2010 17:47:18
    Andrey Ivashov

    Andrey Ivashov

    2270 сообщений из 3734 понравились пользователям.

    Группа: Super Administrator

    Wrote

    Для Linux альфа будет?


    Посмотрим. Скорее всего нет. Но следующая стабильная версия будет и для Linux.
    Wrote

    Можно ли будет писать плагины из Linux?


    Да.
    #6 Опубликовано: 20.03.2010 06:12:40
    уни

    уни

    156 сообщений из 355 понравились пользователям.

    Группа: User

    Нда, это будет покруче маткадовских библиотек, однозначно. Уважаемый автор, вы хоть и декларируете "собственный подход" к интерфейсу, всё же нужно не вставать на те грабли, которые уже много лет дают полбу программерам маткада. За мою долгую историю использования маткада и его интерфейсных пользовательских библиотек (а это лет 10) я встречал только несколько человек, кто более менее разобрался как их компилировать и вообще использовать. Никто практически, кроме Валерия Федоровича Очкова, не описывает эти библиотеки в книгах по Маткад! Сам этот маткадовский "интерфейс" не изменялся вообще всё это время и благополучно издох в новом маткаде 15 (Mathcad Prime 1.0) как изживший своё. Встаёт логичный вывод и за ним вопрос. Если интерфейс не изменялся, то получается, что либо он был никому не нужен из нескольких миллионов пользователей по всему миру, либо фирма просто игнорировала требования пользователей или и то, и другое. А вопрос такой: почему подключаемые модули не использовались? По большому счёту это именно так. Что Вы об этом думаете?

    Как по мне, то уже пора писать книгу по SMath, можно попробовать договориться с сайтом экспоненты в связи с появлением SMath включить новый форум чисто для пользователей.
    И, кстати, будут ли скайп-конференции по SMath? Где можно было бы пообщаться вживую.
    Россия навсегда! Вячеслав Мезенцев
    #7 Опубликовано: 20.03.2010 11:51:36
    build_your_web

    build_your_web

    4 сообщений из 127 понравились пользователям.

    Группа: User

    уни,
    разработчикам программы наверняка пригодится ваш многолетний опыт использовать программ инженерного расчета.

    Не могли бы вы описать ваше видение того, как должна выглядть удобная программа этого типа.
    Лучше, конечно, не в общих чертах, а в деталях - какие именно из деталей сделают работу с пакетом удобнее и как это будет выглядеть?
    #8 Опубликовано: 20.03.2010 12:11:35
    уни

    уни

    156 сообщений из 355 понравились пользователям.

    Группа: User

    Давайте создадим отдельный топик по этому поводу. Обычно, при промышленном писании, выдаётся Техническое Задание на проект. Это нужно как опора для будущего "здания" проекта. Если все будут заваливать автора хотелками, то это будет хаос, что приведёт к таким ужасным вещам, как нелогичности программы. Не обязательно что-то конкретно прописывать, можно просто продекларировать. Пункты в ТЗ пишутся в общих терминах, т.к. заранее далеко не всегда известен механизм реализации. ТЗ декларирует цель (первоначальную цель), далее ТЗ уточняется (можно выложить его на форуме, дать номер редакции/версии) и пишется код, потом результат сравнивается с целями, вырабатывается протокол неточностей, ошибок, в ТЗ вводятся поправки и всё повторяется. Поэтому я за то, чтобы автор потратил время на описания Плана своих задумок по пунктам, а народ бы обсудил этот план и сделал корректировки. У нас в России есть люди, которые достаточно давно работают с матпакетами и им есть что посоветовать и поучаствовать на уровне ТЗ. Вот недавно один из авторов книг по Маткад выложил свои наработки: http://forum.exponenta.ru/viewtopic.php?t=9720

    Я тут уже как-то писал, что мог бы помочь даже в реализации некоторых функций и даже предложить один интересный метод решения систем нелинейных уравнений, но это в будущем. Пока буду ждать чего-то похожего на ТЗ или план и одновременно осваивать местный плагинный интерфейс. Также я предлагал ввести отладку и показал пример того как я это сделал для Маткад (выслал код и описание автору).
    Россия навсегда! Вячеслав Мезенцев
    1 пользователям понравился этот пост
    Serg 25.01.2014 11:36:00
    #9 Опубликовано: 20.03.2010 16:12:12
    build_your_web

    build_your_web

    4 сообщений из 127 понравились пользователям.

    Группа: User

    Вы описали водопад.
    Здесь же что-то типа agile.

    Слушаем пользовательские истории и реализуем те, которые обладают большей ценностью.
    • Новые сообщения Новые сообщения
    • Нет новых сообщений Нет новых сообщений