Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как защитить свой код? / 22 сообщений из 22, страница 1 из 1
02.02.2010, 12:02
    #36444061
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Cache 5.1

Если например я собираюсь отдать (продать) код, но не хочу его открывать.
...
Рейтинг: 0 / 0
02.02.2010, 12:16
    #36444113
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Отдавать объектники
еще %SYSTEM.OBJ::MakeClassDeployed
...
Рейтинг: 0 / 0
02.02.2010, 12:25
    #36444150
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Блок А.Н.Отдавать объектники
Можно поподробнее?

Блок А.Н.%SYSTEM.OBJ::MakeClassDeployed
Вы этим пользовались?
Получается я должен экспортировать исходники, выполнить MakeClassDeployed отмонтировать cache.dat скопировать, затем подмонтировать и импортировать исходники (что бы иметь возможность дальше работать). И отдавать уже готовый cache.dat
Я правильно понимаю?
...
Рейтинг: 0 / 0
02.02.2010, 12:55
    #36444265
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Нет, я сам так не делал, зато приходилось работать с базой, где некоторые куски были так обработаны :-)

Про MakeClassDeployed видимо так, примерно как вы говрите, так и надо делать, только что желательно, чтобы база классов быть отделена от базы с данными (иначе придется чистить еще и данные)
Ну и я бы сначала базу скопировал, а потом уже на копии делал MakeClassDeployed и удаление .MAC-ов
...
Рейтинг: 0 / 0
02.02.2010, 14:18
    #36444565
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Блок А.Н.,
а "объектники"? я вообще не понял что это такое, можно про них чуток?
...
Рейтинг: 0 / 0
02.02.2010, 14:37
    #36444620
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Имеются ввиду объектный код, каше компилирует исходный код в объектный, и хранит его в файлах *.OBJ
при наличии файлов только OBJ программы будут продолжать работать, но также и будет защищен код, так как исходники не увидят

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
02.02.2010, 14:59
    #36444697
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
DAiMor,

класс. спасибо. самое оно.
...
Рейтинг: 0 / 0
02.02.2010, 15:12
    #36444743
ну я
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Кстати, Артем, дескрипторы компилированных классов тоже хранятся в глобали ^rOBJ. Так что можно перенести и дескрипторы классов без сорсов.
...
Рейтинг: 0 / 0
02.02.2010, 15:25
    #36444789
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
ну яКстати, Артем, дескрипторы компилированных классов тоже хранятся в глобали ^rOBJ. Так что можно перенести и дескрипторы классов без сорсов.

тоже вариант.
интересно а я смогу отдать cache.dat без кода, только с глобалькой ^rOBJ
а потом обновления присылать в виде *.obj файлов?

По моему это классно, получается очень красиво.
...
Рейтинг: 0 / 0
02.02.2010, 15:42
    #36444835
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Чет я не уверен, что все что нужно хранится в в ^rOBJю Программы - да, а вот структура таблиц, список хранимых процедур и т.д.?
По крайней мере структура таблиц (минимум чатсично) хранится в mdd, и мне что-то кажется, что oddCOM тоже будет использоваться для DynamicQuery.
...
Рейтинг: 0 / 0
02.02.2010, 15:46
    #36444851
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
А вообще (по своему опыту) - достаточно обработать несколько ключевых классов и программ, и вашему пользователю проекта будет оочень сложно что-то сделать с ним.
...
Рейтинг: 0 / 0
02.02.2010, 15:48
    #36444859
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Изначально поставляли своё ПО объектным кодом... Потом бросили это дело. Надобности в этом никакой...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
02.02.2010, 15:53
    #36444874
Блок А.Н.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Да, в большинстве случаев сама защита не нужна (имхо)
Если у них есть специалисты, способные разобраться в чужом коде и доработать его - это же даже хорошо, и мне кажется, что не нарушает авторских прав.

А перепродать или скопировать данные они смогут в любом случае, с доступом к коду и без доступа.
...
Рейтинг: 0 / 0
02.02.2010, 16:46
    #36445061
