"Час ЕГЭ" - OpenSource HTML5-тренажёр. Требуются добровольцы!

Автор NickKolok, 07 Февраля 2014, 20:12

« предыдущая тема - следующая тема »

0 Пользователей и 1 Гость просматривают эту тему.

NickKolok

Доброго времени суток, товарищи!

Я представляю маленькое сообщество проекта "Час ЕГЭ". Мы хотим, чтобы образовательные программы были свободными, и просим помощи у русскоязычного сообщества Linux.

Готовы помочь в составлении набора заданий по казахстанскому аналогу ЕГЭ и локализации интерфейса (предоставить документацию, допилить необходимые фишки, ответит на вопросы).

Вопросы, мнения, замечания по содержанию заглавного (этого) сообщения и особенно конструктивное обсуждение проекта приветствуются.


   
     
     
     
     
     
   
 

Тренажёр в действии
     

Исходники на Github
     

Страница описания
     

Группа ВКонтакте
     

e-mail для связи nickkolok@mail.ru
     

  Зачем мы это делаем?
  Большинство (математик не имеет права кидаться словом "все") существующих тренажёров...
 

  •       ... имеют закрытый исходный код. Это очень печально.
          "Час ЕГЭ" разрабатывается под лицензией GNU GPLv3.
       

  •       ... хранят задания в виде текста.
          В случае математики (основного предмета, с которого и начиналась разработка) это нелогично.
          "Час ЕГЭ" хранит задания в виде шаблонов-подпрограмм на javascript, которые составляют текст.
       

  •       ... работают либо только через интернет, либо только с жёсткого диска и под конкретными ОС.
          "Час ЕГЭ" имеет оффлайн-версию.
       

  Что нужно проекту? Как помочь проекту?
  (в порядке возрастания сложности)
 

       

  •       Попробовать тренажёр в действии и покритиковать. Особенно нам важно услышать о том, что Вас отталкивает - "бесит", выражаясь языком целевой аудитории тренажёра, т. е. школьников. Внести предложения и пожелания.
       

  •    

  •       Рассказать друзьям о тренажёре. Особенно важно, чтобы о "Час ЕГЭ" узнало как можно больше учителей и выпускников.
       

  •    

  •       "Час ЕГЭ" поддерживает т. наз. интеграцию с другими сайтами через iframe. Если Вы - владелец тематического сайта или блога, Вы можете по вышеприведённой инструкции вставить окошко "Час ЕГЭ" на страницы своего ресурса.
          Пример.
          Если у Вас нету сайта цензура ему не страшна - мы будем очень признательны, если Вы вышлете владельцам известных Вам образовательных ресурсов информацию о возможности интеграции.
       

  •    

  •       Придумать что-нибудь по поводу дизайна (кстати, при интеграции можно установить произвольные CSS-свойства).  Дизайнера в команде нет... Пока нет.
       

  •    

  •       Программировать. Самое сложное и самое нужное.
          Нужны, во-первых, шаблоны заданий (пример, ещё пример), во-вторых, решения к уже существующим (если Вы пришлёте нам шаблон без решения - мы тоже будем рады!). Пример шаблона с решением.
          Если у Вас есть желание создать набор заданий для "Час ЕГЭ", связанный с каким-то другим предметом, украинским или казахстанским аналогом ЕГЭ и т. д., в том числе если Вы планируете получить от этого некоторую выгоду от третьих лиц, что не возбраняется (не запрещено) при соблюдении GPL, делайте это смело и результат по возможности присылайте нам.
          Будут вопросы - задавайте, попробуем помочь.
          Будет необходимость в дополнительной документации (кроме той, что уже есть) - тоже пишите.
       

  Помните: мы рады любой помощи!
 
  Высказаться можно прямо здесь, если у Вас есть учётка на форуме, или написав письмо на nickkolok@mail.ru

hedgeven

10 Февраля 2014, 11:07 #1 Последнее редактирование: 10 Февраля 2014, 11:18 от hedgeven
Приветствую, NickKolok.
Ваша инициатива безусловно заслуживает уважения, но я не могу пройти мимо, не оставить критики и не задать вопросы.
И уже исходя от ваших ответов на мои вопросы я пойму стоит ли в этом участвовать.

