
Andrew
04.12.2017
12:15:42
по сути этим занимается твоя функция InitDB, которая возвращает указатель на переменную типа Config, в которой есть ненулевой указатель на DB
go не скриптовый язык)

Slayer
04.12.2017
12:16:59
ясно, спасибо
если оформляю методом - то присвоение идет как надо в структуре

Google

Slayer
04.12.2017
12:17:54
и не надо присваивать во внешние переменные

Andrew
04.12.2017
12:18:26
все верно, на то он и метод

nezorflame
04.12.2017
12:18:37
https://tour.golang.org/methods/1
пройди тур по гоу

Александр
04.12.2017
12:19:47
Тут небольшая проблема, если гоу процесс решил "хотрелод" сделать, он отвалит клиентов с 504 (вернее он пошлет сначало nginx, который пошлет клиентов)
рестарует соотвественно через дефолтный http сервер
но он сразу сокет не положит, приходится еще ждать секунды 3
можно конечно балансер прослойку влепить

Aleksandr
04.12.2017
12:26:12
https://medium.com/@social_57971/how-to-add-a-gui-to-your-golang-app-in-5-easy-steps-c25c99d4d8e0

Maxim
04.12.2017
13:01:38
Как можно отсортировать массив структур пикселей color.Color по светлоте?

Александр
04.12.2017
13:02:12
а в каком формате цвет?

plq
04.12.2017
13:02:26
0-255, я полагаю

Maxim
04.12.2017
13:02:53

Google

Andrew
04.12.2017
13:05:31
https://gobyexample.com/sorting-by-functions
например так
https://golang.org/pkg/sort/#Slice
или вот так

plq
04.12.2017
13:09:47

Александр
04.12.2017
13:10:23

Andrew
04.12.2017
13:12:40
@ruelephant почему нет?

Александр
04.12.2017
13:13:29
во вторых двойное конвертирование
можно высчитать сразу

Andrew
04.12.2017
13:14:31
дык как он будет определять "светлость" пикслей это его дело
вопрос то был как отсортировать...

Alexei
04.12.2017
13:15:45
https://golang.org/pkg/sort/ в помощь

Александр
04.12.2017
13:15:52
я думал вопрос таки "как определить светлость пикселя"
сортировку на основании светлости изи

Andrew
04.12.2017
13:17:54

Maxim
04.12.2017
13:20:48
сортировку на основании светлости изи
Именно. У меня 4 пикселя:
color.YCbCr{Y:0x40, Cb:0x9a, Cr:0x65}
color.YCbCr{Y:0x59, Cb:0xa1, Cr:0x51}
color.YCbCr{Y:0x5a, Cb:0x5a, Cr:0xf0}
color.YCbCr{Y:0x7a, Cb:0xa7, Cr:0x3b}
Мне нужно рассортировать их по светлоте как если бы я юзал HSL.

Александр
04.12.2017
13:21:51
там выше давал ссылочку
как вывести светимость

Google

Александр
04.12.2017
13:22:10
в смысле яркость

Maxim
04.12.2017
13:24:46
Вот сижу и пробую у себя, спасибо

Александр
04.12.2017
13:38:50
чорд
унес http хердлеры в отдельный пакет, и все больше и больше зависимостей перетягивается из application
хотя вроде application это прослойка уровня "управление вебсервером", а не хендлерами
что бы прямо от нее брать структур
не тащить же application в зависимости к handler?
как считаете

Andrew
04.12.2017
13:45:04
я делал структуру application которая хранила базу и прочие шарящиеся штуки
а хендлеры у меня были методы application

Александр
04.12.2017
13:45:33
а хедлеры где объявлены были?
внутри application?

Andrew
04.12.2017
13:46:06
если application это субпакет то да

