
Dmitriy
22.01.2018
13:17:49
это да

Eldar
22.01.2018
13:18:01
Nginx Plus правда дороговат
"Хочешь дешево, ебись сам" (С) Голос рынка

Dmitriy
22.01.2018
13:19:14
> Full support for Go, PHP, and Python; Java and Node.js support coming soon

Google

Dmitriy
22.01.2018
13:19:23
так что пока отдыхаем.

Eldar
22.01.2018
13:19:44
Ну у них ведь там консультанты по архитектуре, там саппорт наверное это больше чем просто тех поддержка
Это настоящие админы
Курсы по Nginx кусаются по цене =( Понимание ядра 750$, load balancing 4h course - 350$

Dmitriy
22.01.2018
13:26:00
у меня админ хороший был, научил всему что сам знает

Andriy
22.01.2018
13:26:56
Народ, помогите)

Dmitriy
22.01.2018
13:27:13
+ сейчас есть docker (docker-compose/swag) они очень хорошо помогают с балансировкой и настройкой

SilencerWeb
22.01.2018
13:27:16
Пробегаться по всем данным придется
Я БД и собираюсь юзать, но там же я буду сохранять данные как и в джсе
Или там можно как-то выдернуть данные за определенный промежуток времени?
Щас думаю юдать mongoDB

Pavel
22.01.2018
13:31:18
Ребят, а какие недостатки есть у N-layer архитектуры ?

Google

Dmitriy
22.01.2018
13:36:41


Andriy
22.01.2018
14:09:15
ребятя, подскажите пожалуйста. Вот мой конфиг сервера node:
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/cert.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/chain.pem')
};
var app = https.createServer(options);
var io = require('socket.io')(app);
var Redis = require('ioredis');
var redis = new Redis();
redis.subscribe('App.Chat');
redis.subscribe('App.Chat.Reads');
redis.subscribe('App.Task');
redis.subscribe('App.Task.Changed');
redis.on('message', function(channel, message) {
message = JSON.parse(message);
if (channel === 'App.Chat') {
io.emit(channel + ':message:' + message.receiver_id, message);
io.emit(channel + ':message:' + message.creator_id, message);
}
else if (channel === 'App.Chat.Reads') {
io.emit(channel + ':seen:' + message.receiver_id, message);
io.emit(channel + ':seen:' + message.creator_id, message);
}
else if(channel === 'App.Task') {
io.emit(channel+':message:'+message.campaign_participant_id,message);
}
else if(channel === 'App.Task.Changed') {
io.emit(channel+':user:'+message.user_id+':task-participant:'+message.task_participant_id+':task:'+message.task_id
,message);
}
});
Ошибка в консоли:


Morsik
22.01.2018
14:10:50
со стороны клиента мб на хттп стучишься

Andriy
22.01.2018
14:13:18

AP?
22.01.2018
14:14:00
https -> http, тут ошибка

Sergey
22.01.2018
14:14:57
Если сайт на https, то запросы слать можно тоже только по https

Сергей
22.01.2018
14:14:57
Написано же
Ты идешь из https в ресурс на http

Andriy
22.01.2018
14:15:54

Сергей
22.01.2018
14:16:09

Dmitriy
22.01.2018
14:19:01

Andriy
22.01.2018
14:37:26
Ребят, исправил ошибку. Теперь вот это:

Sergey
22.01.2018
14:40:49
неизвестный hostname

Kulagin
22.01.2018
14:40:49
В nodejs listen на какой хост висит?

Сергей
22.01.2018
14:41:18
ты забыл .com добавить

Andriy
22.01.2018
14:41:24
БЛЯ
Всеровно

Google

Andriy
22.01.2018
14:44:01
Это конфиг var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/cert.pem'),
ca: fs.readFileSync('/etc/letsencrypt/live/hungryseason.com/chain.pem')
};
var app = https.createServer(options);
var io = require('socket.io')(app);
app.listen(3000);

Kulagin
22.01.2018
14:44:03

