Программа для создания тестов ([Обсуждение программы и кода])

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Кривость той или иной ОС я покрывать функциями своей программы не буду. Проще будет не покупать ОС от M$, но использовать unix. А времени у меня предостаточно. Те кто хотели всего и сразу давно сдулись или сдуваются по-тихоньку, я же настроен серьёзно ;)
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

xwicked писал(а):
27.01.2012 17:58
Кривость той или иной ОС я покрывать функциями своей программы не буду. Проще будет не покупать ОС от M$, но использовать unix. А времени у меня предостаточно. Те кто хотели всего и сразу давно сдулись или сдуваются по-тихоньку, я же настроен серьёзно ;)

так дело то не в кривости какой либо из ОС. (artMoney - просто единственный пример, который пришел в голову и который знают многие геймеры, которые ни в каких it тонкостях "ни бум-бум").

Вы определитесь для кого вы эту программу пишите. Если для самообучения пользователей, то шифровать ни чего не надо: так как это самообразование и пользователь желает пройти тест нормально. Если для учебного процесса где есть учитель и ученик(и) то сетевая сущность просто напрашивается. И тут опять шифрование совершенно не нужно. Т.к. переложить контролирующую функцию на серверную часть гораздо легче, чем мучатся с выбором чего и как шифровать и на сколько это устойчиво.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

Я не пользовался SQLight . Но в чуть более продвинутых СУБД. Можно было бы отправлять ответ пользователя серверу примерно так

Код: Выделить всё

select rating from set_new_answer(<user_id>,<question_id>,<user_ansewer_id>)


Где set_new_answer процедура на стороне сервера вставляющая ответ в базу, сразу проверяющую его обычным селектом и возвращающая всего одно поле со значениями 1 или 0 (правильно или нет). Как вариант еще и дополнительную инфу: процент пройденных вопросов, процент верных вопросов, и .т.п.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Программа для создания тестов

Сообщение sciko »

xwicked писал(а):
27.01.2012 16:14
Sqlite'овская база тестов итак находится на сервере.
Не может этого быть, т.к. БД sqlite всегда находится на том же компьютере что и программа её использующая. Это ключевая особенность sqlite.

Voral писал(а):
27.01.2012 17:06
Клиент просто тупой браузер показывающий вопрос и варианты ответов и принимающий ответ тестируемого
Тогда получится очередной аналог Moodle, ILIAS и т.п.

Впрочем, если ТС нравится наступать на грабли, то пусть так и будет.
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

sciko писал(а):
30.01.2012 09:54
Voral писал(а):
27.01.2012 17:06
Клиент просто тупой браузер показывающий вопрос и варианты ответов и принимающий ответ тестируемого
Тогда получится очередной аналог Moodle, ILIAS и т.п.
Впрочем, если ТС нравится наступать на грабли, то пусть так и будет.

Хм. На сколько я понимаю Moodle, ILIAS это немного другая категория. А во-вторых: а чем плохо, что на клиенте отсутствует функционал влияющий на контроль?
Или я не так понял мысль?
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Программа для создания тестов

Сообщение sciko »

Voral писал(а):
31.01.2012 23:13
На сколько я понимаю Moodle, ILIAS это немного другая категория.
Всё равно система тестирования там основная фича.

Voral писал(а):
31.01.2012 23:13
а чем плохо, что на клиенте отсутствует функционал влияющий на контроль?
Наоборот, хорошо. Но именно так и сделано в том же Moodle.
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

0.4.4. Исправлено 15 ошибок(!). Появились 2-е структуры:

Код: Выделить всё

//Структура файла свойств
struct sFileSettings
{
     bool gRegimeViewing,//true - Режим просмотра, false - Режим редактирования
  LanguageProgram,//Язык программы
  bStandardPanel,//Состояние показа стандартной панели
  bEditPanel,//Состояние показа панели редактирования
  bFormatPanel,//Состояние показа панели форматирования
  bTimePanel,//Состояние показа панели времени
  bPointPanel,//Состояние показа панели баллов
  bLimitTime,//Ограничение времени
  bAutoStartTest;//Автоматический запуск
     QString RegimePassword;//Пароль режима
};

//Структура теста
struct sShelkTestVar
{
     QString sNameTest,//Название теста
     sAllPoint,//Все баллы строкой
     sMidPoint,//Средний балл строкой
     sCurrentPoint,//Текущий балл строкой
     sTypeQuestion,//Тип вопроса
     TestPassword,//Пароль теста
     StatNameTest,//Имя пользователя в статистике
     sQuestion,//Текст вопроса
     sTimeStart;//Время начала

