Daniel
\o
Roman
type SimpleGraph struct {
mutex sync.RWMutex
adjacencyList map[interface{}]map[interface{}]struct{}
v, e int
}
Roman
красотень
саша
K P A C U B O
Daniel
это ты где нашел?
aadz
и в чем проблема?
Да я вот задумался и уже не уверен. Ассемблерный код смотреть надо, короче. Но, в любом случае, там константа как-то не выглядела так, что она должна быть глобальной
Daniel
это другое
Daniel
пенальти на константах я что-то не наблюдал ни разу
Roman
Daniel
он и есть
aadz
он и есть
если так, то пофиг, где оно определено. defne он и есть define
L
Ребят, вот ловлю в fasthttp вот такую строанную ошибку:
> error when serving connection "/tmp/my.sock"<->"@": write unix /tmp/my.sock->@: write: broken pipe
перед прложением стоит nginx как реверс прокси
L
приложение начинает опять кушать 10 гигов и высирать такие ошибки
Daniel
1. нужен ли вам там nginx
L
нужен для ssl
Daniel
а просто перейти на эллиптические кривые?
L
еще он для балансинга между инстансами на ноде
Daniel
RSA в go, действительно, вдвое медленнее, чем в openssl
Daniel
но с EC, вроде, этих проблем нет
Daniel
2. 10 гигнов - это надо смотреть, что у вас не освобождается
Daniel
мы интенсивно юзаем UDS, и у нас нет с ним проблем
Daniel
аправда, мы не юзаем fasthttp
Daniel
упираемся мы в гошечке обычно в json
саша
Кстати, а что там по обратной совместимости в Go2?
саша
Ведь после дженериков придётся всю стдлиб переписать
Daniel
нет никакого go2
L
Daniel
боьше, чем мне было надо
саша
aadz
саша
> Go 1 and Go 2 code must be able to interoperate in programs with ease.
Наес. То есть обратную совместимость сломают, но оставят какую-то интероперабельность. Ну чотко.
Daniel
aadz
он и есть
Да, судя по всему, так и есть. По крайней мере, целочисленная константа выглядит как просто define в итоге
Vladimir
Чуваки, вы обсуждение шкуру неутвержденного драфта
L
да ладно.
по крайней мере соотношение req-sec/cpu было явно выше
L
@onokonem а ткните мну ссылкой по этим вашим эллиптическим кривым плиз
aadz
да
Vadim
Aleksandr
у меня есть структура с n полями, сериализуемая в json. Мне нужно ее маршалить в json вида {"@type": "myType", ...other fields...}
то есть инжектить на стадии маршалинга поле @type с заданным значением. Учитывая что в полях могут быть подобные же структуры, куда тоже надо инжектить тип, надо реализовать кастомным маршалером. Но самый просто вариант - смаршалить структуру, а потом в полученные байты запихнуть еще одно поле - не работает, т.к. кастомный маршалер логично вызывается циклически.
Есть какое-то простое решение, которое мне на ум не пришло? (под простым решением я не имею в виду вручную маршалить всю структуру)
Daniel
а если общую теорию - то в вике статья вполне годная
Vladislav
Daniel
Aleksandr
Aleksandr
в случае если не заполнено, я сам ее заполняю
Daniel
научить кастомный маршалер заполнять поле
Aleksandr
научил) но как теперь эту структуру замаршалить? циклический маршалинг
Daniel
ну я бы сделал как
Daniel
а точно там цикл получается?
Daniel
я давненько в ту сторону не смотрел, но, вроде, этот фокус получался
Aleksandr
Daniel
https://stackoverflow.com/questions/43176625/call-json-unmarshal-inside-unmarshaljson-function-without-causing-stack-overflow
Aleksandr
супер, работает
Aleksandr
спасибо
Aleksandr
да, кстати, это то же что чуть выше предложили
Aleksandr
Daniel
радость в том, что оптимизатор конверсию там выпиливает
Roman
Vadim
Daniel
ну я вот не против, чтобы сломали
aadz
и будет, как два питона
Roman
они же ясно и понятно объяснили что не хотят подобнодо сценария как Python 2/3, должна сохраниться экосистема Go1 но с фичами Go2
если они сломают обратную совместимость то получать 2 экосистемы и большую такую проблему
Roman
ну я вот не против, чтобы сломали
что-бы поломать большую часть библиотек и тащить ещё некое время Go 1 как лишний груз пока все перейдут на новую экосистему? ну нахер..
aadz
А про суслика v.2 ничего не говорили? Может, его тогда уже на барсука, например, поменять?
Daniel
L
aadz
угу
Kirill
aadz
ну, если совместиость ломать, то ломать полностью. Тогда хоть все понятно будет
aadz
И обязатально - барсука. Они с сусликами несовместимы по образу жизни
Roman
потому-что люди сидели на Python 2, но они придумали Python 3 который якобы лучше, но у людей приложения и библиотеки на Python 2...
если у тебя проект зависит от А, Б и В, но в то время как А и Б перешли на Go 2 а В ещё нет и не скоро вообще перейдёт, но без В вообще никак - то ты останешься на Go 1, который оффициально поддерживают ещё долгое время.
а потом тебе понадобится написать Г и поскольку у тебя проект ещё на Go 1 ты напишешь Г для Go 1
а тем кому нужен будет Г будут вынуждены вернуться в Go 1 либо написать снова для Go 2
это полный пиздец, не делайте так, не повторяйте ошибки питона..