Сергей
22.01.2018
14:44:21
ну теперь не может подключиться

Andriy
22.01.2018
14:45:03
Не предлагайте nginx
У меня приложуха на php
Node только для redis

Сергей
22.01.2018
14:45:16
apache

Andriy
22.01.2018
14:45:18
и socket

Kulagin
22.01.2018
14:45:20
Там то ли app.listen('0.0.0.0', 3000), то ли аргументы наоборот

Сергей
22.01.2018
14:45:21

Andriy
22.01.2018
14:45:38

Kulagin
22.01.2018
14:45:38

Andriy
22.01.2018
14:45:49
Тсссс
Так че делать можно?

Kulagin
22.01.2018
14:46:57
Я выше дал рецепт. Попробуй

Andriy
22.01.2018
14:48:51
Ребята, всем спасибо. Я забыл pm2 перезапустить

Nurik
22.01.2018
14:52:54

Alex
22.01.2018
15:07:11
Ребят, кто знает уже готовые микросервисы для хранения пользовательских файлов ?
При микросервисном подходе к разработке приложений, каждый микросервис разрабатывается как отдельный независимый проект, верно ?

Valeriu
22.01.2018
15:09:39

Google

Alex
22.01.2018
15:11:18
А что это ?
Степень независимости микросервисов друг от друга достаточно высока

Valeriu
22.01.2018
15:12:05
компонент приложения
который делает только одну задачу
но делает её хорошо ))
микросервис должен быть универсальным
https://ru.wikipedia.org/wiki/Микросервисы

Admin
ERROR: S client not available

Alex
22.01.2018
15:13:22
Говорят, что микросервис должен уметь работать при отключенных остальных. Так-что получается что он полностью независим
Типа можно выключить микросервис, и приложение должно работать
Мне интересно как разрабатывается микросервис ? Создается отдельный проект для каждого микросервиса ?
В отдельном репозитории, с отдельным образом в Docker

Valeriu
22.01.2018
15:15:40
Думаю это тебе решать
смотри по ситуаций, если это будет полезно, можешь и полностью отдельно сделать
зависимости сервисов внутри приложения это плохо?

Eugene
22.01.2018
15:24:41
Всем привет!
Такой вопрос -
Сделал рефак проекта, вынес все обращения к базе в отдельный слой репозитория и получилось куча методов похожих типа найти по айди, найди по логину, какие то сложнее, разумеется
Мне подсказали, что должен быть слой Query Builder, который строит запрос и, таким образом, слой репозитория, становится небольшим и аккуратным
Есть какие-то советы/примеры на эту тему?
Спасибо

Alex
22.01.2018
15:24:43
Я думаю это просто не микросервисно ореинтированный подход
зависимости сервисов внутри приложения это плохо?
Я думаю они должны иметь общую кодовую базу
Но работать самостоятельно
Я так эту идею понял

Google

Иван
22.01.2018
15:56:49

Eugene
22.01.2018
15:57:09

Сергей
22.01.2018
16:00:52

Eugene
22.01.2018
16:01:24

Иван
22.01.2018
16:03:51
Думаю что нет смысла выделять слой QueryBuilder, т.к. это и есть задача репозитория. Если Вы захотите сменить ORM, репозитории все равно придётся переписывать

Сергей
22.01.2018
16:04:41
а вот queryBuilder нет
выборка по логину и айдишнику также останется

Eugene
22.01.2018
16:04:50

Никита
22.01.2018
16:08:58
Скорее всего, вы что-то делаете не так.
И имеющиеся-то странноваты.

Eugene
22.01.2018
16:10:29

Никита
22.01.2018
16:10:44
А что вы делаете?

Eugene
22.01.2018
16:11:11

Никита
22.01.2018
16:12:28

Eugene
22.01.2018
16:13:14

Никита
22.01.2018
16:13:18
Если нет, то попробуйте не изобретать свой QueryBuilder, а взять готовый нормальный.

Eugene
22.01.2018
16:19:31