Нормально ли, что рецензент запрашивает исполняемый файл для проверки моих результатов?

Я только что получил письмо с решением по моей рукописи, представленной в журнал Elsevier. Это был пересмотр и повторная отправка. Однако один из рецензентов попросил исполняемый файл, чтобы проверить мои результаты. (Я почувствовал недоверие от его комментария..)

Это касается статьи по информатике о проверке эффективности алгоритма на наборе экземпляров из литературы. Я сравнил результаты алгоритма с результатами других авторов.

Чтобы уточнить: в документе говорится о каком-то программном обеспечении, и рецензент хочет иметь возможность запускать это программное обеспечение? Я не знаю, насколько это распространено (я не компьютерный ученый), но пока любая лицензия на программное обеспечение позволяет вам передать его рецензенту, это звучит как разумная просьба.
Ну, если вы публикуете алгоритм, вам нужно как-то опубликовать фактический код. Похоже, что в вашей рукописи его вообще нет?
Если алгоритм все равно будет опубликован, я не вижу «почему бы и нет»!
@DSVA: «Если вы публикуете алгоритм, вам нужно каким-то образом опубликовать фактический код»… как вы думаете, какой процент опубликованных алгоритмов поставляется с исходным кодом?
@Mehrdad «Как вы думаете, какой процент опубликованных алгоритмов поставляется с исходным кодом», намного меньше, чем процент, который должен поставляться с исходным кодом. Имхо, если вы не можете проверить утверждение без реализации алгоритма, тогда к нему должен быть приложен исходный код, и исходный код должен быть доступен для просмотра, иначе это не очень хорошая наука. Ни один рецензент в здравом уме не примет статью с «здесь происходит волшебство» в середине доказательства, поэтому «здесь происходит программное обеспечение с закрытым исходным кодом» также не должно быть разрешено.
Недоверчивый рецензент — это хорошо, это значит, что он собирается подвергнуть вашу статью строгой проверке, и если в статье есть проблемы, они с большей вероятностью их обнаружат, что в долгосрочной перспективе принесет вам пользу. Я очень сомневаюсь, что они не доверяют вашей честности, просто результат.
Как человек, практически не имеющий опыта публикации программного обеспечения (или алгоритмов), разве предоставление им скомпилированного исполняемого файла не даст им возможность запускать ваш код, а не просматривать его?
@Sumyrda «Имхо, если вы не можете проверить утверждение без реализации алгоритма ..., это не очень хорошая наука». К сожалению, с алгоритмами часто все не так просто. Корректность многих алгоритмов может быть доказана, но при этом их реализация будет совершенно нетривиальной. Именно по этой причине разработка алгоритмов является серьезной областью. Одним из таких случаев является алгоритм триангуляции Шазеля. Его доказательство, скорее всего, правильное, но какое-то время (насколько я знаю) нет реализации, хотя это часто «используемый» алгоритм!
В общенаучных терминах только настоящий рецензент может делать такие вещи. Чрезмерный процент может пометить это как слишком сложное. Это был день (как мне сказали), когда рецензирование означало ОБЗОР! Кто-то еще был уверен, что вы разбираетесь в своих вещах и подставите свое имя (пусть и анонимно) в заключение. Такие люди конечно очень раздражают, но они часть фундамента, на котором строится настоящая наука. Или раньше был.
Какой другой способ вы предлагаете ему пойти, чтобы проверить ваши результаты?
@Discretelizard «Многие алгоритмы могут быть признаны правильными, но при этом их реализация будет совершенно нетривиальной». Но это именно то, что я сказал. Вы либо показываете псевдокод и доказываете, что он правильный, либо, если вы не можете этого сделать по какой-то причине, особенно когда вы утверждаете, что ваш алгоритм быстрее, чем какой-то другой алгоритм, то вы должны показать свой код - или предоставить какой-то другой способ проверить ваше утверждение, если вы можете что-то придумать.
Пожалуйста, уточните: статья об алгоритме? Или программа? Или результаты, полученные конкретной реализацией на конкретном вводе?
Вы никогда не должны распространять исполняемые файлы, но всегда исходный код. Никто не хочет выполнять бинарную программу, не компилируя ее из исходного кода. Это может сделать что угодно в вашей системе. Можно попробовать обходной путь с помощью песочницы, но почему бы не распространять исходники, если они являются частью вашей научной работы?
@JonasStein Я думаю, что единственная причина, по которой я хотел бы получить исходный код, заключалась в том, что я мог проверить его на наличие ошибок, а не потому, что я беспокоюсь, что другой исследователь нарушит мою систему. Особенно тот, кто не предоставил такой исполняемый файл добровольно, а вместо этого производит его по запросу.
@PhdStudent «Наука хороша тем, что она верна независимо от того, верите вы в нее или нет». Я, конечно, доверяю нашим ученым, но это доверие зарабатывается проверками и рецензиями. Когда мы публикуем научные данные без проверки, мы открываем себя в лучшем случае псевдонауке, а в худшем – преднамеренному обману.
Я наблюдаю использование местоимений мужского пола для обозначения предположительно анонимного рецензента. Я думаю, что это наши неявные предубеждения работают против нас.
@Sumyrda Есть разница между исходным кодом и псевдокодом. Исходный код ЯВЛЯЕТСЯ реализацией, просто еще не в исполняемой форме. Псевдокод — это не исходный код, это всего лишь способ описания алгоритмов. Но если вы имели в виду, что должен присутствовать хоть какой-то проверяемый (читателем) аргумент результатов алгоритма, то я, конечно, согласен.
@Discretelizard Точно, это должно быть проверено. Неважно, можно ли это проверить, просматривая псевдокод вместе с вашими рассуждениями или просматривая исходный код, но одно или другое должно быть возможным. Мне не терпится проверить утверждение, запустив тесты с исполняемым файлом с закрытым исходным кодом — на мой вкус, там все еще слишком много «волшебства происходит здесь», — но это лучше, чем ничего.