ye z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Блок А.Н.Чет я не уверен, что все что нужно хранится в в ^rOBJю Программы - да, а вот структура таблиц, список хранимых процедур и т.д.?
По крайней мере структура таблиц (минимум чатсично) хранится в mdd, и мне что-то кажется, что oddCOM тоже будет использоваться для DynamicQuery.
Я и не писал, что все там хранится, я писал что там хранятся дескрипторы. SQL это параллельная вселенная, тут ручного переноса и быть не может, только компиляцией. Потому как иды внутренних структур sql движка определяются при компиляции по месту, в рамках текущих определений sql. Для переноса sql лучше не баловаться, а переносить тупо пустые классы из одних пропертей. То есть те же самые метаданные.
...
Рейтинг: 0 / 0
01.03.2010, 10:49
    #36494078
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
krvsaИзначально поставляли своё ПО объектным кодом... Потом бросили это дело.

А как вы отсылали обновления? А если менялась структура таблиц, то как вы отсылали эти изменения?
...
Рейтинг: 0 / 0
01.03.2010, 10:59
    #36494112
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
В Аське поговорили... Но продублирую и тут...

u78А если менялась структура таблиц, то как вы отсылали эти изменения?
Если дело касается классов - не пошлёшь ОБЖ-кодом.

u78А как вы отсылали обновления?
Примерно так...

Код: plaintext
d $system.OBJ.Export("myrtn.obj","c:\tmp.xml")
...
Рейтинг: 0 / 0
01.03.2010, 11:12
    #36494145
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
а по-моему если дело касается классов то OBJ кодом тоже можно обойтись
код класса компилируется в MAC и INT а потом и в OBJ, только вот классам полагаю нужно еще описание из глобалов ^oddCOM, ^oddDEF, правда в последнем хранятся исходники методов
IS ведь как то закрывает исходники некоторых своих классов
_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
01.03.2010, 15:51
    #36495114
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
По моему, если хочешь отдать кашу со своим кодом, то самое лучшее - отдавать систему вместе с каким то исходным cache.dat (где ты уже предварительно скрыл свои исходники с помощью MakeClassDeployed) и механизмом импорта который я приведу ниже.

Для обновления классов на клиентской машине надо их написать на своей машине и экспортировать.
Экспортировать, запаковать в zip и закрыть паролем, а пароль дать "vedro".
Вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
/// Экспорт указанных классов (и/или рутин) в xml а потом в запароленный архив
/// classnames - одно или несколько имён классов разделённые запятой
/// например: "User.Myclass.cls,User.MyClass2.cls"
classmethod Export(classnames as %String = "") as %String
{
	s Archiver = "c:\sklad\pkzip25.exe"
	s password = "vedro"
	s XmlExportFilename = "c:\zz.xml"
	s ZipExportFilename = "c:\ExportCache.zip"
	
	if '##class(%File).Exists(Archiver) q "Не найден файл архиватор "_Archiver
	
	//экспортируем указанные элементы
	s ok = $system.OBJ.Export(classnames,XmlExportFilename)
	if '+ok q $$GetOneErrorText^%apiOBJ(ok, 1 )
	
	//составим командную строку архивации и выполним её
	s CommandString=Archiver_" -add -NoFix -move -pass="_password_" "_ZipExportFilename_" "_XmlExportFilename_" >c:\ZipExportLog.txt"
	d $ZF(- 1 ,CommandString)
	
	q  1 
}

