Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Обсуждений тред (https://javascript.ru/forum/offtopic/47364-obsuzhdenijj-tred.html)

kobezzza 24.11.2016 19:22

Цитата:

Сообщение от cyber (Сообщение 436079)
какую архитектуру вы используете для приложений c koa на nodejs MVC?

Обыкновенный MVC, своя обёртка на классах, пример контроллера:

import Base from './base';
import { GET, controller } from './core/controller';

@controller(exports)
export default class Guest extends Base {
	/**
	 * Returns true if the the specified room is free
	 */
	[GET`is-room-free`](o, model) {
		o.auth('Staff').push(async (ctx) => {
			if (!ctx.user.hasPermissions(['AdminAccess'])) {
				o.addGuard(ctx, {hotel: 'hotels'});
			}

			ctx.body = {result: await model.isRoomFree(ctx.reqData)};
		});
	}
}

cyber 25.11.2016 10:30

kobezzza, спасибо

cyber 26.11.2016 17:24

kobezzza,
я решил немного по извращатся и сделать так
import Controller from "../../lib/decorators/Controller";
import RequestMapping from "../../lib/decorators/RequestMapping";


@Controller("/")
export default class {


    @RequestMapping("/test")
    async getTestPage() {
        
    }
    
    @RequestMapping(["/home","/"])
    async getMainPage() {

    }

}

nerv_ 28.11.2016 18:26

Вот это заява. Совсем народ обнаглел.

kobezzza 28.11.2016 20:41

Цитата:

Сообщение от nerv_ (Сообщение 436438)
Вот это заява. Совсем народ обнаглел.

Лол))

Safort 30.11.2016 11:07

Цитата:

Сообщение от nerv_ (Сообщение 436438)
Вот это заява. Совсем народ обнаглел.

Ахаха)) Действительно, заява серьёзная)

Safort 30.11.2016 11:09

kobezzza, cyber,
вот зачем вы декораторы используете? Они же уже поменялись, были даже предложения поменять их синтаксис. Т.е. эта штука опасная, не даром она в babel-плагинах как легаси числится.

kobezzza 30.11.2016 14:01

Цитата:

Сообщение от Safort (Сообщение 436605)
kobezzza, cyber,
вот зачем вы декораторы используете? Они же уже поменялись, были даже предложения поменять их синтаксис. Т.е. эта штука опасная, не даром она в babel-плагинах как легаси числится.

Это удобно, но на свой страх и риск :)

cyber 30.11.2016 14:16

Safort, я использую в своем проекте, на работе жду когда будет готова спецификация)
В моем проекте я так себе добавил много фич, если поменяют то буду менять, но пока мне нравится)

trikadin 30.11.2016 15:57

Цитата:

Сообщение от Safort
kobezzza, cyber,
вот зачем вы декораторы используете? Они же уже поменялись, были даже предложения поменять их синтаксис. Т.е. эта штука опасная, не даром она в babel-плагинах как легаси числится.

Тоже юзаю. Правда, я свалил на ТС и юзаю декораторы там. В ТС они -- просто часть языка)

cyber 30.11.2016 16:31

trikadin, я не особо доверяю штукам типа дарт, кофе, туйпскрипт... поэтому только vanilla js ))

trikadin 30.11.2016 20:17

Цитата:

Сообщение от cyber
trikadin, я не особо доверяю штукам типа дарт, кофе, туйпскрипт... поэтому только vanilla js ))

ТС, по сути -- все тот же JS, только с типами. Как flow, только строже.

cyber 01.12.2016 11:16

Цитата:

Сообщение от trikadin
ТС, по сути -- все тот же JS, только с типами. Как flow, только строже.

да, только, эти штуки могут со временем умереть, а чистый js нет)

Makarov 01.12.2016 15:32

cyber,
Так "чистый js" щас второй раз почти умер. Первый раз умирал es3 to es5 когда-то, щас es5 конвульсирует в пользу es6+.

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

И вроде бы ts позиционируется не как язык который будет уходить в сторону от js стандартов, а как язык который будет бежать впереди и прорубать путь.

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

Про дарт ничо не скажу, не ковырял)

cyber 01.12.2016 15:37

Цитата:

Сообщение от Makarov
конвульсирует в пользу es6+.

под vanilla js я имел ввиду es6+.
Цитата:

Сообщение от Makarov
Ну то есть я серьезного продакшн-реди ничо на тайпскрипте не писал, но у меня сложилось ощущение, что он от современного js отличается не больше чем современный js от es5. Поправьте меня если я неправ))