Ответы (8)

Я не знаю, нормально ли это, но для всех рецензентов должно быть нормальным прилагать разумные усилия для проверки правильности утверждений авторов, поэтому в той мере, в какой это ненормально, я могу только похвалить рецензента за готовность сделать усилие, которое другие рецензенты не делают. То, что вы понимаете под «недоверием», — это то, что рецензент выполняет свою работу, не больше и не меньше (и, вероятно, будет несколько правильно сказать, что работа рецензента состоит в том, чтобы не доверять утверждениям автора, поэтому я не вижу идеи недоверия со стороны автора). рецензент как нечто, на что можно стыдиться или обижаться).

Между прочим, для авторов также должно быть нормальным предоставлять любое программное обеспечение (включая исходный код, когда это возможно), необходимое для воспроизведения и проверки их результатов. Поэтому, если вы недовольны тем, что рецензент возвращается к вам с назойливыми просьбами, которые задерживают решение по вашей статье, в следующий раз вы можете предупредить такие проблемы, опубликовав исходный код (или, по крайней мере, отправив его в журнал) вместе с рукописью. Я уверен, что рецензент был бы намного счастливее, и в конечном итоге выиграли бы все, включая вас.

Спасибо за ваш комментарий, возможно, я обиделся, потому что это моя первая журнальная статья. Однако в области моих исследований не принято, чтобы авторы предоставляли свой код. В любом случае, я отправлю исполняемый файл рецензенту, потому что он заявил, что без этой проверки статья не может быть принята. Еще раз спасибо.
Как человеку, который работает в отрасли и читает газеты как «посторонний», мне всегда казалось очень странным, что существует тенденция «скрывать код». Я считаю, что код, как и документ, должен быть доступен. Я здесь абсолютно с Дэном, надо делать больше. По крайней мере, для меня отказ от публикации кода всегда имеет горький привкус того, что происходит что-то хитрое.
К сожалению, большинство алгоритмов и численных методов, описанных в таких журналах, как Journal of Computational Physics (очень авторитетный журнал!), реализованы в собственных закрытых исходных кодах. Я сделал некоторый обзор там, и я просто должен был доверять результатам.
Было бы хорошо, если бы авторы сделали доступным программное обеспечение, даже если оно не требуется для воспроизведения или проверки их результатов. Я могу вспомнить один документ с алгоритмом, который я когда-то пытался реализовать, но отказался, потому что он не печатался. Эталонная реализация помогла бы понять документ.
Согласитесь насчет правильного оформления чувства "недоверия" - лучше интерпретировать его как здоровый научный скептицизм, который должен быть у каждого рецензента. Я доверяю рецензируемым статьям (особенно по темам, с которыми я близко не знаком) именно потому, что они удовлетворили скептицизм группы рецензентов.
@SBI Это совсем не странно. Если вы вкладываете 4 года работы в код, вам нужно, чтобы он окупился достаточным количеством статей/цитирований/внимания, чтобы получить повышение. Одна статья этого не сделает, и если вы опубликуете свой код, вам придется потратить еще один длительный период времени на кодирование нового опубликованного результата, пока ваши конкуренты используют ваш код, чтобы заполучить вас. Это не столько «опубликуй или умри», сколько «опубликуй больше, чем альтернативные наймы или погибни». (Лично я выпустил свой код; я тоже погиб.)
Ответ предполагает, что у рецензента в сердце только самые лучшие намерения наряду с идеалистической тенденцией к повышению научной культуры. Хотя я бы немедленно похвалил эти вещи, к сожалению, мы живем в реальном мире. Необходимо учитывать, что рецензент — это анонимное лицо, запрашивающее ключевую часть исследовательского процесса с явным опытом в этой области и, как следствие, потенциальным интересом к ней. Я бы посоветовал тщательно рассматривать такие запросы также с точки зрения того, что есть люди, которые могут попытаться использовать анонимность и привилегии своих рецензентов.
Еще один красный флаг, который привлекает мое внимание, заключается в том, что они запрашивают «исполняемый файл». У пользователя нет возможности убедиться, что исполняемый файл не просто выводит результаты без алгоритма, за исключением обратного проектирования (не вдаваясь здесь в подробности). Такой запрос может означать, что рецензент пытается внушить автору ложное чувство безопасности, намеренно не запрашивая исходный код.
@user3209815 user3209815: Они могут удовлетворить точку зрения Xerxes: публикация исходного кода может быть неприемлемой, потому что другие авторы могут затем получить ОП. Создание исполняемого файла означает, что им придется его декомпилировать... что может оказаться нежизнеспособным. Хотя, как вы говорите, нет способа проверить, что такой исполняемый файл не просто распечатывает требуемые результаты.
@Xerxes Как ваша идея может быть опубликована в газете, если она так сильно зависит от закрытого исходного кода? Я имею в виду, вы все равно раскрываете всю свою идею. Я писал код на основе документов бесчисленное количество раз. Обычно код является скорее доказательством концепции, чем содержит больше информации, чем то, что вы все равно публикуете. Однако, наоборот, это становится сложнее. Делать заявления, не показывая, что они на самом деле работают... сложно.
@SBI Конечно, статья должна быть такой, чтобы любой действительно мог реализовать алгоритм! Но это может быть много тяжелой скучной работы по разработке программного обеспечения.
@Xerxes В идеале ваша работа должна быть адекватно поддержана каким-либо финансирующим агентством (обычно общественным). В свою очередь, вы открываете исходный код своего кода. Практически я понимаю, что вы делаете то, что должны делать.
@Xerxes, поэтому код должен быть выпущен с лицензиями, требующими указания авторства. Если люди возьмут ваш код и опубликуют статью на его основе, они должны будут указать вас как оригинального автора кода, точно так же, как им пришлось бы цитировать вас, если бы они использовали результаты ваших опубликованных статей.
@VladimirF: «Я просто должен был доверять результатам». Нет, ты этого не сделал. Если результаты создаются программным обеспечением, вы должны иметь возможность проверить результаты, а если вы не можете их проверить, то вы не принимаете их. Есть такая поговорка: «Фото, или этого не было».
Я бы добавил, что исполняемый файл (скомпилированный код) сам по себе , хотя и позволил бы копировать усилия, не был бы особенно полезен в общей схеме вещей. Исходный код, как говорили другие, важнее. Либо это общедоступное программное обеспечение (в таком случае, почему рецензенты не могли загрузить его самостоятельно?), либо это редкий или проприетарный код, и в этом случае исходный код является более важной деталью. Это метод, который необходимо воспроизвести, а двоичный файл — это черный ящик, скрывающий код, который является методом.
Рецензенты обязаны соблюдать конфиденциальность — вы можете предоставлять рецензентам код, не публикуя его. Да, рецензенты обманывают иногда, хотя и редко. Есть несколько движений в сторону рецензентов, пробующих код; см. Artifefet-eval.org для одного подхода.
@ gnasher729 Доверяете ли вы экспериментам, даже если авторы не предоставили вам свои возможности для повторного проведения своих экспериментов? Что, если этот численный метод был реализован в коде CFD, авторы которого не имеют полных прав на распространение? Вычисления могут занять много процессорного времени на суперкомпьютере, и рецензенты все равно не будут их пересчитывать. Я бы не стал для той бумаги, которую я рассмотрел. Анализ результатов также может занять много времени.
@Xerxes Нет, ты не потратил 4 года на свой код. Вы потратили четыре года на свой алгоритм, о котором вы уже сообщаете миру через свою статью. Код — это просто его реализация, которую вы могли бы написать за долю времени, если бы начали работать над ним после того, как определились с алгоритмом.

