Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
node_modules/
package-lock.json
npm-debug.log
.env
.DS_Store
Thumbs.db
67 changes: 23 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,57 +1,36 @@
# Безопасность веб-приложений. Лабораторка №2
# Безопасность веб-приложений. Лабораторка №2. Расписание

## Схема сдачи
Удалось разработать завершенное целое веб-приложение, с клиентской и серверной частями.

1. Получить задание
2. Сделать форк данного репозитория
3. Выполнить задание согласно полученному варианту
4. Сделать PR (pull request) в данный репозиторий
6. Исправить замечания после code review
7. Получить approve
8. Прийти на занятие и защитить работу
Серверная часть была реализована с помощью Node.js и Express, что позволило:

Что нужно проявить в работе:
- умение разработать завершенное целое веб-приложение, с клиентской и серверной частями (допустимы открытые АПИ)
- навыки верстки на html в объеме 200-300 тегов
- навыки применения css для лейаута и стилизации, желательно с адаптацией к мобилке
- использование jQuery или аналогичных JS-фреймворков
- динамическая подгрузка контента
- динамическое изменение DOM и CSSOM
- Парсить реальные данные с официального сайта
- Предоставлять данные клиенту в формате JSON по API
- Поддерживать запросы расписания как для групп, так и для преподавателей

Если у вас своя идея по заданию, то расскажите, обсудим и подкорректирую.
Клиентская часть сделана с использованием HTML, CSS, jQuery. С помощью нее возможно:

## Вариант 1. Расписания
- Осуществлять поиск по номеру группы (6411, 6412, 6413) или фамилии преподавателя
- Переключать учебные недели с 32 по 36
- Использовать приложение в мобильной версии (адаптивность)
- Динамически подгружать данные без перезагрузки страницы

Сделать аналог раздела https://ssau.ru/rasp?groupId=531030143
Также соблюдено условие верстки в объеме 200-300 тегов. Визуальная составляющая была повторена с официального сайта, но с некоторыми огрешностями.

Какие нужны возможности:
- справочники групп, табличные данные по расписаниям добывать с настоящего сайта на серверной стороне приложения
- в клиентскую часть подгружать эти сведения динамически по JSON-API
- обеспечить возможность смотреть расписания в разрезе группы или препода
- обеспечить возможность выбора учебной недели (по умолчанию выбирается автоматически)
### Структура проекта

## Вариант 2. Аналог Прибывалки для электричек
`schedule.html` - разметка страницы
`schedule.css` - стили
`script.js` - клиентская логика
`server.js` - сервер
`result.png` - готовое расписание
`package.json` - зависимости

Сделать веб-версию Прибывалки, только для электричек
### Инструкция по запуску

Какие нужны возможности:
- находить желаемую ЖД-станцию поиском по названию и по карте
- отображать расписания всех проходящих поездов через выбранную станцию
- отображать расписания для поездов между двумя станциями
- работа через АПИ Яндекс.Расписаний https://yandex.ru/dev/rasp/doc/ru/ (доступ получите сами)
- хорошая работа в условиях экрана смартфона
- бонус: функция "любимых остановок"

## Вариант 3. Прогноз погоды

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

Какие нужны возможности:
- увидеть на карте точки с населенными пунктами. Координаты населенных пунктов взять из https://tochno.st/datasets/allsettlements - но все 150 тысяч не нужно, выберите 1 тысячу с самым большим населением.
- при нажатии на точку получить всплывающее окошко с графиками изменения температуры, осадков, силы ветра. API для прогнозов возьмите с https://projecteol.ru/ru/ с соблюдением правил.
- графики рисовать каким-нибудь приличным компонентом, например, https://www.chartjs.org/
- находить населенный пункт по названию
- можете реализовать с собственным серверным компонентом или придумать, как обойтись без него
- Установить Node.js
- Запустить сервер `node server.js`
- Открыть `schedule.html`.



Expand Down
19 changes: 19 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "server",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs",
"dependencies": {
"axios": "^1.14.0",
"cheerio": "^1.2.0",
"cors": "^2.8.6",
"express": "^5.2.1"
}
}
Binary file added result.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading