Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Каким может быть расписание ВУЗа

Anna | 31.05.2014 | нет комментариев

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

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

Идея заключалась в том, Дабы упростить доступ к расписанию. Подлинное расписание, доступное на сайте НГУ, дозволено посмотреть тут. Для того, Дабы обнаружить собственное расписание мне доводилось начинать свой путь с основной страницы сайта, переходить на “старый сайт”, после этого “информационные системы”, дальше “расписание занятий”, предпочесть корпус, факультет, группу, итого — 6 кликов. Огромная часть этих переходов казалась абсолютно осмысленной, помимо выбора корпуса: казалось бы, для чего выбирать корпус, если факультеты всё равно различные, да и всеобщее их число не так огромно, Дабы разбивать на две страницы (каждого около 10)? Но обстановка становилась немножко трудней, если необходимо было обнаружить расписание преподавателя либо друга. Для преподавателя необходимо было в худшем случае проверить оба корпуса, а для друга необходимо было обнаружить вначале его в списках групп, узнать номер группы, а потом теснее всё остальное. Шаги абсолютно выполнимые, но не неизменно захочется их делать, а чай ничего не мешает собрать эту информацию и сделать вероятность осуществлять такие выборки легко набрав в строке имя человека, расписание которого требуется узнать — как в поисковых системах, к которым все теснее привыкли.

Разбор списков

Начнём со списка студентов: к счастью, он доступен в виде xml, и для всякой группы выглядит дальнейшим образом:

<group name="0502, геолого-геофизический факультет, геология (бакалавриат)">
<student name="Шабалин Сергей Игоревич" status=""/>
<student name="Шелепов Ярослав Юрьевич" status=""/>
<student name="Шепель Яна Евгеньевна" status=""/>
...
</group>

Для того, Дабы экспортировать такие данные, применяется дальнейший код:

public function exportGroup($groupFile, $groupName, $department, $course) {
	$grouplist=file_get_contents($groupFile);
	$dom2 = new domDocument;
	$dom2->loadXML($grouplist);
	$s2 = simplexml_import_dom($dom2);
	for ($k=0;$k<count($s2->student);$k  ) {
		$attrs=$s2->student[$k]->attributes();
		$student=new Student();
		$student->name=$attrs["name"];
		$student->group=$groupName;
		$student->department=$department;
		$student->course=$course;
		$student->save();
	}
}

Помимо этого необходимо предпочесть списки групп по факультетам, но это выполняется аналогичным образом из сходственных же xml-файлов.

Исправление до валидного

Само расписание занятий не доступно в xml, помимо того, html, сгенерированный системой расписаний НГУ, оказался невалидным, что поставило меня перед выбором: преобразовывать его к валидному либо разбирать регулярными выражениями. Нужно сказать, что как-то уж дюже не хотелось прибегать к regexp-ам. Разглядывая html файлы я осознал, что не так уж много необходимо сделать, Дабы документы стали валидными, а именно, добавить один тег <tr> (отсутствовал) и указать кодировку. Получилось следующее:

$text=file_get_contents($url);
$text = iconv ( "CP1251" , "UTF-8" , $text );

$doc = new DOMDocument();
$doc->loadHTML(str_replace("</HEAD>", '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</HEAD>', str_replace("<TH Width=10%>", "<TR><TH Width=10%>", $text)));
$s = simplexml_import_dom($doc);

позже этих манипуляций расписание восхитительным образом разбиралось. Нужно подметить, что дозволено было не перекодировать в utf, но так как все остальные данные плана находились в utf, а кодировка в этих файлах не была указаречающееся в расписании) и номера групп, которые в данный момент находятся в этой аудитории. Может быть дюже благотворно если вы ищете пустую аудиторию либо утратили какую-то вещь и хотели бы опросить всех, кто мог её видеть.
Из расписания были выбраны аудитории, разобраны постфиксы, обозначающие корпус, а дальше выведены на странице так, что получился список дальнейшего вида:

для всякой аудитории/корпуса отображается график загруженности на всякий введённый день

Это график для основного корпуса НГУ на пятницу; сервис разрешает глядеть такие для всякий аудитории либо корпуса на всякий учебный день (на не учебные график пустой). Тут по Y — число человек, время — предисловие пар. Алый столбик — студентки, синий — студенты, серый — сумма. Кидается в глаза дробная шкала по Y, дело в том, что у меня не получилось настроить библиотеку рисования графиков для итога только целых чисел, но мне кажется это не крепко принципиальным. Да, дробного числа людей не бывает, но столбики и не упираются в нецелые числа.

Перед тем как написать статью я решил посмотреть как же всё устроено в МГУ и нашёл расписание, даже карту пустых аудиторий, но оказалось, что для приобретения информации необходимо запастись терпением; и дело даже не в числе кликов, которых тоже предостаточно, а в дюже неторопливом отклике. Из появляющихся периодично ошибок SQL дозволено сделать итоги об применении СУБД, но, видимо как-то не слишком оптимально всё устроено.

Статистика

Имеющиеся данные дозволили также получить некоторые больше всеобщии цифры.

Средняя загрузка аудиторий с учётом максимальной вместимости — 28% (сумма занимающихся студентов поделенная на суммарную вместимость аудиторий, усреднённая по дням и времени)

Средняя загрузка аудитории в НГУ, если считать её загруженной всецело, когда правда бы один студент занимается — 60%

Самые женские аудитории — 500, 431 и 608 — около 89% девушек

Самая мужская аудитория — 312, каждого 10% девушек

Особенно женское время — 14:15, 53% девушек

Особенно мужское время — 19:20, 46.8% девушек

Особенно женский день — вторник, 52.3% девушек

Особенно мужской день — понедельник 49.2% девушек

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

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

Ссылки:

подлинное расписание
www.nsu.ru/education/schedule/
разобранный прототип
nsu-schedule.ru/
карта аудиторий on-line
nsu-schedule.ru/now/
упоминаемое расписание МГУ
cacs.law.msu.ru/

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB