Попробуйте создать команду, которой вы можете доверять.
Первый подход состоит в том, чтобы заставить программистов знать только интерфейсы других компонентов, чтобы каждый из них мог украсть только небольшую часть всего программного обеспечения. Такой подход можно позаимствовать из обувного производства. Одна транснациональная корпорация, чтобы предотвратить воровство со стороны сотрудников, устроила свои фабрики таким образом, чтобы каждая фабрика производила только левую или только правую обувь. Вы можете сделать то же самое со своим кодом: одни программисты пишут только строки с нечетными числами, а другие - с четными; при условии, что они не видят работы друг друга! Иногда это называют « парным программированием ».
Некоторые организации заставляют сотрудников подписывать соглашение об отказе от конкуренции. Такое соглашение не позволяет программистам работать на конкурентов. Этот метод лучше всего сочетается с объявлениями о вакансиях типа «Ищу старшего программиста с 5-летним опытом работы в аналогичной сфере».
Чтобы ваши программисты не воровали, вы можете причинить им вред, как только они закончат программу. Метод зарекомендовал себя как наиболее эффективный и используется веками. Например, русский царь Иван Грозный зажег глаза архитектору, спроектировавшему красивый храм на Красной площади, поэтому спроектированный остается самым красивым в истории. Вы можете сделать что-то подобное со своим архитектором. Я слышал, последняя версия Visual Studio содержит некоторые функции ...
Однако в настоящее время более гуманистично нанимать уже слепых и уже немых людей, потерявших руки, чтобы они не могли взглянуть на ваш код и запомнить его, могут никому не сообщаю свой код и не могу его снова ввестиПреимущество в том, что это поможет вам иметь дело с агентством по трудоустройству в вашей стране, которое следит за балансом, чтобы ваши сотрудники не подвергались дискриминации.
И да, этот пост - саркастическая шутка, в которой критикуется идея любых мер по предотвращению кражи кода. Извините, не мог не опубликовать это.
Как защитить электростанцию от саботажа со стороны сотрудника? Как вы помешаете боксеру бросить бой? Как вы предотвратите распространение хлопков в публичном доме?
Ваше беспокойство, хотя и обоснованное, может быть решено только путем личной ответственности и подотчетности внутри вашей команды. Любые варианты защиты кода от кражи, скорее всего, принесут больше вреда, чем пользы. Если вы чувствуете, что член команды не заслуживает доверия, избавьтесь от него.
Маловероятно, что ваш код является реальной интеллектуальной собственностью - это бизнес-знания и бизнес-процессы вашей компании.
Если это действительно необходимо, вы можете разделить приложение на субприложения. Каждая команда работает в одном приложении и видит все остальные как «черные ящики». Может быть, здесь помогает SOA.
Либо создайте команду разработчиков, которой вы можете доверять, либо полностью заблокируйте их систему, чтобы они не могли получить доступ к портам USB, дисководу компакт-дисков или почтовые веб-клиенты. Единственное, что они могли делать, - это работать над кодом и, возможно, просматривать веб-страницы. Также дайте им доступ только к тому коду, за который они отвечают.
Но со всеми этими мерами безопасности ваши разработчики, скорее всего, возненавидят работать с вами и бросят свою работу
почти там, просто измените outerWidth: 100%;
на ширины: auto;
(outerWidth не является свойством CSS)
либо примените к строке следующие стили:
width: auto;
display: block;
-121--861764- EDIT :
Эти три различных элемента имеют разные правила визуализации.
Поэтому для
таблицы # bar
необходимо установить ширину 100% иначе она будет только такой шириной, какой она должна быть. Однако если общая ширина строк таблицы больше ширины bar
, она будет расширена до требуемой ширины. ЕСЛИ я помню, что вы можете противодействовать этому, установив дисплей: block! immental;
, хотя это было некоторое время с тех пор, как мне пришлось это исправить. (я уверен, что кто-то исправит меня, если я ошибаюсь).
textarea # bar
i beleive является элементом блочного уровня, поэтому он будет следовать правилам, аналогичным правилам див. единственное замечание здесь состоит в том, что textarea
принимают атрибуты cols
и строк
, которые измеряются в столбцах символов. Если это указано для элемента, это переопределит ширину, заданную css.
input # bar
является встроенным элементом, поэтому по умолчанию его ширину присвоить нельзя. Однако атрибут textarea
cols
имеет атрибут size
элемента, который может определять ширину. При этом всегда можно указать ширину, используя для нее дисплей: block;
в css. Затем он будет следовать тем же правилам рендеринга, что и див.
td # foo
будет визуализирован как table-cell
, которая имеет некоторое безумие. Суть в том, что для ваших целей он будет действовать точно так же, как div # foo
, ограничивая ширину своего содержимого. Единственной проблемой здесь будет потенциальный неразрешимый текст в столбце где-то, что заставит его игнорировать вашу настройку ширины. Также все ячейки в столбце получат ширину самой широкой ячейки.
Определяет поведение элемента уровня блока по умолчанию, т.е. если ширина равна auto
(по умолчанию), то она будет 100% от внутренней ширины содержащего элемента. так в сущности:
#foo {width: 800px;}
#bar {padding-left: 2px; padding-right: 2px; margin-left: 2px; margin-right: 2px;}
даст вам именно то, что вы хотите.
-121--861763-SVN имеет возможность ограничивать различных пользователей различными папками, чтобы можно было разделить код на отдельные библиотеки и разрешить доступ только определенным пользователям для чтения и записи.
Файл для этого находится в режиме conf\authz Вот пример
[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
[/
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
Некоторые документы можно найти здесь
В разделе ' Управление доступом по каталогу '
Нет прямого способа сделать это, если ваш код находится в пределах одного проекта (т.е. вы хотите разрешить доступ к некоторым частям кода, а к другим нет). Однако если у вас есть отдельные проекты, требующие различных уровней безопасности, можно разрешить разработчикам доступ к коду только определенных проектов, а затем получать сборки с общего сервера сборки.
Следует помнить, что декомпиляция фреймворков, работающих против IL, таких как .NET, относительно проста, поэтому предотвращение доступа к файлам кода не обязательно является серебряной пулей для защиты ИС.
Я знаю, что вы сказали "помимо чисто юридического", но я хотел бы добавить, что помимо упомянутого вами юридического, есть еще Non-Compete. По сути, он гласит, что после увольнения вы не сможете конкурировать с бывшим работодателем. Кража кода не так привлекательна, если вы не сможете использовать его в течение года или двух.
Вы можете заставить их разработать модуль, который будет отделен от остальной части приложения. Если бы у вас была система типов плагинов / модулей, это хорошо подошло бы. Вы можете выпустить API для разработчиков, чтобы они могли интегрироваться с вашими библиотеками DLL, а не с исходным кодом.
Люди, кажется, очень критически относятся к этому, но для этого есть законные причины, например, партнерство с потенциальным конкурентом, если вы предоставите им все свои источники, вы выстрелите себе в ногу.
Разрабатывайте свое программное обеспечение по модулям.
Иметь один общий модуль, содержащий объекты, которые передаются туда и обратно, и служебные классы, которые действуют на эти объекты.
Пусть каждая группа построит модули поверх этого, без особой необходимости знать о других модулях.
Пусть одна команда разработчиков, которой доверяют, планирует, что входит в каждый модуль, и пусть эта команда также интегрирует все модули в единое целое.
Также очень доверяйте тому, кто запускает ваш сервер контроля версий. Хотя он стабилен, ни один разработчик не может причинить столько вреда; они не могут удалить все, например, и вы будете точно знать, что они сделали и когда, если это когда-нибудь станет проблемой.
Возможно, стоит потратить некоторую активность клеток мозга на бизнес-модель, которой вы хотите следовать. Если основная ценность воплощена в коде, основная ценность может быть украдена путем кражи кода. Если, однако, основная ценность вашего бизнеса воплощена в группе сотрудников, некоторые из которых инженеры, другие продавцы, а третьи люди службы поддержки клиентов, и когда программное обеспечение является только сетью, которая поддерживает бизнес этих людей, тогда есть нелегкий способ украсть ценность вашего бизнеса. И если программное обеспечение действительно будет украдено, воры не смогут широко его использовать.
Итак, в дополнение к тому, что сказал Черувим, создайте команду, которой вы можете не просто доверять, но команду, которая является основной ценностью вашего бизнеса.