Roman
Stepan
ну так если пакет другой, то только делать структуру экспортируемой
Alexey
Roman
чем помогут интерфейсы в проблеме обязательности установки полей?
тем что ты не экспортируешь тип имплементации из пакета а только сам интерфейс и конструктор функцию. Это предотращает возможность нежеланного мутирования объекта или его инициализацию вне конструктора
Stepan
Всмысле делать публичной?
с большой буковки
Alexey
с большой буковки
Та эт понятно) Типо смириться с тем что можно будет создать объект и не указать в него нужные параметры?
Alexey
Ну ни кто не обещал что будет легко)
Alexey
Спасибо) Бедем крутиться)
V
вроде как возвращать интерфейсы-то не комильфо
A
Возвращать интерфейсы?
A
Откуда?
V
выше советы про экспорт только интерфейса
A
Экспортить интерфейс это единственный нормальный вариант
V
accept interafces, return struct
A
Когда ты экспортируешь интерфейс - ты объявляешь контракт - принимаешь интерфейс
L
Никто в fasthttp не получал ошибку like: Temporary error when accepting new connections: accept tcp4 0.0.0.0:3230: accept4: too many open files
L
периодически возникает и уже не знаю че делать. лимиты все супер поднял
Daniel
а ulimit вы покрутили?
L
~$ ulimit unlimited
Daniel
ваши аргументы, Сэр?
трудно сравнивать возврат с nil
Daniel
~$ ulimit unlimited
ulimit -a, если самому лень голову включить
L
~$ cat /proc/sys/fs/file-max 3271666 ~$ ulimit -Hn 1000000 ~$ ulimit -Sn 1000000
L
В /etc/sysctl.conf net.core.somaxconn = 65535 net.core.rmem_default = 65536 net.core.wmem_default = 65536 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 fs.inotify.max_user_watches = 16777216
V
ваши аргументы, Сэр?
например более простоя навигация, не к интерфейсу, а к конкретному методу 🙂
L
nginx показывает в среднем 5-10k req/sec
Roman
трудно сравнивать возврат с nil
ну nil это конечно проблема да и performance слегка ниже, но это единственный безопасный вариант и я часто это видел. Ибо таки экспортировать struct с приватными полями не позволит устанавливать параметеры, а публичные поля вносят опасность того что пользователь накосячит, не укажет определённые поля и библиотека полетит
L
но такая ошибка возгникает раз в день-два. хз как такое дебажить(
L
и помогает перезагрузка приложения только
Michael
и помогает перезагрузка приложения только
TL;DR а defer есть ли и что там написано?
L
TL;DR а defer есть ли и что там написано?
defer нету. приложение не завершается. В этот момент занимаем аппликухой память вырастает и приходится релоадить
Michael
Замыкания есть? Профилировать пробовали?
Roman
ээмммм, сравнивать интерфейсы же можно?
Roman
да, вроде можно: https://play.golang.org/p/xqRhuvowNem
Daniel
но такая ошибка возгникает раз в день-два. хз как такое дебажить(
или у вас текут дескрипторы, или у вас таки плохо настроены лимиты за количеством дескрипторов можно следить с помощью runtime метрик (я экспортить их можно с помощью прометея) за лимитами можно следить с помощью ulimit
Anonymous
понимаю что вопрос странный но нет ли механизма конкатенации json типа как мне на вход пришло json с 5 атрибутами я например его резанул до 3 нужных мне атрибутов потом добавил новых 5 своих и отдал на выход совй json c 8 нужными сейчас получается для каждого json нужно сначала свою структуру делать и еще на запутаться в передаче между ними данных
Daniel
да
Daniel
свою и не запутаться
Daniel
на самом деле - если единственное, что вы делает с json, это конкатенируете его - можно его анмаршалить в interface{}
Daniel
это приведет к созданию map[string]uinterface{}, и в значениях будут числа и строки
Daniel
ну или к []map[string]interface{}, если у вас такой json
Daniel
но делать так для нормальной работы нежелательно
Илья
на самом деле - если единственное, что вы делает с json, это конкатенируете его - можно его анмаршалить в interface{}
я в таких кейсах топлю за map[string]json.RawMessage, чтобы не трогать значения вообще
Daniel
а вложенные мапы?
Kirill
ну или к []map[string]interface{}, если у вас такой json
(или к []string, []int, []bool, []interface{} и другие валидные типы для корня json)
Daniel
а про fasthttp расскажи нам в соседнем чатике :)
Daniel
[]int, кстати, невалидный вариант
Илья
а вложенные мапы?
если мерджат только первый уровень, то why bother :)
Daniel
[]float64 валидный
Daniel
https://t.me/proGO
Илья
там же раньше флуд был страшный
Roman
https://t.me/proGO
а почему у нас их кстати 2? какая-то историческая причина?
Daniel
историческая, да
Viktor
там же раньше флуд был страшный
там 1800 человек, тут 1700 и по ощущениям уровень флуда примерно одинаковый
Daniel
у того, второго, протеялся куда-то создатель
Daniel
поэтому я все собираюсь написать бота, который переведет всех в ro, и опубликует ссылку на этот чат
Daniel
но - не собрался пока
Roman
good to know, значит буду предпочитать эту группу
Daniel
но бота-то мы туда воткнуть не можем
Aleksandr
надо через клиентский апи. только что, чтобы не забанили?
Daniel
угу
Kirill
@toby3d help please
Maxim
а, чо
Мерль
на го пока нету
Kirill
нужно соседний чатик пристрелить, чтоб не мучался
Daniel
нужно от имени админа пройтись по юзерам чатика и проставить всем RO
Aleksandr
есть биндинги к TDLib у питона
да я вот прям щас гошные биндинги причесываю чтобы в паблик выложить
Maxim
В Bot API нет возможности получить всех мемберов текущего чата. Нужно чтобы тот проявил хоть какую-то активность, а бот это заметил