Я пришел из другой области, в которой код, который мы используем, не является основным продуктом. Но если бы рефери попросил код, мы бы его предоставили и с радостью. Большая часть нашей работы выполняется на python, поэтому исполняемый файл не будет обычным, исходный код будет (также верно для Matlab).

На самом деле единственное, что я нахожу здесь немного странным, это использование исполняемого файла , а не исходного кода .

Не обижайтесь на просьбу по нескольким причинам: это не работа рецензентов доверять вам; это их работа, чтобы проверить вашу бумагу. Если рецензент проявляет достаточно интереса к вашей работе, чтобы захотеть запустить ваш код, он не отклонит вашу статью сразу.

Мне нравится последний пункт. Мне даже показалось бы немного почетным, если бы рефери захотел опробовать мою программу :)
@Džuris действительно, это означает, что они очень серьезно относятся к вашей статье.
Спасибо за второй абзац! Похоже, здесь этого никто не видит. Когда я прочитал заголовок вопроса, я предположил, что OP счел странным, что кто-то запрашивает исполняемый файл, а не исходный код, потому что это указывает на то, что им все равно, чтобы проверить исходный код на наличие ошибок/ошибок/преднамеренных ошибок и на самом деле слишком глупы или ленивы, чтобы самостоятельно компилировать исходный код (который, как я полагал, был предоставлен).
@ UTF-8 Также возможно, что у них нет компилятора (может быть, из-за проблем с лицензией / платформой) или у них нет навыков владения этим языком, чтобы понять источник. Даже тогда я все еще хочу код
Проголосовал за и ++ за то, что странно, что им нужен исполняемый файл, а не исходный код. Черт возьми, когда я оцениваю домашнее задание, мне нужен исходный код и все остальное, необходимое для его компиляции, включая команды/операторы/параметры/аргументы компилятора, если это что-то более сложное, чем "g++ foo.cpp -o foo"

