Александр
22.09.2017
11:42:53
В идеале бы другой тег задать
Vasily Romanov
22.09.2017
11:43:38
Используй easyjson :)
Есть вариант с заэмбеженной структуруой, у которой переопределены некоторые поля
Александр
22.09.2017
11:44:45
Можете кинуть ссылкой конкретно на этот функционал?
Google
Vasily Romanov
22.09.2017
11:44:49
Тогда одна будет полностьбю паковаться, другая, у которой переопределены поля, у другой - частично
Конкретно этого функционала там нету
Александр
22.09.2017
11:45:25
Тогда я не понял, что значит " заэмбеженная структурура" :)
Vasily Romanov
22.09.2017
11:45:32
Хм
Есть ещё вариант
Александр
22.09.2017
11:45:48
Проставить теги везде, сгенерить, убрать теги, сгенерить еще раз?
Vasily Romanov
22.09.2017
11:45:54
vby
мин
Daniel
22.09.2017
11:46:31
Vasily Romanov
22.09.2017
11:46:33
type Struct1 struct {
Name string
}
type Struct3 struct {
Struct1
Name string json:"-"
}
в easyjson дя подобного рода целей были сделаны opt.* поля
там в зависимости о тфлага оно или папкуется или нет
или ещё вариант - использовать указатель
Google
Александр
22.09.2017
11:47:36
Vasily Romanov
22.09.2017
11:47:37
тогда nil поковаться не будет с omit_empty
Александр
22.09.2017
11:48:40
Daniel
22.09.2017
11:49:16
Vasily Romanov
22.09.2017
11:49:49
Field int json:",omitempty"
Александр
22.09.2017
11:50:45
Vasily Romanov
22.09.2017
11:51:45
нет, с обыными полями тоже работает
Daniel
22.09.2017
11:51:58
да, я бы сделал так. но у меня пунктик - не использовать для разных подсистем одни и те же структуры
Vasily Romanov
22.09.2017
11:52:03
если значение по-умолчанию - то тогда оно не маршалится
Александр
22.09.2017
11:54:00
Спасибо, ребята
Придумал, как проще сделать
Взять msgpack и задать для него свои теги
Для него есть тоже кодогенератор
Lev
22.09.2017
12:07:56
curl -I
что неа?
Max
22.09.2017
13:24:14
я хотел бы спросить у вас, как можно пройтись по мапе, которая находится в мапе?
из головы вылетело
Alexander
22.09.2017
13:25:17
what ? ну наверно так же как и по двумерному массиву
in favor
22.09.2017
13:25:30
for k, v := range nestedmap[key]
Google
Max
22.09.2017
13:25:42
блэт, чет я плыву
спасибо
Илья
22.09.2017
13:27:27
очень интересная статья
https://segment.com/blog/allocation-efficiency-in-high-performance-go-services/?utm_source=golangweekly&utm_medium=email
:)
Roman
22.09.2017
15:21:28
А кто какими пакетами пользуется для создания VK Ботов для сообществ?
Andrew
22.09.2017
16:01:30
Roman
22.09.2017
16:02:07
так нерелевантно гугл ещё не отвечал мне.
Alexander
22.09.2017
16:02:13
это телеграм же а не вк :р
Roman
22.09.2017
16:02:22
VK Bot. Не ТГ.
ага
Andrew
22.09.2017
16:05:30
Ааа, прочитал между строк ?
Пятница же, зрение ослаблено на 90%
John
22.09.2017
17:42:37
Ребят, подскажите, как правильно в Го сделать словарь с мьютексами, что-то типо такого
mutexes = map[string]*sync.Mutex
mutexes[key].Lock()
defer mutexes[key].Unlock()Есть поток ключей, который слушают горутины, и нужно чтобы одинаковые ключи обрабатывались только одной горутиной. Т.е. если пришло 2 одинаковых ключа подряд, их взяли две разные горутины, но вторая ждет мьютекса.
Vasily Romanov
22.09.2017
17:45:57
а канал пер ключ организовать не вариант ?
буферизированный
в смысле, что каждая горутина обрабатывает только свой ключ, через канал
жрать конечно может побольше ресурсов если ключей много
код выглядит правильным, но надо ещё его будет покрыть дополнительным мютексом на добавление-удаление ключей
John
22.09.2017
18:01:47
горутину на ключ не вариант, ключей тысячи и неизвестны заранее
anton
22.09.2017
18:03:29
что-то мне подсказывает, что тебе тут акторная модель нужна..
Google
John
22.09.2017
18:09:32
те, словарь с каналами, что-то типо такого:
var directionLocks sync.Map
// worker
lock, ok := directionLocks.Load(key)
if ok {
<-lock.(chan bool)
}
var lock = make(chan bool, 1)
directionLocks.Store(key, lock)
log.Println("Processed")
lock <-true
Greg
22.09.2017
18:10:15
Советую
https://github.com/AsynkronIT/protoactor-go
Dion
22.09.2017
18:11:05
Ахахахахаххахах назвал константу url, два часа репу чесал почему url.QueryEscape не могу вызвать
anton
22.09.2017
18:13:00
Советую
о, поделись опытом.
для какого проекта юзал?
какие нагрузки? какие вообще впечатления?
Greg
22.09.2017
18:13:15
@troyanov https://github.com/Nyarum/noterius
И отдельно еще в рабочем проекте для контроля бекграунд тасков
anton
22.09.2017
18:13:41
Greg
22.09.2017
18:13:55
Гоурутина + канал - модель хорошая, но слишком низкоуровнево, абстракции свои всегда наворачиваются
Акторная модель в этом случае дает группировку хорошую
John
22.09.2017
18:16:28
anton
22.09.2017
18:18:10
по сути некий статик пул горутин на обработку и в них роутишь по какому-то признаку
John
22.09.2017
18:24:32
про роутинг думал, но чет не пошло. в соседнем чате посоветовали такой пакет https://github.com/moby/moby/tree/master/pkg/locker
anton
22.09.2017
18:29:02
John
22.09.2017
18:36:18
эт да. подумаю еще в сторону роутинга
Vasily Romanov
22.09.2017
18:43:18
не локнутся системные треды. если конечно не прибивать горутину к треду гвоздями
и это называется не роутинг, а шардинг
anton
22.09.2017
18:56:20
Google
anton
22.09.2017
18:56:46
Vasily Romanov
22.09.2017
18:58:46
Маловероятно что там будут блокирующие операции. В го их немного
В это м то вся фишка языка
anton
22.09.2017
19:01:32
да там что угодно может быть, если будет какой-нибудь IO
Vasily Romanov
22.09.2017
19:02:54
Смотря куда ио
makas
22.09.2017
19:17:13
golang нужен для бекенда , а для чего еще?
где его чаще всего используют?
Pawel
22.09.2017
19:19:30
AxiS
22.09.2017
19:23:53
makas
22.09.2017
19:24:42
Мерлин
22.09.2017
19:26:06
makas
22.09.2017
19:26:41
AxiS
22.09.2017
19:31:57
Мерлин
22.09.2017
19:33:02
на php)
Я помню серию статей на хабре про криптовалюту на пыхе
:3