@gogolang

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

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

Anatolii
29.08.2018
14:18:59
Type Driven Development
какой тут type driven?

система не проконтролирует что Вася забыл отпустить лок

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

по поводу Type Driven Development есть даже книга

но там не про го

Anatolii
29.08.2018
14:21:11
система не проконтролирует что Вася забыл отпустить лок
и что вася не пытается взять один и тот же лок 2 раза

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

Alexander
29.08.2018
14:23:29
да тут линейных не надо
Любому нормальному человеку очевидно, что линейные типы нужны везде o/

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
это другое

пенальти на константах я что-то не наблюдал ни разу

Alexander
29.08.2018
14:27:07
пенальти на константах я что-то не наблюдал ни разу
Да, может быть это define, по сути :) Говорю же, не проверл

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
аправда, мы не юзаем fasthttp
стандартный net? сколько может на ядро req/sec?

2. 10 гигнов - это надо смотреть, что у вас не освобождается
я таки сетую на fasthttp, потому как инстансы рядом кушают на порядок меньше и не выплевывают такие ошибки

Google
Daniel
29.08.2018
14:54:25
стандартный net? сколько может на ядро req/sec?
я не помню уже. упереться именно в него не удавалось

упираемся мы в гошечке обычно в json

Lesha
29.08.2018
14:55:24
упираемся мы в гошечке обычно в json
такая же ситуация. но у меня много клиентов стучатся и главное что очень много уникальных, т.е. какой-нибудь кипалайв не очлень спасает

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
нет никакого go2
есть черновики

Lesha
29.08.2018
14:57:10
боьше, чем мне было надо
у сменя сейчас 16 инстансов и на каждом 1-3k req/sec. и когда я делал на net, его не хватало

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

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

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

Alexander
29.08.2018
15:10:00
rand.Seed достаточно вызвавть один раз. И константы лучше поближе определять, так как глобальные лежат далековато
А еще всегда убирай все лишнее из цикла! var land landscape там точно не нужно, можешь перед циклом объявить, ты в любом случае ему значение присвоишь на каждой итерации https://play.golang.org/p/2cGwo-jy1IK

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

@onokonem а ткните мну ссылкой по этим вашим эллиптическим кривым плиз

Zver
29.08.2018
15:15:22
Да, судя по всему, так и есть. По крайней мере, целочисленная константа выглядит как просто define в итоге
Целочисленная константа может вообще нигде не храниться, точнее память специально под нее не выделяться, просто данные будут засунуты в команду.

Alexander
29.08.2018
15:15:55
да

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

Daniel
29.08.2018
15:29:08
@onokonem а ткните мну ссылкой по этим вашим эллиптическим кривым плиз
а что именно нужно? если про то, как это включить в go, так это в гошечке включить - так это в tls.Config. CipherSuites

а если общую теорию - то в вике статья вполне годная

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
радость в том, что оптимизатор конверсию там выпиливает

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 ничего не говорили? Может, его тогда уже на барсука, например, поменять?

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

Alexander
29.08.2018
15:51:58
угу

Roman
29.08.2018
15:52:20
я бы не отказался от нового языка. совсем нового
опять всё снова? ну тогда посмотри на Python 2/3, они тоже этого хотели и получили полный пздц

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

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