Подводя итог ситуации с вашими данными: -

1) Вы придумали алгоритм на бумаге/Matlab/что угодно.

2) Вы реализовали этот алгоритм на каком-то языке программирования.

3) Вы построили набор тестовых данных для проверки своего алгоритма и получили некоторые результаты для того, что он должен делать в теории.

4) Вы поместили эти тестовые данные в код и получили некоторые результаты для того, что он делает на практике.

В этом процессе есть несколько мест, где что-то может пойти не так с вашей методологией. Ваш код может неправильно отражать ваш алгоритм. Ваши тестовые данные могли быть обработаны в обратном направлении от кода, а не вперед от алгоритма. Ваши тестовые данные для вашего алгоритма и ваши тестовые данные для вашего кода могут не совпадать.

Если у рецензента нет алгоритма , исходного кода и всех тестовых данных для обоих, а также всех выходных данных для обоих, он не может проверить, что ваша работа надежна, а ваши выводы верны. Это не подлежит оспариванию - это логически невозможно, если они хотят нормально оценить вашу работу. Все остальное — это предположения, которые могут оказаться неверными.

Меня лично затронула эта ситуация, когда моя компания купила интеллектуальную собственность по теории управления у исследователя. Он написал статьи о том, как это должно было работать, и о лежащей в его основе теории, а затем построил электронику для реализации своей теории. Его статьи касались теории, а также включали схемы электроники. Когда я прочитал это, чтобы выяснить, как реализовать его теорию в программном обеспечении, я обнаружил, что на схеме есть дополнительный фильтр. Действие этого фильтра оказалось критически важным для стабильности или даже эффективности системы, но нигде в его работе это не было задокументировано. Только когда мы поговорили с ним по телефону, мы узнали, какова цель фильтра и как мы должны были его настроить.

