|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Пост об XML-сериализации в блоге InterSystems на Хабре . ... |
|||
:
Нравится:
Не нравится:
|
|||
24.07.2012, 15:24 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Шваров Евгений, На хабре не зарегистрирован, поэтому отвечу здесь. Именно с такой задачей столкнулись - при внедрении нужно сформировать начальные данные (начальную конфигурацию). Решали похожим способом, но конфигурацию храним не в описании класса, а в xml файле. Такой подход позволяет ставить одну версию ПО разным заказчикам с разной конфигурацией. Файлов с начальными данными получилось достаточно много, поэтому они запакованы в архив. При внедрении - отправляем инсталлятор и архив с конфигурацией. В процессе установки архив разжимается и конфигурация импортируется. Импорт конфигурации реализован точно так, как написано в посте. Буду ждать вторую часть, так как проблему со связями тоже решали. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2012, 07:50 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
andrew_tsw, напишите мне в личку про вашу реализацию - в общих чертах. Возможно опубликуем на Хабре как оригинальный вариант решения. А возможно опубликуем только ваше решение - если оно окажется лучше ) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.07.2012, 11:26 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Шваров Евгений, Если не секрет, почему Вы используете конструкции вида #dim sc As %Status = $$$OK вместо s sc = $$$OK ? Или вот тут не очень понимаю #dim stream As %Stream.Object = ##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1) _ "||" _ "populate").Data Класс пытаемся открыть с интерфейсом другого? Но ведь для каше это не важно - если вывести w stream.%ClassName(1) то не факт, что мы увидим "%Stream.Object" ? Мож мы тут, в тундре, пропускаем чего? Мож, Интерсистемз готовит сюрприз с синтаксисом а мы и не знаем? Мож, уже пора готовиться??? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 11:54 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
kolesov, может вы просто не в курсе про конструкцию #dim ? данная конструкция удобна в процессе разработки, включается дополнение кода, по сути это нужно только для студии когда студии явно неизвестен тип переменный можно ей это подсказать таким образом т.е. все это по сути удобство для ускорения разработки и для большей читабельности некая визуальная типизация переменных ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2012, 12:30 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
DAiMorkolesov, может вы просто не в курсе про конструкцию #dim ? данная конструкция удобна в процессе разработки, включается дополнение кода, по сути это нужно только для студии когда студии явно неизвестен тип переменный можно ей это подсказать таким образом т.е. все это по сути удобство для ускорения разработки и для большей читабельности некая визуальная типизация переменных В том-то и дело, что я эту конструкцию, сильно смахивающую на аналогичную в известном г..продукте известной г..компании (понятно, что это сугубо субъективное мнение... большинства присутствующих ;) вижу не в первый раз. Как на мой вкус, так это просто издевательство над М. Почему-то не услышал аргумента типа "Так я же всю жизнь на вэбэа пИсал - спасибо Интерсистемз, что я могу в каше писать столь же приятный для глаза код текст." Коллеги, я не против, что есть вэбэа-, 1С-, или ексель-подобный синтаксис. Это хорошо для людей со стороны. Но предлагаю на форуме по-возможности использовать нативные вещи, присущие М (ну COS на худой конец). А то мы тут скоро начнем наблюдать конструкции вида "ЕСЛИ( а БОЛЬШЕ б)"... Да, история с тем, что студия не может подсмотреть, какого типа объект возвращает метод (ну подслеповатая она на оба глаза, блин), имеет место быть. Но ТАКИМ способом решить проблему!? Браво, Интерсистемз! И рыбку съели и (известно куда) не сели. Я плакаль. О лукавстве: #dim sc As %Status = $$$OK в Вашей интертрепации НИЧЕГО НЕ ДАСТ Студии (как и подавляющее большинство тех #dim, которые я вижу на форуме.? В т.ч. и пример со stream.) Предлагаю (чего же хаять все время): Если в студии после набора точки сильно хочется видеть список свойств и методов, писать в начале метода (как в ейной любимой ваге) #dim stream As %Stream.Object (и скромно не выносить эту гадость этот кривой костыль ИС на форум) а в коде все-таки s stream = ##class(%Dictionary.CompiledXData).%OpenId(..%ClassName(1) _ "||" _ "populate").Data (понятно, что этот конкретный случай "выстрелит" и вовсе без #dim) Анализируя собственный всплеск эмоций могу констатировать, что меня не столько #dim раздражает, сколько тот факт, что использует его представитель Интерсистемз - а это неприятный сигнал сообществу. Туда (т.е. ДАЖЕ ТУДА) проникли вэбэашники!? СО всеми проистекающими. Это меня печалит даже больше, чем стоимость продукта. Или это связанные вещи и ситуацию надо рассматривать шире? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 02:33 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
kolesov, Зря вы волнуетесь - вэбэашники никуда не проникли. Всё правда - #dim с одной стороны только для код-комплешен. С другой - это неплохой способ явно выделить используемые в методе локальные переменные и сразу их задокументировать указанием класса использования. Что ж в этом плохого? На производительность не влияет вообще никак. Только на читабельность кода. С моей точки зрения положительно влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 09:56 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
честно я совсем не понял вашего негодования во первых как в не типизированном языке в самом языке может быть предусмотрена подсказка методов, и указать тип переменной иногда тоже нужно я не понимаю кто такие вэбэашники, полагаю это VBA где вроде что то типа такой конструкции я припоминаю, но не занимался вплотную лично я использую #dim когда студия не может подсказать потому как узнать тип ей неоткуда. авторАнализируя собственный всплеск эмоций могу констатировать, что меня не столько #dim раздражает, сколько тот факт, что использует его представитель Интерсистемз - а это неприятный сигнал сообществу. Туда (т.е. ДАЖЕ ТУДА) проникли вэбэашники!? а вас не смущает то факт что в каше уже давно можно писать на бейсике, пока от этого вроде ничего плохого не случилось ? да местами конечно код может быть перегружен #dim но опять это только добавляет читабельности пускай тип %Status и не объектный тип и не имеет своих методов, но по крайней мере видно что эта переменная того типа автор Но предлагаю на форуме по-возможности использовать нативные вещи, присущие М (ну COS на худой конец). а чем это может быть как не COS ? авторВ том-то и дело, что я эту конструкцию, сильно смахивающую на аналогичную в известном г..продукте известной г..компании а for, while, if похожие на многие другие языки вас не смущают ? вам не нравятся заимствования из других языков, то позвольте вы предлагаете указывать тип переменной когда в M такого в принципе не предусмотрено. авторЕсли в студии после набора точки сильно хочется видеть список свойств и методов, писать в начале метода (как в ейной любимой ваге) то вы против заимствований и в то же время в предлагаете заимствовать подходы из какой то ваги (а кстати а что это такое) вы в своем сообщении привели кучу какого то сленга который непонятен мне как прогеру только на COS, и при этом возмущаетесь на других что они пишут неправильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 10:06 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
DAiMorво первых как в не типизированном языке в самом языке может быть предусмотрена подсказка методов, и указать тип переменной иногда тоже нужно Вот тут с вами не соглашусь, хорошие IDE имеют и автокомплит и подсказки по методам (конечно есть ситуации, когда и они пасуют, но реже). Они динамически парсят код, что да, замедляет работу, но я согласен подождать 1-2 сек, чем лезть в другой класс и оттуда копировать название метода. В кашовой студии я вообще не понимаю, что сложного проанализировать возвращаемое значение метода и на него ориентироваться при автокомплите? Да и банально локальные переменные - студия умеет подсвечивать ранее не использованные переменные, а вот их автокомплит сделать стесняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 10:37 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
D_De1mosDAiMorво первых как в не типизированном языке в самом языке может быть предусмотрена подсказка методов, и указать тип переменной иногда тоже нужно Вот тут с вами не соглашусь, хорошие IDE имеют и автокомплит и подсказки по методам (конечно есть ситуации, когда и они пасуют, но реже). Они динамически парсят код, что да, замедляет работу, но я согласен подождать 1-2 сек, чем лезть в другой класс и оттуда копировать название метода. В кашовой студии я вообще не понимаю, что сложного проанализировать возвращаемое значение метода и на него ориентироваться при автокомплите? Да и банально локальные переменные - студия умеет подсвечивать ранее не использованные переменные, а вот их автокомплит сделать стесняется. и вы опять же забываетесь, по больше часть автокомплит касается типизированных языков, коим COS не является в нашем коде часто используются вызовы вида $zobjclassmethod(class,"MethodName") и как вы предлагаете студии на это реагировать так же используютя макроподстановки вида $$$Open(docId) за которой скрывается вообще MAC код, и как далеко можно копать чтобы найти какой то тип возвращаемого объекта из-за того что большая часть кода можен вообще не указывать тип возвращаемых объектов, как по вашему искать это тип скажите что еще парсер должен найти в том методе что вызывается объявление возвращаемой переменной и угадать ее тип таким образом, и сколько времени тогда будет работать этот парсер мешая вам работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 10:54 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
DAiMorи вы опять же забываетесь, по больше часть автокомплит касается типизированных языков, коим COS не является в нашем коде часто используются вызовы вида $zobjclassmethod(class,"MethodName") и как вы предлагаете студии на это реагировать так же используютя макроподстановки вида $$$Open(docId) за которой скрывается вообще MAC код, и как далеко можно копать чтобы найти какой то тип возвращаемого объекта из-за того что большая часть кода можен вообще не указывать тип возвращаемых объектов, как по вашему искать это тип скажите что еще парсер должен найти в том методе что вызывается объявление возвращаемой переменной и угадать ее тип таким образом, и сколько времени тогда будет работать этот парсер мешая вам работать. а каким образом COS добавляет автокомплит для ##class(myClass).%New() или %OpenId() ? однострочный макрос и развернуть не проблема, нет? Я согласен, что полный автокомплит это фантастика, но ведь есть и просты случаи, который можно обрабатывать и практически без временных затрат. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 11:28 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
D_De1mosа каким образом COS добавляет автокомплит для ##class(myClass).%New() или %OpenId() ? однострочный макрос и развернуть не проблема, нет? Я согласен, что полный автокомплит это фантастика, но ведь есть и просты случаи, который можно обрабатывать и практически без временных затрат. в приведенном вашем примере автокомплит работает ну вот для тех случаев когда полный автокомплит фантастика и удачно подходит применение #dim ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 11:49 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Под примитивными я имел ввиду явный вызов хотя бы ClassMethod'ов, у которых явно прописано возвращаемое значение. + для методов экземпляра такой анализ тоже можно делать при вызове методов или обращения к свойствам. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 11:56 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
D_De1mosа каким образом COS добавляет автокомплит для ##class(myClass).%New() или %OpenId() ? однострочный макрос и развернуть не проблема, нет?А где тут макрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 12:06 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Блок А.Н.D_De1mosа каким образом COS добавляет автокомплит для ##class(myClass).%New() или %OpenId() ? однострочный макрос и развернуть не проблема, нет?А где тут макрос? Это отдельный вопрос ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 12:20 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
DAiMorи вы опять же забываетесь ... $zobjclassmethod(class,"MethodName") ... а Вы завираетесь заблуждаетесь: #dim ret As И_ЧТО_ЖЕ_ВЫ_ЗДЕСЬ_НАПИШЕТЕ_ТАКИ? = $zobjclassmethod(class,"MethodName") Еще интереснее, что же Вам Студия, бедненькая, подскажет??? Вы вообще, как-то договорились бы, что-ли. А то один - про нетипизированность, второй тут же про то, как прекрасно "явно выделить используемые в методе локальные переменные и сразу их задокументировать указанием класса использования" (читай - типизировать). Этак мы скоро и до явного преобразования типов дойдем... Не напрасно дедов слово Затвердил народный ум: "Что для русского здорово, То для немца карачун!" П.А.Вяземский "Масленица на чужой стороне", 1853 ЗЫ: Я это без злобЫ, если показалось, что наезжаю, приношу извинения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 15:54 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
kolesovВы вообще, как-то договорились бы, что-ли. А то один - про нетипизированность, второй тут же про то, как прекрасно "явно выделить используемые в методе локальные переменные и сразу их задокументировать указанием класса использования" (читай - типизировать). Этак мы скоро и до явного преобразования типов дойдем... вот тут вы опять что то путаете, я говорил про нетипизированный язык, и в данном случае #dim это визуальное приведение к типу ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 16:15 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
Шваров ЕвгенийНа производительность не влияет вообще никак. Только на читабельность кода. С моей точки зрения положительно влияет. А мой глаз об эти #dim пока что спотыкается. Я как представлю, в системе все "s sc = $$$OK" (малипусеньки мои пушистенькие), позаменять на монстров вида "#dim sc As %Status = $$$OK" - страшный сон... Я вот наоборот думаю, не слишком ли мы многословны, используя $$$OK - мож проще быть - s sc = 1, а? Еще, открыв код и увидев эту вэбэашную провокацию конструкцию, несведущий человек может подумать, что в каше есть типы - это тоже не гуд. В каше, имхо, как раз очень важно понимать, что кроме строк нет ничего (строго говоря, конечно не так, но мы не будем строги в пятницу вечером ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 19:20 |
|
Применение XML-сериализации при развертывании
|
|||
---|---|---|---|
#18+
kolesov, ладно не будем больше ссориться, расшифруйте только ваши "вэбэашную" и "ваги", а то я их не понял ... |
|||
:
Нравится:
Не нравится:
|
|||
07.09.2012, 21:05 |
|
|
start [/forum/topic.php?fid=39&fpage=33&tid=1557385]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 266ms |
total: | 416ms |
0 / 0 |