Старые варианты процедур

Форум пользователей пакета Maple

Модератор: Admin

vladlen88
Сообщения: 9
Зарегистрирован: Сб апр 19, 2008 11:23 am

Старые варианты процедур

Сообщение vladlen88 » Пт окт 24, 2008 6:47 pm

Вот я создал свою библиотеку и помещаю туда свои процедуры. При этом часто помещаются туда разные варианты одной и той же процедуры. Если ли в Мэпл способ выгружать из библиотеки старые варианты процедур?

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Re: Старые варианты процедур

Сообщение Skeptik18 » Сб окт 25, 2008 7:18 pm

vladlen88 писал(а):Вот я создал свою библиотеку и помещаю туда свои процедуры. При этом часто помещаются туда разные варианты одной и той же процедуры. Если ли в Мэпл способ выгружать из библиотеки старые варианты процедур?

Откатить файл с определением процедуры на нужную ревизию в системе контроля версий. В чем проблема-то?

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб окт 25, 2008 8:03 pm

С первого взгляда просто, но коли речь идет о биб-ке в Maple, в которой процедуры в загруженном внутреннем формате, то все не оченть-то и просто. Предложите конкретику без "отката".В версиях до 9.5 такого средства не встречал. А то ведь такого типа советы ка-то с потолка берутся.

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Сообщение Skeptik18 » Сб окт 25, 2008 8:24 pm

Андрей М. писал(а):С первого взгляда просто, но коли речь идет о биб-ке в Maple, в которой процедуры в загруженном внутреннем формате, то все не оченть-то и просто.

Ну и что? Библиотеки в большинстве языков программирования общего назначения хранятся и загружаются в форматах, отличных от текстового, в котором хранятся исходники (своеобразных архивах процедур). Под windows взять хотя бы те же dll'ки. Все нормально работает. Включая проекты, где одновременно несколько средств испрльзуются. Например Maple+Matlab+Fortran. Непосредственно библиотеки во внутреннем формате ,в отличие от исходников, обычно не версионируются.

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб окт 25, 2008 8:34 pm

Общеизвестного не предлагать! Есть конкретный вопрос - как вытащить старую версию процедуры, помещенной в б-ку Maple и всего-то, если я правильно понял. В своих версиях Maple (например, на уровне команды march) прямо я этого сделать не могу. Подскажите и мне и vladlen88. А может и другим будет пользительно.

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Сообщение Skeptik18 » Сб окт 25, 2008 8:44 pm

Сформулируйте вопрос конкретнее. Что Вам непонятно в процедуре, предложенной мной выше?
Есть конкретный вопрос - как вытащить старую версию процедуры, помещенной в б-ку Maple и всего-то, если я правильно понял.

Вы хотите перезаписать процедуру во внутреннем формате билиотеки, без ее пересборки? Это обычно невозможно. Даже в архиве rar зачастую невозможно файл заменить, без перепаковки, требующей использования временных файлов на диске и времени пропорционального размеру исходного архива. То есть операция замены представляет собой скрытую от пользователя процедуру разархивирования, замены файла, архивирования. Ровно тоже самое я описал выше применительно к Maple. Сборку библиотеки (и удаление старой, если требуется), естественно должен build-скрипт выполнять, а не вручную.

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб окт 25, 2008 8:50 pm

Объясняю популярнее. В б-ку записана процедура под именем Proc, через некоторое время в нее записана процедура под тем же именем, и так, например, 5 раз. Можно ли из б-ки извлечь все процедуры под именем Proc? В голове крутится мысль, что можно и где-то нечто подобное я слыхал или читал. Может на этом форуме даже встречалось.

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Сообщение Skeptik18 » Сб окт 25, 2008 9:05 pm

Храните процедуры Proc в отдельном файле с именем Proc. И любуйтесь историей изменения версий процедуры. Есть удобные утилиты сравнения, типа такой
Изображение
Допустим, обнаружили, что внесли ошибку в процедуру. А неделю назад она работала. Сравниваете 2 версии. Утиль Вам цветом покажет, где что меняли/добавяли + прочие вкустности. Откатываетесь на нужную ревизию. Запускаете build-скрипт, который содержит вызов march с прописанной всей необходимой внутренней кухней. Библиотека готова. Дальше юзаете.

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб окт 25, 2008 9:14 pm