Это было в статье, которая теоретически прошла рецензирование при публикации. Ясно, что он не был достаточно тщательно рецензирован! Его результаты показали, что при тех же данных выход реализации был довольно близок к теоретическому ожидаемому результату, а эффект фильтра находился в другом месте отклика. Тем не менее, реализация никогда бы не работала без этого фильтра, и было бы совсем несложно включить его в теоретическую модель. Он мог бы даже сказать, что «этот фильтр требуется по этим причинам, но его можно игнорировать в той области ответа, которую мы рассматриваем по этим причинам», и его бы защитили. Что неприемлемо, так это то, что он сделал, то есть вообще не упомянул об этом,

Как я уже сказал, его статья все еще публиковалась, и в то время никто не жаловался. Хотя это должны были заметить его первоначальные рецензенты. В вашем случае ваш рецензент должен искать подобные несоответствия — в этом весь смысл рецензирования. Поэтому, если люди просят вас о вещах, которые вы не сделали доступными, (а) это хороший признак того, что они тщательно проверяют, и (б) вы должны были сделать это доступным в первую очередь в качестве наилучшей практики.

Представление артефактов — это вещь в CS. Что я видел, так это то, что вы готовите виртуальную машину, где ваше программное обеспечение уже настроено и готово для проведения экспериментов. Таким образом, рецензент может иметь в виду, что в журнале есть какая-то официальная процедура отправки артефактов. В качестве альтернативы, некоторые авторы просто предоставляют исходный код своих инструментов и тестов через такие сервисы, как github, и рецензент может предложить вам сделать то же самое. Что касается недоверия, компьютерщики, естественно, настороженно относятся к эталонным тестам и сравнениям инструментов, поскольку окончательные цифры могут во многом зависеть от того, как настроен ваш эксперимент (например, если вы сравниваете с собственной реализацией существующего алгоритма, правильно ли вы его реализовали? ). Также может быть, что цифры, которые вы приводите в статье, кажутся немного странными,

Отправка исполняемого файла — это не то же самое, что отправка исходного кода. Исполняемый файл на самом деле не дает получателю никакого доступа к вашему исходному коду (как, конечно, уже должен знать студент, изучающий информатику). Я не вижу проблемы в этом запросе.

Я вижу серьезную проблему: запуск исполняемого файла на тех же тестовых примерах даст те же результаты. даже если эти результаты неверны из-за ошибки в программе.
Мне любопытно, как бы вы отправили «исполняемый файл», скажем, кода Python, не предоставляя доступ к исходному коду? Ожидается, что вы запутаете его?
@jamesqf Они могли бы попробовать другие случаи, не охваченные авторами.
Любой исполняемый файл можно декомпилировать для создания функционально того же кода. Любой код, который компилируется в JVM или .NET, можно декомпилировать во что-то относительно близкое к оригиналу, и даже машинный код можно разобрать на части при достаточной работе. Хотя я глубоко убежден, что исходный код должен публиковаться с такими публикациями, если вы отказываетесь это делать, вы не можете предлагать исполняемый файл, как будто он скрывает то, что вы хотели скрыть от исходного кода.
@CaptainEmacs, но они не могут этого сделать, если не видят, что на самом деле делает программа. Он также может иметь данные, встроенные в исполняемый файл, или делать что-то еще, кроме заявленного.
@mathreadler Конечно, всем может не повезти. Однако у меня была именно такая ситуация во время работы над докторской, и авторы прислали мне исполняемый файл, и я мог попробовать свои примеры с ним. Если есть плохой код (жестко закодированные константы), иногда все еще можно отредактировать двоичный файл, чтобы исправить это (я тоже однажды это сделал).

