Содержание
- Ejudge marking error фоксфорд
- Вопрос:
- Комментарии:
- Ответ №1:
- FAQ (часто задаваемые вопросы)
- Что такое ejudge?
- Зачем мне делать эти задачи?
- Как зарегистрироватьcя?
- Я нашел ошибку или уязвимость в системе проверки.
- Система проверки выглядит некрасиво!
- Стартовая страница и/или этот FAQ выглядят некрасиво!
- Я похакал этот сервер!
- А сколько баллов мне дадут за %action%?
- Почему нет языка %language_name%? Я умею погромировать только на нем!
- Что означает valgrind рядом с gcc при отправке ответа на C или C++?
- Почему тесты проходят так медленно?
- У меня ошибка компиляции, но на моем компьютере все работает!
- У меня ошибка нарушения безопасности!
- У меня тест не прошел, где смотреть ошибку?
- У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
- Что делать с задачей, у которой статус «ожидает подтверждения»?
- У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
- Я нашел ошибку в условии/условие не отображается.
- Я нашел ошибку в тесте.
- У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
- У меня есть идея для задачи!
- Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
- Почему мое решение отклонили?
- Почему дисквалифицировали мое решение?
- Но ведь невозможно написать 2 программы по одному условию, чтобы они не были похожи!
- Я просто взял решение друга, чтобы посмотреть, как он сделал, но писал код сам!
- Я сдал код первым, я не мог ни у кого списать!
- Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
- За что снижаются баллы?
- Я сделал все задачи, а мне не дали баллов!
- Сколько мне дадут баллов, если задачи в модуле сделаны частично?
- Систем начисления баллов несправедлива!
- У меня проект состоит из нескольких файлов, как мне их отправить?
- Я списал, а мое решение не дисквалифицировали и засчитали задачу!
- Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
- Я не нашел ответа на свой вопрос.
- Онлайн школа ФОКСФОРД отзывы
- Настя
Ejudge marking error фоксфорд
#c #scanf #fork
Вопрос:
Почему этот код может генерироваться Runtime Error в ejudge? Эта программа подсчитывает количество stdin введенных слов. Слова могут быть разделены любым количеством ‘ ‘ и ‘n’ . Похоже fork() , это может вызвать проблему, но я не уверен, почему я не получаю ту же ошибку на своем компьютере.
ejudge использует gcc — простой C, 64-разрядный, используя -std=c11 или -std=gnu11
В стандартном входном потоке задается текстовая строка, состоящая из слов (последовательность символов, не являющихся пробелами), между которыми может быть любое количество пробелов, включая строки.
Вам нужно рассчитать количество слов, если вы знаете, что их не более 255, и вывести это значение в стандартный поток вывода.
Используйте создание новых процессов, чтобы каждый процесс считывал не более одного слова, например, используя scanf(«%s»,…).
Вы можете вывести результат только из процесса, который был запущен первым (т. Е. из исходной программы).
Полученная программа должна вернуться с кодом возврата 0.
Размер каждого слова не превышает 4096 байт.
Комментарии:
1. Почему вы закрываетесь вручную stdout ? Это может привести к ошибке в некоторых системах, когда ваша программа завершает работу и пытается закрыть ее снова. Кроме того, можете ли вы предоставить более подробную информацию об ошибке, которую вы получаете?
2. Кроме того, обратите внимание, что stdin может не получиться EOF даже после того, как закончатся фактические входные данные, это опять же зависит от среды.
3. Статус выхода ограничен 255. Это не сработает, если длина файла превышает 255 строк.
4. Это решение не будет работать, потому что stdio использует буферизацию ввода. scanf() может буферизировать больше входных данных, чем возвращаемое слово, и следующий дочерний процесс не начнет чтение с того места, на котором он остановился.
5. Я думаю if (i == 1) , так и должно быть if (i == 0) .
Ответ №1:
Переписал алгоритм, и он сработал! В первой версии было сделано много ненужных вилок. Например, если предполагалось 6, то создавалось 12.
Источник
FAQ (часто задаваемые вопросы)
Что такое ejudge?
Это сервер проверки задач, разработанный Александром Черновым из МГУ. Одна из самых распространенных систем для проведения олимпиад. Системе уже больше 10 лет.
При желании вы можете скачать с официального сайта виртуалку и открыть свой сервер проверки, со Scala и программистками.
Зачем мне делать эти задачи?
Чтобы проверить свои навыки программирования и получить баллы. Ну и в некоторых задачах придется думать, что может пойти не так.
Как зарегистрироватьcя?
- Зайти на страницу регистрации, ввести логин и почту
- Войти, используя логин и присланный на почту пароль
- Отредактировать свои данные
- Ввести свои настоящие данные
- Подтвердить регистрацию
После одобрения регистрации модератором можно будет зайти в систему с главной страницы. Рекомендуется сменить пароль, который был прислан при регистрации.
Я нашел ошибку или уязвимость в системе проверки.
Проинформируйте преподавателя о ней. Возможно, это проблема касается только этого сервера. Если нет — то, пожалуйста, сообщите об этом разработчику системы на github (создайте тикет описанием проблемы с шагами воспроизведения).
Система проверки выглядит некрасиво!
Ну, что поделать. Система старая, дизайнера в ней не было. Вы можете разработать свой дизайн, реализовать его и обкатать на виртуалке.
Стартовая страница и/или этот FAQ выглядят некрасиво!
Раньше это были вообще голые hmtl-страницы без стилей, но благодаря Александру Маковскому они выглядят более пристойно. Если у вас есть предложение, как улучшить внешний вид этих страниц — шлите свои варианты с нескучными обоями на почту.
Я похакал этот сервер!
Хорошо, что хоть кто-то это умеет делать. Пожалуйста, почините все обратно и шлите подробную историю своего хака. Вознаграждение будет.
Пожалуйста, ломайте со своего аккаунта. Ужесточать регистрацию и превращать ejudge в продолжение анекдота про столовую и солонки не хочется.
Экплоиты, особенно приводящие к DoS, старайтесь по максимуму проверять на виртуалке — вы же не хотите подгадить своим одногруппникам, обвалив сервер и задержав им сдачу заданий?
А сколько баллов мне дадут за %action%?
Все хорошие и/или полезные действия будут поощряться. Точное количество баллов определяется преподавателем, главное — не забывайте его своевременно информировать о своих нестандартных действиях.
Почему нет языка %language_name%? Я умею погромировать только на нем!
Язык программирования может отсутствовать по одной из трех причин: он не поддерживается системой проверки, не является безопасным (например, C#) или не распространен.
Список для первых двух категорий смотрите в документации/коде ejudge. Насчет последней категории — обсуждаемо, но учтите, что какой-нибудь Pascal включаться точно не будет, а на 1-2 курсе был предмет «Алгоритмические языки и программирование», в рамках которого студенты должны были усвоить языки программирования C и C++.
Теоретически возможен вариант, когда вы пишете на своем любимом языке, но потом транслируете его исходный код в исходный код на языке, поддерживаемым системой. В таком случае решение будет принято, однако вам нужно предоставить исходный код оригинала и инструкцию по трансляции оригинала в сданное решение. Разумеется, это то еще извращение и делать так настоятельно не рекомендуется.
Что означает valgrind рядом с gcc при отправке ответа на C или C++?
Valgrind — это программа для динамического обнаружения утечек и других ошибок при работе с памятью. Все программы на C и C++ запускаются в ее окружении, поэтому работают медленее. Но зато вам говорят, где у вас проблема при работе с памятью.
Почему тесты проходят так медленно?
Во-первых, программы на C и C++ запускаются в окружении valgrind (см. вопрос про него).
Во-вторых, вы на сервере не один (особенно если это конец семестра/модуля).
В-третьих, у всех запускаемых программ ограничиваются ресурсы (чтобы ваша программа по вычислению суммы двух чисел не сжирала всю память на сервере).
У меня ошибка компиляции, но на моем компьютере все работает!
Убедитесь, что вы написали код с учетом общепринятых стандартов (и например там нет какого-нибудь мусора от известного производителя ПО) и не используете нестандартные библиотеки.
Убедитесь, что вы прочли лог компилятора, который выдала вам система проверки и решили все проблемы.
Дайте посмотреть ваш код лучшему программисту в вашей группе. Если это внезапно вы, то пишите преподавателю.
У меня ошибка нарушения безопасности!
Наверно, вы лезете куда не стоит. Читаете больше файлов, чем надо, создаете лишние файлы, пингуете сервер и т.п.
Если вы пишете на питоне, то тогда это может означать, что вы получили исключение. Интерпертатор питона пытается вам выдать stacktrace, и при этом читает системные файлы (что ему запрещает делать модуль безопасности).
У меня тест не прошел, где смотреть ошибку?
Нажимайте на буквы в табличке!
У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
Вы внимательно прочитали условие? Скачали тест и отладили программу, по шагам выполняя ее? Обратили внимание на поток ошибок (буква E)? Локализовали ошибку в тесте? Уверены, что ошибка не может быть вызвана каким-нибудь неопределенным поведением или особенностями компилятора? Вы попросили помощи у одногруппников?
Если на все вопросы вы можете с чистейшей совестью ответить «да», тогда высылайте всю информацию преподавателю, с подробным описанием того, что в тесте не так, как должно быть и почему.
Что делать с задачей, у которой статус «ожидает подтверждения»?
Этот статус означает, что ваше решение прошло все тесты, но преподаватель пока еще не посмотрел его исходный код и не одобрил его. Можно делать другие задачи и ждать, когда эта будет проверена преподавателем.
У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
Если вы присылаете еще одно решение, которое прошло все тесты, то предыдущее решение, прошедшее все тесты, не учитывается как попытка. Таким образом, можно бесплатно дополнять свое решение, например, добавлять поясняющие комментарии, рефакторить или наводить красоту. Проверяется только последнее решение.
Я нашел ошибку в условии/условие не отображается.
Пишите преподавателю, где ошибка, и почему вы считаете, что это ошибка.
Я нашел ошибку в тесте.
Опишите преподавателю максимально подробно, в чем именно заключается ошибка в тесте и какой на самом деле должен быть ответ.
У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
Отлично! Если вы уверены, что ситуация подходит под условие задачи, то высылайте преподавателю:
- исходный код, который прошел все тесты (и номер решения);
- описание случая, когда код будет работать некорректно;
- входные данные для теста, который покрывает этот случай — текстовый файл;
- выходные данные для теста — текстовый файл;
- исправленный исходный код, который проходит тест.
В качестве альтернативы вы можете предложить изменения в тексте условия задачи, которые исключат этот случай.
У меня есть идея для задачи!
Очень хорошо. Обсудите идею с товарищами. Обсудите с преподавателем и подумайте, куда эту задачу лучше приткнуть.
Возможно, задача потянет на ДЗ.
Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
Пасхалки — это прикольно. Возможно, они есть даже на этой странице. Первый, кто на потоке нашел пасхалку, получит баллы.
Почему мое решение отклонили?
Причин может быть несколько: вы не выполнили какое-нибудь условие задачи (например, в условии написано «выделять память только один раз», а вы выделяете ее на каждый чих), вы прислали обфусцированный код, вы прислали код, в котором захардкожены все тесты, в вашем коде есть какая-то неимоверная дичь, от которой захотелось выколоть себе глаза и т.д.
Если вы считаете отклонение несправедливым, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию: шлите ее на почту.
Почему дисквалифицировали мое решение?
Проверяющая система решила, что ваш код очень похож на чужой, и есть сомнения, что решение вы выполнили полностью самостоятельно. Статус «дисквалифицировано» означает, что преподаватель посчитал так же.
Если вы считаете дисквалификацию несправедливой, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию (присылайте ее на почту в свободной форме). Имейте в виду, что решение может быть пересмотрено и в худшую для вас сторону. Если вы отправите чужой код еще раз, то за модуль ejudge вы не получите баллов вообще (даже если потом полностью и честно сделаете сами).
Дополнительные вопросы по этой теме:
Но ведь невозможно написать 2 программы по одному условию, чтобы они не были похожи!
Я просто взял решение друга, чтобы посмотреть, как он сделал, но писал код сам!
Я сдал код первым, я не мог ни у кого списать!
Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
Черт побери, так решите ее на %language_name%, в чем проблема-то? Выбирайте инструмент под задачу.
За что снижаются баллы?
Баллы снижаются за количество попыток (но некоторое число попыток на задачу — бесплатно), за отклонение решения, за выполнение модуля не в срок.
Я сделал все задачи, а мне не дали баллов!
К сожалению, преподавателю иногда надо спать и заниматься другими менее приятными делами, поэтому он реагирует не мгновенно. Задачи проверяются массово в конце модуля и иногда в середине.
Сколько мне дадут баллов, если задачи в модуле сделаны частично?
Баллы начисляются только за полностью выполненный модуль, в котором все задачи проходят все тесты, а исходных код проверен преподавателем.
Систем начисления баллов несправедлива!
Опишите максимально подробно, в чем именно заключается несправедливость, и как это можно, на ваш взгляд, решить. Присылайте свои предложения на почту преподавателю.
У меня проект состоит из нескольких файлов, как мне их отправить?
К сожалению, это ограничение системы ejudge. Возможно, кто-то невнимательно прочитал документацию. Если вы найдете способ, как настроить ejudge так, чтобы он корректно обрабатывал проекты из нескольких файлов — пишите.
Большинство языков позволяют создать программу, полностью расположенную в одном файле. Соответственно, вы можете найти/написать скрипт, который пакует ваш проект в один файл (или сделать это вручную).
Я списал, а мое решение не дисквалифицировали и засчитали задачу!
Это можно рассматривать как уязвимость системы проверки. При явке с повинной вам не только оставят баллы, но еще и сверху накинут. Но, разумеется, надо описать, как вы это сделали.
Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
Это служебное сообщение системы ejudge о том, что контрольная сумма файла ответа на тест была изменена во время тестирования.
Но, разумеется, никто его не менял и это баг системы, о котором было доложено разработчику.
На корректность вашей программы это сообщение никак не влияет. Если программа завалилась на этом тесте — надо ее исправить, если нет — не надо.
Я не нашел ответа на свой вопрос.
Задавайте его в чате. Возможно он потом попадет в этот FAQ.
Источник
Онлайн школа ФОКСФОРД отзывы
Настя
Сейчас все кинулись в репетиторство. Кому-то это удается, а кто-то вроде онлайн школы ФОКСФОРД оказался настолько оторванным от реальности вообще и от детей в частности, что диву даешься. Я выскажу свое личное мнение о том, почему вам нужно держаться подальше от этой пародии на обучение.
Когда зашла на сайт, сначала оторопела: Оксфорд? Но потом поняла: название просто придумано так, чтобы люди, как и я, читали неправильно и потом ассоциировали это образовательное нечто с одний из старейший университетов мира. Честно говоря, меня это покоробило. Уже один этот момент заставил бы меня развернуться и уйти — что это за бездарности, которые могут вылезти только за счет чужого имени? Выходит, сами они ничего из себя не представляют? Но я осталась — из чисто спортивного интереса. И знаете, вот после такого шока меня уже не впечатлил список крутых партнеров школы — если они связались с подделкой, копией, репликой если хотите, значит не так все хорошо в их королевствах.
Смотрю историю ФОКСФОРДа — а почему она заканчивается 2016-м годом? Сдохла фритюрница?
Школа хвастается исследованием некоей Synopsis group, якобы которая определила преподавателей школы как лучших в России. Странно, ведь, насколько я смогла узнать, «Российская Компания Synopsis проводник инновационных технологий в области медицины и фармации». Причем тут дополнительное образование? Да и исследование, выложенное на сайте, вообще не похоже на настоящее и не имеет даты проведения. В общем, опять подделка, господа.
На сайте гордо выставлены цифры, сколько часов занятий провели их педагоги, сколько страниц теории настрочили, да сколько задач придумали. Ребята, кому вы мозги полощите? Я знаю учителя, проработавшего 45 лет в школе, да так и не научившегося преподавать — всю жизнь зачитывал учебники. А уж о теоретиках и придумщиках задач уже анекдоты ходят, когда предлагают сложить яблоки со стульями, да теорию оторванную от реальности продвигают. Мне как родителю плевать на эти цифры.
И снова: 95% учеников Онлайн школы ФОКСФОРД поставило «5» учителю, но, правда, в 2015-2016 учебном году. Что-то меня сомнение гложет: в спячку они, что ли залегли на пять лет?
Страница «Выбрать способ подготовки» — просто детский сад! Простецкий алгоритм для первоклассника подставляет готовые ответы на ваши действия, а потом выводит стандартный ответ, одинаковый для всех вариантов: «Чтобы начать учиться, надо зарегистрироваться. Выберите удобный способ регистрации и введите свои данные, а я сделаю все остальное». Кого вы хотели удивить? Первоклашку? Настолько несерьезного отношения я еще не встречала.
Слушайте, а какая хрень эта их «Партнерская программа»! Во-первых, сразу режет глаза «онлайн-школа на 3-11 классов» — русский язык, видимо, не конек школы. Во-вторых вообще не понятно, в чем суть: какая-то таблица с расценками и огромная кнопка «Хочу стать веб-мастером!». Чего? Каким веб-мастером? Для чего? Что это вообще? А как вам это: «Покупка репетиторов 600-1150₽». Так они все — рабы, купленные на распродаже?
Ладно, посмотрим на курсы, которые проводит Онлайн школа ФОКСФОРД.
Взяла первый попавшийся — математика 11 класс. Не пойму, как интенсивное обучение может состоять из одного-единственного занятия в неделю? Это что за сонный интенсив такой? А вообще всем этим кандидатам и докторам кто-нибудь рассказывал об особенностях детской психики? Если бы так было, то занятие не длилось бы 3 часа — за это время (вам любой скажет) ребенок, даже в 11 классе, потеряет сосредоточенность и его внимание размажется, как масло на тосте. Ой, а за 12 тысяч вас научат только решать только задания №13-19, и все. Ах, да, вам еще нужно знать математику на 60 баллов, иначе вас научить не смогут.
Но за математику вы хотя бы знаете, сколько заплатите, а вот «гарантированный» курс стоит. «Выгодно!».
Знаете, вот больше не хочется бродить по сайту Онлайн школы ФОКСФОРД — все настолько примитивно, настолько дешево, настолько оторвано от реальности, что аж укачивает (мягко говоря). Уже и так понятно, что все эти ученые мужи понятия не имеют, кто такие дети и что с ними делать — одни считают их несмышлеными обезьянками, а другие — маленькими взрослыми.
Я уверена, что не будет толку от обучения в этой школе — только деньги потеряете, да драгоценное время, которое могли бы потратить на действительно серьезную подготовку к экзаменам.
Источник
#c #scanf #fork
Вопрос:
Почему этот код может генерироваться Runtime Error
в ejudge? Эта программа подсчитывает количество stdin
введенных слов. Слова могут быть разделены любым количеством ' '
и 'n'
. Похоже fork()
, это может вызвать проблему, но я не уверен, почему я не получаю ту же ошибку на своем компьютере.
ejudge использует gcc — простой C, 64-разрядный, используя -std=c11 или -std=gnu11
Задача:
В стандартном входном потоке задается текстовая строка, состоящая из слов (последовательность символов, не являющихся пробелами), между которыми может быть любое количество пробелов, включая строки.
Вам нужно рассчитать количество слов, если вы знаете, что их не более 255, и вывести это значение в стандартный поток вывода.
Используйте создание новых процессов, чтобы каждый процесс считывал не более одного слова, например, используя scanf(«%s»,…).
Вы можете вывести результат только из процесса, который был запущен первым (т. Е. из исходной программы).
Полученная программа должна вернуться с кодом возврата 0.
Размер каждого слова не превышает 4096 байт.
Мой код:
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
#define DBG(args...) fprintf(stderr, args)
//#define DBG(args...)
int main(int argc, char* argv[])
{
int status;
pid_t pid;
pid_t first_child;
for (int i = 0; i < 256; i) {
pid = fork();
if (pid == 0) { // child continue reading
char str[4097];
if (scanf("%s", str) != EOF)
continue;
exit(1);
} else {
if (i == 1) {
first_child = pid;
}
if (wait(amp;status) == first_child) {
break;
} else {
exit(WEXITSTATUS(status) 1);
}
}
}
fprintf(stdout, "%in", WEXITSTATUS(status));
fflush(stdout);
fclose(stdout);
return 0;
}
Комментарии:
1. Почему вы закрываетесь вручную
stdout
? Это может привести к ошибке в некоторых системах, когда ваша программа завершает работу и пытается закрыть ее снова. Кроме того, можете ли вы предоставить более подробную информацию об ошибке, которую вы получаете?2. Кроме того, обратите внимание, что
stdin
может не получитьсяEOF
даже после того, как закончатся фактические входные данные, это опять же зависит от среды.3. Статус выхода ограничен 255. Это не сработает, если длина файла превышает 255 строк.
4. Это решение не будет работать, потому что stdio использует буферизацию ввода.
scanf()
может буферизировать больше входных данных, чем возвращаемое слово, и следующий дочерний процесс не начнет чтение с того места, на котором он остановился.5. Я думаю
if (i == 1)
, так и должно бытьif (i == 0)
.
Ответ №1:
Переписал алгоритм, и он сработал! В первой версии было сделано много ненужных вилок. Например, если предполагалось 6, то создавалось 12.
#include <stdio.h>
#include <stdlib.h>
#include <sys/wait.h>
#include <unistd.h>
// #define DBG(args...) fprintf(stderr, args)
#define DBG(args...)
int main(int argc, char* argv[])
{
int status;
pid_t first_pid;
pid_t pid = fork();
if (pid != 0) {
wait(amp;status);
printf("%in", WEXITSTATUS(status));
return 0;
}
for (int i = 0; i < 256; i) {
char str[4097];
if (scanf("%s", str) == EOF) {
DBG("PID %in", pid);
exit(0);
}
pid = fork();
if (pid != 0)
break;
}
DBG("PID %i waitingn", pid);
wait(amp;status);
exit(WEXITSTATUS(status) 1);
}
- проверка (подлинности)
- долговременная маркировка
- верификация (штрихового кода)
- верификация (с точки зрения электробезопасности)
- верификация (проверка)
- верификация (доказательство правильности)
- верификация (в менеджменте качества)
- верификация
верификация
контроль
проверка
Установление соответствия принятой и переданной информации с помощью логических методов [http://www.rol.ru/files/dict/internet/#].
[ http://www.morepc.ru/dict/]
верификация
(ITIL Service Transition)
Деятельность, которая гарантирует, что новая или измененная ИТ- услуга, процесс, план или другой результат — полный, точный, надежный и соответствует своей спецификации проектирования.
См. тж. подтверждение; приёмка; подтверждение и тестирование услуг.
[Словарь терминов ITIL версия 1.0, 29 июля 2011 г.]
EN
verification
(ITIL Service Transition)
An activity that ensures that a new or changed IT service, process, plan or other deliverable is complete, accurate, reliable and matches its design specification.
See also acceptance; validation; service validation and testing.
[Словарь терминов ITIL версия 1.0, 29 июля 2011 г.]
Тематики
- информационные технологии в целом
Синонимы
- контроль
- проверка
EN
- verification
верификация
Подтверждение посредством представления объективных свидетельств того, что установленные требования были выполнены.
Примечания
1. Термин «верифицирован» используют для обозначения соответствующего статуса.
2. Деятельность по подтверждению требования может включать в себя:
— осуществление альтернативных расчетов;
— сравнение спецификации на новый проект с аналогичной документацией на апробированный проект;
— проведение испытаний и демонстраций;
— анализ документов до их выпуска.
[ ГОСТ Р ИСО 9000-2008]
Тематики
- системы менеджмента качества
EN
- verification
верификация (проверка)
1. Процесс определения соответствия качества или характеристик продукта или услуги тому, что предписывается, предопределяется или требуется. Верификация тесно связана с обеспечением качества и контролем качества. верификация компьютерной системы computer system verification Процесс, имеющий целью обеспечить, чтобы данный этап в жизненном цикле системы удовлетворял требованиям, введенным на предыдущем этапе. верификация модели model verification Процесс, имеющий целью определить, правильно ли отображает данная вычислительная модель искомую концептуальную модель или математическую модель. Верификация системного кода system code verification Анализ кодирования источника на предмет его соответствия описанию в документации системного кода. 2. Подтверждение на основе объективных свидетельств того, что установленные требования были выполнены. См. валидация (аттестация). Соответствующий статус – ‘верифицировано’. Верификация может включать такие операции, как: осуществление альтернативных расчетов; сравнение научной и технической документации по новому проекту с аналогичной документацией по апробированному проекту; проведение испытаний и демонстраций; и анализ документов до их выпуска.
[Глоссарий МАГАТЭ по вопросам безопасности]
Тематики
- МАГАТЭ
EN
- verification
верификация
Подтверждение выполнения требований путем исследования и сбора объективных свидетельств.
Примечания
1. Адаптировано из ИСО 8402 путем исключения примечаний.
2. В контексте настоящего стандарта верификация представляет собой выполняемую для каждой стадии жизненного цикла соответствующей системы безопасности (общей, E/E/PES систем и программного обеспечения) путем анализа и/или тестирования демонстрацию того, что для используемых входных данных компоненты удовлетворяют во всех отношениях набору задач и требований для соответствующей стадии.
Пример
Процесс верификации включает в себя:
— просмотр выходных данных (документов, относящихся ко всем стадиям жизненного цикла систем безопасности) для того, чтобы убедиться в соответствии задачам и требованиям соответствующей стадии, с учетом конкретных входных данных для этой стадии;
— просмотр проектов;
— тестирование проектируемых продуктов для того, чтобы убедиться, что они работают в соответствии с их спецификациями;
— проверка интеграции, реализуемая внешними тестами, для всех систем, образующихся покомпонентным добавлением к исходной системе, и необходимая для того, чтобы убедиться, что все компоненты работают вместе в соответствии со спецификацией.
[ ГОСТ Р МЭК 61508-4-2007]
Тематики
- электробезопасность
EN
- verification
3.36 верификация (verification): Подтверждение экспертизой и представлением объективных доказательств того, что конкретные требования полностью реализованы.
Примечания
1 В процессе проектирования и разработки верификация связана с экспертизой результатов данной работы в целях определения их соответствия установленным требованиям.
2 Термин «верифицирован» используется для обозначения соответствующих состояний проверенного объекта. (См. 2.17 title=»Управление качеством и обеспечение качества — Словарь»).
Источник: ГОСТ Р ИСО/МЭК 12207-99: Информационная технология. Процессы жизненного цикла программных средств оригинал документа
5.1 верификация (verification):
в контексте маркировки и декларирования: Подтверждение посредством предоставления объективных свидетельств выполнения установленных требований.
[ИСО 14025:2006];
в контексте парниковых газов: Систематический, независимый и документально оформленный процесс (6.4) для оценки утверждения по парниковым газам (9.5.2) на соответствие согласованным критериям верификации (5.12).
Примечание — В некоторых случаях, например при верификациях первой стороной, независимость может быть продемонстрирована свободой от несения ответственности за подготовку данных и представление информации по парниковым газам.
[ИСО 14065:2007]
Источник: ГОСТ Р ИСО 14050-2009: Менеджмент окружающей среды. Словарь оригинал документа
04.02.27 долговременная маркировка [ permanent marking]: Изображение, полученное с помощью интрузивного или неинтрузивного маркирования, которое должно оставаться различимым, как минимум, в течение установленного срока службы изделия.
Сравнить с терминологической статьей «соединение» по ИСО/МЭК19762-11).
______________
1)Терминологическая статья 04.02.27 не связана с указанной терминологической статьей.
<2>4 Сокращения
ECI интерпретация в расширенном канале [extended channel interpretation]
DPM прямое маркирование изделий [direct part marking]
BWA коррекция ширины штриха [bar width adjustment]
BWC компенсация ширины штриха [barwidth compensation]
CPI число знаков на дюйм [characters per inch]
PCS сигнал контраста печати [print contrast signal]
ORM оптический носитель данных [optically readable medium]
FoV поле обзора [field of view]
Алфавитный указатель терминов на английском языке
(n, k)symbology |
04.02.13 |
add-on symbol |
03.02.29 |
alignment pattern |
04.02.07 |
aperture |
02.04.09 |
auto discrimination |
02.04.33 |
auxiliary character/pattern |
03.01.04 |
background |
02.02.05 |
bar |
02.01.05 |
bar code character |
02.01.09 |
bar code density |
03.02.14 |
barcode master |
03.02.19 |
barcode reader |
02.04.05 |
barcode symbol |
02.01.03 |
bar height |
02.01.16 |
bar-space sequence |
02.01.20 |
barwidth |
02.01.17 |
barwidth adjustment |
03.02.21 |
barwidth compensation |
03.02.22 |
barwidth gain/loss |
03.02.23 |
barwidth increase |
03.02.24 |
barwidth reduction |
03.02.25 |
bearer bar |
03.02.11 |
binary symbology |
03.01.10 |
characters per inch |
03.02.15 |
charge-coupled device |
02.04.13 |
coded character set |
02.01.08 |
column |
04.02.11 |
compaction mode |
04.02.15 |
composite symbol |
04.02.14 |
contact scanner |
02.04.07 |
continuous code |
03.01.12 |
corner marks |
03.02.20 |
data codeword |
04.02.18 |
data region |
04.02.17 |
decodability |
02.02.28 |
decode algorithm |
02.02.01 |
defect |
02.02.22 |
delineator |
03.02.30 |
densitometer |
02.02.18 |
depth of field (1) |
02.04.30 |
depth of field (2) |
02.04.31 |
diffuse reflection |
02.02.09 |
direct part marking |
04.02.24 |
discrete code |
03.01.13 |
dot code |
04.02.05 |
effective aperture |
02.04.10 |
element |
02.01.14 |
erasure |
04.02.21 |
error correction codeword |
04.02.19 |
error correction level |
04.02.20 |
even parity |
03.02.08 |
field of view |
02.04.32 |
film master |
03.02.18 |
finder pattern |
04.02.08 |
fixed beam scanner |
02.04.16 |
fixed parity |
03.02.10 |
fixed pattern |
04.02.03 |
flat-bed scanner |
02.04.21 |
gloss |
02.02.13 |
guard pattern |
03.02.04 |
helium neon laser |
02.04.14 |
integrated artwork |
03.02.28 |
intercharacter gap |
03.01.08 |
intrusive marking |
04.02.25 |
label printing machine |
02.04.34 |
ladder orientation |
03.02.05 |
laser engraver |
02.04.35 |
latch character |
02.01.24 |
linear bar code symbol |
03.01.01 |
magnification factor |
03.02.27 |
matrix symbology |
04.02.04 |
modular symbology |
03.01.11 |
module (1) |
02.01.13 |
module (2) |
04.02.06 |
modulo |
03.02.03 |
moving beam scanner |
02.04.15 |
multi-row symbology |
04.02.09 |
non-intrusive marking |
04.02.26 |
odd parity |
03.02.07 |
omnidirectional |
03.01.14 |
omnidirectional scanner |
02.04.20 |
opacity |
02.02.16 |
optically readable medium |
02.01.01 |
optical throw |
02.04.27 |
orientation |
02.04.23 |
orientation pattern |
02.01.22 |
oscillating mirror scanner |
02.04.19 |
overhead |
03.01.03 |
overprinting |
02.04.36 |
pad character |
04.02.22 |
pad codeword |
04.02.23 |
permanent marking |
04.02.27 |
photometer |
02.02.19 |
picket fence orientation |
03.02.06 |
pitch |
02.04.26 |
pixel |
02.04.37 |
print contrast signal |
02.02.20 |
printability gauge |
03.02.26 |
printability test |
02.02.21 |
print quality |
02.02.02 |
quiet zone |
02.01.06 |
raster |
02.04.18 |
raster scanner |
02.04.17 |
reading angle |
02.04.22 |
reading distance |
02.04.29 |
read rate |
02.04.06 |
redundancy |
03.01.05 |
reference decode algorithm |
02.02.26 |
reference threshold |
02.02.27 |
reflectance |
02.02.07 |
reflectance difference |
02.02.11 |
regular reflection |
02.02.08 |
resolution |
02.01.15 |
row |
04.02.10 |
scanner |
02.04.04 |
scanning window |
02.04.28 |
scan, noun (1) |
02.04.01 |
scan, noun (2) |
02.04.03 |
scan reflectance profile |
02.02.17 |
scan, verb |
02.04.02 |
self-checking |
02.01.21 |
shift character |
02.01.23 |
short read |
03.02.12 |
show through |
02.02.12 |
single line (beam) scanner |
02.04.11 |
skew |
02.04.25 |
slot reader |
02.04.12 |
speck |
02.02.24 |
spectral response |
02.02.10 |
spot |
02.02.25 |
stacked symbology |
04.02.12 |
stop character/pattern |
03.01.02 |
structured append |
04.02.16 |
substitution error |
03.02.01 |
substrate |
02.02.06 |
symbol architecture |
02.01.04 |
symbol aspect ratio |
02.01.19 |
symbol character |
02.01.07 |
symbol check character |
03.02.02 |
symbol density |
03.02.16 |
symbology |
02.01.02 |
symbol width |
02.01.18 |
tilt |
02.04.24 |
transmittance (l) |
02.02.14 |
transmittance (2) |
02.02.15 |
truncation |
03.02.13 |
two-dimensional symbol (1) |
04.02.01 |
two-dimensional symbol (2) |
04.02.02 |
two-width symbology |
03.01.09 |
variable parity encodation |
03.02.09 |
verification |
02.02.03 |
verifier |
02.02.04 |
vertical redundancy |
03.01.06 |
void |
02.02.23 |
wand |
02.04.08 |
wide: narrow ratio |
03.01.07 |
X dimension |
02.01.10 |
Y dimension |
02.01.11 |
Z dimension |
02.01.12 |
zero-suppression |
03.02.17 |
<2>Приложение ДА1)
______________
1)
Источник: ГОСТ Р ИСО/МЭК 19762-2-2011: Информационные технологии. Технологии автоматической идентификации и сбора данных (АИСД). Гармонизированный словарь. Часть 2. Оптические носители данных (ОНД) оригинал документа
- Что такое ejudge?
- Зачем мне делать эти задачи?
- Как зарегистрироватьcя?
- Я нашел ошибку или уязвимость в системе проверки.
- Система проверки выглядит некрасиво!
- Стартовая страница и/или этот FAQ выглядят некрасиво!
- Я похакал этот сервер!
- А сколько баллов мне дадут за %action%?
- Почему нет языка %language_name%? Я умею программировать только на нем!
- Что означает valgrind рядом с gcc при отправке ответа на C или C++?
- Почему тесты проходят так медленно?
- У меня ошибка компиляции, но на моем компьютере все работает!
- У меня ошибка нарушения безопасности!
- У меня тест не прошел, где смотреть ошибку?
- У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
- Что делать с задачей, у которой статус «ожидает подтверждения»?
- У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
- Я нашел ошибку в условии/условие не отображается.
- Я нашел ошибку в тесте.
- У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
- У меня есть идея для задачи!
- Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
- Почему мое решение отклонили?
- Почему дисквалифицировали мое решение?
- Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
- За что снижаются баллы?
- Я сделал все задачи, а мне не дали баллов!
- Сколько мне дадут баллов, если задачи в модуле сделаны частично?
- Систем начисления баллов несправедлива!
- У меня проект состоит из нескольких файлов, как мне их отправить?
- Я списал, а мое решение не дисквалифицировали и засчитали задачу!
- Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
- Я не нашел ответа на свой вопрос.
Что такое ejudge?
Это сервер проверки задач, разработанный Александром Черновым из МГУ. Одна из самых распространенных систем для проведения олимпиад. Системе уже больше 10 лет.
Документация (местами неполная или устаревшая): https://ejudge.ru/wiki/index.php/Система_ejudge
Исходный код: https://github.com/blackav/ejudge
При желании вы можете скачать с официального сайта виртуалку и открыть свой сервер проверки, со Scala и программистками.
Зачем мне делать эти задачи?
Чтобы проверить свои навыки программирования и получить баллы. Ну и в некоторых задачах придется думать, что может пойти не так.
Как зарегистрироватьcя?
Я нашел ошибку или уязвимость в системе проверки.
Проинформируйте преподавателя о ней. Возможно, это проблема касается только этого сервера. Если нет — то, пожалуйста, сообщите об этом разработчику системы на github (создайте тикет описанием проблемы с шагами воспроизведения).
Система проверки выглядит некрасиво!
Стартовая страница и/или этот FAQ выглядят некрасиво!
Раньше это были вообще голые hmtl-страницы без стилей, но благодаря Александру Маковскому они выглядят более пристойно. Если у вас есть предложение, как улучшить внешний вид этих страниц — шлите свои варианты с нескучными обоями на почту.
Я похакал этот сервер!
Хорошо, что хоть кто-то это умеет делать. Пожалуйста, почините все обратно и шлите подробную историю своего хака. Вознаграждение будет.
Пожалуйста, ломайте со своего аккаунта. Ужесточать регистрацию и превращать ejudge в продолжение анекдота про столовую и солонки не хочется.
Экплоиты, особенно приводящие к DoS, старайтесь по максимуму проверять на виртуалке — вы же не хотите подгадить своим одногруппникам, обвалив сервер и задержав им сдачу заданий?
А сколько баллов мне дадут за %action%?
Все хорошие и/или полезные действия будут поощряться. Точное количество баллов определяется преподавателем, главное — не забывайте его своевременно информировать о своих нестандартных действиях.
Почему нет языка %language_name%? Я умею погромировать только на нем!
Язык программирования может отсутствовать по одной из трех причин: он не поддерживается системой проверки, не является безопасным (например, C#) или не распространен.
Список для первых двух категорий смотрите в документации/коде ejudge. Насчет последней категории — обсуждаемо, но учтите, что какой-нибудь Pascal включаться точно не будет, а на 1-2 курсе был предмет «Алгоритмические языки и программирование», в рамках которого студенты должны были усвоить языки программирования C и C++.
Теоретически возможен вариант, когда вы пишете на своем любимом языке, но потом транслируете его исходный код в исходный код на языке, поддерживаемым системой. В таком случае решение будет принято, однако вам нужно предоставить исходный код оригинала и инструкцию по трансляции оригинала в сданное решение. Разумеется, это то еще извращение и делать так настоятельно не рекомендуется.
Что означает valgrind рядом с gcc при отправке ответа на C или C++?
Valgrind — это программа для динамического обнаружения утечек и других ошибок при работе с памятью. Все программы на C и C++ запускаются в ее окружении, поэтому работают медленее. Но зато вам говорят, где у вас проблема при работе с памятью.
Почему тесты проходят так медленно?
Во-первых, программы на C и C++ запускаются в окружении valgrind (см. вопрос про него).
Во-вторых, вы на сервере не один (особенно если это конец семестра/модуля).
В-третьих, у всех запускаемых программ ограничиваются ресурсы (чтобы ваша программа по вычислению суммы двух чисел не сжирала всю память на сервере).
У меня ошибка компиляции, но на моем компьютере все работает!
Убедитесь, что вы написали код с учетом общепринятых стандартов (и например там нет какого-нибудь мусора от известного производителя ПО) и не используете нестандартные библиотеки.
Убедитесь, что вы прочли лог компилятора, который выдала вам система проверки и решили все проблемы.
Дайте посмотреть ваш код лучшему программисту в вашей группе. Если это внезапно вы, то пишите преподавателю.
У меня ошибка нарушения безопасности!
Наверно, вы лезете куда не стоит. Читаете больше файлов, чем надо, создаете лишние файлы, пингуете сервер и т.п.
Если вы пишете на питоне, то тогда это может означать, что вы получили исключение. Интерпертатор питона пытается вам выдать stacktrace, и при этом читает системные файлы (что ему запрещает делать модуль безопасности).
У меня тест не прошел, где смотреть ошибку?
Нажимайте на буквы в табличке!
У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
Вы внимательно прочитали условие? Скачали тест и отладили программу, по шагам выполняя ее? Обратили внимание на поток ошибок (буква E)? Локализовали ошибку в тесте? Уверены, что ошибка не может быть вызвана каким-нибудь неопределенным поведением или особенностями компилятора? Вы попросили помощи у одногруппников?
Если на все вопросы вы можете с чистейшей совестью ответить «да», тогда высылайте всю информацию преподавателю, с подробным описанием того, что в тесте не так, как должно быть и почему.
См. также вопрос про компиляцию.
Что делать с задачей, у которой статус «ожидает подтверждения»?
Этот статус означает, что ваше решение прошло все тесты, но преподаватель пока еще не посмотрел его исходный код и не одобрил его. Можно делать другие задачи и ждать, когда эта будет проверена преподавателем.
У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
Если вы присылаете еще одно решение, которое прошло все тесты, то предыдущее решение, прошедшее все тесты, не учитывается как попытка. Таким образом, можно бесплатно дополнять свое решение, например, добавлять поясняющие комментарии, рефакторить или наводить красоту. Проверяется только последнее решение.
Я нашел ошибку в условии/условие не отображается.
Пишите преподавателю, где ошибка, и почему вы считаете, что это ошибка.
Я нашел ошибку в тесте.
Опишите преподавателю максимально подробно, в чем именно заключается ошибка в тесте и какой на самом деле должен быть ответ.
У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
Отлично! Если вы уверены, что ситуация подходит под условие задачи, то высылайте преподавателю:
- исходный код, который прошел все тесты (и номер решения);
- описание случая, когда код будет работать некорректно;
- входные данные для теста, который покрывает этот случай — текстовый файл;
- выходные данные для теста — текстовый файл;
- исправленный исходный код, который проходит тест.
В качестве альтернативы вы можете предложить изменения в тексте условия задачи, которые исключат этот случай.
У меня есть идея для задачи!
Очень хорошо. Обсудите идею с товарищами. Обсудите с преподавателем и подумайте, куда эту задачу лучше приткнуть.
Возможно, задача потянет на ДЗ.
Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
Пасхалки — это прикольно. Возможно, они есть даже на этой странице. Первый, кто на потоке нашел пасхалку, получит баллы.
Почему мое решение отклонили?
Причин может быть несколько: вы не выполнили какое-нибудь условие задачи (например, в условии написано «выделять память только один раз», а вы выделяете ее на каждый чих), вы прислали обфусцированный код, вы прислали код, в котором захардкожены все тесты, в вашем коде есть какая-то неимоверная дичь, от которой захотелось выколоть себе глаза и т.д.
Если вы считаете отклонение несправедливым, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию: шлите ее на почту.
Почему дисквалифицировали мое решение?
Проверяющая система решила, что ваш код очень похож на чужой, и есть сомнения, что решение вы выполнили полностью самостоятельно. Статус «дисквалифицировано» означает, что преподаватель посчитал так же.
Если вы считаете дисквалификацию несправедливой, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию (присылайте ее на почту в свободной форме). Имейте в виду, что решение может быть пересмотрено и в худшую для вас сторону. Если вы отправите чужой код еще раз, то за модуль ejudge вы не получите баллов вообще (даже если потом полностью и честно сделаете сами).
Дополнительные вопросы по этой теме:
Но ведь невозможно написать 2 программы по одному условию, чтобы они не были похожи!
Многолетний опыт показывает, что возможно. В конце концов сдавали же как-то люди свои работы в прошлом году.
Я просто взял решение друга, чтобы посмотреть, как он сделал, но писал код сам!
Очевидно, вы слишком мало потрудились, чтобы сделать именно свое решение и банально перепечатали чужое. В следующий раз делайте полностью самостоятельно.
Я сдал код первым, я не мог ни у кого списать!
Проверка производится относительно всех работ, присланных в систему, в том числе прошлогодних.
Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
Черт побери, так решите ее на %language_name%, в чем проблема-то? Выбирайте инструмент под задачу.
За что снижаются баллы?
Баллы снижаются за количество попыток (но некоторое число попыток на задачу — бесплатно), за отклонение решения, за выполнение модуля не в срок.
Я сделал все задачи, а мне не дали баллов!
К сожалению, преподавателю иногда надо спать и заниматься другими менее приятными делами, поэтому он реагирует не мгновенно. Задачи проверяются массово в конце модуля и иногда в середине.
Сколько мне дадут баллов, если задачи в модуле сделаны частично?
Баллы начисляются только за полностью выполненный модуль, в котором все задачи проходят все тесты, а исходных код проверен преподавателем.
Систем начисления баллов несправедлива!
Опишите максимально подробно, в чем именно заключается несправедливость, и как это можно, на ваш взгляд, решить. Присылайте свои предложения на почту преподавателю.
У меня проект состоит из нескольких файлов, как мне их отправить?
К сожалению, это ограничение системы ejudge. Возможно, кто-то невнимательно прочитал документацию. Если вы найдете способ, как настроить ejudge так, чтобы он корректно обрабатывал проекты из нескольких файлов — пишите.
Большинство языков позволяют создать программу, полностью расположенную в одном файле. Соответственно, вы можете найти/написать скрипт, который пакует ваш проект в один файл (или сделать это вручную).
Я списал, а мое решение не дисквалифицировали и засчитали задачу!
Это можно рассматривать как уязвимость системы проверки. При явке с повинной вам не только оставят баллы, но еще и сверху накинут. Но, разумеется, надо описать, как вы это сделали.
Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
Это служебное сообщение системы ejudge о том, что контрольная сумма файла ответа на тест была изменена во время тестирования.
Но, разумеется, никто его не менял и это баг системы, о котором было доложено разработчику.
На корректность вашей программы это сообщение никак не влияет. Если программа завалилась на этом тесте — надо ее исправить, если нет — не надо.
Я не нашел ответа на свой вопрос.
Задавайте его в чате. Возможно он потом попадет в этот FAQ.
FAQ (часто задаваемые вопросы)
Что такое ejudge?
Это сервер проверки задач, разработанный Александром Черновым из МГУ. Одна из самых распространенных систем для проведения олимпиад. Системе уже больше 10 лет.
При желании вы можете скачать с официального сайта виртуалку и открыть свой сервер проверки, со Scala и программистками.
Зачем мне делать эти задачи?
Чтобы проверить свои навыки программирования и получить баллы. Ну и в некоторых задачах придется думать, что может пойти не так.
Как зарегистрироватьcя?
- Зайти на страницу регистрации, ввести логин и почту
- Войти, используя логин и присланный на почту пароль
- Отредактировать свои данные
- Ввести свои настоящие данные
- Подтвердить регистрацию
После одобрения регистрации модератором можно будет зайти в систему с главной страницы. Рекомендуется сменить пароль, который был прислан при регистрации.
Я нашел ошибку или уязвимость в системе проверки.
Проинформируйте преподавателя о ней. Возможно, это проблема касается только этого сервера. Если нет — то, пожалуйста, сообщите об этом разработчику системы на github (создайте тикет описанием проблемы с шагами воспроизведения).
Система проверки выглядит некрасиво!
Ну, что поделать. Система старая, дизайнера в ней не было. Вы можете разработать свой дизайн, реализовать его и обкатать на виртуалке.
Стартовая страница и/или этот FAQ выглядят некрасиво!
Раньше это были вообще голые hmtl-страницы без стилей, но благодаря Александру Маковскому они выглядят более пристойно. Если у вас есть предложение, как улучшить внешний вид этих страниц — шлите свои варианты с нескучными обоями на почту.
Я похакал этот сервер!
Хорошо, что хоть кто-то это умеет делать. Пожалуйста, почините все обратно и шлите подробную историю своего хака. Вознаграждение будет.
Пожалуйста, ломайте со своего аккаунта. Ужесточать регистрацию и превращать ejudge в продолжение анекдота про столовую и солонки не хочется.
Экплоиты, особенно приводящие к DoS, старайтесь по максимуму проверять на виртуалке — вы же не хотите подгадить своим одногруппникам, обвалив сервер и задержав им сдачу заданий?
А сколько баллов мне дадут за %action%?
Все хорошие и/или полезные действия будут поощряться. Точное количество баллов определяется преподавателем, главное — не забывайте его своевременно информировать о своих нестандартных действиях.
Почему нет языка %language_name%? Я умею погромировать только на нем!
Язык программирования может отсутствовать по одной из трех причин: он не поддерживается системой проверки, не является безопасным (например, C#) или не распространен.
Список для первых двух категорий смотрите в документации/коде ejudge. Насчет последней категории — обсуждаемо, но учтите, что какой-нибудь Pascal включаться точно не будет, а на 1-2 курсе был предмет «Алгоритмические языки и программирование», в рамках которого студенты должны были усвоить языки программирования C и C++.
Теоретически возможен вариант, когда вы пишете на своем любимом языке, но потом транслируете его исходный код в исходный код на языке, поддерживаемым системой. В таком случае решение будет принято, однако вам нужно предоставить исходный код оригинала и инструкцию по трансляции оригинала в сданное решение. Разумеется, это то еще извращение и делать так настоятельно не рекомендуется.
Что означает valgrind рядом с gcc при отправке ответа на C или C++?
Valgrind — это программа для динамического обнаружения утечек и других ошибок при работе с памятью. Все программы на C и C++ запускаются в ее окружении, поэтому работают медленее. Но зато вам говорят, где у вас проблема при работе с памятью.
Почему тесты проходят так медленно?
Во-первых, программы на C и C++ запускаются в окружении valgrind (см. вопрос про него).
Во-вторых, вы на сервере не один (особенно если это конец семестра/модуля).
В-третьих, у всех запускаемых программ ограничиваются ресурсы (чтобы ваша программа по вычислению суммы двух чисел не сжирала всю память на сервере).
У меня ошибка компиляции, но на моем компьютере все работает!
Убедитесь, что вы написали код с учетом общепринятых стандартов (и например там нет какого-нибудь мусора от известного производителя ПО) и не используете нестандартные библиотеки.
Убедитесь, что вы прочли лог компилятора, который выдала вам система проверки и решили все проблемы.
Дайте посмотреть ваш код лучшему программисту в вашей группе. Если это внезапно вы, то пишите преподавателю.
У меня ошибка нарушения безопасности!
Наверно, вы лезете куда не стоит. Читаете больше файлов, чем надо, создаете лишние файлы, пингуете сервер и т.п.
Если вы пишете на питоне, то тогда это может означать, что вы получили исключение. Интерпертатор питона пытается вам выдать stacktrace, и при этом читает системные файлы (что ему запрещает делать модуль безопасности).
У меня тест не прошел, где смотреть ошибку?
Нажимайте на буквы в табличке!
У меня правильная программа, но тесты не проходят (на моем компьютере работает)!
Вы внимательно прочитали условие? Скачали тест и отладили программу, по шагам выполняя ее? Обратили внимание на поток ошибок (буква E)? Локализовали ошибку в тесте? Уверены, что ошибка не может быть вызвана каким-нибудь неопределенным поведением или особенностями компилятора? Вы попросили помощи у одногруппников?
Если на все вопросы вы можете с чистейшей совестью ответить «да», тогда высылайте всю информацию преподавателю, с подробным описанием того, что в тесте не так, как должно быть и почему.
Что делать с задачей, у которой статус «ожидает подтверждения»?
Этот статус означает, что ваше решение прошло все тесты, но преподаватель пока еще не посмотрел его исходный код и не одобрил его. Можно делать другие задачи и ждать, когда эта будет проверена преподавателем.
У меня появилась идея, как улучшить свое решение, можно мне отправить еще одно? Учтется ли оно как лишняя попытка?
Если вы присылаете еще одно решение, которое прошло все тесты, то предыдущее решение, прошедшее все тесты, не учитывается как попытка. Таким образом, можно бесплатно дополнять свое решение, например, добавлять поясняющие комментарии, рефакторить или наводить красоту. Проверяется только последнее решение.
Я нашел ошибку в условии/условие не отображается.
Пишите преподавателю, где ошибка, и почему вы считаете, что это ошибка.
Я нашел ошибку в тесте.
Опишите преподавателю максимально подробно, в чем именно заключается ошибка в тесте и какой на самом деле должен быть ответ.
У меня идея для теста / Я написал некорректную программу, но она прошла все тесты.
Отлично! Если вы уверены, что ситуация подходит под условие задачи, то высылайте преподавателю:
- исходный код, который прошел все тесты (и номер решения);
- описание случая, когда код будет работать некорректно;
- входные данные для теста, который покрывает этот случай — текстовый файл;
- выходные данные для теста — текстовый файл;
- исправленный исходный код, который проходит тест.
В качестве альтернативы вы можете предложить изменения в тексте условия задачи, которые исключат этот случай.
У меня есть идея для задачи!
Очень хорошо. Обсудите идею с товарищами. Обсудите с преподавателем и подумайте, куда эту задачу лучше приткнуть.
Возможно, задача потянет на ДЗ.
Кажется, я нашел пасхалку. Мне за это что-нибудь причитается?
Пасхалки — это прикольно. Возможно, они есть даже на этой странице. Первый, кто на потоке нашел пасхалку, получит баллы.
Почему мое решение отклонили?
Причин может быть несколько: вы не выполнили какое-нибудь условие задачи (например, в условии написано «выделять память только один раз», а вы выделяете ее на каждый чих), вы прислали обфусцированный код, вы прислали код, в котором захардкожены все тесты, в вашем коде есть какая-то неимоверная дичь, от которой захотелось выколоть себе глаза и т.д.
Если вы считаете отклонение несправедливым, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию: шлите ее на почту.
Почему дисквалифицировали мое решение?
Проверяющая система решила, что ваш код очень похож на чужой, и есть сомнения, что решение вы выполнили полностью самостоятельно. Статус «дисквалифицировано» означает, что преподаватель посчитал так же.
Если вы считаете дисквалификацию несправедливой, самый справедливый суд в лице преподавателя готов рассмотреть вашу аппеляцию (присылайте ее на почту в свободной форме). Имейте в виду, что решение может быть пересмотрено и в худшую для вас сторону. Если вы отправите чужой код еще раз, то за модуль ejudge вы не получите баллов вообще (даже если потом полностью и честно сделаете сами).
Дополнительные вопросы по этой теме:
Но ведь невозможно написать 2 программы по одному условию, чтобы они не были похожи!
Я просто взял решение друга, чтобы посмотреть, как он сделал, но писал код сам!
Я сдал код первым, я не мог ни у кого списать!
Задача %exercise% решается слишком просто на языке %language_name%, а я пишу на %other_language_name% и там тяжелее!
Черт побери, так решите ее на %language_name%, в чем проблема-то? Выбирайте инструмент под задачу.
За что снижаются баллы?
Баллы снижаются за количество попыток (но некоторое число попыток на задачу — бесплатно), за отклонение решения, за выполнение модуля не в срок.
Я сделал все задачи, а мне не дали баллов!
К сожалению, преподавателю иногда надо спать и заниматься другими менее приятными делами, поэтому он реагирует не мгновенно. Задачи проверяются массово в конце модуля и иногда в середине.
Сколько мне дадут баллов, если задачи в модуле сделаны частично?
Баллы начисляются только за полностью выполненный модуль, в котором все задачи проходят все тесты, а исходных код проверен преподавателем.
Систем начисления баллов несправедлива!
Опишите максимально подробно, в чем именно заключается несправедливость, и как это можно, на ваш взгляд, решить. Присылайте свои предложения на почту преподавателю.
У меня проект состоит из нескольких файлов, как мне их отправить?
К сожалению, это ограничение системы ejudge. Возможно, кто-то невнимательно прочитал документацию. Если вы найдете способ, как настроить ejudge так, чтобы он корректно обрабатывал проекты из нескольких файлов — пишите.
Большинство языков позволяют создать программу, полностью расположенную в одном файле. Соответственно, вы можете найти/написать скрипт, который пакует ваш проект в один файл (или сделать это вручную).
Я списал, а мое решение не дисквалифицировали и засчитали задачу!
Это можно рассматривать как уязвимость системы проверки. При явке с повинной вам не только оставят баллы, но еще и сверху накинут. Но, разумеется, надо описать, как вы это сделали.
Что означает сообщение «NOTE: The file checksum has been changed» в файле с ответом?
Это служебное сообщение системы ejudge о том, что контрольная сумма файла ответа на тест была изменена во время тестирования.
Но, разумеется, никто его не менял и это баг системы, о котором было доложено разработчику.
На корректность вашей программы это сообщение никак не влияет. Если программа завалилась на этом тесте — надо ее исправить, если нет — не надо.
Я не нашел ответа на свой вопрос.
Задавайте его в чате. Возможно он потом попадет в этот FAQ.
Источник
Как нельзя проводить олимпиаду или настройка ejudge с распределением вычислений
В одном нецентральномотдаленном регионе нашей необъятной страны как-то раз проходил очередной региональный этап Всероссийской олимпиады школьников по информатике и программированию. До 2014 года всё было хорошо, проводили олимпиаду на старой системе, написанной в далеких 2004 годах очень одаренным программистом, на Delphi. С тех пор его никто не менял — работал, ну и ладно. В 2014 году решили попробовать ejudge. Поднимать всё с исходников не стали, решили взять готовое, образ для виртуальной машины. Всё было хорошо, все работало.
Но тут наступил 2015 год, в котором некоторые пункты проведения олимпиады немножко, совсем чуть-чуть поменяли, и нужные «человеки» об этих изменениях узнали только за 1-2 дня до начала…
Тут-то и начинается самое веселое.
Дело в том, что почти все эти изменения касались только нас двоих(я + ripatti).
Я отвечал за сервер (fedora19, ejudge) и его работоспособность, он отвечал за подготовку тестов, конфигурации туров в целом. У него в этом довольно богатый опыт.
Итак, пойду по хронологическому порядку.
21 января, среда
Меня спрашивают, смогу ли я поднять сервер для олимпиады на базе выделенных машин университета, на что я отвечаю отрицательно, ибо времени оставалось мало, и среда для меня может быть незнакомой (думал, что там VMWare, а я только на Virtual Box мог). В общем, я не смог дать гарантию, что всё будет хорошо.
22 января, четверг
Узнаю, что появилось такое понятие, как токены. Это означало лишь одно: решения участников должно проверяться во время тура, а не после. Вспомнив прошлогодний тур, решил, что один сервер всё потянет. В прошлом году же ничего не упало, все сработало, все были довольны. Начал работать над сервером. Привез машину (железо) в стены университета.
Вечером узнаю от напарника, что предыдущая версия ejudge (2.3) не удовлетворяет требованиям. Как раз к этому времени Александр Чернов выложил рабочую версию. Даже специально завел новый репозиторий со всеми настройками пробного тура. Было очень заманчиво, потому что у меня в голове была идея настроить старую версию. Решили собрать новую версию из исходников, так как готового образа не было. Тут начались первые проблемы.
Проблема: как пустить ssh по не 22 порту?
Дело тут в университете. Они, как и любая организацию, блокируют 22 порт снаружи. Мы могли в стенах универа работать спокойно, а вот за стенами начились бы проблемы. Слава Богу, мой научный руководитель был администратором кластера, у которого был внешний IP, но доступ к нему был запрещен. Попросил его помочь, в итоге он нам полностью всё настроил. На самом деле, я попросил дать мне ssh доступ к кластеру (откуда я спокойно попадал на свой сервер по 22 порту), но ему очень не хотелось раздавать доступ налево-направо. Решили «кардинально решить проблему». Я ему даю все пароли, логины, а он обещал посмотреть. Да, человек я доверчивый.
На самом деле, я и сам пытался это сделать, но не смог.
Вырезки из того, что он потом прислал:
… в-третьих, настройки ssh-сервера хранятся в /etc/ssh/sshd_config, а не ssh_config, я добавил в первом
Port 22
Port 5000
PermitRootLogin no
и все вывесилось как надо:
[root@localhost ssh]# service sshd status
Redirecting to /bin/systemctl status sshd.service
sshd.service — OpenSSH server daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Thu 2015-01-22 21:01:38 YEKT; 4min 53s ago
В 7 утра позвонил (разбудил напарника), всё рассказал. Проблема стояла в том, что мы тупо не могли скомпилировать исходный код, ибо некотоые библиотеки отсутствовали, я стягивать их нельзя (ssh 5000). Пытался по одному, но там, блин, зависимости, очень хорошие.
Решили создать другой сервер с полными настройками ejudge (3.3) так, чтобы потом не пришлось заходить к серверу (она находилась в серверной, под замком, было проблематично получить физический доступ к машине).
23 января, пятница, начало пробного тура в 16:00
В 9 утра иду сдавать коллоквиум по Функану, декан что-то поставил, не смотрел. Вроде не «неуд».
В 10 часов начинаю собирать новый ejudge параллельно с Артемом. У него это получается чуть быстрее, я же остановился на мелком шаге и перестал дальше думать.
Вторая проблема.
Не стали удалять старую версию, просто начали ставить новую.
Стягиваем исходный код с гитхаба, запуск.
Да, именно, ejudge-conrtol подцепил старую версию.
Всё заработало, заходим на веб версию — видим старое.
Переименовал папку, где находился старая версия бинарника. При этом преследовал 2 цели: сделать так, чтобы он пропал из путей и сделать бэкап старой версии.
Теперь запускаем заново ejudge-control, который находится в /usr/bin/ejudge-control:
Ещё немножко шаманства, и пробный тур готов!
Это мы сказали, когда время было примерно 17:00.
Я побежал с дистрибутивом в серверную. Прихожу, а там экран только потух. Думал, уснул монитор. Всё хуже — только что сисадмин по непонятной мне причине отрубил питание у моего железа. Теперь я жду, пока windows server 2008 загрузится, дальше копирую, импортирую в virtual box, запускаю, проставляю статические адреса, настраиваю ssh. Из-за того, что в прошлый раз мне его настраивал мой науч.рук (Юлдашев Артур Владимирович), в этот раз пришлось потратить кучу времени. Усугублялось всё это тем, что в серверной у меня не было возможности погуглить.
Время 17:45, пробный тур почти закончился, у нас сервер до сих пор не встал… Поступают множество звонков — отвечаем, мол, всё, закругляемся, сервер не успеем поднять.
Время 18:00, сервер ещё не встал. Собрались с другими жюри, думаем, как выйти из этой ситуации.
Было решено следующее: Мы с Артемом не спим, допиливаем пробный тур и первый, приготовим всё к 10, с 10:00 по 11:00 запускаем пробный тур, а в 11:00 запускаем 1 тур. Так мы лишились сна на 2 ночь.
Попрощались и поехали домой. Дома стали заново всё настраивать, настроили. К утру всё было готово.
24 января, суббота, 1 тур (официальное расписание)
Начинается пробный тур, и тут мы, наконец, поняли, с чем имеем дело.
Что это такое?
В прошлом году была следующая ситуация: участник отправляет исходный код на тестирующую систему, которая, в свою очередь, проверяет только на тестах, которые показаны на примере к задаче. Если посылка их не проходит, то она не становится в очередь для полной проверки. Поэтому наш почетный один сервер спокойно справлялся со всей нагрузкой(всего было 150 участников).
В этом году мы должны были проверять решение сразу на всех тестах. Чтобы участники не злоупотребляли этим, было введено это понятие — токены. Это, так сказать, право посмотреть результат своей посылки. Он был равен 10. То есть, я могу посылать решение задачи сколько угодно раз, но посмотреть смогу лишь 10 раз. Последующие посылки на свой страх и риск.
Пробный тур начался, а у нас задержка сервера уже 15 минут. То есть участник отправляет решение на сервер, а оно там проверяется только через 15 минут. Не испугались мы этого. А зря. Подумали, что пройдет.
Я делаю Reload contest, сбрасываю весь очередь посылок. При этом никому об этом не сообщил. В итоге за 10 минут до конца пробного тура нас снова забрасывают посылками. Тихонько закрываем контест, открываем контест 1 тура.
11:00, 1 тур
Наконец, закончился! Задержка проверки — 1 час. Участник должен был отправить решение за час до конца, чтобы успеть посмотреть протокол проверки.
16:00, иду в актовый зал. Встречаю недовольные глаза. Ещё бы, я только что лишил детей выхода на финал. Как на меня ещё можно было смотреть. С одним очень известным учителем пересекся, рассказал, в чем проблема, какие есть решения — распараллелить. Пожелал мне удачи.
Всем объявили о проблеме, открыто. Сказали, что мы не ожидали таких нагрузок и тому подобное. Сразу же начали думать, искать выход из положения.
Вариант №1. Поставить в каждом дисплейном классе по 1 серверу, в больших классах — по 2. После олимпиады все результаты соберем, проблем с сетью не будет ни у кого, нагрузку можно будет снизить в порядок, что и даст возможность отвечать всем требованиям на 100%. Очевидны изъяны: сейчас суббота, почти все дисплейный классы уже закрыты, в том числе серверная. Серверов у нас под рукой нет, образов 2 тура тоже. Дисплейные классы находятся слишком далеко друг от друга, в 3 корпусах. Про доступ по ssh можно и не говорить. 2 тур начинается в понедельник 9 утра, железно. За утро понедельника такое дело не сделать, ибо нас всего лишь двое.
Вариант №2: подключить вычисляющие узлы к основному серверу. Этот случай идеальный. Ничего не нужно менять в плане организации олимпиады. Единственная проблема — создать эти вычисляющие узлы.
Под рукой тогда ничего не было. 1 звонок — и через час у нас 13 ноутбуков, core-i7, по 8 ГБ ОЗУ. Единственный образ машины, который у меня был — образ пробного тура.
20:00, сидим на кафедре, настраиваем сервер для 1 ноутбука. Позвонили Артему, пусть приезжает, помогает мне всё настроить (я не умел настраивать тур). Вдруг в голову организатора приходит мысль — дом же пустой (жена с внуками прилетает только воскресенье днем), пойдем ко мне, на ночь.
Все довольны, точнее, мы с Артемом. С нами едет ещё один учитель, помогать нам.
25 января, ночь — день
Взяли с собой 7 ноутов, приехали, распаковались. Приготовили нам вкусную еду, и мы, набравшись сил, начали.
Настроили 2-й тур, скинули образ в накопитель и задумались, а может попробовать распараллелить?
Времени много, сил, вроде, тоже.
А теперь самое интересное. Как устроен ejudge.
Есть служба (демон), отвечающий за компиляцию, запуск, тестирование программ — ej-super-run. Данные он берет из /home/judges/, где обычно расположены конфигурационные файлы, тесты, чекеры и присланные решения.
Не знаю, какой именно процесс отвечает за веб-интерфейс, но мы запускали ejudge-control, который запускал всю систему. Вдаваться в подробности не стал.
Под распараллеливанием предлагалось расшарить папку /home/judges/. Причем не важно как — SSHFS, Samba, NFS.
Но для этого нужно собрать заново с определенным ключом рабочие узлы, как их называют в распределенных системах — slaves. Лабораторные работы по ОС включали в себя создание сетевых папок при помощи NFS и Samba. Я с легкостью принялся за самбу и тут же уперся в первую проблему, которую уже лень было решать. бросив его, принялся за NFS. Закономерно было ожидать, что тут я тоже встречу множество проблем. Осталось последнее, более знакомое мне SSHFS. Знакомо потому, что с SSH я как-то дружил, часто работал с ним.
Сперва убедимся, директория /home/judges/ пуст, иначе очищаем её.
После этого директория /home/judges/ становится общей с серверным. Для полного удобства можно смонтировать его, но мы этого не стали делать, ибо уже утро.
Если нужно указать другой порт, то следует добавить параметр -p
В случае с нашим сервером это было актуально.
И, Слава Богу, заработало!
В качестве сервера выбрали один ноут, в качестве slave — другой. Речь идет и виртуальных машинах, поднятых на них.
Через веб интерфейс запустил 2 посылки (с while(true), чтобы выдавал на всех тестах TLE), которую сам же сервер и выполнил, засекли время. Запустили ej-super-run на рабочем узле, снова отправили на перепроверку 2 задачи — счастье.
Рабочий узел подхватил посылку, начал тестировать. Время проверки почти в 2 раза меньше, 30 секунд против 50.
Следующим шагом связали рабочий узел с реальным сервером, ведь теперь 5000 порт нам не страшен.
Начали заливать на остальные ноуты, попутно оптимизируя настройки. Хотели скрипт красивый написать, который легко мог бы прописать все настройки, но, увы — кривые руки на то и кривые, что такие вещи сразу не могут сделать. Все настройки прописывал руками. На сервере остановили процесс ej-super-run, пусть занимается только веб интерфейсом.
Далее мы задумались: на каждом ноуте имеется 4 ядра, 1 рабочий узел может проверять только в однопоточном режиме.
Дай человеку гору золота, он ещё одну захочет
Либо мы поднимаем 1 виртаульную машину, даем ему много ресурсов, а в ней распараллеливаем по ядрам, либо просто поднимаем 2 виртуальные машины, по 2 ядра.
Нам было всё равно, насколько ускорялась система — в 2 или 3 раза, если всё равно машин у нас много. Решили остановиться на достигнутом, поднимать по 2 машины на ноуте. Когда все 7 ноутбуков были готовы, мы решили себя наградить сном в 12 часов.
26 января, 08:30
Уже свеженький, в университете, Артем тоже приехал. Достали все 13 ноутов, ребята из «службы по сетям» оперативно обжали провода, настроили сеть, в итоге 12 из них уже были в сети, 13-ый ноут выхода в интернет так и не получил, провод, видимо, был старый. Быстро поднял 7 первых, после чего веб интерфейс начал ужасно тормозить, видимо sshfs скачивал к себе всю директорию, которая была довольно-таки пухленькой.
2 тур начался, у нас уже 14 рабочих узлов! Тихонько стал подключать узлы к системе, по одному, чтобы не перегружать систему.
Очереди на сервере не превышало 10 одновременно выполнявшихся тестирований. То есть, в принципе, достаточно и 5 ноутов, чтобы провести полноценный тур.
Приходили из телевидения, им сказали, что у нас 24 рабочих узла. Пришлось до конца олимпиады поднять все, чтобы сдержать слово.
В итоге 2-й тур участники написали гораздо лучше, чем 1-й, хотя в 1-м туре был участник, который написал на 400, а на 2 туре, набрали только 370.
Альтернатива
На самом деле, всем всё было давно известно, и для этого даже прибегли к помощи Яндекса. Последний принимал заявки от регионов, которые не могли самостоятельно провести региональный этап по новым требованиям. Заявки нужно было подать за 10 дней до олимпиады, поэтому мы этот способ не рассматривали. К Яндексу обратились 26 регионов.
Также сказали, что в других регионах тоже не всё хорошо, баллы низкие в целом.
Вот так мы, технические жюри, позорно провели региональный этап Всероссийской олимпиады.
Источник
Если вы ищете как runtime error исправить — вы попали по адресу.
Причин появления таковой может быть огромное множество.
Чаще всего причина состоит в том, что выходит новая версия того или иного приложения/игры и она устанавливается прямо поверх старой.
Хотя это далеко не единственная ситуация, которая может вызвать ее появление.
После того, как вы нажимаете на единственную кнопку в окне ошибки, оно просто закрывается и программа также перестает работать.
Бывает, что она все же продолжает работать, но в ней невозможно ничего сохранить. В любом случае, есть несколько способов исправить ее.
Как выглядит ошибка
Способ №1. CCleaner
Самое простое решение заключается в том, чтобы воспользоваться программой для чистки реестра. Как это работает?
Все просто – чистильщик реестра, собственно, и предназначен для того, чтобы исправлять всевозможные проблемы, вроде той, которую рассматриваем мы, систематизировать файлы и добавлять то, чего недостает ему для нормальной работы.
Лучшей по праву считается CCleaner, хотя вы можете воспользоваться и другой.
Чтобы использовать ее, сделайте вот что:
- Скачайте (вот ссылка на бесплатную) и установите программу.
- Запустите. Перейдите на вкладку «Реестр» на панели слева.
- В разделе «Целостность» поставьте галочки на всех возможных пунктах – никто не знает, в чем именно проблема.
- Нажмите кнопку «Поиск проблем». Когда этот процесс закончится, нажмите кнопку «Исправить…».
Использование
- Подождите, пока приложение исправит все проблемы. Перезагрузите компьютер.
После этого runtime error должен перестать появляться. Если нет, переходим к следующему решению.
Способ №2. DirectX
Вполне вероятно, что ее появление вызывают какие-то проблемы с DirectX. Возможно, какие-то файлы исполняемых библиотек были повреждены или же существующие библиотеки банально устарели.
В любом случае, лучше всего просто установить наиболее актуальные варианты и, опять же, перезагрузить компьютер.
Для этого зайдите на сайт Microsoft, на страницу с возможностью скачать DirectX. Запустите скачанный файл и выполните все действия, подразумевающие установку исполняемых библиотек.
Здесь нет никаких особых рекомендаций – обычная.
Страница загрузки DirectX
Если после установки и перезагрузки компьютера ошибка не исчезла, идем дальше.
Способ №3. Visual C++
О распространяемом пакете Visual C++ в контексте рассматриваемой проблемы можно скачать то же самое, что и о библиотеках DirectX.
Возможно, какие-то файлы были повреждены или версия устарела.
Бывают в данном случае и другие ситуации, когда установленная C++ попросту не подходит для вашей операционной системы.
Ниже приведена таблица с вариантами, которые подходят для разных версий ОС.
Операционная система | Требуемая Visual C++ |
---|---|
Windows XP и ниже | C++2008 |
Windows 7 | C++2010 |
Windows 8 и 10 | Наиболее актуальная на данный момент |
Так вот, в зависимости от того, какая у вас ОС, вам следует скачать и инсталировать на свой компьютер C++2008 (64-бит, 32-бит), C++2010 (64-бит, 32-бит) или же C++2015 обновление 3.
Это наиболее актуальная версия по состоянию на июнь 2017 года. В будущем выйдут новые, поэтому следите за новостями на официальном сайте Microsoft.
Скачивание происходит одинаково – выбираем язык распространяемого компонента и жмем кнопку «Скачать». После этого останется запустить загруженный файл.
После этого перезагрузите компьютер.
Страница загрузки Visual C++
Способ №4. Microsoft .NET Framework
Здесь все то же самое – Microsoft .NET Framework тоже может вызывать рассматриваемую проблему из-за отсутствия каких-то собственных файлов. И этот компонент также нужно скачать и установить.
Но есть определенный, правильный порядок ее инсталяции:
Сначала необходимо инсталируйте версию 2.0 (вот ссылка). Попробуйте запустить программу, в которой раньше возникала проблема, если она не исчезла, устанавливайте дальше.
После этого 3.0 (скачать).
Если не помогает, 4.0 (ссылка).
Наконец, если у вас Windows Vista SP2, 7 SP1, 8, 8.1, Server 2008 SP2, Server 2008 R2 SP1, Server 2012 или Server 2012 R2, установите 4.6.2 (скачать).
Скачивание происходит точно так же, как и в случае с пакетами Visual C++.
Если ничего из этого не помогает, значит, случился сбой самой операционной системы. Пригласите на дом специалиста или сдайте компьютер в сервисный центр, если это возможно.
В крайнем случае, сделайте откат системы или вовсе переустановите ее.
Источник