1. Какие технологии были использованы для создания этого проекта?
2. Беглым взглядом я заметил, что у вас статичные веб-страницы. Вы пользуетесь генератором статики или все пишете руками (копипаста)?
3. Вопросы дизайна поднимать не буду.
4. Ваш код ужасен. Во всех смыслах. Ужасно название переменных и функций, ужасно название файлов и путей, да и самого проекта на github (см. рекомендации по написанию js-кода и пользуйтесь английскими словами). Ужасна структура css файлов. В вашем коде очень сложно будет разобраться постороннему человеку.
5. Сам по себе подход хардкодить все подряд тоже ужасен. Вы могли бы сделать универсальный код для вывода заданий, а сам текст задач подгружать, например, из обычных текстовых файлов.
Jah will give us everything...

sotrud_nik

Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.

NickKolok

Цитата: sotrud_nik от 10 Февраля 2014, 14:58
Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.

Не мудрил. Раскидал. Не автоматом. Руками (см. даты-время). Не тупо. Не по всем. Отвечу.

sotrud_nik

Цитата: NickKolok от 10 Февраля 2014, 18:08
Цитата: sotrud_nik от 10 Февраля 2014, 14:58
Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.

Не мудрил. Раскидал. Не автоматом. Руками (см. даты-время). Не тупо. Не по всем. Отвечу.


Это хорошо

NickKolok

Цитата: hedgeven от 10 Февраля 2014, 11:07
Приветствую, NickKolok.
Ваша инициатива безусловно заслуживает уважения, но я не могу пройти мимо, не оставить критики и не задать вопросы.
И уже исходя от ваших ответов на мои вопросы я пойму стоит ли в этом участвовать.

1. Какие технологии были использованы для создания этого проекта?
2. Беглым взглядом я заметил, что у вас статичные веб-страницы. Вы пользуетесь генератором статики или все пишете руками (копипаста)?
3. Вопросы дизайна поднимать не буду.
4. Ваш код ужасен. Во всех смыслах. Ужасно название переменных и функций, ужасно название файлов и путей, да и самого проекта на github (см. рекомендации по написанию js-кода и пользуйтесь английскими словами). Ужасна структура css файлов. В вашем коде очень сложно будет разобраться постороннему человеку.
5. Сам по себе подход хардкодить все подряд тоже ужасен. Вы могли бы сделать универсальный код для вывода заданий, а сам текст задач подгружать, например, из обычных текстовых файлов.


Спасибо за отзыв и за критику. Это мой первый серьёзный проект, но прошу считать дальнейшее не оправданием, но объяснением. Прошу прощения за не вполне оперативный ответ.

1. Основной язык - Javascript. HTML5 и CSS3 - очевидно. Для интерфейса используется JQuery. Flash не используется (ибо проприетарщина). Из сторонних библиотек - MathJax (отрисовка формул из TeX-нотации), jqPlot (графики и диаграммы) и ещё несколько. Минификация js - Google Closure Compiler. Есть несколько скриптов на bash.

2. Да, статика. Нет, особого генератора нет (хотя подумываю о написании sed-велосипеда. Если подскажете готовое решение - буду благодарен). Значительную часть элементов интерфейса генерирует js. Копипаста тоже есть - там, где js+css не справляются.

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

4.1. Транслитными названиями пользуемся в основном из-за того, что идёт (хотя и небыстрыми темпами) привлечение к написанию шаблонов добровольцев-школьников. Да, качество кода при это страдает, но шаблон - единица конечная, и на ней не основывается другой код. А время дорого, очень дорого, запрет GPL может грянуть в любой момент, ситуация на браузерном фронте располагает к попыткам выбить IE из сферы образования... как догадался внимательный читатель, у меня юношеский максимализм ;-)

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

4.2. Какова должна быть неужасная структура CSS-файлов - к стыду своему, в душе не ведаю. Готов прислушаться, готов принять патчи.

5. К сожалению, универсализации поддаётся с большим трудом. Писать "У Маши было %s1 яблок..." не получается: надо следить за делимостью чисел, за тем, чтобы задачи не превращались в глупо-тривиальные и т. д. Есть пока только наработки в области расчётных задач (в перспективе - удобно будет для составления задач по физике) и для задач на исследование функций. Остальное - увы, только хардкодить.
Кроме того, одна из ключевых особенностей тренажёра - работа в том числе и с локального диска. А localhost и AJAX - они как дельфин и русалка. "Из коробки" из архива, распакованного на машине пользователем, может и не заработать. Поправьте меня, если я неправ.

