
Daniel
29.08.2018
14:18:04
пока Mutex<MyStruct> для меня когнитивную нагрузку только увеличил

Alexander
29.08.2018
14:18:32
Значение обёрнутое в Mutex даёт тебе знать о том, что данные тут читать/изменять без лока нельзя. Более того, система проконтролирует, чтобы никакой Вася не забыл об этом.

Anatolii
29.08.2018
14:18:59
система не проконтролирует что Вася забыл отпустить лок

Google

Anatolii
29.08.2018
14:19:56
в хаскеле есть STM - но он намного приятнее и там Вася не забудет лок отпустить
по поводу Type Driven Development есть даже книга
но там не про го

Roman
29.08.2018
14:20:29

Anatolii
29.08.2018
14:21:11

Alexander
29.08.2018
14:21:13

Anatolii
29.08.2018
14:21:30
да тут линейных не надо

Alexander
29.08.2018
14:23:29

Daniel
29.08.2018
14:23:58
\o

Roman
29.08.2018
14:25:35
type SimpleGraph struct {
mutex sync.RWMutex
adjacencyList map[interface{}]map[interface{}]struct{}
v, e int
}
красотень

Alexander
29.08.2018
14:25:56
K P A C U B O

Daniel
29.08.2018
14:25:58
это ты где нашел?

Google

Alexander
29.08.2018
14:26:01
и в чем проблема?
Да я вот задумался и уже не уверен. Ассемблерный код смотреть надо, короче. Но, в любом случае, там константа как-то не выглядела так, что она должна быть глобальной

Daniel
29.08.2018
14:26:14
это другое
пенальти на константах я что-то не наблюдал ни разу

Roman
29.08.2018
14:26:57

Alexander
29.08.2018
14:27:07

Daniel
29.08.2018
14:27:31
он и есть

Alexander
29.08.2018
14:28:14
он и есть
если так, то пофиг, где оно определено. defne он и есть define

Lesha
29.08.2018
14:48:59
Ребят, вот ловлю в fasthttp вот такую строанную ошибку:
> error when serving connection "/tmp/my.sock"<->"@": write unix /tmp/my.sock->@: write: broken pipe
перед прложением стоит nginx как реверс прокси
приложение начинает опять кушать 10 гигов и высирать такие ошибки

Daniel
29.08.2018
14:49:50
1. нужен ли вам там nginx

Lesha
29.08.2018
14:49:56
нужен для ssl

Daniel
29.08.2018
14:50:18
а просто перейти на эллиптические кривые?

Lesha
29.08.2018
14:50:41
еще он для балансинга между инстансами на ноде

Daniel
29.08.2018
14:50:50
RSA в go, действительно, вдвое медленнее, чем в openssl
но с EC, вроде, этих проблем нет
2. 10 гигнов - это надо смотреть, что у вас не освобождается
мы интенсивно юзаем UDS, и у нас нет с ним проблем
аправда, мы не юзаем fasthttp

Lesha
29.08.2018
14:52:55

Google

Daniel
29.08.2018
14:54:25
упираемся мы в гошечке обычно в json

Lesha
29.08.2018
14:55:24

Alexander
29.08.2018
14:55:24
Кстати, а что там по обратной совместимости в Go2?
Ведь после дженериков придётся всю стдлиб переписать

Daniel
29.08.2018
14:56:05
нет никакого go2

Lesha
29.08.2018
14:56:07

Daniel
29.08.2018
14:56:28
боьше, чем мне было надо

Alexander
29.08.2018
14:56:44

Alexander
29.08.2018
14:56:56

Lesha
29.08.2018
14:57:10

Alexander
29.08.2018
14:57:48
> Go 1 and Go 2 code must be able to interoperate in programs with ease.
Наес. То есть обратную совместимость сломают, но оставят какую-то интероперабельность. Ну чотко.

Daniel
29.08.2018
14:58:42

Alexander
29.08.2018
14:59:21
он и есть
Да, судя по всему, так и есть. По крайней мере, целочисленная константа выглядит как просто define в итоге

Vladimir
29.08.2018
14:59:49
Чуваки, вы обсуждение шкуру неутвержденного драфта

Alexander
29.08.2018
15:10:00

Lesha
29.08.2018
15:11:55
да ладно.
по крайней мере соотношение req-sec/cpu было явно выше
@onokonem а ткните мну ссылкой по этим вашим эллиптическим кривым плиз

Zver
29.08.2018
15:15:22

Alexander
29.08.2018
15:15:55
да