 int CountQuestion,//Количество вопросов
 iNumberQuestion,//Номер вопроса
 iNumberTest,//Номер теста
 AllPoint,//Общий балл
 MidPoint,//Средний балл
 CurrentPoint,//Текущий балл
 AllPointCheck,//Общий балл для проверки
 AllTime,//Общее время
 MidTime,//Среднее время
 CurrentTime,//Текущее время
 i5First;//Номер прошлого выделенного ответа (установка последовательности)

     QVector<double> *iRangeFirst,//Начальное значение диапазона (ввод числа)
                     *iRangeLast;//Конечное значение диапазона (ввод числа)

     QStringList ListQuestions,//Список вопросов
                 slTableNumber,//Список номеров таблиц в базе тестов
                 slQuestionType,//Список типов вопросов
                 slPoint,//Список баллов
                 slTime;//Список времени

     QVector<QVariant> *ListRightAnswer,//Список правильных ответов
                       *ListCheckRightAnswer;//Список правильных ответов для проверки

     QVector<QStringList> *ListAnswers;//Список ответов
     QVector<QByteArray> *ListImages;//Список изображений
     QVector<QFont> *ListFonts;//Список шрифтов
     QSqlDatabase db;//База данных тестов

     QTimer TimerTest,
            TimerTestLabel;
     QTime TimeTestCurrent,
           TimeTestAll;
};
Их было решено использовать сразу, после выхода кроссворда за предел стека :laugh:
Введение вектора типа QVariant позволило функцию проверки ответов максимально упростить и вынести отдельно:

Код: Выделить всё

bool ShelkTest::MakeCheckRightAnswer(int iIndex)
{
    int iTypeR;
    QString str1, str2;
    QByteArray ba1, ba2;

    iTypeR = vShelkTestVar->ListRightAnswer->at(iIndex).type();

        if(iTypeR == QVariant::Int)
            {
                if(vShelkTestVar->ListRightAnswer->at(iIndex).toInt()
                    == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toInt())
                    return true;
                else return false;
            }

        if(iTypeR == QVariant::Double)
            {
                if(vShelkTestVar->ListRightAnswer->at(iIndex).toDouble()
                    == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toDouble())
                    return true;
                else return false;
            }

        if(iTypeR == QVariant::String)
            {
                if(vShelkTestVar->ListRightAnswer->at(iIndex).toString()
                    == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toString())
                    return true;
                else return false;
            }

        if(iTypeR == QVariant::ByteArray)
            {
                ba1.append(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray());
                ba2.append(vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray());
                str1.append(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray());
                str2.append(vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray());

                if(vShelkTestVar->ListRightAnswer->at(iIndex).toByteArray()
                    == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toByteArray())
                    return true;
                else return false;
            }

        if(iTypeR == QVariant::StringList)
            {
                if(vShelkTestVar->ListRightAnswer->at(iIndex).toStringList()
                    == vShelkTestVar->ListCheckRightAnswer->at(iIndex).toStringList())
                    return true;
                else return false;
            }
        return false;
}
Несмотря на то, что QVariant не рекомендуется использовать из за большого потребления памяти, так как он позволяет хранить даже контейнеры(!), я решил сделать это. Использование один раз в масштабах простой программы для создания тестов показала свою рентабельность.
Скачать
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Здравствуйте! Представляю новую версию программы 0.4.7. Добавился файл с константами:

Код: Выделить всё

//const.h
//Определение путей констант, в соответствии с системой
#if defined(Q_WS_WIN)

    #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwst"
    #define PATH_SHARE_DOC QApplication::applicationDirPath()
    #define PATH_SHARE_APP QApplication::applicationDirPath()
    #define PATH_TMP QApplication::applicationDirPath()


#elif defined(Q_WS_X11)

    #define PATH_TMP_SET "/tmp/shelk-test-0.4.7/settings.xwst"
    #define PATH_SHARE_DOC "/usr/share/doc/shelk-test-0.4.7"
    #define PATH_SHARE_APP "/usr/share/shelk-test-0.4.7"
    #define PATH_TMP "/tmp/shelk-test-0.4.7"

#elif defined(Q_WS_MAC)

    #define PATH_TMP_SET QApplication::applicationDirPath() + "/settings.xwst"
    #define PATH_SHARE_DOC QApplication::applicationDirPath()
    #define PATH_SHARE_APP QApplication::applicationDirPath()
    #define PATH_TMP QApplication::applicationDirPath()


