
Александр
26.07.2018
12:07:27
я просто слышал что только вебсокеты не поддерживаются в fasthttp

Aleksey
26.07.2018
12:07:35
Пытался решить проблему сравнения двух мап для произвольного типа. В Scala или Rust или C++ я бы использовал параметрические типы, а вот в Go подобного нет. Есть интерфейсы. Можно использовать мапу map[interface{}]interface{} но это не то. В общем все что пришло в голову это сделать интерфейс с методом value() который вернет map[interface{}]interface{} и заколхозить обертки вокруг мап нужного типа (map[interface{}]string/int/float64).
Как пример идеи выложил в плее, просьба кто в курсе указать, либо такие проблемы иначе архитектурно решаются, либо есть средства язы
htка которые решают подобное красиво
Можно reflect использовать, но хотелось бы в рантайме избежать проверок(кстати гляньте то что я сколхозил в рантайме не должно же проверки делать? Только вроде как при сборке и все?)
https://play.golang.org/p/5k47VJHIbvD

Kirill
26.07.2018
12:09:00

yuriy
26.07.2018
12:24:45

Google

Alexander μήδομαι
26.07.2018
12:25:44
У кого-нибудь есть успешный опыт решения проблемы про неспособность json.Unmarshal переварить литералы NaN, Infinity, -Infinity?
У меня есть сторонний сервис на питоне, который возвращает такие JSONы:
'{"coordinates": [49.66111, NaN]}'
Я предпринял неудачную попытку написать на Go кастомный тип с маршалерером для декодирования таких JSONов:
https://play.golang.org/p/T9PSiKslYYC
Пожалуйста, посоветуйте другой декодер или способ использования стандартного декодера, обеспечивающий совместимость с NaN.

Kirill
26.07.2018
12:46:27

Roman
26.07.2018
12:58:44
Можно ли назвать интерфейс, позволяющий работать с клиентов подключённым к серверу - "агентом"? т.е. ClientAgent

Foxcool
26.07.2018
13:08:08
API что ли?

Roman
26.07.2018
13:14:02

Bohdan
26.07.2018
13:14:46
можно назвать как угодно до тех пор, пока это понятно тебе и людям, которые с тобой работают

Roman
26.07.2018
13:15:32

Bohdan
26.07.2018
13:15:58
мне не совсем понятна постановка задачи)

Kirill
26.07.2018
13:16:39

Roman
26.07.2018
13:17:20
мне не совсем понятна постановка задачи)
короче есть подключённый к серверу по сокетам клиент, сейчас он так и называется: "Client".
этот объект представляет собой интерфейс работы с соединением этого клиента и я хочу его переименовать в "ClientAgent" т.е. агент клиента на сервере
однако я не уверен что терминология правильная

Foxcool
26.07.2018
13:19:03
звучит как терминал
или API клиент

Bohdan
26.07.2018
13:19:23
ну для всяких бд это ведь обычно просто connection
а агент/сервис, в принципе, может оперировать уже коннекшном

Google

Foxcool
26.07.2018
13:19:39
например такой примерно есть кейс. Биржи торговые предоставлят апи (в т.ч. по вебсокетам). Это апи. А клиент апи- торговый терминал
просто, понятно, без бессмысленного задротства

Александр
26.07.2018
13:20:04
не знаю что вам просто "клиент" не нравится

Foxcool
26.07.2018
13:20:11
таки да

Roman
26.07.2018
13:23:48
не знаю что вам просто "клиент" не нравится
дело в том, что библиотека состоит из реализации сервера и клиента, но на стороне серверной реализации тоже имеется понятие "клиент", но это не тот клиент, что подключается для работы с сервером, а тот что, который предсталяет одно из соединенией...
и мне не нравится что часто в разговоре один клиент с другим путаем и подумал что стоит переименовать представителя соединения - клиентским агентом, нежели клиентом

Александр
26.07.2018
13:25:09
ну тут я не очень подскажу
хранитель стандартов у нас @onokonem

Aleksandr
26.07.2018
13:25:40
Господа, подскажите, пожалуйста? Я новичок именно в Go
Вот обычно есть класс DbEntity, от нее наследуем User и Order; соотв., можно написать CRUD для любого унаследованного от DbEntity класса. Но у нас в Go нет такого понятия, как наследование структур от структур. Как же тогда быть? Можно ли каким-то образом объединить группу структур по чему-то общему?

Александр
26.07.2018
13:25:40
если проснется, то может и пояснит за правильность

Roman
26.07.2018
13:28:34

Александр
26.07.2018
13:29:45
но лучше не по ссылке конечно
что-то я там загнул с базовой моделью