Спасибо за развёрнутый отзыв. Искренне надеюсь на продолжение обсуждения.

hedgeven

11 Февраля 2014, 09:53 #6 Последнее редактирование: 11 Февраля 2014, 09:58 от hedgeven
1. html5 не достаточно очевиден, т.к. вы почему-то пропускаете doctype. Современные браузеры пытаются исправить кривой код, и сами могут подставить (телепатия?) тип документа (зря), но нарушение стандартов это всегда плохо и вы рискуете нарваться на непредсказуемые глюки в разных браузерах.

Цитата: http://habrahabr.ru/post/115177/Краткое пояснения для людей, не владеющих техническими тонкостями верстки. Тип документа -- doctype -- объявляет используемый данной страницей диалект языка, то есть допустимый набор тегов и атрибутов. Документы без указанного doctype считаются сверстанными по совсем старым правилам (до html4) и отображаются в режиме совместимости (quirks mode). Чтобы страница выглядела попиксельно одинаково в разных браузерах необходимо (но далеко не достаточно) правильно указывать доктайп и затем его придерживаться.


Если вы не дизайнер, то не придумывайте интерфес из ранних 90-х, возьмите bootstrap. День на освоение и вы уже используете красивые элементы оформления.

2. Генераторов масса: на python, на ruby, на javascript. Хотя можно было бы весь проект сделать на node.js, а для оффлайн версии упаковать все зависимости и сделать один запускаемый файл.  Копипасты много. Вот вам уже придется после первого пункта "перелопатить" все html-страницы, а представьте, что через год надо будет обновить все задачи, и одно дело посадить обезьянку для написания текста, а другое дело человек со знанием js. И вообще, DRY.

4. Как начальный проект для самообразования - нормально, но будущего у такого кода нет, через полгода вам самому этот код будет в кошмарах снится.
4.1. Любой дошкольник знает слова download free porn games, так что не придумывайте про высокий порог вхождения. Например, tasks выглядело бы лучше, чем zdn.
4.2. И по-подробнее насчет запрета GPL можно?
4.3. Логика подсказывает, что должен быть один css-файл с общими стилями для всего проекта, и лишь то что отличается - вынесено в соответствующий css-файл. Может я не внимательно просмотрел, но мне показалось что у вас почти в каждом файле указан body и другие базовые стили.
5. Можно разбить задания на однотипные группы, и для каждой сделать свой генератор. Для самих заданий можно и json использовать.

А насчет патчей... советую вам задуматься о создании проекта с нуля, с использованием накопившегося опыта и с расчетом на пользу для сообщества.
Ведь на самом деле, не так важны эти ваши задачки, которые вам могут запретить распространять. Нужна удобная и современная платформа для проведения тестирования, чтобы сами задания подключались легким движением руки. Кстати вы искали аналоги, может уже что-то есть свободное и открытое, но его нужно немного доработать?

Ну и главное и основное: почитайте техническую литературу на эту тему, попрактикуйтесь на codecademy и codeschool, почитайте код крупных открытые проектов. Есть ощущение что вам немного не хватает знания основ.
Jah will give us everything...

NickKolok

1.1 Так вот же оно - сокращённое <!DOCTYPE html> в начале каждого файла...

1.2 Спасибо, Twitter Bootstrap уже рекомендовали. Будем в перспективе переходить.

2.1 Спасибо, будем копать в сторону генераторов.
2.2 Честно говоря, не очень понимаю, как можно такую упаковку сделать кроссплатформенно и в один файл...
2.3 Я, конечно, дурак, но не настолько, чтобы не осилить sed.

4.0 А отдельные куски кода мне уже в кошмарах снятся.
4.1 По-моему, здесь грозит разразиться холивар. Есть ли в этом смысл?
4.2 Раз, два.
4.3 Это мы и пытаемся сделать. Но body действительно иногда приходится менять (например, в оболочке случайного задания шрифт умышленно сделан крупнее - для упрощения использования на интерактивных досках). Спасибо за акцент, уделим внимание.