#endif

#define MODE_VIEW true
#define MODE_EDIT false

#define LANGUAGE_RUSSIAN true
#define LANGUAGE_ENGLISH false

#define TOOLBAR_SHOW true
#define TOOLBAR_HIDE false

#define STATISTICS_FIELD_SHOW true
#define STATISTICS_FIELD_HIDE false

#define VIEW_RUSSIAN 0
#define VIEW_ENGLISH 1
#define EDIT_RUSSIAN 2
#define EDIT_ENGLISH 3

//Типы вопросов
#define TYPE_ONE_ANSWER "1"
#define TYPE_MANY_ANSWERS "2"
#define TYPE_ENTER_WORD "3"
#define TYPE_ENTER_NUMBER "4"
#define TYPE_INSTALLATION_SEQUENCE "5"

Добавилась новая структура, но в коде она пока не задействована:

Код: Выделить всё

//Структура показа полей статистики
struct TStateFieldStatistics
{
     bool bUserName,//Имя пользователя
          bNameTest,//Название теста
          bTotalQuestions,//Всего вопросов
          bCorrectAnswers,//Правильных ответов
          bWrongAnswers,//Неправильных ответов
          bTotalPoints,//Всего баллов
          bScore,//Оценка
          bDate,//Дата
          bTimeBegin,//Время начала
          bTimeEnd,//Время окончания
          bElapsedTime;//Прошедшее время
};
Оптимизирована функция изменения шрифта(была 195 строк):

Код: Выделить всё

        bool Accept;
        QFont TextFont;
        TextFont = TextQuestion->textCursor().charFormat().font();
        TextFont = QFontDialog::getFont(&Accept, TextFont);

        if(Accept)
        {
            QTextCharFormat tcf;
            tcf.setFont(TextFont);
            TextQuestion->textCursor().setCharFormat(tcf);
            cbFont.setCurrentFont(TextFont);
        }
        else return 1;
Скачать
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Новая и последняя на данный момент версия 1.0.0. Здесь я постарался конкретно. Изменения:
- Добавились новые возможности: проверка наличия новой версии через интернет; печать теста; печать статистики; экспорт тестов в HTML, RTF, PDF, PostScript, простой текстовый формат;
- Добавлено использование системных временных каталогов для размещения временных файлов;
- Изменилось расположение файла статистики по-умолчанию на домашний каталог пользователя;
- Изменилась кодировка файла статистики на UTF-8:
- Изменилась кодировка импортируемого текстового файла на UTF-8;

Код: Выделить всё

//Новые константы
//Типы вопросов для определения содержимого переменной QVariant
#define V_TYPE_ONE_ANSWER QVariant::Int
#define V_TYPE_MANY_ANSWERS QVariant::ByteArray
#define V_TYPE_ENTER_WORD QVariant::String
#define V_TYPE_ENTER_NUMBER QVariant::Double
#define V_TYPE_INSTALLATION_SEQUENCE QVariant::StringList

//Перевод слов в rtf-unicode
QString ShelkTest::WordToUnicode(QString sWord)
{
    QString sTemp,
            sNum;
    sTemp.clear();
    for (int i = 0; i < sWord.length(); i++)
    {
        sNum.setNum(sWord.at(i).unicode());
        sTemp.append("\\u" + sNum + "?");
    }
    return sTemp;
}

Далее, задействовал webkit:

Код: Выделить всё

private: QWebView *wvUpdate;//Для обновления и печати :)
, так как QTextEdit и QTextBrowser не могут отображать элементы ввода(текст, переключатель, флажок), для формирования правильной html-ки. Раз уж было принято решение добавить новую зависимость от библиотеки QtWebkit, то на его же основе я сделал проверку наличия новой версии через интернет, смотрим:

Код: Выделить всё

void ShelkTest::slotCheckForUpdates()
{
    connect(wvUpdate, SIGNAL(loadFinished(bool)), SLOT(slotMakeCheckUpdates(bool)));
    wvUpdate->load(QUrl("http://labfreetech.org/shelk_1.0.0.html"));
}

void ShelkTest::slotMakeCheckUpdates(bool bError)
{
    if (bError && wvUpdate->page()->findText("new_version")) QMessageBox::information(0, tr("Information"), tr("On the official website available a new version!"));
    else QMessageBox::information(0, tr("Information"), tr("You have the latest version!"));
    disconnect(wvUpdate, SIGNAL(loadFinished(bool)), 0, 0);
}
Как видно - всё просто. Если текст "new_version" найден в загруженной html-ке, то есть новая версия :)
Чтобы сделать всё так, как я задумал - пришлось использовать новый метод disconnect, который я ранее не использовал и всё получилось.