Google

Vadim
29.08.2018
15:19:03

Aleksandr
29.08.2018
15:20:31
у меня есть структура с n полями, сериализуемая в json. Мне нужно ее маршалить в json вида {"@type": "myType", ...other fields...}
то есть инжектить на стадии маршалинга поле @type с заданным значением. Учитывая что в полях могут быть подобные же структуры, куда тоже надо инжектить тип, надо реализовать кастомным маршалером. Но самый просто вариант - смаршалить структуру, а потом в полученные байты запихнуть еще одно поле - не работает, т.к. кастомный маршалер логично вызывается циклически.
Есть какое-то простое решение, которое мне на ум не пришло? (под простым решением я не имею в виду вручную маршалить всю структуру)

Daniel
29.08.2018
15:29:08
а если общую теорию - то в вике статья вполне годная

Vladislav
29.08.2018
15:33:28

Daniel
29.08.2018
15:36:29

Aleksandr
29.08.2018
15:37:47

Admin
ERROR: S client not available

Aleksandr
29.08.2018
15:38:02
в случае если не заполнено, я сам ее заполняю

Daniel
29.08.2018
15:38:17
научить кастомный маршалер заполнять поле

Aleksandr
29.08.2018
15:38:50
научил) но как теперь эту структуру замаршалить? циклический маршалинг

Daniel
29.08.2018
15:39:09
ну я бы сделал как
а точно там цикл получается?
я давненько в ту сторону не смотрел, но, вроде, этот фокус получался

Aleksandr
29.08.2018
15:41:44

Daniel
29.08.2018
15:42:05
https://stackoverflow.com/questions/43176625/call-json-unmarshal-inside-unmarshaljson-function-without-causing-stack-overflow

Aleksandr
29.08.2018
15:44:03
супер, работает
спасибо
да, кстати, это то же что чуть выше предложили

Google

Daniel
29.08.2018
15:47:30
радость в том, что оптимизатор конверсию там выпиливает

Roman
29.08.2018
15:48:30

Vadim
29.08.2018
15:48:51

Daniel
29.08.2018
15:48:52
ну я вот не против, чтобы сломали

Alexander
29.08.2018
15:49:12
и будет, как два питона

Roman
29.08.2018
15:49:45
они же ясно и понятно объяснили что не хотят подобнодо сценария как Python 2/3, должна сохраниться экосистема Go1 но с фичами Go2
если они сломают обратную совместимость то получать 2 экосистемы и большую такую проблему
ну я вот не против, чтобы сломали
что-бы поломать большую часть библиотек и тащить ещё некое время Go 1 как лишний груз пока все перейдут на новую экосистему? ну нахер..

Alexander
29.08.2018
15:51:11
А про суслика v.2 ничего не говорили? Может, его тогда уже на барсука, например, поменять?

Daniel
29.08.2018
15:51:51

Lesha
29.08.2018
15:51:52

Alexander
29.08.2018
15:51:58
угу

Roman
29.08.2018
15:52:20

Kirill
29.08.2018
15:52:26

Alexander
29.08.2018
15:53:00
ну, если совместиость ломать, то ломать полностью. Тогда хоть все понятно будет
И обязатально - барсука. Они с сусликами несовместимы по образу жизни

Roman
29.08.2018
15:55:40
потому-что люди сидели на Python 2, но они придумали Python 3 который якобы лучше, но у людей приложения и библиотеки на Python 2...
если у тебя проект зависит от А, Б и В, но в то время как А и Б перешли на Go 2 а В ещё нет и не скоро вообще перейдёт, но без В вообще никак - то ты останешься на Go 1, который оффициально поддерживают ещё долгое время.
а потом тебе понадобится написать Г и поскольку у тебя проект ещё на Go 1 ты напишешь Г для Go 1
а тем кому нужен будет Г будут вынуждены вернуться в Go 1 либо написать снова для Go 2
это полный пиздец, не делайте так, не повторяйте ошибки питона..

Никита
29.08.2018
15:56:51
Нет ну обратная совместимость скорее всего остаётся
В Го вроде как нет ничего фундаментно плохого/неправильного, ради чего ломали бы обратную совместимость

Roman
29.08.2018
15:58:38
она должна оставаться, ради сохранения прекрасной экосистемы.
и этого можно добиться. Генерики, модули и дополнительные механизмы обработки ошибок могут лечь поверх Go1, вроде Russ Cox об этом и говорил что не будет релиза "Go 2.0", будет постепенное добавление новых фич в Go 1