5.1 С нуля  переписать какие-то части - может быть. Но всё же я за эволюцию. Например, переписывать готовые шаблоны - смысла почти нет. Ибо на них ничего не опирается...
5.2 Либо нету, либо плохо искал :( Поможете - буду благодарен.
5.3 Важно, во-первых, здесь-и-сейчас вынудить школы переходить с ишака на огнелисичку или хотя бы хром. Год-два - и всё, момент может быть упущен. Важно, во-вторых, предоставить противовес существующим системам подготовки к ЕГЭ, называющим копирование воровством и активно насаждающим соответствующую идеологию пользователям (ссылку дать не могу, ибо официальная группа проекта зачем-то сделана закрытой).
5.4 Система, к которой тесты подключаются "лёгким движением руки" - это, конечно, хорошая цель. Только вот надо следить за тем, чтобы всё подключаемое переходило под GPL... В принципе, работа с околоJSON сейчас возможна.

6. Именно так, основ мне не хватает, ибо я студент-первокурсник. Именно поэтому и запостил "автоматом" (на самом деле нет) по опенсорсным форумам - чтобы получить конструктивную критику. Многое из того, о чём мне написали, уже реализовано, многое предстоит. Большое спасибо.

hedgeven

11 Февраля 2014, 14:05 #8 Последнее редактирование: 11 Февраля 2014, 14:28 от hedgeven
1. Я мельком глянул, да почти везде есть, но все же
~/Downloads/chas-ege-master $ find . -type f -name '*.html' -exec grep -Li 'DOCTYPE' {} \;
./index.html
./ext/jqplot/docs/index.html
./dev/index2.html
./dev/tmp_integr.html
./dev/index.html
./dev/ege.html
./dev/pechmat (копия).html
./dev/tmp_integr2.html
./dev/iedetect.html
./lib/speccounter.html


2.3 Возможно, вы даже можете ОС с нуля написать, но зачем, когда есть большой выбор существующих?
4.3 Не нужно на каждый чих менять body. Это глупо, не практично и вообще "bad practice". Почему бы не создать специальный класс и не добавлять его к нужному элементу. Например:
.big-text{
font-size: 30px;
}


5.3 У тех, кто называет копирование воровством, явно проблемы с интеллектом.
Jah will give us everything...

NickKolok

1.
./index.html - это просто javascript-перенаправление на ./doc/index.html Доктайп будет добавлен (не знаю, зачем, но хотя бы чтобы вопросов не вызывало).
./ext/jqplot/docs/index.html - это доки внешней библиотеки jqplot.
./dev/index2.html - всё, что в ./dev - черновики для разработчиков и скрипты сборки. Этот конкретный - резервная копия чего-то ещё с догитовских времён. В топку этот файл.
./dev/tmp_integr.html - черновик для экспериментов с интеграцией. Доктайп добавлен.
./dev/index.html - выжжен за ненадобностью.
./dev/ege.html - выпилен.
./dev/pechmat (копия).html - выпилен.
./dev/tmp_integr2.html - черновик. Нужный. Доктайп добавлен.
./dev/iedetect.html - выжжен.
./lib/speccounter.html - страница, просто подгружающая отдельный счётчик (считаем не только просмотры, но и нажатия кнопки "Ответить", чтобы иметь хоть какую-то статистику по полезности). Доктайп добавлен.

2.3 Согласен, генератором статики озаботиться нужно.

4.3 Спасибо, принято к рассмотрению. Вы предлагаете в HTML писать <body class="bigtext">, а потом в css
Цитата: hedgeven от 11 Февраля 2014, 14:05
.big-text{
font-size: 30px;
}

, так? Подскажите, пожалуйста, а чем это лучше, чем непосредственно менять body?

hedgeven

11 Февраля 2014, 15:23 #10 Последнее редактирование: 11 Февраля 2014, 15:37 от hedgeven
Хмм, вот не понимаю зачем к body применять стиль. Что вам мешает один раз изучить тему и не совершать глупости?
Посмотрите эти слайды, хотя лучше просто пройти соответствующие курсы на codeschool и codecademy.
Я бы использовал тег main.
Цитата: http://www.w3.org/TR/2012/WD-html-main-element-20121217
The main element represents the main content section of the body of a document or application.
The main content section consists of content that is directly related to or expands upon the central topic of a document or central functionality of an application.
Jah will give us everything...

NickKolok


hedgeven

Адекватная реакция на критику - это хорошо. Надеюсь критика пойдет на пользу и желаю вашему проекту упеха.
Jah will give us everything...