Теперь за кодом можно наблюдать не дожидаясь релиза. В git создана новая ветка current. Скачать.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Программа для создания тестов

Сообщение Bizdelnick »

xwicked писал(а):
19.02.2012 02:28
проверка наличия новой версии через интернет

Нужно только виндузятникам.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Bizdelnick писал(а):
19.02.2012 13:46
Нужно только виндузятникам.
Что сделаешь, на этот скромный сегмент пользователей мне тоже приходится делать акцент :unsure:
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

Bizdelnick писал(а):
19.02.2012 13:46
Нужно только виндузятникам.

Если речь идет о пакете принятом в репозитории то согласен.... Пока нет - нужно не зависимо от ОС.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Программа для создания тестов

Сообщение Bizdelnick »

Voral писал(а):
20.02.2012 00:06
Bizdelnick писал(а):
19.02.2012 13:46
Нужно только виндузятникам.

Если речь идет о пакете принятом в репозитории то согласен.... Пока нет - нужно не зависимо от ОС.

Репозитории бывают и неофициальные. Если бы ТС вместо реализации сей фичи сделал репозитории под наиболее распространённые дистрибутивы - линуксоидам было бы много больше пользы. При условии, конечно, что эта программа кому-то интересна.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Здравствуйте знатоки мира OpenSource и Unix-систем в частности! Есть один вопрос, касающийся и моих программ тоже.
Что нужно, для того, чтобы проект( / отдельную программу) могли признать как свободную и начали размещать новости на таких сайтах как OpenNet.ru, LinuxCenter.ru и подобных?
Если время, то есть много новостей типа "Недавно стартовал такой-та проект(программа), версия 0.0.1, а она уже из себя кое-что представляет. Продолжаем пристально за этим следить..."
Если законченность и многообразие функций, то есть информация в журнале LinuxFormat, что "Была такая программа - автор потом не смог выхлоп ld разобрать(не линковалось что-то) и проект встал - очень жаль...".
Если закрытый код, то в моих всех программах он уже открыт - используется git и bug-трекер, есть форум, всё это хостится на SourceForge.net.

Благодарю за ответы! :rolleyes:
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20793
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Программа для создания тестов

Сообщение Bizdelnick »

Запостите на freecode.com, если программой кто-нибудь заинтересуется, то и новости будут.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Rodegast
Сообщения: 337
ОС: Linux
Контактная информация:

Re: Программа для создания тестов

Сообщение Rodegast »

> Что нужно, для того, чтобы проект( / отдельную программу) могли признать как свободную и начали размещать новости на таких сайтах как OpenNet.ru, LinuxCenter.ru и подобных?

В чём проблема? Сам новости пости ;)
Спасибо сказали:
Аватара пользователя
DjSpike
Сообщения: 2265
Статус: в поисках истины
ОС: Lubuntu 12.04

Re: Программа для создания тестов

Сообщение DjSpike »

Подскажите какой пароль для того чтобы перейти в режим редактирования ???
AvReg - По для организации Видеонаблюдения на Linux.
ДЭНСИ:КАССА - Рабочее место кассира под Linux.
Терминальные решения под Linux
Консультации по установке 1с+PostgreSQL+Ubuntu.
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Очередная версия программы 1.5.1. Часть переменных сгруппирована и выделена в отдельные классы:
TAnswer,//Ответ
TQuestion,//Вопрос
TTest,//Тест
TDepository,//Хранилище
TFileOptions//файл свойств

Код: Выделить всё

...
    QString s_NameTest;//Название теста
    QByteArray ba_TestPassword;//Пароль теста

public:

    QVector<TQuestion> vListQuestions;//Список вопросов
    QVector<TAnswer> vListAnswers;//Список ответов

    QTimer TimerTest;
    QTimer TimerTestLabel;
    QTime TimeTestCurrent;
    QTime TimeTestAll;

    TTest();
    ~TTest();

    int countQuestions() const;//Получить количество вопросов
    void setCountQuestions(int iCountQuestions);//Задать количество вопросов ...
