Комментарии к ссылкам на открытые .NET проекты.

Автор Тема: Комментарии к ссылкам на открытые .NET проекты.  (Прочитано 12317 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Комментарии к ссылкам, опубликованным здесь.

Комментарий к #5:

Насколько я понял, NCalc - это альтернативный вариант того, что Стровструп детально предоставил в книге "Практика программирования" в первых главах (в качестве примера того, как ведётся разработка программы). Только у Стровструпа это сделано реально компактно и не исключено, что более грамотно: на основе грамматики Бэкуса-Наура. Я не сохранил свою .NET-реализацию его варианта - успешно побаловался когда-то и удалил, т.к. сам по себе мне был интересен алгоритм парсинга (у меня остался только перевод этого документа). В принципе, любой желающий может достаточно быстро реализовать вариант Стровструпа в .NET, переложив вариант его кода с C++ на C#. Пока добавил ссылку на NCalc. В случае появления более удобной альтернативы - заменю или добавлю ссылку.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Комментарий к #5:

Для репозитория PiaNO, по ссылке, предоставленной Дмитрием Загорулькиным, отсутствует какая-либо документация. Не понятно что это и как этим пользоваться: нет даже элементарных примеров использования библиотеки. В виду этого ссылку удаляю. Впредь буду лично проверять состав рекомендуемых ссылок (ожидал, что дающие ссылку будут сами проверять этот момент) и добавлять невнятные репозитории не стану (не зависимо от того, кто даёт ссылку).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Для репозитория PiaNO, по ссылке, предоставленной Дмитрием Загорулькиным, отсутствует какая-либо документация. Не понятно что это и как этим пользоваться: нет даже элементарных примеров использования библиотеки. В виду этого ссылку удаляю.
Зря. Ты просто не разобрался. Это очень полезная библиотека для работы с недокументированными форматами файлов AutoCAD. В частности позволяющая создавать нестандартные форматы листов для печати.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Зря. Ты просто не разобрался.
Если я буду заниматься изучением кода каждого недокументированного проекта, ссылку на который мне дают, с целью выяснения того, действительно ли он может быть полезен, то на это моей жизни не хватит.

Это очень полезная библиотека для работы с недокументированными форматами файлов AutoCAD. В частности позволяющая создавать нестандартные форматы листов для печати.
Это здорово что вы так, на глаз, способны это определить. Не вопрос... Поскольку проект открыт, то вы можете добавить в него хотя бы краткое описание и пример использования ("хеллоу-ворлд"), чтобы появилась хотя бы какая-то отправная точка в его изучении. Вряд ли это займёт у вас много времени.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Это здорово что вы так, на глаз, способны это определить.
Это не на глаз. Да и на нашем форуме активно обсуждался вопрос создания нестандартных листов и упоминалась эта библиотека. Документировать её я конечно не буду - те, у кого возникнет в ней необходимость сами разберутся. Считаю, что того что она упомянута, вполне достаточно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Отсутствие документации или хотя бы внятного примера в открытых проектах всегда расцениваю как неуважение к тем, кому репозиторий открывается для доступа. Соответственно и моё отношение к таким "благодетелям" соотвестующее.

Хорошо, ссылку добавлю. С пометкой, что вы считаете её полезной, несмотря на то, что документация и примеры отсутствуют.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Насколько я понял, NCalc - это альтернативный вариант того, что Стровструп детально предоставил в книге "Практика программирования" в первых главах (в качестве примера того, как ведётся разработка программы). Только у Стровструпа это сделано реально компактно и не исключено, что более грамотно: на основе грамматики Бэкуса-Наура. Я не сохранил свою .NET-реализацию его варианта - успешно побаловался когда-то и удалил, т.к. сам по себе мне был интересен алгоритм парсинга (у меня остался только перевод этого документа). В принципе, любой желающий может достаточно быстро реализовать вариант Стровструпа в .NET, переложив вариант его кода с C++ на C#. Пока добавил ссылку на NCalc. В случае появления более удобной альтернативы - заменю или добавлю ссылку.
Если найдется более компактный и более грамотный вариант такого парсера - буду только рад. А пока это единственная известная мне открытая библиотека с подобным функционалом и лично проверенная мною. На протяжении уже почти года использования хорошо себя зарекомендовала, поэтому и поделился ею.
По поводу PiaNO Александр Наумович уже все сказал, мне добавить нечего.

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
ncalc библиотека хорошая, у меня уже 1.5 года работает. Но либо у меня руки кривые, либо в конторе что-то не то с ПО, но на некоторых компьютерах (причём иногда), использование библиотеки крашит автокад в произвольный момент уже после использования (вне конторы вроде ни у кого такого не происходит). Причём он просто закрывается, и только иногда предлагает отправить отчёт об ошибке.
Алексей

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
А как установили, что это именно из-за NCalc? Просто иногда AutoCAD сам по себе фаталит, без сторонней "помощи" :)

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Если найдется более компактный и более грамотный вариант такого парсера - буду только рад.
Мной написан используемый на практике парсер и GUI для ввода подсчета формул спецификаций и видов изделий, весь синтаксис достаточно "продвинутый" - позволяет вводить "пользовательские" переменные (они-же функции), поддерживает рекурсию и дополнительные "единицы измерения" (на практике это артикулы материалов) так-же вариативных от параметров, с различными типами правил их сложения. Но "базу" математики в нем считает - XDocument.XPathEvaluate... у меня на него нареканий пока не было - хотя конечно если сравнить в архиве до чего разросся парсер (а начинался практически с одной этой строки) - добавить ее в "рукописный" функционал - это уже мелочи - но зачем.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Но "базу" математики в нем считает - XDocument.XPathEvaluate...
Этой фразы я не понял. Какое отношение к математике имеет обозначенный метод?

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Прямое - передай ему "2+2*2"

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Прямое - передай ему "2+2*2"
Полезная информация, не знал об этом. Спасибо.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Мной написан используемый на практике парсер и GUI для ввода подсчета формул спецификаций и видов изделий, весь синтаксис достаточно "продвинутый" - позволяет вводить "пользовательские" переменные (они-же функции), поддерживает рекурсию и дополнительные "единицы измерения" (на практике это артикулы материалов) так-же вариативных от параметров, с различными типами правил их сложения. Но "базу" математики в нем считает - XDocument.XPathEvaluate... у меня на него нареканий пока не было - хотя конечно если сравнить в архиве до чего разросся парсер (а начинался практически с одной этой строки) - добавить ее в "рукописный" функционал - это уже мелочи - но зачем.
Вот чтобы не тратить время на разработку такого парсера, можно воспользоваться уже готовым и проверенным NCalc. Либо вашим, если поделитесь :)

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
уже готовым и проверенным NCalc
Возможно появятся пояснения к #7 от автора сообщения.

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Либо вашим, если поделитесь
Не смогу - могу написать аналогичный - но именно тот нельзя - таков уговор.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Вот чтобы не тратить время на разработку такого парсера,
Кто не хочет, тот может пользоваться NCalc.

