У нас есть курс по университетскому программированию, и наши студенты задают несколько вопросов по программированию в нашей группе на Facebook. Я немного не решаюсь поделиться всеми своими программами, особенно если это что-то классное для одного из заданий, поскольку на них смотрят ТП, и они могут заметить, если у кого-то есть такая же программа, и начать задавать вопросы о том, откуда она пришла от. Тем не менее, иногда я хотел бы поделиться своим кодом, чтобы помочь другим, но я не хочу, чтобы люди просто брали мою работу. (Пояснение: нам разрешено сотрудничать с заданиями) Это, конечно, тонкая линия. Хотя я хочу помочь некоторым людям, я обеспокоен тем, что у них может не быть академической честности, чтобы переписать код самостоятельно.
Большинство моих сокурсников не очень продвинуты в своих навыках, так что я бы с легкостью скрыл свое имя в кодированной строке Base-64, созданной в отдельном месте. Тем не менее, это может быть слишком очевидно для случайной строки, чтобы сидеть без дела.
Какие существуют варианты, чтобы скрыть мое имя в программе, чтобы оно не выглядело подозрительным?
Я видел в CodeGolf, что они заставили искусство ascii превратиться в другие вещи при оценке. Есть ли похожие стратегии, которые я мог бы использовать? Идеальным решением было бы то, что выглядит как то, что подходит незаметно, но в действительности имеет функцию доказать, что я закодировал это с самого начала.
Пояснение: (Извините, я должен был сказать это раньше) Нам разрешено сотрудничать, но мы должны объяснить наши программы ТП, чтобы получить очки. Просто для удовольствия можно спрятать некоторые пасхальные яйца в чужом коде, если они просочатся, тем более что может возникнуть соблазн обменяться программами, чтобы проверить, что ответы на проблемы, которые они генерируют, эквивалентны и т. Д., Или посмотреть, как другие решают проблему.
Ответы:
Используйте свою подпись не в своем коде, а в общедоступном журнале разработки.
Опубликуйте свой код в общедоступном репозитории Github. Включите Docblock со своим именем в поле «Автор». Таким образом, есть публичная запись о том, что вы являетесь настоящим автором программы.
Это может не квалифицироваться как «скрытие», но, по моему мнению, это так. Если учащийся решит скопировать ваш код, он подумает, что ему нужно только обменять свою подпись на вашу. Представьте их удивление, когда вы представите общественности доказательства их правонарушений. Что еще хуже для них, это доступно онлайн. Вы даже можете использовать онлайн-инструмент, такой как Diffchecker , чтобы продемонстрировать, какие части вашего кода были украдены!
РЕДАКТИРОВАТЬ: Как указано в комментариях, убедитесь, что ваша школа позволяет делиться своей работой таким образом! ОП указал, что с этим учреждением все в порядке, а у вас нет!
источник
«поскольку на них смотрят ТП, и они могут заметить, есть ли у кого-то такая же программа»,
я надеюсь, что это часть их работы - выявлять и наказывать мошенничество, плагиат и другие мошенничества.
И копировать чужую работу и выдавать ее за свою - обман, плагиат.
Очень просто: не отдавай свою работу другим. Помогите им написать свои собственные, если хотите, дайте им идеи о том, как решать проблемы, а затем позвольте им делать свое собственное кодирование.
источник
Как и в ответе выше, я рекомендую использовать что-то вроде Github для регистрации вашей разработки кода, есть и другие методы, которые вы могли бы использовать для покрытия своей спины, такие как отправка по электронной почте исходного кода до его публикации, хотя общедоступный репозиторий что я настоятельно рекомендую.
Это, конечно, если обмен кодом крайне необходим. Как насчет псевдокода? или, как говорилось "урод", поделитесь идеей, а не реализацией. (это имеет больше смысла для более сложного кода)
источник
Вы также можете использовать один из самых старых приемов в сокрытии сообщений. Сделать первую букву каждой переменной, чтобы скрыть сообщение. Например,
источник
Я думаю, что с GitHub или аналогичным решением все в порядке, НО нужно учитывать две вещи:
источник
У картографов такая же проблема . Пара техник:
Представьте невероятное отклонение от традиционного стиля вашего языка, например, всегда имейте несбалансированное пространство вокруг операторов
if (lefthand== righthand)
Распространяйте запреты по всему коду, если они являются частью языка, который вы используете.
lefthand = righthand;;
источник
Предотвращение плагиата НЕ в вашей работе в качестве студента, это исключительно в руках инструктора / TA.
Вообще говоря, относитесь к школе, как к закрытому бизнесу. Ваши сокурсники являются коллегами для других работодателей. Вы не можете делиться кодом, кроме простых однострочников и тому подобного, и НИКОГДА не делитесь целыми классами или проектами.
Сокрытие «пасхальных яиц» в коде обычно считается непрофессиональным. (Мнения могут отличаться здесь)
Не делайте вонючий код вашей подписи
Ваша «подпись» или то, как вы отличаете свой код от других, должна быть сделана со вкусом и никоим образом не препятствовать вашему «запаху» кода. Вот почему я настоятельно не рекомендую следующее:
Тогда как мне защитить мой код ?!
Вообще говоря, ограничение доступности - ваш лучший способ защитить ваш код. Если вы не делаете это публично и никто не взламывает ваш компьютер, ваш код в целом безопасен. Конечно, он может быть декомпилирован, проанализирован и т.д.
Я хочу сделать это публичным, но не допустить его плагиата
Просто нет ... Безусловно, грязная магия в вашем коде может выделить плагиата, если он сделает свой код доступным ... а они этого не сделают .
Это также заставит вас выглядеть ужасно, когда другие просматривают ваш код и уходят. "Что, черт возьми, со всеми опечатками и без операций?"
Но я хочу подпись кода, что-то, что я могу посмотреть на код и сказать, что я сделал это, это был я, это мое
Честно говоря, если вы хорошо пишете код, он, как правило, должен быть неотличим от любого другого кода в проектах, над которыми вы работаете. Конечно, это могут быть нюансы, которые позволят вам узнать, над чем вы работали, а не то, что делал Боб, но они должны быть довольно мягкими.
Единственный временной код, который выделяется среди сверстников, это то, что что-то новое и никогда не было сделано в вашем кругу, или оно пахнет уникальным для вашего круга.
источник
Учитывая, что проблема заключается в том, чтобы скрыть подпись в исходном коде, где
Интересная вариация по стеганографии .
Вы не можете использовать форматирование или пробелы, потому что это может быть тривиально удалено любой компетентной IDE.
Это действительно оставляет только именование переменных и функций. Вы не можете использовать общую отличительную подстроку, потому что она слишком легко удаляется поиском и заменой. Это оставляет использование отличительных и оригинальных имен переменных, которые должны быть удалены по отдельности. Орфографические ошибки и иностранные слова являются хорошими кандидатами.
Возможности для творчества безграничны!
Тогда некоторая простая обработка текста для извлечения и сравнения токенов быстро обнаружит плагиатов.
источник
Предложение duozmo о noops может привести к плохим оценкам небрежности, но это может быть полезно для включения в пример кода, который не должен использоваться дословно.
Это вдохновило меня на мысль о чередующемся шаблоне подписи табуляции и пробелов в начальных и конечных пробелах.
источник
Нечто похожее, что я использовал ранее, - это создание переменных, названных так же, как и другие важные переменные, но обозначим их имена в зависимости от текстового редактора, чтобы изменение не было очевидным, или использовали буквы с ударениями. Вызовите несколько функций, в которые вы отправляете многие важные переменные программы из оператора if, используя ваши переменные, которые никогда не будут истинными, например, if (1eft == wrōng) Установите некоторую важную переменную в бесполезной функции для вашей запутанной подписи.
Вы должны быть в состоянии найти несколько учебных пособий на тему «Как писать не поддерживаемый код», которые могут помочь.
источник