Всё работает нормально, но память очищается не вся. :( Вектора списков вопросов и ответов, при вызове стандартного метода clear(), возможно неполностью очищают своё содержимое. Сделал так:

Код: Выделить всё

    for (int i = 0; i < TestDepository->Test->vListQuestions.count(); i++)
    {
        TestDepository->paTemp[i].clear();//Указатель на TestDepository->Test->vListAnswers
        TestDepository->pqTemp[i].clear();//Указатель на TestDepository->Test->vListQuestions
    }

    TestDepository->TestAnswer.clear();
    TestDepository->TestQuestion.clear();
    TestDepository->Test->vListAnswers.clear();
    TestDepository->Test->vListQuestions.clear();

всё равно после недолгой работы(открытий / закрытий тестов) с программой. Остаётся, при закрытии ~3 МБ не выгружено. По, что это мелочь, но ...

Изменения:
- Оптимизация процесса сохранения теста(~10 раз(!)) в базу хранилища;
- Декомпозиция программы на отдельные классы, с занесением части переменных в секцию private;
- Добавлена возможность использовать дифференцированную или недифференцированную систему оценивания;
- Добавлены возможности: удалённого расположения файла свойств программы; ограничивать время для всего теста; пропуска вопросов, при тестировании; перемешивания вопросов; настраиваемого показа полей статистики; запоминать последнюю открытую базу хранилища; не показывать результаты тестируемому; ограничивать количество задаваемых вопросов из общего числа;
Скачать
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

1.5.2 - скачать
- Теперь сохранение свойств программы происходит при каждом их изменении;
- Убрана чувствительность регистра ответа в вопросе типа "Ввод слова(предложения)";
- Исправлена ошибка ограничения количества вопросов в режиме редактирования;
- Добавлено новое поле статистики "Количество заданных вопросов из общего числа";
- Исправлена ошибка, когда нельзя было ввести вариант ответа, при увеличении и обратном уменьшении изображения, в вопросе "Ввод слова(предложения)";
- Изменено и отлажено автоматическое определение пропущенных вопросов, при тестировании;
- Добавлена дополнительная детализация к статистике протестировавшихся;
В следующей версии я хочу прикрутить веб-интрефейс тестируемого. Собираюсь использовать JavaScript(или Java? а возможно C++?) + свой простейший веб-сервер(на C++ для AJAX). Какие вопросы / проблемы меня могут поджидать?

Благодарю за ответы!
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

xwicked писал(а):
17.11.2012 19:35
Собираюсь использовать JavaScript(или Java? а возможно C++?) свой простейший веб-сервер(для AJAX). Какие вопросы / проблемы меня могут поджидать?

Ну первый вопрос вас уже наше: разобраться где, для чего и какой язык годен. Да и вообще навести порядок в знаниях:
1. Упомянутый Ajax намекает на использование JavaScript.
2. Использование JavaScript для создания сервера - это и области фантастики (не нужной)... Хотя как знать, мож кто сумел прикрутить :)
3. Я уже потерялся на чем вы пишете проекты, потому для написания сервера придется использовать c++ (или pascal если вы на нем пишете) или с. Возможно наверное и Java.... Но на мой личный и скромный взгляд - Java для таких целей...... ненадо....
4. Веб сервер для аякс..... А почему тогда именно для аякс? А не вообще для веб интерфейса? Вашим пользователям ведь не надо будет скачивать на комп гору htmlек? :)
5. Почему не использовать готовый сервер? Это было бы грамотным решением.


ИМХО

офтоп.
Ну когда же уже кофе можно будет сварить ?


То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Voral писал(а):
17.11.2012 20:47
Ну первый вопрос вас уже наше: разобраться где, для чего и какой язык годен. Да и вообще навести порядок в знаниях:
1. Упомянутый Ajax намекает на использование JavaScript.
2. Использование JavaScript для создания сервера - это и области фантастики (не нужной)... Хотя как знать, мож кто сумел прикрутить :)
3. Я уже потерялся на чем вы пишете проекты, потому для написания сервера придется использовать c++ (или pascal если вы на нем пишете) или с. Возможно наверное и Java.... Но на мой личный и скромный взгляд - Java для таких целей...... ненадо....
4. Веб сервер для аякс..... А почему тогда именно для аякс? А не вообще для веб интерфейса? Вашим пользователям ведь не надо будет скачивать на комп гору htmlек? :)
5. Почему не использовать готовый сервер? Это было бы грамотным решением.

