Открыли ещё одну приятную страну для жизни (Вьетнам).
Побывали на Пхукете, в Нячанге и пару раз в Шерегеше.
Уволился, отдыхал месяца 4, проходил интервью в зарубежные компании, практиковался в программировании. До июня планирую найти удалённую команду.
Сильная книга.
В целом, обычная жизнь — это решение проблем. Действия для сохранения привычного существования и предотвращения ухудшения. Работа — дом — сон.
Это грустно и печально. С годами приходит осознание, что бежишь на одном месте, без цели, удовольствия, перспектив.
Но есть что-то, не являющееся обязательным. Что-то, чего от Вас не ждут и не требуют. Никто ничего и не скажет, если этого не будет. Речь об успехе.
Книга показывает разницу между решением проблем и путём к успеху. Заставляет провести переоценку ценностей. Подвергнуть сомнению свою жизнь и достижения.
Выгода: получилось на 22 копейки выгоднее, чем по курсу лучшего банка.
Наступивший конец лета не оставил равнодушными, ведь цены на путёвки существенно падают, а пляжи пусты от туристов, восстановивших нервы и готовых к новому рывку к высотам в офисах.
Отличный фреймворк, но настраивать ACL в нём просто АДЪ(если не знать хитрость)
Единственный разумный способ сделать это занятие приятным — запуск специального DEBUG режима.
1. Для запуска проекта из текущей директории в режиме отладки ACL нужно сделать:
DEBUG=loopback:security:* node . |
2. Выполните REST запрос, который пытаетесь задебажить. Допустим, нас интересует
Request URL:http://eventovka.dev/api/BaseUsers/55575aa2f2e0436f0defcdc8/events Request Method:POST |
3. Ответом(в консоле браузера) должно быть что-то вида:
Status Code:401 Unauthorized {"error":{"name":"Error","status":401,"message":"Authorization Required","statusCode":401,"code":"AUTHORIZATION_REQUIRED","stack":"Error: Authorization Required\n at /srv/eventovka/api/node_modules/loopback/lib/application.js:348:21\n at /srv/eventovka/api/node_modules/loopback/lib/model.js:313:7\n at /srv/eventovka/api/node_modules/loopback/common/models/acl.js:465:23\n at /srv/eventovka/api/node_modules/loopback/node_modules/async/lib/async.js:254:17\n at done (/srv/eventovka/api/node_modules/loopback/node_modules/async/lib/async.js:135:19)\n at /srv/eventovka/api/node_modules/loopback/node_modules/async/lib/async.js:32:16\n at /srv/eventovka/api/node_modules/loopback/node_modules/async/lib/async.js:251:21\n at /srv/eventovka/api/node_modules/loopback/node_modules/async/lib/async.js:575:34\n at /srv/eventovka/api/node_modules/loopback/common/models/acl.js:447:17\n at /srv/eventovka/api/node_modules/loopback/common/models/role.js:290:23"}} |
4. В логе сервер должно быть что-то вида:
loopback:security:acl The following ACLs were searched: +1ms loopback:security:acl ---ACL--- +1ms loopback:security:acl model BaseUser +0ms loopback:security:acl property * +0ms loopback:security:acl principalType ROLE +1ms loopback:security:acl principalId $everyone +0ms loopback:security:acl accessType * +0ms loopback:security:acl permission DENY +0ms loopback:security:acl with score: +0ms 7495 loopback:security:acl ---ACL--- +0ms loopback:security:acl model BaseUser +0ms loopback:security:acl property * +3ms loopback:security:acl principalType ROLE +0ms loopback:security:acl principalId $everyone +0ms loopback:security:acl accessType * +1ms loopback:security:acl permission DENY +0ms loopback:security:acl with score: +0ms 7495 loopback:security:acl ---Resolved--- +1ms loopback:security:access-context ---AccessRequest--- +0ms loopback:security:access-context model BaseUser +0ms loopback:security:access-context property __create__events +1ms loopback:security:access-context accessType WRITE +0ms loopback:security:access-context permission DENY +0ms loopback:security:access-context isWildcard() false +0ms loopback:security:access-context isAllowed() false +0ms |
6. Нас интересует, вызванная модель и её атрибут(метод). В логе они фигугируют как model и property.
Таким образом нам нужно настроить
model: BaseUser property: __create__events |
7. Добавляем необходимое ACL условие в json конфиг модели:
{ "principalType": "ROLE", "principalId": "$authenticated", "permission": "ALLOW", "property": "__create__events" } |
Книга «Джон Богл. Руководство разумного инвестора» достаточна интересна, прагматична.
Сразу доносится мысль, что можно рассчитывать на разумный доход, а не сверхдоход. А разумный доход формируется снижением издержек(комиссий) и диверсификацией инструментов.
По мере развития становится понятно, что это индексы, т.к. отражают реальный рост рынка.
Идея подтверждается статистикой, рассчётами и.т.д.