тайпскрипт, это C# в браузере грубо говоря, в плане синтаксиса. Только разница в том что es6+ я смогу рано или поздно использовать в браузере без babel, а тайпскрипт нет

cyber 01.12.2016 19:17

Какие вы используете nosql базы для ноды и какие orm для них?

trikadin 01.12.2016 21:12

Цитата:

Сообщение от cyber
тайпскрипт, это C# в браузере грубо говоря, в плане синтаксиса

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

Цитата:

Сообщение от cyber
Только разница в том что es6+ я смогу рано или поздно использовать в браузере без babel, а тайпскрипт нет

Тенденция сейчас такова, что JS не собирается останавливаться в развитии, ближайшие пару лет уж точно. Поэтому бабель ты будешь юзать все равно. А тут, по сути, тот же бабель, только ещё и развитая типизация (смотри плюшки выше).

cyber 01.12.2016 22:18

Цитата:

Сообщение от trikadin
Без обид, но это ты фигню ляпнул.

Интерфейсы как в C#, я так с первого взгляда, я немного написал с ТС.

destus 02.12.2016 06:50

Цитата:

Сообщение от cyber (Сообщение 436793)
Какие вы используете nosql базы для ноды и какие orm для них?

Было уже http://javascript.ru/forum/421762-post1910.html

cyber 02.12.2016 10:34

destus, сорян, пропустил))

Shishiki 02.12.2016 23:12

Цитата:

Сообщение от destus
Какие вы используете nosql базы для ноды и какие orm для них?

OrientDB остальные допотопные динозавры.

Внизу страницы ссылка на драйверы для node, php ....

nerv_ 09.12.2016 12:00

Цитата:

Сообщение от Shishiki
OrientDB остальные допотопные динозавры.

1. Как насчет НЕ использования SQL-like синтаксиса для OrientDB? Это для этого решения под Node.js?
2. Что скажете об Arangodb? По описсание комбайн + перфоманс лучше, чем у ... (по инфе с офф. сайта)
http://stackoverflow.com/a/24392094

kobezzza 09.12.2016 12:28

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

cyber 09.12.2016 12:29

Цитата:

Сообщение от nerv_
. Как насчет НЕ использования SQL-like синтаксиса для OrientDB? Это для этого решения под Node.js?

Некоторые вещи всетаки делать на sql базах, но для ноды есть http://docs.sequelizejs.com/en/v3/ что бы не писать чисты sql запросы

kobezzza 09.12.2016 12:47

Цитата:

Сообщение от cyber (Сообщение 437522)
Некоторые вещи всетаки делать на sql базах, но для ноды есть http://docs.sequelizejs.com/en/v3/ что бы не писать чисты sql запросы

А еще лучше не писать SQL запросы, а просто дёргать хранимые процедуры) Быстрее, удобнее, безопаснее)

Makarov 09.12.2016 12:50

https://www.youtube.com/watch?v=b2F-DItXtZs

nerv_ 09.12.2016 22:38

Цитата:

Сообщение от kobezzza
Советую не верить бенчам

Правильно советуешь. Я им изначально не верю :)
Вместе с тем мне нужно выбрать ДБ, которая бы отвечала определенным требованиям, среди которых:
1. отказоустройчивость
2. масштабируемость (без джойнов)
3. сравнительно легкая "эмуляция" отношений (one-to-many etc.)
4. транзакции
5. document, key-value, graph БД
6. ...

nerv_ 20.12.2016 20:07

Вопрос по запросам в Mongoose / MongoDB:

Требуется выбрать все Issue пользователя, которые:
- или были созданы пользователем (issue.authorId === user.id)
- или были назначены на пользователя (issue.assigneeId === user.id)
- или те, в которых пользователь оставлял комментарии (notes.notableId.contains(issue.id))

Есть три схемы (ниже они упрощены)

// Issue
const schema = new mongoose.Schema(
  {
    id: Number,
    authorId: Number,
    assigneeId: Number
  }
);
schema.virtual('notes', {
  ref: 'Note',
  localField: 'id',
  foreignField: 'noteableId'
});

// Note
const schema = new mongoose.Schema(
  {
    id: Number,
    noteableId: Number,
    authorId: Number
  }
);

// User
const schema = new mongoose.Schema(
  {
    id: Number
  }
);



И два запроса
let id = 21; // user.id пользователь
let $in = yield Note.find({authorId:id}).distinct('noteableId'); // все id комментариев пользователя
this.response.body = yield Issue.find({
  $or: [
    {authorId:id},
    {assigneeId:id},
    {id:{$in}}
  ]
});