1. Если динамическая подгрузка не реализована для других языков, то тогда понятно.
2. Поправил сообщение для создания веб-сервера я буду использовать всё тот же C++(Qt), конечно же. :)
3. Пока на мой проект никто не обращает внимания. Поэтому и приходится делать невозможное для того, чтобы кто-нибудь хотя бы сделал вид, что программы действительно нужные :rolleyes:
4. Ну а как же шагание в ногу со временем? Тем более для такой мелочи можно сделать всё шикарно. Это как 19 сборок для простого кроссворда :laugh:
5. Преподаватели просто не будут возиться с настройкой "ещё и какого-то веб-сервера" для удобства. Им такое мнимое упрощение не нужно.

Но, меня все же интересует вопрос, когда может возникнуть необходимость в "кроссбраузерной вёрстке" если я буду передавать чистый html без css и другой ерунды. Ещё JavaScript на странице будет таймер считать, например, для автоматического окончания тестирования.
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

xwicked писал(а):
17.11.2012 22:26
1. Если динамическая подгрузка не реализована для других языков, то тогда понятно.
4. Ну а как же шагание в ногу со временем? Тем более для такой мелочи можно сделать всё шикарно. Это как 19 сборок для простого кроссворда :laugh:
5. Преподаватели просто не будут возиться с настройкой "ещё и какого-то веб-сервера" для удобства. Им такое мнимое упрощение не нужно.

1 Конкретно Ajax - Asynchronous Javascript and XML. Разве нет?
4. Я не об этом. Вашу фразу "сделать вебсервер для аякс" я воспринимаю следующим образом: пользователь тем или иным образом копирует себе набор html/js/css файлов. Из которых идет обращение к вашему серверу с использованием ajax. Но тгда вообще зачем эти страницы тащить пользователю к себе на комп? Пусть ваш сервер их и генерит и отдает. В итоге все что нужно пользователю - закладка в его браузере с url вашего сервера. тогда фраза "сервер для аякс теряет смысл".
5. Ну что значит "не будут". Минимально и ваш сервер придется настроить. В конце концов можете просто вывести необходимые и достаточные настройки в окно настройки вашей программы. И пользователь практически может и не знать, что работает апач. С другой стороны. Если у пользователя уже стоит апач и слушает 80 и 8080 порт. То вашему серверу уже слушать другой порт, а тут какой нить злобный админ приходящий в школу раз в пятилетку может зарубить все "лишние"....

xwicked писал(а):
17.11.2012 22:26
Но, меня все же интересует вопрос, когда может возникнуть необходимость в "кроссбраузерной вёрстке" если я буду передавать чистый html без css и другой ерунды. Ещё JavaScript на странице будет таймер считать, например, для автоматического окончания тестирования.

хм.. "чистый html без css" - это хардкор и уж точно не шагание в ногу со временем. Ну а необходимость "кроссбраузерной верстки" возникнет сразу как только вы начнете сделать вебморду...... Просто может вы и не наткнетесь на проблемы связанные с этим. А проверять во всех браузерах, имхо, стоит с самого начала. Включая всякие андроидные и айосные. И тут только вам решать какова ваша целевая аудитория.
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Voral писал(а):
20.11.2012 00:54
...
1 Конкретно Ajax - Asynchronous Javascript and XML. Разве нет?
4. Я не об этом. Вашу фразу "сделать вебсервер для аякс" я воспринимаю следующим образом: пользователь тем или иным образом копирует себе набор html/js/css файлов. Из которых идет обращение к вашему серверу с использованием ajax. Но тгда вообще зачем эти страницы тащить пользователю к себе на комп? Пусть ваш сервер их и генерит и отдает. В итоге все что нужно пользователю - закладка в его браузере с url вашего сервера. тогда фраза "сервер для аякс теряет смысл".
5. Ну что значит "не будут". Минимально и ваш сервер придется настроить. В конце концов можете просто вывести необходимые и достаточные настройки в окно настройки вашей программы. И пользователь практически может и не знать, что работает апач. С другой стороны. Если у пользователя уже стоит апач и слушает 80 и 8080 порт. То вашему серверу уже слушать другой порт, а тут какой нить злобный админ приходящий в школу раз в пятилетку может зарубить все "лишние"....

