Русскоязычный форум закрыт из-за отсутствия активности (доступен только для чтения).
Пожалуйста, пользуйтесь англоязычной его версией. Приносим извинения за неудобства
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Вход


4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline smath  
#21 Оставлено : 9 ноября 2010 г. 4:12:48(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Очень интересная тема. Думаю интерфейс для подключения маткадовских пользовательских библиотек - востребованная вещь. Меня довольно часто об этом спрашивают и всегда с сожалением приходится отмечать, что готовые функции, написанные для маткада, подключать нельзя. Если такая возможность будет - в отдельных случаях появится серьёзный аргумент для попытки перехода на SMath Studio. На мой взгляд нужная функциональность - в будущем буду рад поспособствовать чем смогу.

P.S.: Прошу прощение, что последнее время редко здесь отмечаюсь - взял небольшую передышку, что бы решить огромное количество вдруг навалившихся на меня жизненных проблем.

С уважением.
Offline build_your_web  
#22 Оставлено : 9 ноября 2010 г. 12:15:50(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Насчет AlgLib - можно взять C++ версию и использовать её для повышения скорости.

Выяснил еще одну деталь.
Некоммерческая AlgLib распространятется под GPL, что в итоге обяжет открыть исходники SMath Studio
Коммерческая стоит 270 USD.
Offline Samar  
#23 Оставлено : 9 ноября 2010 г. 12:49:51(UTC)
Samar


Статус: Member

Группы: Registered
Зарегистрирован: 15.07.2008(UTC)
Сообщений: 102
Мужчина
Откуда: Брест

Сказал «Спасибо»: 8 раз
Поблагодарили: 2 раз в 2 постах
Интересно, а кто-нибудь ее покупал?

p.s.: Исходники самой SMath Studio не откроет, а только плагина, который будет эту библиотеку использовать.
Offline build_your_web  
#24 Оставлено : 9 ноября 2010 г. 13:36:42(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Нет, согласно GPL нужно открывать любой продукт, в производстве или работе которого использовался инструмент под GPL.

Так недавно был скандал из-за того, что один из университетов в работе над военным заказом использовал в работе программу под GPL, что обязывает сделать публичным всю работу над данным проектом.

Использование компонентов под GPL опасно как для SMath Studio, так и для пользователей, которые будут использовать программу в своих коммерческих работах. И программу, и расчеты придется открыть.

А самое плохое будет то, что пользователь SMath Studio будет даже не в курсе о тех обязательствах, которые накладываются на результат всей его работы, в котором будет хотябы одна формула из SMath Studio.

Вобщем для меня GPL - зло. Лучше присмотреть что-то из Apache или Creative Commons с разрешением на использование в коммерческих продуктах.
thanks 1 пользователь поблагодарил build_your_web за этот пост.
mikka оставлено 09.11.2010(UTC)
Offline уни  
#25 Оставлено : 10 ноября 2010 г. 19:45:55(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Цитата:
Очень интересная тема. Думаю интерфейс для подключения маткадовских пользовательских библиотек - востребованная вещь. Меня довольно часто об этом спрашивают и всегда с сожалением приходится отмечать, что готовые функции, написанные для маткада, подключать нельзя. Если такая возможность будет - в отдельных случаях появится серьёзный аргумент для попытки перехода на SMath Studio. На мой взгляд нужная функциональность - в будущем буду рад поспособствовать чем смогу.
Ну, значит попробуем реализовать. Идеи есть. Мне тут для комплекта не хватает такой функциональности как прерывание работы функции пользователем. Как отслеживать Esc внутри плагина? В Маткаде была специальная функция:
Код:
BOOL isUserInterrupted( void );

Дело ещё осложняется тем, что статическая привязка, используемая в UserEFI работала с разными версиями lib-файлов, т.е. mcaduser.dll, которую мне нужно будет написать самому, была разной в разных версиях, что приводило потере функциональности пользовательских библиотек в новых версиях Маткада. Некоторые товарищи обошли это дело, использовав динамическую привязку. Т.е. придётся потрудиться, чтобы написать универсальную библиотеку mcaduser.dll для любых пользовательских библиотек. Может даже сделаем Валерию Фёдоровичу подарок Good При помощи такого интерфейса его набор библиотек для Mathcad'а можно будет использовать в SMath простым копированием Wink без перекомпиляции или новой разработки.