Можно ли это сделать в 1 запрос?

Спасибо.

Tim 20.12.2016 23:10

Что-то закреплённых тем в оффтопике дофига. Не сразу свою новую тему нашёл. Придётся прибегнуть к пиару чёрному: http://javascript.ru/forum/offtopic/...rrektnost.html

nerv_ 21.12.2016 13:17

Цитата:

Сообщение от Tim
Придётся прибегнуть к пиару чёрному: Как вы храните пароли и проверяете их корректность

Не ходите туда! Лучше ответьте на мой вопрос выше :D

cyber 21.12.2016 13:46

kobezzza, ты знаешь о фреймворке spring из java?
Как думаешь что то похожее на nodejs имеет смысел?
примерно так это выглядит в данный момент, я эксперементирую
import {Controller} from "../../lib/decorators/index";
import {RequestMapping} from "../../lib/decorators/index";
import {RequestMethod} from "../../lib/decorators/index";


@Controller("/")
export default class {


    @RequestMapping("/test")
    async getTestPage(ctx) {
        console.log(ctx.mongodb);
        return Promise.resolve("hello test");
    }

}

работает это чудо с koa
P.s убрал с темы Tim и перенес сюда)

kobezzza 21.12.2016 21:51

cyber, про спринг знаю, что это такой фреймворк-фреймворков, но я в общем не явист. В твоём варианте мне главным образом не нравится, что придётся придумывать имена для post, delete и т.д. запросов )

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

cyber 21.12.2016 22:06

kobezzza,
это будет примерно так
import {Controller} from "../../lib/decorators/index";
import {RequestMapping} from "../../lib/decorators/index";
import {RequestMethod} from "../../lib/decorators/index";


@Controller("/")
export default class {


    @RequestMapping({ value: "/test", method: RequestMethod.POST} )
    async getTestPagePost(ctx) {
        console.log(ctx.mongodb);
        return Promise.resolve("hello test");
    }

@RequestMapping({ value: "/test", method: RequestMethod.GET} )
    async getTestPagePost(ctx) {
        console.log(ctx.mongodb);
        return Promise.resolve("hello test");
    }

}

kobezzza 21.12.2016 22:08

cyber, многословно, да и IDE же будет ругаться, что в классе 2 метода с именем getTestPagePost

cyber 21.12.2016 23:14

kobezzza, окей, а как лучше? как ты думаешь?

kobezzza 21.12.2016 23:23

Цитата:

Сообщение от cyber (Сообщение 438597)
kobezzza, окей, а как лучше? как ты думаешь?

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

@controller()
class myController {
  // В качестве имени я юзаю путь
  [GET`foo/`]() {

  }

  [POST`foo/`]() {

  }
}


Довольно удобно.

Tim 21.12.2016 23:56

Если на фейсбуке открыть консоль, то можно лицезреть красивое сообщение:

Цитата:

Эта функция браузера предназначена для разработчиков. Если кто-то сказал вам скопировать и вставить что-то здесь, чтобы включить функцию Facebook или «взломать» чей-то аккаунт, это мошенники. Выполнив эти действия, вы предоставите им доступ к своему аккаунту Facebook.
обычно console.log показывает строку скрипта на которой он был вызван. тут же ни чего такого нет. як так? =)

cyber 22.12.2016 01:19

Tim, http://stackoverflow.com/a/13017382/2451573

Tim 22.12.2016 01:47

cyber,
да, это цвет фон и тд. а как сделать чтобы не отображало номер строки скрипта

nerv_ 25.12.2016 11:37

Хотите знать, что заставило меня сегодня улыбаться с утра? :)

Пришло на почту письмо, в котором бла-бла-бла, доступен новый поиск по npm пакетам на сайте https://npms.io

Любопытсва ради я зашел туда посмотреть, потыкал и нашел свой загрузчик файлов для ангуляра 1. После чего мне стало любопытно взглянуть на загрузчики файлов для ангуляра 2 и я наткнулся на это.

Оказывается, ребята взяли и портировали мой аплоадер для второго ангуляра. Как говорится, найдите 10 отличий:

1. https://github.com/nervgh/angular-fi...0/src/services (мой)
2. https://github.com/valor-software/ng...ts/file-upload (чужой)

Вот такая забавная история :)

P.S.: в моем аплоадере есть ряд ошибок проектирования. Не буду им говорить, расстраивать :D


Часовой пояс GMT +3, время: 16:07.