grsu / web-dev

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

Проект: интеллектуальные игры. Заневский, Хилюта. #92

Closed vviital closed 7 years ago

vviital commented 8 years ago

https://github.com/grsu-nodejs-project/project

vviital commented 8 years ago

What tools we can use to convert: 1) xml to objects 2) some html chunk to object (list of divs with some child elements which have classes, each class will be represent single property of object).

irnc commented 8 years ago

For XML please see https://github.com/assistunion/xml-stream and links at https://github.com/node-xmpp/node-expat#benchmark.

For HTML you could use https://github.com/cheeriojs/cheerio

irnc commented 8 years ago

For further references please see XML parsing in Node.js slides.

vviital commented 8 years ago

Can you suggest good reading about mongoDB and mongoose and data modelling. Documentations are quite large. I think good number of pages is about 40-50 in any languages - either english either russian.

vviital commented 8 years ago

How in more convenient way I should write async method in nodejs. Because when I use my own "events", I must inherits from EventEmitter and catch event by .on('event', callback) and it's rather boring to code?

irnc commented 8 years ago

Can you suggest good reading about mongoDB and mongoose and data modelling.

I would suggest to start learning data modeling for MongoDB from https://docs.mongodb.org/manual/core/data-modeling-introduction/

irnc commented 8 years ago

How in more convenient way I should write async method in nodejs. Because when I use my own "events", I must inherits from EventEmitter and catch event by .on('event', callback) and it's rather boring to code?

EventEmitter and related functions, e.g. listeners attach using on method is synchronous. Please see draft of a Event loop and EventEmitter in Node.js slides and linked resources for details.

For managing complexity arising from asynchronous code please see for Promise interface, bluebird and async libraries.

vviital commented 8 years ago

Can you suggest useful materials about client side programming without mvc framework, but with handlebars and etc, because it's a large amount of informations exists and I don't known with what start.

vviital commented 8 years ago

http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony you asked to recall about the article

vviital commented 8 years ago

Can you add new information to this link "second milestone": https://github.com/grsu/web-dev-materials/tree/master/textbook#%D0%92%D1%82%D0%BE%D1%80%D0%B0%D1%8F-%D0%B2%D0%B5%D1%85%D0%B0-%D1%81%D0%BA%D0%BE%D1%80%D0%BE

vviital commented 8 years ago

Can you suggest libs for authorization and user registration, and some usefull link for how it correctly use

irnc commented 8 years ago

Please checkout http://passportjs.org and read documentation and guides available on that website.

vviital commented 8 years ago

Тут такой вопрос, есть модель Game, она в себе содержит массив вопросов и они все получаются одном запросом.

export default DS.Model.extend({
  name: DS.attr('string'),
  questionTime: DS.attr('number'),
  questions: DS.attr()
});

я хотел бы сделать, что бы вопросы были отдельной сущностью в модели:

export default DS.Model.extend({
  name: DS.attr('string'),
  questionTime: DS.attr('number'),
  questions: DS.hasMany('question')
});

вроде все сделано верно, но не работает (первый вариант работает, второй нет) - тут получается ошибка исполнения в консоле браузера, по ней ничего толкового нагуглить не могу. Можно ли сделать со связью?

irnc commented 8 years ago

Так а какая ошибка?

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

Кстати, а вам нужно менять questions или нет? Посмотрите https://guides.emberjs.com/v2.5.0/models/relationships/#toc_readonly-nested-data - если менять вопросы не нужно, DS.attr() является хорошим простым решением.

vviital commented 8 years ago

меня не нужно вопросы изменять (на данном этапе), просто хотелось поэксперементировать, а ошибка да - с адаптером, он просто не понимает, что такое вопросы, я потом еще сам попытаюсь решить эту проблему - если не получится, то скину и ошибку и все остальное, на чем вылетает. Адаптер: https://github.com/grsu-nodejs-project/project/blob/master/client-intgame/intgame/app/adapters/application.js

vviital commented 8 years ago

Тут такой вопрос появился, не могу нигде найти на него ответ: я хочу иметь объект в route, который можно было бы менять при action и что бы его значение можно было использовать в темплейте, грубо говоря такая ситуация: я хочу помнить номер текущего вопроса и при ответи на него отображать новый вопрос на том же пути, как это можно сделать? UPD: я нашел решение проблемы через контроллер, но хотел бы что-нибудь другое - вы говорили, что они уже устарели и в документации не сильно рекомендуют ими пользоваться

irnc commented 8 years ago

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

vviital commented 8 years ago

Возник такой вопрос, как такое лучше делать: есть интерфейс на клиенте для добавления игры - разная инфа про игру вводится + ссылка на архив чгк, откуда выкачать. Хочется все это сделать через this.store.createRecord(), но только запрос идет через сервер, а на клиенте создается не полный объект, как это можно хорошо обойти?

vviital commented 8 years ago

Еще вопрос, почему когда я делаю сохранение или удаление - от меня требует, что бы я что-то прислал в ответ, а когда я шлю просто ненужный json в духе { ok: 'ok'} мне пишет warning? Сохранение выполняется через store

vviital commented 8 years ago

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

irnc commented 8 years ago

Из короткого формата можете посмотреть блог https://auth0.com/blog это компания, котороя делает решения в области аутентификации. Пишут много о своих продуктах, но концептуально и популярно объясняют многие подходы.

vviital commented 8 years ago

А где можно найти вопросы к экзамену?

irnc commented 8 years ago

Каждое предложение из содержания учебного материала - это вопрос к экзамену.

vviital commented 8 years ago

Сейчас пересматривал лекции и нашел один не понятный момент, может вы проясните: https://robrich.org/slides/anatomy_of_a_web_request/#/20 вопрос вот в чем, почему мы можем посылать ответ до того, как установится соединение, ведь формально в рамках tcp мы это может делать только после завершения тройного рукопожатия (я так это понимал и в википедии вроде так же написано). Т.е. тут получается что нам не важна сама процедура установки соединения до конца?

irnc commented 8 years ago

Эта картинка из статии https://lwn.net/Articles/508865/, которая описывает расширение TCP Fast Open. Общее представление можете получить из https://en.wikipedia.org/wiki/TCP_Fast_Open

Детали можете найти в статье lwn.net и RFC.

vviital commented 8 years ago

Спасибо, разобрался

irnc commented 8 years ago

Вот статья о async/await https://zeit.co/blog/async-and-await

vviital commented 8 years ago

Можете скинуть материалы, о которых вы говорили, про то, в чем нужно разобраться. И каким образом будете их скидывать, тут через гит, или как-нибудь по-другому, например, на почту?

irnc commented 8 years ago

@vviital ответил на почту.