Между прочим, тогда тем товарищам, кому был ближе старый сишный интерфейс будет проще писать плагины для SMath Biggrin
Что, вообще говоря, не очень хорошо.
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#26 Оставлено : 13 ноября 2010 г. 17:12:43(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
По поводу функции isUserInterrupted(). Маткадовские библиотеки можно для определённости представить как вторичные плагины или плагины второго уровня (численные).

Вот заголовочный файл (немножко мной модифицирован), который описывает интерфейс для работы с пользовательскими библиотеками Mathcad по технологии UserEFI: mcadincl.h.

Насколько я понял, в SMath создаётся поток для работы функций пользовательских библиотек и при нажатии на Esc он просто приостанавливается, либо "убивается". В маткаде, что странно, функции выполнялись в основном потоке и для прерывания вычислений использовалась специальная функция isUserInterrupted() (Mathcad через эту функцию показывал библиотеке состояние клавиши Esc). Её просто вставляли где-то по ходу вычислений и она постоянно опрашивалась на предмет необходимости прерывания цикла вычислений. Когда я писал свой отладчик, я долго придумывал способ межпоточного взаимодействия в терминах С++ (не владел азами), т.к. свои отладочные функции запускал в отдельных потоках, иначе Маткад не перерисовывал своё окно.

Т.о. я просто поставлю заглушку на эту функцию, а её реализация в плагинном интерфейсе SMath не нужна. Так я понимаю?
Россия навсегда!
Вячеслав Мезенцев
Offline уни  
#27 Оставлено : 13 ноября 2010 г. 17:28:54(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Пример плагина для рисования в 3D Good
Функция CreateMesh(): Plot3D_Class1.pdf
Остальное добавлю, когда идеология рисования "подтянется" до уровня идеологии работы с выражениями. Одной линией много не нарисуешь.
Россия навсегда!
Вячеслав Мезенцев
Offline smath  
#28 Оставлено : 13 ноября 2010 г. 17:40:02(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
уни написал:
Насколько я понял, в SMath создаётся поток для работы функций пользовательских библиотек и при нажатии на Esc он просто приостанавливается, либо "убивается".

Идея была такая: поток для GUI + по одному потоку для каждого листа, в котором будут производиться вычисления. Соответственно плагины работают в потоке вычисления текущего листа. Если пользователь прерывает вычисление, то поток просто убивается.

уни написал:
Т.о. я просто поставлю заглушку на эту функцию, а её реализация в плагинном интерфейсе SMath не нужна. Так я понимаю?

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

P.S.: Насчёт исходников в PDF-ах - мне кажется по сравнению с этим исходные файлы на русском в репозитории всё равно выглядят намного привлекательнее. Без этого, как минимум, невозможна совместная разработка. А в некоторых случаях использование непроверенных библиотек невозможно без изучения исходников, ибо иначе убедиться в безопасности (во всех смыслах) логики внутри никак нельзя и тогда иметь единое место с сорцами - максимально удобное для всех решение.

Большое спасибо за труды!
Offline zhuk  
#29 Оставлено : 14 ноября 2010 г. 1:41:00(UTC)
zhuk


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 16.02.2010(UTC)
Сообщений: 114
Мужчина
Откуда: /dev/random

Сказал «Спасибо»: 4 раз
Поблагодарили: 13 раз в 11 постах
build_your_web по-моему ты в случае с alglib уж слишком комплексно рассматриваешь ядро и плагин. На мой взгляд было бы разумно организовать все на подобие миранды, т.е. есть официальная версия (ядро + какие-то плагины), имеющая свой определеный функционал, распространяемая по своей лицензии, а есть архив плагинов от сторонних разработчиков. Официально будет распространяться и поддерживаться только оф. версия, а пользователь по своему усмотрению сможет расширить ее функционал за счет сторонних плагинов. Эти плагины уже будут распространяться на своих условиях, совершенно не затрагивая с юридической точки зрения оф. сборку (вот там уже хоть нагло тырь, хоть по GPL распространяй). Выбор что и как прикручивать будет целиком и полностью за пользователем, на его совести. Для удобства конечных пользователей нужно лишь создать раздел форума со списком всех доступных дополнений + какие-то пользовательские сборки на подобие мирандовских. Такая организация даст большую свободу при разработке плагинов, функционал которых со временем может перекочевать в ядро.
неофициальный справочник https://sites.google.com/site/mikkhalichlab/home