На клиентской машине надо будет принять zip архив закрытый мощным паролем "vedro" и запустить скрипт который распакует архив, импортирует классы и скроет их используя кашёвый MakeClassDeployed.
Вот так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
/// Импорт классов из zip архива и сокрытие импортированных классов 
/// filename - запароленный zip файл в котором zz.xml с классами
classmethod Import(filename as %String = "") as %String
{
	s Archiver = "c:\sklad\pkzip25.exe"
	s password = "vedro"
	s TempDir = "c:\sklad"	//тут бы конечно использовать виндовую переменную %TMP% но я не знаю как это сделать
	s XmlFile = "zz.xml"

	if filename="" q "Не указан файл для импорта"
	if '##class(%File).Exists(filename) q "Не найден файл импорта "_filename
	if '##class(%File).Exists(Archiver) q "Не найден файл архиватора "_Archiver
	
	//составим командную строку распаковки и выполним её
	s CommandString=Archiver_" -extract -over=all -NoFix -path=root -pass="_password_" "_filename_" "_TempDir_" >c:\ZipImportLog.txt"
	d $ZF(- 1 ,CommandString)

	if '##class(%File).Exists(TempDir_"\"_XmlFile) q "Не найден импортируемый файл "_TempDir_"\"_XmlFile
	
	//импортируем распакованный xml
	s ok = $system.OBJ.Load(TempDir_"\"_XmlFile,"ck",.p1,.p2)
	if '+ok q $$GetOneErrorText^%apiOBJ(ok, 1 )

	//удалим xml файл
	s ok=##class(%File).Delete(TempDir_"\"_XmlFile)
	//даже если не смогли удалить, всё равно скрываем классы и молчим в тряпочку

	//теперь скроем импортированные классы
	//цикл по названиям импортированных элементов
	f i= 1 : 1 :$L(p2,",") d
	. s element=$P(p2,",",i)
	. //пропускаем всё кроме классов
	. q:$P(element,".",$L(element,".")'="cls")
	. s ok = $system.OBJ.MakeClassDeployed($P(element,".",1,$L(element,".")-1))
	. if '+ok w $$GetOneErrorText^%apiOBJ(ok, 1 ),!
	
	q  1 
}

pkzip25 бесплатен если вы не используете его в коммерческих целях. По своей зарплате и оплате подработки я считаю, что моё программирование это хобби, а не коммерция.

В итоге получается следующее (у себя я эти методы вставил в класс User.Test).
На своей машине я делаю класс и экспортирую его

Код: plaintext
1.
2.
3.
4.
5.
PTK7>w ##class(User.Test).Export("User.Test2.cls")
 
Экспорт  в XML начался в  03 / 01 / 2010   15 : 26 : 43 
Экспортируемый класс: User.Test2
Эскпорт завершился успешно.

Затем как бы сажусь за клиентскую машину а реально просто переключаю область и импортирую.
Код: plaintext
1.
w ##class(User.Test).Import("c:\ExportCache.zip")


По моему классно.
...
Рейтинг: 0 / 0
01.03.2010, 16:06
    #36495178
Alexey Maslov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
u78, действительно классно. Хотел бы добавить, что лучше перейти с pkzip25 на 7z. Причины:
с pkzip25 у коллег были реальные ошибки "в поле". Подробностей не помню, но с тех пор пользоваться не хочется.

7z работает "быстрее всех", может использовать все имеющиеся ядра

7z имеет работоспобный порт для Linux, в то время как Linux'овый zip имеет врожденные пороки.
...
Рейтинг: 0 / 0
01.03.2010, 16:10
    #36495187
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
Alexey Maslov,

а я наоброт перешёл с 7z на pkzip и тоже подробностей не помню )))

каждому своё.
...
Рейтинг: 0 / 0
01.03.2010, 16:20
    #36495208
DAiMor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
но есть вероятность, что пользователь успеет выхватить распакованный файл, пока его не удалила программа, так что рискованно, и риск этот тем больше чем больше классов в этом xml,
либо при импорте, сначала грузить файл без компиляции, удалить XML, а потом скомпилить загруженное, так будет быстрее но не намного
либо распаковав, прочитать в стрим и удалить, но опять же стрим должен быть в памяти

_________________________________
Cache for Windows NT (AMD64) 5.0.21 (Build 6408) Tue Jan 3 2006 13:37:41 EST
...
Рейтинг: 0 / 0
01.03.2010, 16:27
    #36495238
u78
u78
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как защитить свой код?
DAiMor,

согласен, но я больше не буду дорабатывать, секунды эти ловить...не стоит оно того
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / как защитить свой код? / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]