Roman
26.07.2018
13:34:38
наследование можно конечно эмулировать композицией но придётся много ручками писать

Александр
26.07.2018
13:35:09
https://play.golang.org/p/gW8WjARZZDR
вот так
если бы мы получали *DbEntity то при первом же изменении - отгребли бы
вместо ожидаемого результата - 123 321 получили бы 321 321

Google

Александр
26.07.2018
13:37:53
хотеть я язык read only атрибутов без бубна ?

Roman
26.07.2018
13:45:40

Александр
26.07.2018
13:46:28
если ты используешь встраивание
то есть такой сахарок

Aleksandr
26.07.2018
13:46:56
я тут попробоваль набросать чего хотелось https://play.golang.org/p/_uEIWneEemH

Roman
26.07.2018
13:47:24
seems to make life so much easier

Александр
26.07.2018
13:48:33
ну по крайне мере стараться

Aleksandr
26.07.2018
13:49:32
прошу прощения, в дальнейшем буду знать)

Александр
26.07.2018
13:54:08
ну несколько не гоувей подход
у нас принято не плодить "универсальных" сущностей
но если вам так надо
то можно сделать интерфейс для обоих (одинаковый)
и кормить его
просто ваш Get в примере

Aleksandr
26.07.2018
13:56:16
во-от, а как это правильно делать с точки зрения методологии гоу?

Александр
26.07.2018
13:56:22
будет все равно использоваться в ограниченном числе сценариев
вы дайте бизнес кейс

Google

Александр
26.07.2018
13:56:48
с этими двумя сущностями
что бы не описывать все варианты ?

Aleksandr
26.07.2018
13:57:10
логично. минутку)

Александр
26.07.2018
14:10:18
что-то там тз с "яндекс" размером судя по всему ?

Yuriy
26.07.2018
14:44:47
Всем привет!
Подскажите ответ на такой вопрос:
Изучаю CI/DI в составе gitlab. У меня небольшой петпроджект на микросервисах (5 штук), соответсвенно один репозиторий для всех сервисов, для всего кода (типа монорепозиторий).
Если я размещаю gitlab-ci.yaml в master ветке, то любой commit запустить процесс CI. Но как мне быть если я хочу запустить например сборку и деплой в контейнер для одного конкретного сервиса? Для каждого сервиса делать отдельную ветку, а потом все мерджить? Или через теги как-то можно задачи определять?

Aleksandr
26.07.2018
14:44:55
да нет, кажется я понял. я сча реализацию накропаю и похвастаюсь)

Alan
26.07.2018
14:46:14

Vladislav
26.07.2018
14:46:14
и да, не проще ли разные репы?

Yuriy
26.07.2018
14:46:46

Alan
26.07.2018
14:47:09
ну если это настоящие "микросервисы", то да)

Yuriy
26.07.2018
14:51:11
ну если это настоящие "микросервисы", то да)
немного не пойму. Например у меня в gitlab создан проект. Проект должен быть на каждый сервис или несколько репов (под каждый сервис) в рамках одного проекта можно (нужно) сделать?

Kirill
26.07.2018
14:52:41

Maksim
26.07.2018
14:52:59

Yuriy
26.07.2018
14:53:50

Maksim
26.07.2018
14:54:10
хотя с другой стороны почти все "микросервисы", которые пишут на го, к микросервисам тоже отношения не имеют... так что пофиг)

Yuriy
26.07.2018
14:55:37

Kirill
26.07.2018
14:55:43

Yuriy
26.07.2018
14:56:08

Alan
26.07.2018
15:02:08

Google

Ilya
26.07.2018
15:50:05
Где лучше инитить viper конфиг в main или init ?

Maxim
26.07.2018
15:54:03

Serg
26.07.2018
18:35:24
Привет! Есть проблема, при go build игнорируются строки, которые используют пакеты
например
func init() {
println("preved") CLI.Flags().StringVarP(&cfg, "config", "c", "./contrib/configs/config.yml", "/path/to/config.yml")
println("precer")
}
выведет println, вторую строчку пропускает

Roman
26.07.2018
18:43:20
https://making.pusher.com/golangs-real-time-gc-in-theory-and-practice/

Lucky
27.07.2018
10:56:39
Вопрос по декораторам. Можно ли как-то вменяемое обернуть группу функций, которые получают на вход разные типы аргументов и возвращают тоже разные?

Olzhas
27.07.2018
11:21:47
Генерики

undiabler
27.07.2018
11:47:16

Pawel
27.07.2018
11:48:21

Lucky
27.07.2018
11:52:53

Vladimir
27.07.2018
11:53:08
это деревня, например