jabber конференция smath@conference.jabber.ru
Offline Samar  
#30 Оставлено : 14 ноября 2010 г. 2:23:40(UTC)
Samar


Статус: Member

Группы: Registered
Зарегистрирован: 15.07.2008(UTC)
Сообщений: 102
Мужчина
Откуда: Брест

Сказал «Спасибо»: 8 раз
Поблагодарили: 2 раз в 2 постах
zhuk написал:
build_your_web по-моему ты в случае с alglib уж слишком комплексно рассматриваешь ядро и плагин. На мой взгляд было бы разумно организовать все на подобие миранды, т.е. есть официальная версия (ядро + какие-то плагины), имеющая свой определеный функционал, распространяемая по своей лицензии, а есть архив плагинов от сторонних разработчиков. Официально будет распространяться и поддерживаться только оф. версия, а пользователь по своему усмотрению сможет расширить ее функционал за счет сторонних плагинов. Эти плагины уже будут распространяться на своих условиях, совершенно не затрагивая с юридической точки зрения оф. сборку (вот там уже хоть нагло тырь, хоть по GPL распространяй). Выбор что и как прикручивать будет целиком и полностью за пользователем, на его совести. Для удобства конечных пользователей нужно лишь создать раздел форума со списком всех доступных дополнений + какие-то пользовательские сборки на подобие мирандовских. Такая организация даст большую свободу при разработке плагинов, функционал которых со временем может перекочевать в ядро.


На все 100% согласен и полностью поддерживаю.
Offline build_your_web  
#31 Оставлено : 15 ноября 2010 г. 14:10:28(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Согласен.

Я акцентировал на этом внимание, потому что стоит об этом позаботиться заранее: написать соглашения между пользователем, разработчиком smath и разработчиками плагинов, заранее, чтобы потом не было поводов выдвинуть к smath притензии и юридически задушить проект.

Может быть это соглашение можно позаимствовать у той же миранды (не думаю, что соглашение о копирайте запатентовано или является объектом авторского права).
thanks 1 пользователь поблагодарил build_your_web за этот пост.
mikka оставлено 15.11.2010(UTC)
Offline уни  
#32 Оставлено : 17 ноября 2010 г. 19:55:07(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Закоммитил, блин, со второго захода только. Прошу извинить за "мусор" в логах и базе.

В репозиторий добавил проект Plot3D. Как мог прибрался в коде, чтобы можно было по аналогии добавлять в библиотеку другие функции (там увидите). Каждая функция "оборачивается" отдельным статическим классом и имеет методы аналогичные используемым плагинным интерфейсам. Это сделано для того, чтобы разделить коды функций: каждой функции свой файл, т.к. размеры их могут быть очень большими (и будут). По аналогии сделал поддержку интернационализации (слово то какое).
Россия навсегда!
Вячеслав Мезенцев
thanks 1 пользователь поблагодарил уни за этот пост.
smath оставлено 19.11.2010(UTC)
Offline уни  
#33 Оставлено : 17 ноября 2010 г. 21:45:22(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Изменил проект AlgLib (см. проект в репозитории). Основан на AlgLib 3.1.0.
Структура та же самая, что и в предыдущем случае. Проверял, вроде работает (на примере работы КИХ-фильтра).

Документ для теста: КИХ фильтр.sm
Россия навсегда!
Вячеслав Мезенцев
thanks 2 пользователей поблагодарили уни за этот пост.
mikka оставлено 18.11.2010(UTC), smath оставлено 19.11.2010(UTC)
Offline уни  
#34 Оставлено : 17 ноября 2010 г. 22:56:33(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
До кучи ещё добавил проект плагина ODESolvers. Rkadapt() большей своей частью взят из Numerical recipes 3-го издания. Но там алгоритм перебора шагов другой. Я подобрал алгоритм подбора шага так, чтобы параметры вызова функции и сетка шагов соответствовали функции rkfixed(), как у Mathcad. Хотя на самом деле вызов функции нужно делать немного по-другому.
Россия навсегда!
Вячеслав Мезенцев
thanks 1 пользователь поблагодарил уни за этот пост.
mikka оставлено 18.11.2010(UTC)
Offline Carlos  
#35 Оставлено : 18 ноября 2010 г. 8:08:35(UTC)
Carlos


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 21.02.2010(UTC)
Сообщений: 134
Мужчина
Откуда: Северодвинск