Лично мне всегда было интересно знать, как правильно создавать парсеры, а так же иметь навыки написания хотя бы их простых вариантов (например, того же парсера математических выражений). В главах 6 и 7 книги "Практика программирования на C++" Беарне Стровструп на примере создания калькулятора показал как это делается. Автор сначала показал две неудачные попытки создания калькулятора, наглядно демонстрируя шаги и ошибки, которые обычно программисты допускают при решении подобных задач. Затем, в третьем варианте решения автор наглядно показал как это делать правильно и объяснил почему именно так. Решение Стровструпа основано на разработке и применении грамматики. Собственно после этого примера я и заинтересовался EBNF (расширенной формой Бэкуса-Наура) - перевёл для себя стандарт ISO/IEC 14977:1996(E), ссылку на который давал выше.

Продемонстрированное Стровструпом решение (парсер математических выражений) позволяет не только выполнять базовые наборы арифметических операций, но и расширять созданное решение произвольным набором пользовательских функций (sum, random, sqrt, etc). Я делал это в качестве тренировки - никаких проблем не возникло. Такое масштабирование является достаточным именно за счёт продуманной архитектуры приложения, учитывающей саму возможность масштабирования.

Код, присутствующий в обозначенных выше главах весьма компактен. Он написан на C++, но является весьма простым и понятным (на мой взгляд) в т.ч. и для тех, кто пишет на др. языках (например на C#). Так что переложить его на свой язык труда не составит. Насколько я помню, у меня это когда-то заняло один вечер и приобретённый опыт считаю не лишним, поскольку не люблю "чёрные ящики", ломающиеся в самый неподходящий момент (имхо).

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
В главах 6 и 7 книги "Практика программирования на C++" Беарне Стровструп
Кстати, сегодня вышел из типографии перевод обновлённой версии этой книги, в которой учтены особенности C++11 и C++14. Издательство украинское, печатают в Москве. В Питере, на книжной ярмарке ДК им. Крупской, эта книга только по предзаказу, т.к. не распродан ещё старый запас предыдущего издания. Срок доставки 1-2 недели, цена, на сегодняшний день, 2 000 руб.

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
На самом деле я далеко не уверен, что ncalc крашит автокад. Просто весь код, кроме ncalc, много раз преверен (хотя это и не является гарантией) - остаётся только сесть с разными утилитами для отслеживания памяти и проч, и искать где я напортачил

Кстати, сегодня опять поискал альтернативы - нашёл 2 варианта: DataTable.Compute и попробовать использовать Roslyn
Алексей

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Велосипед. Программно создаёшь объект сессии PowerShell и исполняешь в нём любые выражения, в т.ч. и математические. Когда объект становится ненужным - прибиваешь его. В примере хостинга PowerShell я показывал в т.ч. и вычисление математических выражений. Используются не сторонние библиотеки, но "родной" механизм, присутствующий в Windows.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Если найдется более компактный и более грамотный вариант такого парсера - буду только рад.
PowerShell. :)

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
ИМХО, небезопасно. У меня выражения для вычисления пишут инженеры. И тут они смогут наделать делов.
Алексей

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
ИМХО, небезопасно. У меня выражения для вычисления пишут инженеры. И тут они смогут наделать делов.
Например? "Наделать делов" они смогут и без твоего кода (от этого не застрахован никто, ибо у каждого психа своя программа в голове - всех случаев не предусмотреть).