Ответ незачтен, ибо не по существу вопроса. Просил же общеизвестных вещей не приводить. Конкретика и есть конкретика - исходить надо из данности, а не предлагать другие известные приемы. При случае поищу решение проблемы, если найду, обязательно сообщу. Может кто и другой найдет конкретное решение конкретной проблемы.

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Сообщение Skeptik18 » Сб окт 25, 2008 9:18 pm

Андрей М. писал(а):Ответ незачтен, ибо не по существу вопроса. Просил же общеизвестных вещей не приводить.

Зачем что-то делать через тухес, когда можно прямо "общеизвестно"? Религия не позволяет?

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Re: Старые варианты процедур

Сообщение Skeptik18 » Сб окт 25, 2008 9:32 pm

В интете сходу готовые билд-утилиты для Maple нашел. Типа такой простенькой под линукс.
http://algo.inria.fr/meunier/scripts/mdev-doc.html

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Сб окт 25, 2008 10:12 pm

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

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Вт окт 28, 2008 3:54 pm

Как обещал, нашел таки средство, решающую эту задачу. Обнаружил процедуру reprolib. Раньше ее не использовал, но проверил на работоспособность. Все ОК! Вытаскивает все копии процедур с одинаковым именем из б-ки, помещает их в отдельные файлы указанного каталога в текстовом формате «mws.». При этом, если указан отсутствующий каталог, то он автоматически создается.

reprolib - extracting of all versions of procedures without their deletion out of a Maple library

Calling Sequence:
reprolib(L, P, C)

Parameters:
P - symbol, set or list of symbols defining the procedures names
L - symbol or string defining a library name or full path to a Maple library
C - symbol or string defining a target directory for datafiles with procedure versions

Description:
As a result of a library updating by new versions of an existing procedure they are added into the end of library with an appropriate correcting in an index file "maple.ind" of the pointer onto a new location in a file "maple.lib" of the updated procedure. In addition, all old versions of the procedure are kept in library. The procedure reprolib is intended for extracting of all versions of procedures specified by the second actual argument P from a library specified by the first actual argument L; the library should be structurally similar to the main Maple library. In addition, these versions physically do not leave out of library L.

Successful call reprolib(L,P,C) extracts all versions of procedures P from a library L without their physical deletion out of the library and in a directory specified by the third actual argument C creates the set of datafiles which will contain definitions of appropriate versions of the procedures P in the input Maple language format. The resultant datafiles with definitions of procedure P receive names of view cat(P,n), where n - sequence datafile number. If directory C does not exist, then it will be created. The procedure outputs an appropriate warning about full path to the target directory.

Examples:
> reprolib("C:/Program Files/Maple 9/LIB/UserLib", isroot, "C:/temp/ReprocLib");
Warning, extraction result of <isroot> is in directory <c:\temp\reproclib>

Skeptik18
Сообщения: 61
Зарегистрирован: Ср апр 18, 2007 3:02 pm

Сообщение Skeptik18 » Вт окт 28, 2008 5:10 pm

А не из библиотеки проф. Аладушкина?
Я хотел ответить, что там подавно есть, но постеснялся писать в свете вашей реплики:
Просил же общеизвестных вещей не приводить.

Андрей М.
Сообщения: 239
Зарегистрирован: Чт апр 21, 2005 3:15 pm

Сообщение Андрей М. » Вт окт 28, 2008 6:02 pm

Ко всему прочему сказанному здесь по вашей персоне можно добавить и откровенное неуважение (на уровне пацанского хамства) к фамилии известного человека (да и просто человека). Интересно, как можно было бы переиначить вашу? А вот признанием общеизвестности биб-ки Аладьева вы вновь противоречите самому же себе. Например, я имея несколько версий этой биб-ки, не знал про такую процедуру, несомненно интересную. А не стоило бы вам научиться вести приличный диспут, а то выглядите вы откровенно неважнецки во всех отношениях?