Учитывая мой личный опыт работы с сообществами открытого исходного кода и предположение, что документ включает в себя весь рассматриваемый алгоритм, отправка исходного кода или соответствующей компиляции указанного программного обеспечения не приведет к большим негативным последствиям.

Это позволит рецензенту проверить результаты и утверждения, сделанные автором статьи. Ключевой вопрос, на который может обратить внимание рецензент, заключается в том, что вы правильно реализовали алгоритм в исходном коде и не полагаетесь по ошибке на функцию языка программирования, ОС или аппаратного обеспечения, чтобы делать заявления о времени его работы или других функциях.

Внезапно я бы сказал, что в случаях, связанных с вводом-выводом, легко спутать эффективные алгоритмы, например, со способностью Javascript сделать почти каждый вызов функции асинхронным. Конечно, это в основном наблюдается в связанных операциях ввода-вывода, а не в множащихся вычислительных циклах. Тогда измеряемая эффективность - это не эффективность алгоритма как формального доказательства, а; вместо этого он зависит от конкретной функции языка.

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

Исходный код может содержать ошибки, и для действительно эффективного обзора алгоритма одного описания метода может быть недостаточно. Полезно делиться чем-то помимо текста; хорошая статья с фактическим исходным кодом (+ примеры входных данных) является золотым стандартом воспроизводимости.

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

Идиотская просьба с его стороны.

  1. Он мог заразиться вирусом.
  2. У него нет реального способа проверить, что исполняемый файл реализует то, что описано в вашей статье, следовательно , запрос не имеет какой-либо научной ценности.

Он должен попросить исходный код, и это все, что вы должны ему дать.

№ 2 часто не соответствует действительности. Для значительного числа задач характерно то, что проверить решение гораздо проще, чем найти решение. В таком случае рецензент может убедиться, что черный ящик действительно дает правильные решения, и измерить сложность выполнения. Это было бы особенно ценно, если бы, например, рецензент заметил, что все примеры, использованные в статье, имеют определенные характеристики, облегчающие их решение, чем общий случай, поскольку он может сформулировать свои собственные тестовые примеры.
@BenVoigt Но какой черный ящик? Как рецензент может знать, что у него есть черный ящик, реализующий то, что утверждает статья?
Существует веская точка зрения, что использование черного ящика не гарантирует, что документ содержит точное описание и объяснение используемого метода, но рецензент может гораздо меньше беспокоиться о риске подделки описания, учитывая, что новый метод доказано существование, по крайней мере, по сравнению с риском подделки как метода, так и описания.
@BenVoigt Я не могу понять это после слова «но». Черный ящик ничего не доказывает о утверждениях в статье. Это только доказывает, что существует черный ящик, который каким-то образом дает заявленные результаты.
Рецензент может запустить исполняемый файл с другим набором параметров, чтобы воспроизвести известный результат. ОП, похоже, не дает нам достаточно информации, чтобы понять, что это так. Что касается части с вирусом, пользователь Linux может чувствовать себя в большей безопасности, чем пользователь Win.
@Magicsowon Я хотел бы продать вам Бруклинский мост. У меня есть правоустанавливающие документы. Я не буду их вам показывать, но я могу отправить вам .exe, который будет печатать «да» каждый раз, когда вы спросите, владею ли я им.
@Magicsowon «пользователь Linux может чувствовать себя в большей безопасности, чем пользователь Win» пользователь Linux здесь. Я совсем не согласен. Вы можете легко написать программу, которая повреждает личные документы или отправляет их через сетевое соединение на обеих платформах, если получатель достаточно любезен и запустит ее для вас. Linux безопаснее для «широко распространенных» вредоносных программ, которые не нацелены конкретно на вас, а также потому, что для Windows создано больше программ.
@AndreaLazzarotto Ключевое слово «если». Пользователи Linux, которые зависят от своих машин для исследований, часто настолько параноики, что резервируют свои данные в 3 разных местах и ​​запускают стороннее программное обеспечение только там, где оно ничего не может повредить. Это не исключает таких людей, как я, которые никогда не теряли данные так, как вы описываете, и просто чувствовали себя в безопасности из-за этого.
@EJP Я сделаю это, как только моя очень далекая тетя из Либерии отправит мне мое наследство, чтобы я мог заплатить тебе.