grsu / web-dev

Modern web applications development / Современные технологии разработки веб-приложений
13 stars 8 forks source link

Проект: Расписание ГрГУ. Андрей Стельмашенко, Катарина Чирич #85

Closed Katarinich closed 7 years ago

Katarinich commented 8 years ago

https://github.com/Stelmashenko-A/Timetable

irnc commented 8 years ago

Спасибо за публикацию. Вот ресурсы которые мы успели обсудить:

irnc commented 8 years ago

Расширенная версия материалов для самостоятельного изучения доступна на https://github.com/grsu/web-dev-materials/blob/master/textbook/README.md

Любые вопросы и замечания приветствуются. Дайте знать если нужно дать ещё больше материалов вперёд.

Katarinich commented 8 years ago

Был переписан сервер на express и добавлен package.json. Просмотрены материалы, почти все опробованы (некоторые неудачно). Ожидаются дальнейшие указания.

Stelmashenko-A commented 8 years ago

Написаны простейшие тесты на Supertest-e.

irnc commented 8 years ago

@Katarinich @Stelmashenko-A Давайте подключим JSCS и ESLint, так как в коде пока нет общего стиля, где-то табы, где-то пробелы для отступов испльзованы.

Кроме этого тесты следует расширить на тестирования не только кода 200, но и на тестирование тела ответа. Для этого подойдёт любая assertion library, например http://chaijs.com/guide/styles/#expect

Остальные комментарии оставлю по коду.

irnc commented 8 years ago

Посмотрите на https://mochajs.org/ и http://chaijs.com/guide/styles/#expect для организации ваших тестов.

irnc commented 8 years ago

Отличная работа!

Подытожим. Перед переходом к клиентской части, было бы здорово добавить jscs + eslint для автоматического анализа кода (и контроля его качества) и тесты на mocha + chai (expect).

Как только npm test покажет отчёт по исполнению тестов и анализу кода - смело приступайте к клиентсой части: посмотрите XMLHttpRequest и fetch API.

Stelmashenko-A commented 8 years ago

Возникли некоторые вопросы по поводу jscs + eslint. Происходят какие-то достаточно странные вещи: в разных файлах подчёркиваются разные кавычки (где двойные, где одинарные), судя по всему eslint сканирует только на одну директорию глубже, так как в папке GrsuLoader подсветка отсутсвует. Это нормальное поведение? (VS Code). При запуске npm test выдаётся отчёт mocha, тестов на ней пока нету.

irnc commented 8 years ago

@Stelmashenko-A давайте с этим поведением на следуещей лабе, подозреваю что что-то недонастроено, или настроены противоречивые правила jscs и eslint; попробуйте сперва подключить только одну из библиотек.

И пусть вас это пока не смущает - двигайтесь дальше, потом по ходу настроите.

Stelmashenko-A commented 8 years ago

Попытался сдвинуться дальше, получил достаточно странную ошибку http://stackoverflow.com/questions/35969322/file-gssapi-js-package-json-not-found/35969485?noredirect=1#comment59593304_35969485 При этом с консоли всё запускается замечательно через node src/app.js, но каждый раз надо менять порт.

irnc commented 8 years ago

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

Если хотите короткий путь: rm -rf node_modules && npm i может и поможет.

Кстати, а зачем вам в зависимостях и mongoose и mongodb обновременно?

Katarinich commented 8 years ago

@irnc Возник вопрос. Вы говорили, что нужно просмотреть XMLHttpRequest и fetch API. Можно тут поподробнее? Точнее, как их использовать в контексте nodejs приложений. Ничего толкового найдено не было.

Stelmashenko-A commented 8 years ago

Клиент должен быть полностью независимы от nodejs - сервера или же вышеупомянутый сервер также должен раздавать файлы клиента?

Stelmashenko-A commented 8 years ago

Существуют ли способы оптимизации кода наподобие этого https://github.com/Stelmashenko-A/Timetable/blob/dev/src/timetable_miner.js#L41-L50 ?

irnc commented 8 years ago

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

Stelmashenko-A commented 8 years ago

Что-то наподобие такого должно выйти? https://github.com/Stelmashenko-A/Timetable/blob/dev/src/timetable_miner.js#L34-L71

irnc commented 8 years ago

Обратных вызовов меньше, но функций всё ещё много. Там где три итерации, это у вас произведение множеств. Чтоб не повторяться - можно вынести в отдельную функцию, например как в https://github.com/izaakschroeder/cartesian-product

Ну и посмотрите на lodash - много утилитарных функций, которые упростят вам работу с данными.

Stelmashenko-A commented 8 years ago

Если Вы имели ввиду вынос в отдельный модуль, то как-то так https://github.com/Stelmashenko-A/Timetable/blob/dev/src/lib/request-params.js , или делать уневерсально копируя/подключая cartesian-product?

irnc commented 8 years ago

request-params.js уже хорошое решение, в дальнейшем вы сможете сделать рефакторинг и если захотите, подключить cartesian-product

irnc commented 8 years ago

Насколько критично для индивидуального графика один раз не прийти в двухнедельное окно? Близится здача курсовой (28-ого), поэтому совсем нет времени, плюс упало api.grsu.by (503), зато знаю, что теперь ошибки успешно обрабатываются.

@Stelmashenko-A Совсем не критично, готовьтесь к курсовой. Хорошо что ошибки обрабатываются :)

Stelmashenko-A commented 8 years ago

Завтра (04.05.2016) будет две пары или это деканат доставил вторую в своих целях? Так жеозникла непридвиденная проблема, сервер api.grsu.by работает крайне нестабильно и последнее время лежит больше чем работает, изначально предпологал, что он больше 200 запросов не выдерживает (упал после такого), но скорее всего это было случайным совпадением, так как падает он и без запуска моего приложения. На данный момент ошибка такая. ERROR: SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Это всё замедляет разработку и видимо проект не будет доделан. Насколько завершённая весия нужна на зачёт?

irnc commented 8 years ago

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

irnc commented 8 years ago

Завтра (04.05.2016) будет две пары или это деканат доставил вторую в своих целях?

Приходите к 17:00.