...
хм.. "чистый html без css" - это хардкор и уж точно не шагание в ногу со временем. Ну а необходимость "кроссбраузерной верстки" возникнет сразу как только вы начнете сделать вебморду...... Просто может вы и не наткнетесь на проблемы связанные с этим. А проверять во всех браузерах, имхо, стоит с самого начала. Включая всякие андроидные и айосные. И тут только вам решать какова ваша целевая аудитория.
1. Глава 47. Динамическая загрузка данных(AJAX). Д. Котеров. Так что AJAX - это всего лишь одна из реализаций технологиии динамической подгрузки данных. Есть уже другие на php и на других языках, но они вроде как сырые. Это я от тебя и хотел услышать.
4. Д. Котеров PHP 5. Глава 47. Страница 1013.
Серверная часть системы (назовём её backend приложения) - это сценарий, который запускается на сервере в ответ на тот или иной запрос пользователя. Мы будем рассматривать только php-сценарии, однако,конечено вы можете использовать любой другой язык программирования (Perl, Ruby или даже C++)
Я когда конпилил фряху познакомился с основами AJAX.
5. Собирать Apache в Solaris, компоновать его потом в архив?????? позвольте!!! Я не мозохист :laugh:
В одной школе я видел демократию, со включёнными всеми сидюками и флешками, так что, ситуация возможна, но крайне сомнительна. В любом случае я смогу, если понадобится, узнать как с этим дела обстоят в 10-ти школах, для верности.

Чистый html - это как и в самой программе на C++, для вылизования кода. Сдавать тесты с айфона, я думаю никому не разрешат, хотя, может если будет возможность, то почему бы и нет? :happy:
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

xwicked писал(а):
21.11.2012 01:48
1. Глава 47. Динамическая загрузка данных(AJAX). Д. Котеров. Так что AJAX - это всего лишь одна из реализаций технологиии динамической подгрузки данных. Есть уже другие на php и на других языках, но они вроде как сырые. Это я от тебя и хотел услышать.

Ну значит я не понял предмета вопроса. В исходном сообщении было четко об ajax. С учетом того, что вам требуется чтоб динамические данные подгружались по команде от клиента. А клиент, как я вас понял, в нашем случае браузер (иначе при чем тут html). И именно некий скрипт на стороне клиента должен отработать и запросить данные с сервера и тут сразу появляется ограничение: какие языки можно использовать в рамках браузеров в расчете на максимально большой круг пользователей? все просто, как минимум по стандарту: JavaScript и VBScript. Чтобы оно работало на стороне клиента нужен интерпретатор, т.е. если и есть технологии с реализацией на php - то их использование это дополнительные сложности.

xwicked писал(а):
21.11.2012 01:48
4. Д. Котеров PHP 5. Глава 47. Страница 1013.
Серверная часть системы (назовём её backend приложения) - это сценарий, который запускается на сервере в ответ на тот или иной запрос пользователя. Мы будем рассматривать только php-сценарии, однако,конечено вы можете использовать любой другой язык программирования (Perl, Ruby или даже C++)
Я когда конпилил фряху познакомился с основами AJAX.

Этот ответ меня вообще загнал в ступор. Мы на разной волне. Тезис 4 был о следующем:
как я понял вы хотите создать веб-сервер в рамках проекта только для технологии динамической подгрузки данных. Я лишь спросил зачем ограничивать готовый функционал одними только ответами на запросы скриптов для динамической подгрузке данных? Пусть они вообще и сами страницы отдают. Т.е. имея голый комп со свежестанолвенной ос. Мы просто в браузере вводим http://kross-server/ и сразу начинаем разгадывать кроссворды.

Я уже начинаю сомневаться, что я правильно понимаю вашу задумку: вы хотите чтоб можно было разгадывать кроссворды в браузере?
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Voral писал(а):
21.11.2012 09:17
... Т.е. имея голый комп со свежестанолвенной ос. Мы просто в браузере вводим http://kross-server/ и сразу начинаем разгадывать кроссворды. ...
Именно так. Веб-сервер будет выполнять всё :rolleyes: . Хорошо, тогда следующий вопрос. Я хочу сделать разделение на обычный клиент-сервер. Может мне сделать веб-сервер с отдачей html-ок и функционирования AJAX и написать клиент по типу браузера, тогда я убиваю 2-ух зайцев одним сервером.То есть и браузер будет работать с моим веб-сервером и мой десктопный клиент тоже с ним же и будет работать?
Спасибо сказали:
Аватара пользователя
Voral
Сообщения: 1205
ОС: Debian Wheezy (amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение Voral »

xwicked писал(а):
21.11.2012 11:47
Я хочу сделать разделение на обычный клиент-сервер. Может мне сделать веб-сервер с отдачей html-ок и функционирования AJAX и написать клиент по типу браузера, тогда я убиваю 2-ух зайцев одним сервером.То есть и браузер будет работать с моим веб-сервером и мой десктопный клиент тоже с ним же и будет работать?


Если вы будете делать вариант для работы с браузером то, имхо, нет ни какого смысла в собственном клиенте. По сути это будет просто урезанный браузер который на Qt делается за 5 минут за чашкой чая. В собственном клиенте мог бы быть в этом случае смысл в одном случае - когда можно получить значительный и, что главное, существенный для юзера трафик. В вашем случае клиент может избавить от необходимости передавать по сети только интерфейс. Если без наворотов и экранов велком. это 1 страница html..... Ну если совсем совсем вы ее накрутите ну килобайт 100...... А данные по сканворду будут передаваться в любом случае - а это основной трафик данной программы.

В прочем исходя из моего понимания вашей тактики - сделайте :).....