Сказал «Спасибо»: 26 раз
Поблагодарили: 19 раз в 12 постах
Верно. SMath выигрывает засчет своей компактности и легкости. Бездумно раздувать его никому ненужными библиотеками или функциями глупо. Так мы в итоге получим маткад в 500 мегабайт весом.
Offline уни  
#36 Оставлено : 18 ноября 2010 г. 10:36:50(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
Цитата:
Учавствовать могу, но на уровне кодинга.
Об архитектуре, целях и приоритетах нужно будет думать тебе, т.к. в этой области у меня голова сейчас занята другим проектом.
Руслан, посмотри на теперешнюю библиотеку. Осталось чисто только функции набивать... самая нудная часть. Я сделал пять примеров. Решатель диффура на себя возьму.

Там если по шагам описать, то для добавления функции нужно:
1. Создать новый класс с именем добавляемой функции.
2. Взять в качестве шаблона код из другого такого класса и полностью его вставить в созданный.
3. Заменить в нескольких местах имена и описания, а также количество переменных.
4. Написать обработчик численного вычисления (обёртку для функции из alglib ).
5. Вставить по аналогии функции вызова в файл: AlgLib.cs

И так больше полусотни раз. Не знаю уж, что там может понадобиться из библиотеки. Что мне нужно было я уже взял. Ещё можно статистические функции "обернуть".

Я сделал префикс для функций "al_", чтобы они не конфликтовали с другими стандартными. Статические классы, чтобы не писать вот так:
Код:
a = ( new RemezFIRFilter() ).remez( numTaps, bands, desired, weights, RemezFIRFilter.BANDPASS );

Тут просто исходник не мой, а вообще с явы переделанный. Кстати, добавил плагин FIRFilterDesign. Это пример из него.

П.С. Можно, кстати, разделить код плагина отдельно от кода самой библиотеки. Честно говоря, как это делается в C# я не знаю. Наверное просто компилируется и всё, а потом подключается как зависимость. Это можно сделать, чтобы по сто раз библиотеку alglib не компилировать. Плагин сам в этом случае будет небольшой.

Отредактировано пользователем 18 ноября 2010 г. 11:43:44(UTC)  | Причина: Не указана

Россия навсегда!
Вячеслав Мезенцев
Offline build_your_web  
#37 Оставлено : 18 ноября 2010 г. 14:26:22(UTC)
build_your_web


Статус: Advanced Member

Группы: Developers, Registered
Зарегистрирован: 28.08.2009(UTC)
Сообщений: 127

Сказал(а) «Спасибо»: 19 раз
Поблагодарили: 4 раз в 4 постах
Обертки наверное будем писать по мере появления запросов на форуме.
Не хочу тратить время на невостребованные плагины.
Offline smath  
#38 Оставлено : 19 ноября 2010 г. 3:18:56(UTC)
smath


Статус: Administration

Группы: Developers, Registered, Knovel Developers, Administrators, Advanced Member
Зарегистрирован: 11.07.2008(UTC)
Сообщений: 912
Мужчина
Российская Федерация

Сказал «Спасибо»: 640 раз
Поблагодарили: 262 раз в 102 постах
Вячеслав, большое спасибо за созданные плагины! Да и сами реализованные функции очень интересны! Думаю, многим они будут полезны.
Offline zhuk  
#39 Оставлено : 19 ноября 2010 г. 16:04:26(UTC)
zhuk


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 16.02.2010(UTC)
Сообщений: 114
Мужчина
Откуда: /dev/random

Сказал «Спасибо»: 4 раз
Поблагодарили: 13 раз в 11 постах
Создайте пжл отдельный раздел по плагинам на форуме и отдельную тему для каждого плагина. В теме описание, прямая ссылка на скачку .net и mono сборки. Там же багрепортить будем и пожелания высказывать))
неофициальный справочник https://sites.google.com/site/mikkhalichlab/home

jabber конференция smath@conference.jabber.ru
Offline уни  
#40 Оставлено : 19 ноября 2010 г. 16:12:52(UTC)
уни


Статус: Advanced Member

Группы: Registered
Зарегистрирован: 02.06.2009(UTC)
Сообщений: 346
Мужчина
Российская Федерация

Сказал «Спасибо»: 50 раз
Поблагодарили: 156 раз в 105 постах
По части форума можно взять пример с Far'а: http://forum.farmanager.com/viewforum.php?f=23
Россия навсегда!
Вячеслав Мезенцев
Пользователи, просматривающие эту тему
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.