Программа для создания тестов ([Обсуждение программы и кода])
Модератор: Модераторы разделов
Программа для создания тестов
Здравствуйте!
Третья моя программа написана по наработкам второй(для создания электронных книг), поэтому содержит некоторые методы такого же названия например "openBookBase", что в последующих версиях будет исправлено на "openTestBase"
Программа представляет собой миникомплекс, включающий: создание, тестирование, отчёт(статистика). Версия 0.3.1 - исходник + сборки.
Скрин последней версии:
Ссылка на SourceForge.net. Код под GNU GPL v2 - OpenSource. С++(Qt).
Описание: кроссплатформенная программа для создания и редактирования тестов, с последующим тестированием.
Её могут использовать все, кому понадобиться быстро создать тест и проверить знания. Можно будет создать вопрос типа "Что показано на изображении" и использовать как в школе так и на предприятии, для сдачи квалификационных экзаменов. Все тесты хранятся в базе данных SQLite3. Это позволяет располагать файл базы на любом сервере(Windows, GNU / Linux, и т. д.), без необходимости установки сервера баз данных.
Всё находится в одном исполняемом файле. Для редактирования / тестирования, необходимо переключить соответствующий пункт из меню "Режим". Отчёт о протестировавшихся представлен статистикой.
Внутренняя архитектура: список вопросов хранится в QStringList ListQuestions, список правильных ответов в QStringList ListRightAnswer, варианты ответа при тестировании в QStringList ListCheckRightAnswer. Изображения к тесту находятся в QByteArray ListImages[100000]. Режим редактирования защищён паролем, который пока что, хранится в открытом виде.
Обсуждаем.
Третья моя программа написана по наработкам второй(для создания электронных книг), поэтому содержит некоторые методы такого же названия например "openBookBase", что в последующих версиях будет исправлено на "openTestBase"
Программа представляет собой миникомплекс, включающий: создание, тестирование, отчёт(статистика). Версия 0.3.1 - исходник + сборки.
Скрин последней версии:
Ссылка на SourceForge.net. Код под GNU GPL v2 - OpenSource. С++(Qt).
Описание: кроссплатформенная программа для создания и редактирования тестов, с последующим тестированием.
Её могут использовать все, кому понадобиться быстро создать тест и проверить знания. Можно будет создать вопрос типа "Что показано на изображении" и использовать как в школе так и на предприятии, для сдачи квалификационных экзаменов. Все тесты хранятся в базе данных SQLite3. Это позволяет располагать файл базы на любом сервере(Windows, GNU / Linux, и т. д.), без необходимости установки сервера баз данных.
Всё находится в одном исполняемом файле. Для редактирования / тестирования, необходимо переключить соответствующий пункт из меню "Режим". Отчёт о протестировавшихся представлен статистикой.
Внутренняя архитектура: список вопросов хранится в QStringList ListQuestions, список правильных ответов в QStringList ListRightAnswer, варианты ответа при тестировании в QStringList ListCheckRightAnswer. Изображения к тесту находятся в QByteArray ListImages[100000]. Режим редактирования защищён паролем, который пока что, хранится в открытом виде.
Обсуждаем.
Спасибо сказали:
Re: Программа для создания тестов
1. пароль для редактирования тестов - я не понял где он записан
2.
что надо делать???
2.
При сборке возникает ошибка вызванная тем, что функция random() не находится. Необходимо будет все функции random() заменить на rand().
Больше никаких ошибок, без изменения кода, возникнуть не должно.
что надо делать???
Re: Программа для создания тестов
Здравствуйте!
Вот новая версия 0.3.5.
Теперь программа предоставляет возможность создавать тесты, используя 4-е новых типа вопроса: много ответов, ввод слова(предложения) с клавиатуры, ввод числа с клавиатуры, установка последовательности ответов.
Хочу обратить Ваше внимание на то, что в данной версии я сделал вот так:
Функция slotSelectTypeQuestion() отвечает за вывод списка, из которого можно будет выбрать соответствующий тип вопроса.
Далее идёт проверка типа и его применение - функция начинается на "set<Тип_вопроса>". Потом выбранный вариант загоняется в список типов QStringList slQuestionType. Но, здесь есть одно "но": - тип вопроса взят в "tr()", так что тест, составленный на русском языке не будет работать при использовании английского языка интерфейса программы и наоборот . Просьба, перед сборкой устранить эту ошибку, так как мной она будет устранена в последующий версиях .
Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.
Git-репозиторий:
P.S. Ещё один очень важный момент: версии 0.3.5, 0.4.1, 0.4.2 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.4.3, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство.
Вот новая версия 0.3.5.
Теперь программа предоставляет возможность создавать тесты, используя 4-е новых типа вопроса: много ответов, ввод слова(предложения) с клавиатуры, ввод числа с клавиатуры, установка последовательности ответов.
Хочу обратить Ваше внимание на то, что в данной версии я сделал вот так:
Код: Выделить всё
if(slotSelectTypeQuestion() == false) return;
if(sTypeQuestion == tr("One answer")) setOneAnswerType();
if(sTypeQuestion == tr("Many answers")) setManyAnswerType();
if(sTypeQuestion == tr("Installation sequence")) setInstallSequenceType();
if(sTypeQuestion == tr("Enter number")) setEnterNumberType();
if(sTypeQuestion == tr("Enter word (sentence)")) setEnterWordType();
slQuestionType << sTypeQuestion;
SaveState = false;
Функция slotSelectTypeQuestion() отвечает за вывод списка, из которого можно будет выбрать соответствующий тип вопроса.
Далее идёт проверка типа и его применение - функция начинается на "set<Тип_вопроса>". Потом выбранный вариант загоняется в список типов QStringList slQuestionType. Но, здесь есть одно "но":
Код: Выделить всё
sTypeQuestion == tr("One answer")
Дабы быть уверенным в том, что файлы не побились, при закачке, я добавил текстовик с md5-контрольными суммами.
Git-репозиторий:
git://shelk-test.git.sourceforge.net/gitroot/shelk-test/shelk-test (read-only)
P.S. Ещё один очень важный момент: версии 0.3.5, 0.4.1, 0.4.2 - сборки являются минимальными. То есть, чтобы посмотреть на все функции, необходимо программу собрать из исходника . Это делалось для проверки аудитории пользователей на заинтересованность в программе, путем отправки мне запроса на получение исходного кода. Что было не очень удачной идеей и, с версии 0.4.3, сборки программы уже снова полнофункциональны. Прошу извинить меня за данное неудобство.
Re: Программа для создания тестов
Для распространения программы между RPM-дистрибутивами, воспользуйтесь следующим спекфайлом:
Этот спекфайл находится в архиве shelk-test-0.3.5-rpm, расположенный по ссылке в предыдущем посте. Там же находится архив исходного кода и для дитрибутивов GNU / Linux Debian(/Ubuntu), с пометкой "deb".
Но, в нём есть небольшая ошибка или, даже скорей недочёт:Summary: On Qt-based, cross-platform software is designed for creating and editing tests, followed by tests of knowledge.
Summary(ru): Кроссплатформенная программа для создания и редактирования тестов, с последующим тестированием. Основана на Qt.
%define version 0.3.5
Group: Education
Name: shelk-test
BuildRequires: gcc-c++, libqt4-sql-sqlite >= 4.4.3, libqtgui4 >= 4.4.3, libqt4-core >= 4.4.3
BuildArch: %ix86
Provides: shelk-test
Release: alt1
Source: shelk-test-%{version}.tar.gz
Url: http://labfreetech.org/index_e.html
Version: %{version}
License: GPLv2
Packager: LabFreeTech.org admin@labfreetech.org
%description
On Qt-based, cross-platform software is designed for creating and editing tests, followed by tests of knowledge.
Supported features: - Creation of a test; - Editing of the test; - Testing; - Adding / removing tests from the database; - Rich editing the test of the tests; - Password protection regime editing;
%description -l ru
Кроссплатформенная программа для создания и редактирования тестов, с последующим тестированием. Основана на Qt.
Поддерживаемые функции: - Создание теста; - Редактирование теста; - Тестирование; - Добавление / удаление тестов из базы данных; - Расширенное редактирование текста вопросов теста; - Защита паролем режима редактирования;
%prep
%setup -q
%build
%make_build
%install
cp -Rv shelk/ %buildroot/
%clean
rm -rf $RPM_BUILD_ROOT
%files
/usr/bin/*
/usr/share/*
%post
test -e /usr/bin/xwts-0.3.5 || ln -s /usr/bin/xwts-0.3.5 /usr/bin/shelk-test-0.3.5
if (test -d $HOME/Desktop) then
test -e $HOME/Desktop/xwts.desktop || cp -r /usr/share/applications/xwts.desktop $HOME/Desktop/shelk-test.desktop
else
echo "Use command \"/usr/bin/xwts-0.3.5\""
fi
%postun
test -L /usr/bin/shelk-test-0.3.5 && rm -r /usr/bin/shelk-test-0.3.5
test -e $HOME/Desktop/shelk-test.desktop && rm -r $HOME/Desktop/shelk-test.desktop
Непонятно почему при установке собранного пакета с этим спекфайлом, происходит игнорирование выделенной библиотеки , но libqt4-sql устанавливается, хотя явного указания её нет. Кто знает причину, прошу ответить.BuildRequires: gcc-c++, libqt4-sql-sqlite >= 4.4.3, libqtgui4 >= 4.4.3, libqt4-core >= 4.4.3
Этот спекфайл находится в архиве shelk-test-0.3.5-rpm, расположенный по ссылке в предыдущем посте. Там же находится архив исходного кода и для дитрибутивов GNU / Linux Debian(/Ubuntu), с пометкой "deb".
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Программа для создания тестов
Какой отвратительный спек. Одно в нём хорошо - нигде, кроме Альта, он работать не будет.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Программа для создания тестов
Маэстро, прошу показать мне программу, из GPL-подобных, с межплатформенным спеком!!!Bizdelnick писал(а): ↑21.10.2011 18:06Какой отвратительный спек. Одно в нём хорошо - нигде, кроме Альта, он работать не будет.
Удивительно, но для сборки в Mandriva я меняю только один макрос на команду:
И этого достаточно . Дистрибутивы с отличной работой Alt 5 и Mandriva 2010%prep
%setup -q
%build
%make_build
//make
%install
sgfault - infinity.
Спасибо сказали:
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Программа для создания тестов
Да любая, для которой майнтейнер такой спек сочинил. Рекомендую почитать.
Собственно, этот макрос я и имел в виду, когда говорил, что кроме Альта спек нигде работать не будет. Но ужасность спека не только и не столько в нём. Например, что это за бессмысленные и беспощадные %post с %postun? Вы никогда не слышали, что пакеты ставятся под рутом? А что никсы - многопользовательская система, и менять при установке что-то в хомяке отдельно взятого юзера крайне глупо, даже если бы этот юзер не был рутом?
А что устанавливаемые файлы должны принадлежать руту, Вы тоже не слышали?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Программа для создания тестов
Я про это и говорил, что такого НЕТ. А это руководство использовать не просто глупо, но и жестоко. Всего дистрибутивов более 600, и они постоянно растут и я буду заниматься статистикой популярности и написанием подобных макроусловий, вместо кодинга.[fixed]%if %{defined fedora}
%if %{defined mdkversion}
%if 0%{?fedora} < 5
%if 0%{?mdkversion} > 2006
Re: Программа для создания тестов
Bizdelnick писал(а): ↑21.10.2011 18:06Какой отвратительный спек. Одно в нём хорошо - нигде, кроме Альта, он работать не будет.
fortune ALT -m "наши spec-файлы"
(ALT)
%
На основании этого можно сделать очевидные выводы:
+ нам удобно, чтобы чужие spec-файлы у нас работали (хотя бы для удобства
подготовки своего spec-файла);
+ нам все равно, будут ли наши spec-файлы работать где-либо еще.
-- ldv in sisyphus@
%
:wq
Re: Программа для создания тестов
taaroa писал(а): ↑22.10.2011 08:12Bizdelnick писал(а): ↑21.10.2011 18:06Какой отвратительный спек. Одно в нём хорошо - нигде, кроме Альта, он работать не будет.
fortune ALT -m "наши spec-файлы
(ALT) % На основании этого можно сделать очевидные выводы: + нам удобно, чтобы чужие spec-файлы у нас работали (хотя бы для удобства подготовки своего spec-файла); + нам все равно, будут ли наши spec-файлы работать где-либо еще. -- ldv in sisyphus@ %
http://freesource.info/wiki/korinf
Сначала rpm-спек преобразуется из спека для ALT Linux с помощью команды rpmbph (из etersoft-build-utils), далее выполняется его сборка в целевой системе, где задействуется пакет rpm-build-altlinux-compat (обеспечивающий совместимость спека по макросам с целевой системой).
Ну и http://www.altlinux.org/SpecTips/Compatibility про это тоже написано.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Программа для создания тестов
Так и не говорите, что
Но лучше бы этого спека не было даже под Альт, чем такой...
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Программа для создания тестов
Продолжаем знакомиться с кодом. Версия 0.4.1 Включает в себя следующие изменения:
Статистика - это первый вариант журнала отчёта о протестировавшихся студентах, представлена обычным html-файлом:Есть что-нибудь проще или для начала сойдёт?
- Исправлена ошибка в реализации типа вопроса "Ввод числа";
- Исправлена ошибка в реализации типа вопроса "Установка последовательности";
- Добавлена возможность вставки изображения в вопрос теста;
- Добавлены горячие клавиши;
- Добавлена возможность использования баллов;
- Добавлена возможность ввода имени тестируемого;
- Добавлена статистика.
Статистика - это первый вариант журнала отчёта о протестировавшихся студентах, представлена обычным html-файлом:
Код: Выделить всё
QFile file("/tmp/shelk-test-0.4.1/Stat.html");
QDataStream sfile(&file);
if(!file.exists())
{
file.open(QIODevice::WriteOnly);
strStat.clear();
strStat.append("<HTML>\n"
" <BODY>\n"
" <TABLE border=\"3\">\n"
" <TR>\n"
" <TD> " + tr("User name") + " </TD>\n"
" <TD> " + tr("Name test") + " </TD>\n"
" <TD> " + tr("Total questions") + " </TD>\n"
" <TD> " + tr("Correct answers") + " </TD>\n"
" <TD> " + tr("Wrong answers") + " </TD>\n"
" <TD> % </TD>\n"
" <TD> " + tr("Total points:") + " </TD>\n"
" <TD> " + tr("Date") + " </TD>\n"
" <TD> " + tr("Time end") + " </TD>\n"
" </TR>\n"
" <TR>\n"
" <TD>" + UserName + "</TD>\n"
" <TD>" + StatNameTest + "</TD>\n"
" <TD>" + sTotalQuestions + "</TD>\n"
" <TD>" + sCorrectAnswer + "</TD>\n"
" <TD>" + sWrongAnswer + "</TD>\n"
" <TD>" + strPercent + "</TD>\n"
" <TD>" + sAllPoint + "</TD>\n"
" <TD>" + strDate + "</TD>\n"
" <TD>" + strTime + "</TD>\n"
" </TR>\n"
" </TABLE>\n"
" </BODY>\n"
"</HTML>\n");
sfile << strStat;
file.close();
FormStat.StatLabel->setText(strStat);
}
Re: Программа для создания тестов
Здравствуйте! Программа продолжает совершенствоваться и версия 0.4.2 включает 25 изменений. Было изменено отображение картинки в тесте. Теперь используется рисование непосредственно на виджите:Как я предполагаю, что есть проще и правильнее способ, но времени найти его нет прошу помочь.
Ещё интересует вопрос по отлавливанию ошибок try catch. Это первая реализация. Что кроме вынесения в один метод обработчиков, во избежании наличия копированного кода, там можно сделать? Благодарю!
Ещё изменения:
Код: Выделить всё
//WidgetImage.cpp
//Передаётся в конструктор вторым параметром путь к загружаемому изображению
WidgetImage::WidgetImage(QWidget* pwgt/*=0*/, QString sFileName) : QWidget(pwgt)
{
//Копирование пути в глобальную переменную,
//для использования в обработчике события рисования
str1 = sFileName;
}
/*virtual*/ void WidgetImage::paintEvent(QPaintEvent*)
{
QImage img(str1);//Загрузка изображения
QPainter painter;
painter.begin(this);
//На img2 рисуется изображение из img масштабируемо по высоте
QImage img2 = img.scaledToHeight(height());
painter.drawImage(0, 0, img2);//Отрисовка на виджите
painter.end();
}
//TestSystem.cpp
TestSystem::TestSystem(QMainWindow *pwgt /* = 0*/): QMainWindow(pwgt)
{
setupUi(this);
...
QSplitter* splitEditHV;//Объявление разделителя
...
splitEditHV = new QSplitter(Qt::Vertical);//Создание разделителя вертикально
...
//Создание виджита в разделителе с передачей загружаемого изображения
widgetImage = new WidgetImage(splitEditHV, "/tmp/shelk-test-0.4.2/temp/tempimage");
widgetImage->resize(300, 300);//Изменение размера виджета
...
}
Ещё интересует вопрос по отлавливанию ошибок try catch. Это первая реализация. Что кроме вынесения в один метод обработчиков, во избежании наличия копированного кода, там можно сделать? Благодарю!
Ещё изменения:
- Добавлен учёт времени тестируемого;
- Добавилась возможность ручного запуска теста, по нажатию на клавишу;
- Добавлена возможность остановки теста, с занесением информации о тестируемом в статистику;
- Добавилась возможность экспорта в файл XWT;
- Добавилась возможность импорта из файла XWT;
Re: Программа для создания тестов
"Еще интересует вопрос по проверке условий в блоке if. Это первая реализация. Что кроме вынесения в один метод проверки условия, во избежание наличия копированного кода, там можно сделать?"
Ну вы поняли... =)
Re: Программа для создания тестов
Честно говоря нет, я делал как в книжке по ООП в C++. Что я недопонял намекните, пожалуйста.
Re: Программа для создания тестов
Ничего, кроме предусмотренного стандартом, вы с try/catch сделать не можете (хотя тут я наверное немного погорячился - изобретательность отдельных личностей нельзя сбрасывать со счетов). Почитайте Б. Страуструпа там информации об исключениях более чем достаточно.
Re: Программа для создания тестов
Ничего удивительного. В ОС Windows Qt почему-то не обрабатывает блок "catch(...)". Чтобы поймать хотя бы основные ошибки - был сделан первоначальный код, который Вы могли видеть, с условиями. Буду благодарен тому, кто найдёт нужную опцию компилятора для включения в ОС Windows.RasenHerz писал(а): ↑24.11.2011 19:48Ничего, кроме предусмотренного стандартом, вы с try/catch сделать не можете (хотя тут я наверное немного погорячился - изобретательность отдельных личностей нельзя сбрасывать со счетов). Почитайте Б. Страуструпа там информации об исключениях более чем достаточно.
Re: Программа для создания тестов
0.4.3 - это новая версия программы.
Здравствуйте!
Для шифрования используется алгоритм Base64, для сжатия функция qCompress. Этот код может быть реверсирован и получен изначальный пароль фактически в 100%-ом виде. В будущем он будет заменён на md5 хеш или похожий.
А вот следующая проблема - это шифрование самого теста. Алгоритмы те же. При наличии у студента(/пользователя) кода все тесты предстают в абсолютно первозданном виде .
Шифрование по ключу думаю будет слишком хорошая защита, которую мне одному не реализовать. Найти другой вариант за ~2-а месяца у меня не получилось.
Какие есть варианты? Благодарю!
ЗЫ: Всего 25 изменений.
Здравствуйте!
- Добавлено шифрование и сжатие экспортируемого файла теста в формате xwt;
- Исправлена ошибка, когда пароль режима программы хранился и проверялся в открытом виде;
- Добавлена возможность работать с несколькими хранилищами тестов;
- Добавлена возможность резервировать хранилище тестов(со сжатием до 5-ти раз(!));
- Добавлена возможность запроса на сохранение теста, при его закрытии;
Код: Выделить всё
QString RegimePassword;//Пароль режима
QByteArray baPassword;//Хеш пароля;
RegimePassword = "Password";
baPassword.append(RegimePassword);
baPassword = baPassword.toBase64();
baPassword = qCompress(baPassword, 9);
baPassword = baPassword.toBase64();
baPassword = qCompress(baPassword, 9);
baPassword = baPassword.toBase64();
RegimePassword.clear();
RegimePassword.append(baPassword);
А вот следующая проблема - это шифрование самого теста. Алгоритмы те же. При наличии у студента(/пользователя) кода все тесты предстают в абсолютно первозданном виде .
Шифрование по ключу думаю будет слишком хорошая защита, которую мне одному не реализовать. Найти другой вариант за ~2-а месяца у меня не получилось.
Какие есть варианты? Благодарю!
ЗЫ: Всего 25 изменений.
Re: Программа для создания тестов
Не поможет, т.к. вам его всё равно придётся восстанавливать.
Тут-то как раз нет проблемы: сам тест шифровать не надо, а надо шифровать ответы. Причём лучше хешем и таким, который для одного и того же ответа, но для разных заданий даст разный результат.
Более того, сама архитектура программы ущербна с точки зрения безопастности. В пределе, тестируемый может просто поменять переменную, отвечающую за оценку, и не решать тест. Для решения этой проблемы необходима клиент-серверная архитектура. Именно поэтому KEduca больше не разрабатывается, а Moodle -- живее всех живых.
Re: Программа для создания тестов
Пароль нужно будет восстанавливать, если пользователи(преподаватели) забыли его. Но, хеш пароля хранится в файле конфигурации программы. Если будет md5, то студент сможет считать его, но не сможет получить пароль. В то время, как преподаватель, если забыл пароль, удалит этот конфигурационный файл, и вуаля - пароль сброшен . Студент при том, без админки ничего не сделает. Да и шифровать вопросы, очень важно, ты наверное не был студентом?sciko писал(а): ↑27.01.2012 13:15Не поможет, т.к. вам его всё равно придётся восстанавливать.
...
Тут-то как раз нет проблемы: сам тест шифровать не надо, а надо шифровать ответы. ...
Более того, сама архитектура программы ущербна с точки зрения безопастности. В пределе, тестируемый может просто поменять переменную, отвечающую за оценку, и не решать тест. Для решения этой проблемы необходима клиент-серверная архитектура. Именно поэтому KEduca больше не разрабатывается, а Moodle -- живее всех живых.
Если студент сможет через отладчик работать с программой, то пожалуйста, на сервер может быть передана подмена аналогично Если есть более полезные мысли, с радостью выслушаю
Re: Программа для создания тестов
Ещё раз: пароль нужен программе, чтобы расшифровать и показать тест. Однако программа запускается с правами тестируемого. И различить запрос от тестируемого и от программы невозможно. Зная откуда берёт пароль программа, пользователь может получить пароль сам. Поэтому эта задача не разрешима в такой постановке.
Решение у этой задачи всего два:
1) проверять только ответы на соотвествие, шифруя правильный ответ необратимым алгоритмом.
2) запускать программу под другим пользователем.
Последнее проще всего сделать, реализовав приложение как клиент-серверное. При этом сервер запускается с правами другого пользователя. Применительно к вашей задаче, проще всего сделать это разбив программу на две части: демон-сервер и клиент. В демон вынести все функции по авторизации пользователя, выдаче ему задания и проверки последнего.
Достаточно разжевал?
Важно шифровать только правильный ответ. Остальное желательно, но не важно, т.к. всё равно будет выдано тестируемому.
С каких пор сервер должен доверять клиенту?
- /dev/random
- Администратор
- Сообщения: 5282
- ОС: Gentoo
Re: Программа для создания тестов
Есть только один способ надёжно защитить эти вопросы: хранить их на другом компьютере. Если их шифровать, то ключ шифрования всё равно будет находиться в памяти, и вытащить его отладчиком - не проблема. И даже если экзаменатор, проявив невероятные для географа сисадминские навыки, запретит отладку без знания рутового пароля, всегда можно вставить загрузочный диск, устанавливающий какой-нибудь руткит, и незаметно нажать резет. А потом оправдаться: это он сам перезагрузился, перегрелся, наверное! Географ поверит. А если запретить загрузку со сменных устройств, и следить, чтобы никто не влез в системник, то следует учесть ещё и то, что многие материнки не требуют биос-пароль для выбора загрузочного устройства. Ну и так далее.
Не забывайте: всё, что может сделать локальная программа, может сделать локальный злоумышленник. Исправить это можно только организационно. Если вы хотите защитить программу от подобного злоупотребления, то она должна работать не на том компьютере, за которым сидит студент. Иначе - взваливайте защиту на плечи экзаменаторов и миритесь с тем, что вы ничем им помочь не можете. Разве что подробными инструкциями.
Программа должна целиком работать удалённо, а локальная часть не должна уметь ничего, кроме отрисовки интерфейса. И должна иметь возможность передавать на сервер только то, какую кнопку нажал студент.
Re: Программа для создания тестов
Эти все сложности реализации клиент-сервера давайте оставим itest'у и остальным велосипедам Мне важна практичность и эргономика.
ЗЫ: Появилась одна мысль - пошёл обдумывать её
ЗЫ: Появилась одна мысль - пошёл обдумывать её
- /dev/random
- Администратор
- Сообщения: 5282
- ОС: Gentoo
Re: Программа для создания тестов
В таком случае можете даже не пытаться реализовать какую-либо защиту тестов внутри своей программы. Бесполезно. Без клиент-сервера единственной надёжной защитой будет стоять над душой каждого студента и следить за каждым движением.
Re: Программа для создания тестов
Хотя я понял, в чём дело. Эти все мысли по поводу поверхностной информации взятые с поста 0.4.3. Sqlite'овская база тестов итак находится на сервере. Шифрование необходимо было для распространения в файлах формата xwt. Но такую, как говорится, параноидальную защиту я делать не буду, если только в далёком будущем.../dev/random писал(а): ↑27.01.2012 15:50
В таком случае можете даже не пытаться реализовать какую-либо защиту тестов внутри своей программы. Бесполезно. Без клиент-сервера единственной надёжной защитой будет стоять над душой каждого студента и следить за каждым движением.
Re: Программа для создания тестов
1 Зачем отладчик? Есть программы типа ArtMoney (поправьте если я с названием ошибся - в игрушках всякое разное в памяти подменять)
2. В сетевом варианте подмены быть не может. Поскольку вопросы и ответы храняться на сервере. Все что сервер получает от клиента ответ. И о правильности/неправильности знает только сервер.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Re: Программа для создания тестов
xwicked, вообще уж давно пора о сетевой версии подумать. У вас программа более универсальная чем тренажер, что я недавно представлял. Так мне на второй день после публикации несколько учителей сказало, что нужна сетевая версия. Вам то и подавно это нужно. И учительское место должно быть с контролем работы учеников в реальном времени. И, соответственно, всю обработку должен делать сервер.
Режим:
1 отправил вопрос и ответы. (ни какой информации о правильности).
2 получил номер ответа
3 отправил результат
Клиент просто тупой браузер показывающий вопрос и варианты ответов и принимающий ответ тестируемого. Все. Ни какого анализа.
Речь идет не о сервере БД. А о сервере вашего приложения.
Хотя теоретически можно проверку и средствами СУБД реализовать. или хотябы запросов. Но ни в коем случае не отправлять на клиента правильный ответ.
Режим:
1 отправил вопрос и ответы. (ни какой информации о правильности).
2 получил номер ответа
3 отправил результат
Клиент просто тупой браузер показывающий вопрос и варианты ответов и принимающий ответ тестируемого. Все. Ни какого анализа.
Речь идет не о сервере БД. А о сервере вашего приложения.
Хотя теоретически можно проверку и средствами СУБД реализовать. или хотябы запросов. Но ни в коем случае не отправлять на клиента правильный ответ.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
When life puts you in tough situations, don’t say "why me". Just say "try me © ?