@gogolang

Страница 522 из 1630
Александр
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

мин

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
а под какую задачу надо делать разное?
Кешировать нужно не все поля, а передавать в JWT все

Vasily Romanov
22.09.2017
11:47:37
тогда nil поковаться не будет с omit_empty

Александр
22.09.2017
11:48:40
или ещё вариант - использовать указатель
Да, думал об этом, но там поля int, string, придется коряво тогда поля инициализировать через взятие указателя

Daniel
22.09.2017
11:49:16
Кешировать нужно не все поля, а передавать в JWT все
тогда я бы на входе в кеш сделал бы кастомный маршалер. со второй структурой

Vasily Romanov
22.09.2017
11:49:49
Field int json:",omitempty"

Александр
22.09.2017
11:50:45
тогда я бы на входе в кеш сделал бы кастомный маршалер. со второй структурой
Ну то есть копировать в новую структуру нужные поля и маршалить ее?

Field int json:",omitempty"
Понял, это для указателей

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
А кто какими пакетами пользуется для создания VK Ботов для сообществ?
Гугл рекомендует https://github.com/go-telegram-bot-api/telegram-bot-api, но я пользуюсь самописным.

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

И отдельно еще в рабочем проекте для контроля бекграунд тасков

Greg
22.09.2017
18:13:55
Гоурутина + канал - модель хорошая, но слишком низкоуровнево, абстракции свои всегда наворачиваются

Акторная модель в этом случае дает группировку хорошую

anton
22.09.2017
18:18:10
да, разные ключи - конкурентно, а одинаковые - последовательно
но тебе же нет смысла плодить миллион горутин. если у тебя стрим всегда идёт, то по скорости обработки ты выше GOMAXPROCS всеравно не прыгнешь. может быть стоит рассмотреть роутинг обработки? если ключ int - то остаток от деления. ну или по хэшу

по сути некий статик пул горутин на обработку и в них роутишь по какому-то признаку

@troyanov https://github.com/Nyarum/noterius
пасиб! поковыряю..

John
22.09.2017
18:24:32
про роутинг думал, но чет не пошло. в соседнем чате посоветовали такой пакет https://github.com/moby/moby/tree/master/pkg/locker

anton
22.09.2017
18:29:02
про роутинг думал, но чет не пошло. в соседнем чате посоветовали такой пакет https://github.com/moby/moby/tree/master/pkg/locker
вариант с локами плох тем, что если у тебя прилетит 10 ключей, и ты их раскидаешь по 10-ти горутинам (например) и 9 из них у тебя локнутся. а если у тебя они все на разных тредах зашедулились - то локнешь треды

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
golang нужен для бекенда , а для чего еще?
https://github.com/gopherjs/gopherjs https://github.com/lxn/walk

AxiS
22.09.2017
19:23:53
golang нужен для бекенда , а для чего еще?
консольные утилиты пишут, в криптовалютном сообществе популярен, мобильные приложения еще бывает. Докер тот же на go В общем сфера применения обширна

Мерлин
22.09.2017
19:26:06
а в криптовалютном че популярен?
Я уже даже не знаю, на чём не популярно писать криптовалюты

Мерлин
22.09.2017
19:33:02
на php)
Я помню серию статей на хабре про криптовалюту на пыхе

:3

Страница 522 из 1630