Alexander
тут не скажу, зависит от нагруженности: где-то 1 будет достаточно, где-то 10, где-то можно десятки
Alexander
))) короче была ситуация, куча пхп процессов, коннектятся к мускулю. живут долго, но с базой 1% времени работают. и вот там была схема: подключился - запрос(или чуть больше) - отключился. я профайлинг внедрил - смотрю вот это дрочево подключился - отключился занимает значительное время. убрал - через минуту к серваку с бд было не достучаться никак)
Alexander
так что и сеть тоже засирается
Alexander
не достучаться в смысле он даже пинговался с трудом
Rustam Fozilov
go get github.com/unidoc/unipdf/v3
Эта библиотека платная, не?
Rustam Fozilov
Нету бесплатных хороших библиотек для того что парсить pdf из html, либо другой валидный способ?
Rustam Fozilov
Пробовал wkhtmltopdf там проблема с вставкой изображений
Pavel
не достучаться в смысле он даже пинговался с трудом
Если мне не изменяет память, то у sql баз данных в настройках всегда есть настройка на ограничение количества коннектов, и не просто так она существует и включена по умолчанию
Alexander
Если мне не изменяет память, то у sql баз данных в настройках всегда есть настройка на ограничение количества коннектов, и не просто так она существует и включена по умолчанию
да да. но в данном случае это не спасло. все-таки сначала идет сетевое взаимодействие с сервером и оно раньше успело забиться, чем база смогла отшивать новые коннекты)
Evgeny
так, а объясните пожалуйста языковую конструкцию
Evgeny
func ParseBodyJSON(r *http.Request, out interface{})
Evgeny
вот этот out interface{} - это как?
Andrey
это значит, что все что угодно
Evgeny
а как это компилируется?
Evgeny
я там посмотрел дальше по сорцу, там вообще до рефлекшена доходит
Evgeny
я даже не знал что го умеет в рефлекшен! нахрена тогда моки генерировать, спрашивается
Andrey
ну давай подумаем, у тебя есть разные json
Andrey
и ты имеешь под них разные структуру с тэгами
Evgeny
да
Evgeny
оно типа при компиляции соберет мне нужные вызовы, как темплейты в крестах?
Andrey
ты бы хотел писать на каждый json свой парсер?)
Evgeny
пожалуйста нет ))
Andrey
оно типа при компиляции соберет мне нужные вызовы, как темплейты в крестах?
не на этапе компиляции, а в рантайме. он смотрит что у тебя за структура и пытается заматчить с тем json, что ты предоставил
Evgeny
а, окей, понял
Evgeny
спасибо
Alexander
если не вплане генерить структуру, то он не нужен, есть jsoniter - тот же интерфейс, что у стандартного, но тупо в 2 раза быстрее
Alexander
вот просто название пакета меняешь, и быстрее в 2 раза становится
Alexander
и без всяких специально сгенеренных парсеров
Andrey
ну. easyjson есть)
есть много чего, но когда ты откроешь книгу по Го, то там ничего из этого не будет, а все примеры будут на стандартной либе
Null
GO meetup 1. Graceful Shutdown или как красиво уйти - Сапогов Никита, Ситилинк Расскажу про то как изящно завершать приложение, учитывая большое кол-во внутренних и внешних факторов, а так же расскажу про нашу маленькую абстракцию которая намв этом помогает. 2. Дженерики на практике: производительность и вот это вот всё - Керножицкий Максим, СберМегаМаркет Рассмотрим реализацию дженериков в go 1.18 с позиции производительности и усложнения конструкций языка 3. Круглый стол - Организация команды в условиях кризиса В условиях информационного хаоса не хватает позитивной и полезной информации. Поэтому сразу после Go meetup 20 апреля мы решили провести круглый стол, где поговорим, как организовать команду в условиях кризиса. ➖➖➖ 🗓 26 апреля, начало в 19:00 мск, Вторник 🌐 ОНЛАЙН ✅ Регистрация на мероприятие
Igor
Добрый день. Можно ли подключатся к кастомному package по условию? Написал пакет для сервисов, с помощью которого сервисы общаются между собой через apache kafka. Хочу чтобы при первоначальном одновременном перезапуске сервисов , сервисы проверяли доступность Кафки. Если Кафка недоступна, то сервисы подключаются к другому пакету , через который общаются по http. Методы в пакетах одноименные. Как можно реализовать подключение пакетов по условию?
Maks
Пакедж импортится в момент билда
Ron Mount
гав
Igor
интерфейс сделай и подсовывай разные имплементации
я как понимаю, каждый раз перед вызовом метода пакета придется делать проверку условия? Или нет?
Anonymous
есть годные апи для поиска торрент файлов?
Alexander
я как понимаю, каждый раз перед вызовом метода пакета придется делать проверку условия? Или нет?
Сделай метод Connect() error в своём интерфейсе, потом если имплементация с Кафкой возвращает ошибку при вызове, ты подменяешь её имплементацией по хттп
Herman
последняя не зашла
Q
кто читал Цукалоса? хочу отзыв реальный
Null
📊 Табличные тесты в Go с использованием Gomock Чтобы эффективнее тестировать работу программы, можно использовать табличные юнит-тесты. В этой статье пошагово рассказываем, как писать такие тесты с помощью фреймворка Gomock. Подробнее @Golang_google
Q
я читал, норм
но есть получше или как?)
Anonymous
но есть получше или как?)
да не, норм, все равно в книгах супер подробно не пишут
Anonymous
@banofbot
Anonymous
有需要聯系我TG @qiuqiuni2002
umdnt 📻
有需要聯系我TG @qiuqiuni2002
китайцы в телеграме? впервые вижу.
Иван
@banofbot
mad
Всем привет! Нахожусь в поиске модуля для кэша, подобного тому, который работает в nodejs в сache-manager. А именно. Данные в кэше должны обновляться. Скажем, простой rest api, где данные первый раз запрашиваются из БД и потом отдаются клиенту и складываются в кэш. Далее, кэш должен обновляться тем же запросом, что инициировал клиент. Все остальные запросы от клиента получают ответ из кэша. Как такое написать я представляю. Но, прежде, чем начинать, хотелось бы понять, может готовая библиотека есть для этого. Сегодня вот прос cache-manager подсказали, чот мысль появилась, может уже всё написанно до нас) Спасибо!
Andrey
Хранить такое в памяти является возможно и быстрым решением, но не способным на горизонтальное масштабирование. А вдруг тебе потом потребуется 2 и более рабочих приложений, придется переписывать все снова. Так что тебе подойдет любое NoSQL решение (например редис)
mad
Хранить такое в памяти является возможно и быстрым решением, но не способным на горизонтальное масштабирование. А вдруг тебе потом потребуется 2 и более рабочих приложений, придется переписывать все снова. Так что тебе подойдет любое NoSQL решение (например редис)
вопрос в автообновлении данных, на самом деле. Где именно хранить - не шибко важно. Пришел рест запрос - отдали из кэша. 5 сек запроса на рест не было? Убили кэш. Чем обновлять кэш? Как очистить данные? Вот, что беспокоит.
mad
система, куда требуется такой кэш -не предполагает, что будет установлен какой-либо доп софт. И взаимодействия с внешними системами крайне не желательны. Бог с ним с редисом. С мемкешем. Обновлять данные как? Как то надо следить, есть ли запрос от клиента? Есть - обновляй. Нет? убей через 5сек.
Ron Mount
for { }
Ron Mount
Если бы григорий остер жил в наше время, он бы учил хранить токены в коде
mad
в мапу пишешь и каждые 5 секунд шелудер чекает время последнего обращения
да. Это и является тут очевидным решением. Надо две рутины? 1 - обновляет кэш? 2 - смотртит время жизни и чистит не нужное. 3 - как кэш обновлять?: Еще рутину?)
Ron Mount
кеш глобалкой
Ron Mount
mad
а это прям реально нужное? просто запрос в базу по скорости не всегда проигрывает. глупо наивно полагать, что вот мы закэшим и получим профит
запрос к БД - от 1 до 5 сек. Запрос 1 раз в секунду. Если запрос 2-5 секунд - ждем окончания, запрашиваем через 1 сек. Идея - написать прокладку межу приложением и БД, которая кэшировала и отдавала бы все сразу
mad
1 - у тебя же кэш обновляется при добавлении данных или при первом запросе на получение
первый раз запросили -сходили в бД. Второй раз и последущие - берем их кэша. А там нужно свежие данные класть
mad
1. Если это что-то тяжелое, то ок 2. Если это получить запись по айдишнику и 1 секунда, то...
тяжелое. На тысячи полторы знаков запрос, с пачкой джойнов.
mad
так они же обновляются через твое приложение
это если я его написал. Дизайн я понимаю. Я ищу готовый модуль, что бы не накручивать и не тратить время)
mad
с какой стороны?
Herman
можно нагружать этой штукой https://github.com/wg/wrk
mad
на самом деле БД локально живет. К ней локально обращается прилоение. 1 раз в секунду на одного клиента. 10 клиентов? 10 запросов в секунду. И вот задержки в 2-5 сек - критичны. Надо сократить. А переписать запрос сейчас не представляется возмоным.
Herman
не
Herman
странно что там не написано
Herman
https://medium.com/@felipedutratine/intelligent-benchmark-with-wrk-163986c1587f тут в начале есть
Herman
я через brew ставил
mad
а AB больше не подходит?
Alexander
на самом деле БД локально живет. К ней локально обращается прилоение. 1 раз в секунду на одного клиента. 10 клиентов? 10 запросов в секунду. И вот задержки в 2-5 сек - критичны. Надо сократить. А переписать запрос сейчас не представляется возмоным.
кэш ответа можно кстати в базе и хранить. просто при старте надо будет ждать каждый раз пока кэш сформируется, а вытащить из таблицы с мало записей, ну сколько? 1мс топ. ну и тогда это может быть отдельный скрипт. не лучшее решение все в одно пытаться запихнуть