Но уж точно тогда разделяйте по пакетам примерно так:
- cross-core - ядро системы, которая обрабатывает сами кроссворды. Которое цепляют и обычная локальная программа и сервер
- cross-local - обычная локальная программа
- cross-server - сервер который общается с клиентами
- cross-server-mod-gui - модуль к серверу который гененрирует гуи. если подключен - можно работать из браузера. В свою очередь круто (это идея абсолютный сырец) предусмотреть воззможность подключения к этому модулю и ваш бинарный вариант реализации вебгуя и например обычные php скрипты - тогда красноглазый юзер сможет рисовать свои интерфейсы и/или встраивать в свои сайты в общем дизайне
- corss-client - бинарный клиент который сам рисует ГУИ а от сервера получает только данные


Таким образом при любом варианте установке надо устанавливать как минимум 2 пакета:
- core + local - обычное приложение
- core + server + mod-gui - ориентируемся на браузеры
- core + client - ориентируемся на своего клиента

ну и естественно любая комбинация этих вариантов. главное core обязателен и един
То что не убивает нас, делает нас сильнее! © Ницше.
When life puts you in tough situations, don’t say "why me". Just say "try me © ?
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Voral писал(а):
21.11.2012 13:39
... Если вы будете делать вариант для работы с браузером то, имхо, нет ни какого смысла в собственном клиенте. По сути это будет просто урезанный браузер ...
Тут опять требуется пояснение. Клиент уже есть. Сейчас это режим тестирования. Он отделяется и к нему прикручивается общение с сервером запросами веб-браузера. А нужен он на компах, где нет сети, чтобы можно было из файла открыть тест и протестироваться. Учитель отдельно потом подойдёт к тому компу и посмотрит на результаты, какие получились.
Voral писал(а):
21.11.2012 13:39
... Но уж точно тогда разделяйте по пакетам примерно так:
...
Я ещё подумаю, как сделать и сколько времени у меня будет. Вообщем, благодарю! Я к этому вопросу теперь вернусь не раньше января месяца.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3667
ОС: Mandriva => Gentoo (~amd64)
Контактная информация:

Re: Программа для создания тестов

Сообщение devilr »

Насчет варнингов: в файле tdepository.cpp более правильно писать

Код: Выделить всё

bool bOk;
bOk = false;
iTableNumber = strTest.toInt(&bOk, 10);

вместо присваивания указателю значения false. К тому же, false это не обязательно 0.
В файле TShelkTest.cpp похожая проблема. С ходу непонятно, что именно вы хотели сказать этим FormListTests.ui->tvListTests->setEditTriggers(false) но, если хотели в функцию передать 0, то можно было передать то, что описано в документации. Например QAbstractItemView::NoEditTriggers. По смыслу это тоже 0, но читается лучше.
P.S. Даже не думал поучать. :)
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

devilr писал(а):
21.11.2012 22:28
... FormListTests.ui->tvListTests->setEditTriggers(false) но, если хотели в функцию передать 0, то можно было передать то, что описано в документации. Например QAbstractItemView::NoEditTriggers. ...
Благодарю! Мне уже приходило письмо в техподдержку, я успешно про него забыл. Просто не на всех платформах компилятор ругается такими словами.
Спасибо сказали:
Аватара пользователя
xwicked
Сообщения: 115
ОС: GNU / Linux Debian 7 amd64
Контактная информация:

Re: Программа для создания тестов

Сообщение xwicked »

Пост на freecode.com мне особо ничего не дал. Просто ещё один каталог программ... Ближе к делу:
По-тихоньку идёт совершенствование программы. И сейчас от основного кода был отделён модуль Тестирование.

Пршу протестировать на наличие ошибок первую бета-версию: 1.6.2.0. Для полноценной проверки может потребоваться прошлая версия 1.5.2. Снепшот

Благодарю за ответы!
Спасибо сказали:
Ответить