• Что происходит с анонимной GoRutines после её завершения?

    @calculator212
    сборщик мусора их убрать не успевает
    В целом в таком случае можно попробовать вызывать сборщик принудительно, если не поможет то тут либо пересматривать как программа выделяет ресурсы, либо докидывать память.
    Те. сама горутина за собой не приберается и это делает GC
    Так и есть
    Т.о. получается в мелких задачах с большим колличеством потоков можно упасть в лимит памяти т.к. GC не успевает прибраться и прихдится его вызывать явно.
    Упасть из-за нехватки памяти можно и в программе и без горутин, сами по себе они не занимают много памяти. И в целом если горутин много, то программы чаще упираются в процессор чем в память. И в целом если горутин много и их нужно ограничивать, то проблему часто решает воркер пул, который не позволит создать больше горутин чем задано. Честно говоря я ни разу не встречался с тем, что проблемы были имеено в горутинах, обычно проблемы либо в архитектуре, либо в целом с выделением памяти
    Написано
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Everything_is_not_so_bad, так то что вы перичислили не ORM, по сути все запросы нужно самому писать. В squirell есть свои плюсы, но если запрос сложный то нужно смотреть что он генерит, т.к. некоторые параметры в нём сортируются на этапе построения запроса, в какой-то момент это привело к довольно неожиданным багам
    Написано
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Александр Павлюк, конкретно генерация sql это в целом отдельная тема, сложные запросы в целом часто пишут на sql без ORM. В большинстве случаев запросы все же не особо сложные и ORM +/- генерит их нормально. Если говорить про ORM, то есть ent и sqlboiler, но я честно говоря не исследовал их глубоко, т.к. использую sqlc, как по мне конкретно в го проще самому писать запросы, чем использовать орм
    Написано
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Зачем иметь бутылочное горлышко в виде orm
    ORM основанные на генерации кода, по сути не являются бутылочными горлышками и не сказать, что сильно как-то замедляют код
    Написано
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Everything_is_not_so_bad,
    ага. А что?
    Наверное тогда знаете, что ORM на уровне например hibernate в го просто нет и в большинстве случаев легче написать самому запрос, чем ковыряться среди ORM
    Написано
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @calculator212
    Everything_is_not_so_bad,

    Для самоутверждения
    Хочется острых ощущений
    Это круто
    Вы писали на го, когда-нибудь?
    Написано
  • Доступ к методам и функция уровнем выше?

    @calculator212
    должен вызвать функцию ошибки, в которую требуется передать Поле из верхней структуры
    Тут либо редизайн, либо можно просто добавить/перенести поле в дочернюю структуру, т.к. в го используется встраивание, то всегда можно будет получить имя родителя из ребенка. Типа такого, зачем вам указатель тут нужен я хз, или вы собираетесь менять имя родительского элемента?
    <code lang="go">
    type parent struct {
    child
    }
    
    type child struct {
    	parentName string
    }
    </code>
    Написано
  • Стоит ли начинать учить программирование с Golang?

    @calculator212
    Danil54566,
    он новый, простой и на него неплохой спрос
    Это всё так, но есть свои особенности, джунам тяжелее найти работу относительно Java или Python например. Нужно писать относительно много своего кода, который в других языках по сути уже встроен в фреймворк. В последнее время материалов по го стало достаточно много, но всё равно многие моменты можно почитать только в оф доке, что для новичка часто бывает скучным и сложным. Ну и в целом без представления о сетях/бд я бы не советовал бы лезть в го.
    Написано
  • Где хранить сессионные данные?

    @calculator212
    namee,
    . Старые неиспользуемые профили мы удаляем через полгода.
    и
    От того и частое сохранение прогресса на каждое подозрение о зкарытии окна.
    А зачем хранить все профили за полгода(я не докапываюсь просто интересно)? В этом случае redis не стоит использовать. В таком случае возможно имеет смысл держать в памяти/БД 5-10 сейвов, а остальное складировать в архив на сервере
    Написано
  • Где хранить сессионные данные?

    @calculator212
    namee, тут стоит протетестить это, в целом кейс не совсем стандартный. Т.к. в бд файлы редко кто-то хранит
    Как он десятки миллионов записей хранить будет
    На сайте написано, что с 250кк записями он справляется. Но я не пойму откуда у вас берется 10кк когда у вас всего профилей 100к?
    Написано
  • Где хранить сессионные данные?

    @calculator212
    namee,
    zip.
    Я имел ввиду, что конкретно там хранится, но если в целом предполагается что данные прям так будут храниться, то я совсем не понимаю в чем смысл использовать mysql тут, логичнее всего использовать условный redis, который будет каждый раз будет обновлять по ключу профиль. Есть еще minio s3, но тут вряд ли этот кейс. В целом можно посмотреть еще в сторону оптимизации самих профилей, если там не собирается гора статистики, то в целом непонятно зачем отправлять 100кб сжатых данных по 3 раза в минуту
    Написано
  • Где хранить сессионные данные?

    @calculator212
    Что из себя вообще представляет профиль? И сколько данных из 100кб реально обновляется?
    Написано
  • Почему мой телеграм-бот ломается при деплое?

    @calculator212
    sssterben, так я про яндекс клауд, если там запускать без контейнера, то появляются проблемы?
    Написано
  • Почему мой телеграм-бот ломается при деплое?

    @calculator212
    А если без контейнера запускать, появляется ошибка?
    Написано
  • Какие движки поддерживают БД на сервере и текстовые файлы?

    @calculator212
    Сергей,
    Про стандартные средства языка - а пустит ли меня движок "внутрь", чтобы я там что-то писал на языке? Вот в чем вопрос.
    Почти любой движок поддерживает какой-либо ЯП - это означает, что программист может писать свой код для взаимодействия с игрой или ОС. В юнити это C#, в UE с++, в godot несколько языков на выбор.
    Речь про создание/чтение и сохранение txt файлов на сервере.
    В таком случае это не особо имеет отношение к движку, из движка нужно будет делать только HTTP запросы на сервер(можно конечно и другой протокол выбрать), а на сервере будет работать уже другая программа, которая будет заниматься чтением/записью файлов, формированием отчетов, сбором статистики и т.д.
    Написано
  • В стандартной библиотеке go есть ли инструменты для работы с многомерными срезами/массивами?

    @calculator212
    545454valera,
    но ведь питонисты и джависты изначально тоже не знают предметную область.
    Так и есть, но у одних есть джанго, а у других Spring, есть общепринятые ORM(в го часто нужно писать запросы самому), которые в целом позволяют уйти от написания sql в большинстве случаев, даже из реальной практики пример, знаю людей которые используют джанго и не знают как устроена аутентификация, в го с этим сложнее т.к. в принципе считается, что программист может переключиться между фреймворками почти безболезненно, в питоне/яве в целом такая ситуация довольно редкая.
    В стандартной библиотеке go есть ли инструменты для работы с
    Кстати многих удобных инструментов/библиотек нет, которые есть в других языках, так что много приходиться писать руками без готовых либ, либо их допиливать. В других языках такое тоже конечно есть, но по моему опыту этого меньше. Так что если не готовы писать свои инструменты, то го скорее всего вам не очень подходит.

    И часто у джунов есть альтернативные варианты для входа помимо бэка. Но думаю главное, что в яве и питоне попроще найти работу джунам, необязтельно бэк, потом с опытом в разы проще свичнуться в другую область. На hh проверил вакансии, ява без опыта ~340 вакансий, питон ~600, на го ~30. В общем человеку без опыта можно найти работу на го, но это сложно в большинстве случаев в го приходят из других языков.

    Правда словил депрессняк от этого, но это уже другая тема.
    Ну на мой взгляд не стоит грустить от этого, т.к. все тупят в начале кроме мб пары процентов людей.
    Написано
  • Как устранить утечку памяти при множественных соединениях в net/http Golang?

    @calculator212
    videxerion, а количество соединений в системе остается таким же или увеличивается? (через netstat можно проверить например)
    Написано
  • Как устранить утечку памяти при множественных соединениях в net/http Golang?

    @calculator212
    videxerion, а с какой скорость идёт сканирование?
    Можно попробовать установить эти параметры
    &http.Transport{
    		MaxIdleConns:        10, // global number of idle conns
    		MaxIdleConnsPerHost: 5,  // subset of MaxIdleConns, per-host
    		// declare a conn idle after 10 seconds. too low and conns are recycled too much, too high and conns aren't recycled enough
    		IdleConnTimeout: 10 * time.Second,
    		// DisableKeepAlives: true, // this means create a new connection per request. not recommended
    	}
    Написано
  • Как устранить утечку памяти при множественных соединениях в net/http Golang?

    @calculator212
    videxerion, в целом может быть проблема, если используется одна из старых версий го, но баг с этой штукой пофиксили давно https://github.com/golang/go/issues/33849
    Написано
  • Как устранить утечку памяти при множественных соединениях в net/http Golang?

    @calculator212
    videxerion, я написал в чем могут быть прблемы и как их исправить, пример который я привел это просто пример а не то как надо делать, там параметров намного больше которые нужно учитывать, перечитайте еще раз комментарий и по порядку попробуйте выполнить рекомендации. Также советую переписать код, в функции scan явно не стоит использовать CloseIdleConnections это нужно в отдельное место выложить.
    Вероятность этого 100% т.к я специально лазил проверять где забивается.
    Сколько занимает эта мапа памяти и как проводилась проверка? И опять же проблема вероятно не с ней а с тем что вы неправильно выполняете запросы, из-за чего она может забиваться.
    Написано