Оффлайн bargool

  • ADN Club
  • ***
  • Сообщений: 111
  • Карма: 6
Вычисления могут запускаться на всех компах в конторе, т.е. без моего кода "наделать делов" они могут только у себя. С PS в этом случае - на компах всех проектировщиков.
Код же выполняется не в песочнице? Это, конечно, паранойя, но хотелось бы ограничить возможности только вычислениями математики
Алексей

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Вычисления могут запускаться на всех компах в конторе, т.е. без моего кода "наделать делов" они могут только у себя. С PS в этом случае - на компах всех проектировщиков.
Код же выполняется не в песочнице?
Для работы в PowerShell с удалённым компьютером необходимы права администратора [домена]. Если этих прав у юзера нет, то сессии PowerShell он сможет создавать лишь на localhost. Ты можешь ограничивать наборы cmdlet, доступных пользователям в рамках созданного тобой объекта PSSession.

Это, конечно, паранойя, но хотелось бы ограничить возможности только вычислениями математики
Дело твоё.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
NCalc дает возможность не только вычислять математические выражения, но и использовать параметры. В качестве параметров могут выступать любые типы объектов, даже объекты AutoCAD (например - Point3d). Для их обработки можно довольно легко и быстро добавить нужные функции. Я сильно сомневаюсь, что инструмент вычисления выражений в PowerShell имеет тот же функционал.

Оффлайн Андрей БушманАвтор темы

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Я сильно сомневаюсь, что инструмент вычисления выражений в PowerShell имеет тот же функционал.
Ты "сильно" не знаешь возможности PowerShell. :) Он позволяет не только использовать параметры, но и самому на лету формировать произвольные, нужные тебе определения функций с последующим их использованием. Так же можно создавать переменные, в т.ч. и такие, которые представляют собой ссылки на функции, которые (в свою очередь) можно передавать в качестве параметров в др. функции. Кроме того, строки, заключённые в одинарные кавычки, обрабатываются иначе, чем строки, заключённые в двойные кавычки (что само по себе, как показывает практика, является очень удобным подходом - подробности легко находятся в справке и гугле).

Цитата: Дмитрий Загорулькин
В качестве параметров могут выступать любые типы объектов, даже объекты AutoCAD (например - Point3d). Для их обработки можно довольно легко и быстро добавить нужные функции.
Напугал ёжика пятой точкой. :) Всё это так же доступно в PowerShell. Сразу видно, что ты не смотрел мой "мультик" по теме хостинга PowerShell в AutoCAD...