Доброго времени суток, товарищи!
Я представляю маленькое сообщество проекта "Час ЕГЭ". Мы хотим, чтобы образовательные программы были свободными, и просим помощи у русскоязычного сообщества Linux.
Готовы помочь в составлении набора заданий по казахстанскому аналогу ЕГЭ и локализации интерфейса (предоставить документацию, допилить необходимые фишки, ответит на вопросы).
Вопросы, мнения, замечания по содержанию заглавного (этого) сообщения и особенно конструктивное обсуждение проекта приветствуются.
Тренажёр в действии (https://www.math.vsu.ru/chas-ege/doc/../sh/sluch.html) |
Исходники на Github (http://"https://github.com/nickkolok/chas-ege) |
Страница описания (https://www.math.vsu.ru/chas-ege/doc/index.html) |
Группа ВКонтакте (https://vk.com/chasege) |
e-mail для связи nickkolok@mail.ru (http://mailto:nickkolok@mail.ru) |
Зачем мы это делаем? Большинство (математик не имеет права кидаться словом "все") существующих тренажёров...
... имеют закрытый исходный код. Это очень печально.
"Час ЕГЭ" разрабатывается под лицензией GNU GPLv3.
... хранят задания в виде текста.
В случае математики (основного предмета, с которого и начиналась разработка) это нелогично.
"Час ЕГЭ" хранит задания в виде шаблонов-подпрограмм на javascript, которые составляют текст.
... работают либо только через интернет, либо только с жёсткого диска и под конкретными ОС.
"Час ЕГЭ" имеет оффлайн-версию (https://www.math.vsu.ru/chas-ege/doc/skachat.html).
Что нужно проекту? Как помочь проекту? (в порядке возрастания сложности)
Попробовать тренажёр в действии (https://www.math.vsu.ru/chas-ege/doc/../sh/sluch.html) и покритиковать. Особенно нам важно услышать о том, что Вас отталкивает - "бесит", выражаясь языком целевой аудитории тренажёра, т. е. школьников. Внести предложения и пожелания.
Рассказать друзьям о тренажёре. Особенно важно, чтобы о "Час ЕГЭ" узнало как можно больше учителей и выпускников.
"Час ЕГЭ" поддерживает т. наз. интеграцию (https://www.math.vsu.ru/chas-ege/doc/integr.html) с другими сайтами через iframe. Если Вы - владелец тематического сайта или блога, Вы можете по вышеприведённой инструкции вставить окошко "Час ЕГЭ" на страницы своего ресурса.
Пример. (http://ege-ok.ru/trenazher-chas-ege/)
Если у Вас нету сайта цензура ему не страшна - мы будем очень признательны, если Вы вышлете владельцам известных Вам образовательных ресурсов информацию о возможности интеграции.
Придумать что-нибудь по поводу дизайна (кстати, при интеграции можно установить произвольные CSS-свойства). Дизайнера в команде нет... Пока нет.
Программировать. Самое сложное и самое нужное.
Нужны, во-первых, шаблоны заданий (пример (https://github.com/nickkolok/chas-ege/blob/master/zdn/mat2014/B1/19.js), ещё пример (https://github.com/nickkolok/chas-ege/blob/master/zdn/mat2014/B13/9.js)), во-вторых, решения к уже существующим (если Вы пришлёте нам шаблон без решения - мы тоже будем рады!). Пример шаблона с решением. (https://github.com/nickkolok/chas-ege/blob/master/zdn/mat2014/B7/2.js)
Если у Вас есть желание создать набор заданий для "Час ЕГЭ", связанный с каким-то другим предметом, украинским или казахстанским аналогом ЕГЭ и т. д., в том числе если Вы планируете получить от этого некоторую выгоду от третьих лиц, что не возбраняется (не запрещено) при соблюдении GPL, делайте это смело и результат по возможности присылайте нам.
Будут вопросы - задавайте, попробуем помочь.
Будет необходимость в дополнительной документации (кроме той, что уже есть (https://www.math.vsu.ru/chas-ege/doc/tech.html)) - тоже пишите.
Помните: мы рады любой помощи!
Высказаться можно прямо здесь, если у Вас есть учётка на форуме, или написав письмо на nickkolok@mail.ru (http://mailto:nickkolok@mail.ru)
Приветствую, NickKolok.
Ваша инициатива безусловно заслуживает уважения, но я не могу пройти мимо, не оставить критики и не задать вопросы.
И уже исходя от ваших ответов на мои вопросы я пойму стоит ли в этом участвовать.
1. Какие технологии были использованы для создания этого проекта?
2. Беглым взглядом я заметил, что у вас статичные веб-страницы. Вы пользуетесь генератором статики или все пишете руками (копипаста)?
3. Вопросы дизайна поднимать не буду.
4. Ваш код ужасен. Во всех смыслах. Ужасно название переменных и функций, ужасно название файлов и путей, да и самого проекта на github (см. рекомендации по написанию js-кода (https://github.com/rwaldron/idiomatic.js/tree/master/translations/ru_RU) и пользуйтесь английскими словами). Ужасна структура css файлов. В вашем коде очень сложно будет разобраться постороннему человеку.
5. Сам по себе подход хардкодить все подряд тоже ужасен. Вы могли бы сделать универсальный код для вывода заданий, а сам текст задач подгружать, например, из обычных текстовых файлов.
Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.
Цитата: sotrud_nik от 10 Февраля 2014, 14:58
Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.
Не мудрил. Раскидал. Не автоматом. Руками (см. даты-время). Не тупо. Не по всем. Отвечу.
Цитата: NickKolok от 10 Февраля 2014, 18:08
Цитата: sotrud_nik от 10 Февраля 2014, 14:58
Гугление показывает тысячи таких постов - автор не мудрил а тупо раскидал автоматом по всем форумам что нашел.
Вряд ли он здесь ответит.
Не мудрил. Раскидал. Не автоматом. Руками (см. даты-время). Не тупо. Не по всем. Отвечу.
Это хорошо
Цитата: hedgeven от 10 Февраля 2014, 11:07
Приветствую, NickKolok.
Ваша инициатива безусловно заслуживает уважения, но я не могу пройти мимо, не оставить критики и не задать вопросы.
И уже исходя от ваших ответов на мои вопросы я пойму стоит ли в этом участвовать.
1. Какие технологии были использованы для создания этого проекта?
2. Беглым взглядом я заметил, что у вас статичные веб-страницы. Вы пользуетесь генератором статики или все пишете руками (копипаста)?
3. Вопросы дизайна поднимать не буду.
4. Ваш код ужасен. Во всех смыслах. Ужасно название переменных и функций, ужасно название файлов и путей, да и самого проекта на github (см. рекомендации по написанию js-кода (https://github.com/rwaldron/idiomatic.js/tree/master/translations/ru_RU) и пользуйтесь английскими словами). Ужасна структура 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 яблок..." не получается: надо следить за делимостью чисел, за тем, чтобы задачи не превращались в глупо-тривиальные и т. д. Есть пока только наработки в области расчётных задач (https://github.com/nickkolok/chas-ege/blob/master/zdn/mat2014/B13/8.js) (в перспективе - удобно будет для составления задач по физике) и для задач на исследование функций (https://github.com/nickkolok/chas-ege/blob/master/zdn/mat2014/B15/8.js). Остальное - увы, только хардкодить.
Кроме того, одна из ключевых особенностей тренажёра - работа в том числе и с локального диска. А localhost и AJAX - они как дельфин и русалка. "Из коробки" из архива, распакованного на машине пользователем, может и не заработать. Поправьте меня, если я неправ.
Спасибо за развёрнутый отзыв. Искренне надеюсь на продолжение обсуждения.
1. html5 не достаточно очевиден, т.к. вы почему-то пропускаете doctype. Современные браузеры пытаются исправить кривой код, и сами могут подставить (телепатия?) тип документа (зря), но нарушение стандартов это всегда плохо и вы рискуете нарваться на непредсказуемые глюки в разных браузерах.
Цитата: http://habrahabr.ru/post/115177/Краткое пояснения для людей, не владеющих техническими тонкостями верстки. Тип документа -- doctype -- объявляет используемый данной страницей диалект языка, то есть допустимый набор тегов и атрибутов. Документы без указанного doctype считаются сверстанными по совсем старым правилам (до html4) и отображаются в режиме совместимости (quirks mode). Чтобы страница выглядела попиксельно одинаково в разных браузерах необходимо (но далеко не достаточно) правильно указывать доктайп и затем его придерживаться.
Если вы не дизайнер, то не придумывайте интерфес из ранних 90-х, возьмите bootstrap. День на освоение и вы уже используете красивые элементы оформления.
2. Генераторов масса: на python (https://wiki.python.org/moin/StaticSiteGenerator), на ruby (https://www.google.kz/search?q=ruby+generator+static), на javascript (http://jster.net/category/static-site-generators). Хотя можно было бы весь проект сделать на node.js, а для оффлайн версии упаковать все зависимости и сделать один запускаемый файл. Копипасты много. Вот вам уже придется после первого пункта "перелопатить" все html-страницы, а представьте, что через год надо будет обновить все задачи, и одно дело посадить обезьянку для написания текста, а другое дело человек со знанием js. И вообще, DRY (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself).
4. Как начальный проект для самообразования - нормально, но будущего у такого кода нет, через полгода вам самому этот код будет в кошмарах снится.
4.1. Любой дошкольник знает слова download free
porn games, так что не придумывайте про высокий порог вхождения. Например, tasks выглядело бы лучше, чем zdn.
4.2. И по-подробнее насчет запрета GPL можно?
4.3. Логика подсказывает, что должен быть один css-файл с общими стилями для всего проекта, и лишь то что отличается - вынесено в соответствующий css-файл. Может я не внимательно просмотрел, но мне показалось что у вас почти в каждом файле указан body и другие базовые стили.
5. Можно разбить задания на однотипные группы, и для каждой сделать свой генератор. Для самих заданий можно и json использовать.
А насчет патчей... советую вам задуматься о создании проекта с нуля, с использованием накопившегося опыта и с расчетом на пользу для сообщества.
Ведь на самом деле, не так важны эти ваши задачки, которые вам могут запретить распространять. Нужна удобная и современная платформа для проведения тестирования, чтобы сами задания подключались легким движением руки. Кстати вы искали аналоги, может уже что-то есть свободное и открытое, но его нужно немного доработать?
Ну и главное и основное: почитайте техническую литературу на эту тему, попрактикуйтесь на codecademy и codeschool, почитайте код крупных открытые проектов. Есть ощущение что вам немного не хватает знания основ.
1.1 Так вот же оно - сокращённое <!DOCTYPE html> (http://htmlbook.ru/html/!doctype) в начале каждого файла...
1.2 Спасибо, Twitter Bootstrap уже рекомендовали. Будем в перспективе переходить.
2.1 Спасибо, будем копать в сторону генераторов.
2.2 Честно говоря, не очень понимаю, как можно такую упаковку сделать кроссплатформенно и в один файл...
2.3 Я, конечно, дурак, но не настолько, чтобы не осилить sed.
4.0 А отдельные куски кода мне уже в кошмарах снятся.
4.1 По-моему, здесь грозит разразиться холивар. Есть ли в этом смысл?
4.2 Раз (http://www.opennet.ru/opennews/art.shtml?num=30627), два (http://omiliya.org/article/makarevich-i-dontsova-prosyat-medvedeva-zapretit-svobodnye-litsenzii-vladislav-mikheev.html).
4.3 Это мы и пытаемся сделать. Но body действительно иногда приходится менять (например, в оболочке случайного задания шрифт умышленно сделан крупнее - для упрощения использования на интерактивных досках). Спасибо за акцент, уделим внимание.
5.1 С нуля переписать какие-то части - может быть. Но всё же я за эволюцию. Например, переписывать готовые шаблоны - смысла почти нет. Ибо на них ничего не опирается...
5.2 Либо нету, либо плохо искал :( Поможете - буду благодарен.
5.3 Важно, во-первых, здесь-и-сейчас вынудить школы переходить с ишака на огнелисичку или хотя бы хром. Год-два - и всё, момент может быть упущен. Важно, во-вторых, предоставить противовес существующим системам подготовки к ЕГЭ, называющим копирование воровством (http://reshuege.ru/about) и активно насаждающим соответствующую идеологию пользователям (ссылку дать не могу, ибо официальная группа проекта зачем-то сделана закрытой).
5.4 Система, к которой тесты подключаются "лёгким движением руки" - это, конечно, хорошая цель. Только вот надо следить за тем, чтобы всё подключаемое переходило под GPL... В принципе, работа с околоJSON сейчас возможна.
6. Именно так, основ мне не хватает, ибо я студент-первокурсник. Именно поэтому и запостил "автоматом" (на самом деле нет) по опенсорсным форумам - чтобы получить конструктивную критику. Многое из того, о чём мне написали, уже реализовано, многое предстоит. Большое спасибо.
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 У тех, кто называет копирование воровством, явно проблемы с интеллектом.
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?
Хмм, вот не понимаю зачем к body применять стиль. Что вам мешает один раз изучить тему и не совершать глупости?
Посмотрите эти (http://courseware.codeschool.com.s3.amazonaws.com/frontend/codeschool-frontendformations-2.pdf) слайды, хотя лучше просто пройти соответствующие курсы на 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.
Спасибо. Устыдился.
Адекватная реакция на критику - это хорошо. Надеюсь критика пойдет на пользу и желаю вашему проекту упеха.