Александр
04.12.2017
13:46:47
ну меня application лежит пока в main
в main() что-то такое
config := Config{}
config.load(configPath);
control := make(chan int)
go func() {
for {
err := watchFile(configPath)
if err != nil {
log.Print("Config load failed " + err.Error())
}
log.Print("Config has been changed")
newConfig := new(Config)
newConfig.load(configPath);
config = *newConfig
control <- APP_RESTART
}
}()
app, err := createapp(&config)
for {
select {
case command := <-control:
switch command {
case APP_START:
app.Start()
case APP_RESTART:
err := app.Restart()
if err != nil {
log.Fatal("Failed restart application: &s", err.Error())
break;
}
case APP_STOP:
app.Stop()
}
}
}
ага, вы правильно поняли, веб сервер может быть погашен/запущен при живом процесс
это нужно если внезапно конфиг изменили, дабы процесс не дергать лишний раз


Roman
04.12.2017
16:36:16
кстати у меня вопрос по GraphQL, как на нём реализовать binary file upload? можно конечно через base64 энкодировать данные и посылать в качестве graphql параметра прямо в поле, но это лишний нагружает клиент, сервер, сеть

Google

Aleksandr
04.12.2017
16:43:48

Konstantins
04.12.2017
16:47:26
вообще лучше хранить картинки на диске, а в базе ссылки на них

Roman
04.12.2017
16:48:52
гугл что говорит?
Гугл пока предложил только два варианта:
1. base64
2. upload через отдельный протокол, например HTTP
в первом варианте очевиден overhead,
но второй вариант неприемлем по причине согласованности
например операция создания аккаунта пользователя..
если например что-то пойдёт не так, или параметры были неверные, или ещё что либо, то профиль не создастся, а файл останется на сервере (hello garbage collection!)
и как гарантировать что аватарка вообще отправлена? ждать пока она загрузится на HTTP интерфейсе и если timeout то оборвать GraphQL запрос? звучит как-то не очень...
согласованность, вот в чём вопрос

Konstantins
04.12.2017
16:49:06
если только у тебя нету специализированного под картинки хранилища

Roman
04.12.2017
16:55:43
даже если сделать добавление картинки / загрузку какого-либо файла отдельной мутацией, всё-равно нужно как-то синхронизировать, согласовать базу данных с HTTP интерфейсом загрузки на том же API сервере, чтоб БД знала что такой файл есть и он действительно существует на файл сервере, во избежание dead link'ов

Pawel
04.12.2017
17:09:17

Admin
ERROR: S client not available

Alexey
04.12.2017
18:16:01

Nikolay
04.12.2017
18:48:10
кто смотрел уже? https://www.amazon.com/Learning-Functional-Programming-applications-programming-ebook/dp/B0725B8MYW
совсем наркомания или просто полная жесть?

Aleksey
04.12.2017
19:35:45
Есть в го нормальный валидатор для Rest API, который по схеме может проверить map и вернуть map с ошибками?
И вообще как принято хэндлить валидацию?

Roman
04.12.2017
20:01:44

Nikolay
04.12.2017
20:03:12

Roman
04.12.2017
20:04:13

Nikolay
04.12.2017
20:05:24
плюс валидация поверх этого
но вообще да, msgpack тоже неплох. Просто для http он как-то не очень
мне просто концепция graphql не нравится

Roman
04.12.2017
20:07:55
честно говоря я бы не стал изобретать колесо, ибо валидация это не просто "соответствует/не соответствует" а так-же error reporting и прочее,
GQL помимо типизирования ещё много дополнительных преимуществ даст

Google

Nikolay
04.12.2017
20:08:06
а для особых случаев есть всякие там jsonschema
gql - это когда ты хочешь дать возможность фронтенду достать одним запросом тебе полбазы

Roman
04.12.2017
20:09:18
зачем если это всё по умолчанию встроено в GQL причём с правильным error репортингом?

Nikolay
04.12.2017
20:09:21
то есть примерно никогда

Roman
04.12.2017
20:10:24

Nikolay
04.12.2017
20:11:19
рест - концепция так себе, но большой вопрос насчет gql - он решает больше проблем или создает
не надо фронтенду давать гибкости больше, чем он заслуживает

Roman
04.12.2017
20:15:14

Nikolay
04.12.2017
20:16:17
а когда будет http pipelining - будет еще меньше нужен

Roman
04.12.2017
20:17:47

Pawel
04.12.2017
20:17:51

Nikolay
04.12.2017
20:18:05

Roman
04.12.2017
20:20:06