Andrey
Анмаршал так делает
Вова
А расширения для разных языков одновременно установлены и работают не мешая друг другу
Да, но суть не в том что они мешают. При старте все расширения запускаються фоново, хотя большая часть может не использоваться
Илья
Ну если сравнивать с жс, то там возвращается объект, а в гошке ты через указатель изменяешь данные
Илья
нет смысла в выделении лишней памяти чтобв хранить эти данные до конца парсинга жсона
Вова
Обычно воркспейс это папка текущего проекта.
А если папок с (проектами / тестами / практикой) достаточно много, и в каждой нужно руками отключать / включать расширения
Andrey
Я не утверждаю что в этом нет смысла , я просто очень сильно удивился потому что никогда не видел такого, по большому счету лучше бы тогда пересоздавала переменную в дефолт в случае ошибки, это не требует памяти.
Andrey
Понимаю что это вопрос не к языку а к стандартной либе
Andrey
Но для меня стандартная либа - часть языка
Andrey
Ребят, а вопрос такой переменные сложных типов если, например структуры если явно не указать передачу ссылки через * , копируются в памяти при вызове функции или такие и так по ссылке передаются?
Илья
копируются
Andrey
Ну я вот тогда не совсем понимаю, а какой-нить объект который реализует соединение с БД, как он скопируется
Andrey
Второе соединение с БД же не откроется
Null
✒️ Мои собеседования (Golang developer) Привет, меня зовут Олег, я разработчик со стажем почти 10 лет. Разработкой начал заниматься ещё со старшей школы, изучал C/C++ (очень пригодилось при написании скриптов в injection для ультимы онлайн). Профессионально начал работать разработчиком приблизительно с 2014, основной язык до 2020 года был C# с примесью C++. Сначала разрабатывал и поддерживал некоторые проекты в банковской сфере, потом резко поменял предметную область и ушёл писать софт для автоматизации работы одного строительного девелопера. На начальных этапах это было огромное легаси на C# от бывшего архитектора, решившего стать программистом, с кучей багов и неочевидных решений, пришлось много переписывать. Со временем появились задачи, которые не были привязаны к языку и технологиям в принципе (изначально писал, по сути, плагины к CAD-приложениям), и я попробовал Golang, а вместе с ним и микросервисы, NoSQL, gRPC и прочие модные штуки. Побывал в шкуре админа-девопса, так как новые сервисы я запускал и поддерживал сам. ➡️ Читать дальше @Golang_google
anhckie
а слайс же тоже не является потокобезопасным?
Юра (Юрий Александрович)
а слайс же тоже не является потокобезопасным?
На операциях добавления - не является.
anhckie
ну, да. на добавления. на чтение-то норм
anhckie
а мапа и на чтение по идее не является потокобезопасной?
anhckie
там же эвакуации есть
Юра (Юрий Александрович)
anhckie
т.е. как и слайс - только с записью проблемно?
Юра (Юрий Александрович)
Не проблемно, а с особенностями :)
Юра (Юрий Александрович)
И есть еще один тонкий момент: в слайсе вы можете конкурентно менять значения элементов. Результат получится непредсказуемый, но без паники. А в мапе любая конкурентная запись (хоть с добавлением нового элемента, хоть с перезаписью существующего) если столкнется с другой операцией, даст панику.
Alexey
Соратники, а есть какой-нибудь интересный пакет, который позволяет без лишнего головняка использовать http или socks5 прокси при реквестах , не будет ругаться если соединение на секунду-две оборвется и тд ?
Alexander
на секунду две оборвется во время чего?
Alexander
а так, прокси есть в стандартном хттп
Alexey
на секунду две оборвется во время чего?
ну к примеру я в с3 файл гружу , прокси на секунду ложиться, как пример - работа через мобильные прокси, где конекшн не стабилен
Alexander
а ты хочешь чтобы он догружался каким-то образом с момента разрыва?
Alexander
мне кажется, это больше в сторону апишки с3, если она умеет. а ретрай ты и сам руками сделаешь
Alexander
точнее не ретрай, а нужный запрос
Alexey
мне кажется, это больше в сторону апишки с3, если она умеет. а ретрай ты и сам руками сделаешь
ну типа с3 это просто пример, мне в общем надо, та же аналитика, собираешь там собираешь, а потом бац на секунду прокси лег, не приятно
Alexander
не вижу проблем отправить отловить и отправить повторный запрос спустя время
Артем
Всем привет. Подскажите, пожалуйста, насколько это валидно: Есть несколько структур: subscriber, subscription, event, они связаны через айдишники по ключам, не суть. На клиенте нужны НЕ все данные, если делать джоины по фулу. Хочу сделать response object на свои сущности к ендпоинту, который выводит всех подписчиков и их подписки. Собственно к чему вопрос. У меня у сущности Subscription три поля: SubscriptionID, EventID, SubscriberID. Эти данные клиенту нихрена, грубо говоря, не дадут. Хочу сделать структурку, в которой будет что-то такое:{ SubscriptionID, Event: { EventID, Name, etc...}} Назвать хочу SubscriptionRO (response object). Это не антипаттерн, все кул? Или я изобретаю графкуель :DDD
Артем
что-то такое. На клиент буду возвращать []SubscriberRO
Feofan
Ребята есть ли возможность в tcp месиве отлавливать http запросы? К примеру на лету в таком tcp прокси коде: clientConnection_1 , err := net.Listen("tcp", "192.168.1.1:5050") clientConnection_2 , err := net.Listen("tcp", "192.168.1.1:5051") in, err := clientListener_1.Accept() out, err := clientListener_2.Accept() go proxy(in net.Conn, out net.Conn, errCh) go proxy(out net.Conn, in net.Conn, errCh) func proxy(dst io.Writer, src io.Reader, errCh chan error) { _, err := io.Copy(dst, src) errCh <- err }
Артем
типо того
Maks
Так и в чем трабла?) ток тебе мапить все равно вручную придется
Maks
Это жеж sql
Maks
Тут получается вопрос в том как мапить
Maks
типо того
if err := rows.Scan(&alb.ID, &alb.Title, &alb.Artist, &alb.Price, &alb.Quantity); err != nil { return albums, err }
Maks
Я так понял тебе вот это нужно
Артем
а кстати реально, по порядку сканить
Артем
а то я хотел еще структуру под это запилить
Maks
Так как из финального результата после селекта с джойнами если останутся только нужные поля то будет изи пизи лемон сквизи
Maks
Просто там будешь указывать ссылку на вложенное поле
Артем
такая кверя получилась
Артем
Ghost
А в го разве нет орм ?
Grigory
Есть
Vladislav
А в го разве нет орм ?
Есть, но пользоваться ими не принято
Alexey
гибкости мало и много подводных камней, куда эффективнее билдеры использовать
Larchenko
гибкости мало и много подводных камней, куда эффективнее билдеры использовать
ле, если заменить слово билдеры на нужное, то так можно сказать про любую либу или фрейм
Larchenko
и какбе как в орм может быть мало гибкости, там по сути одна задача - крудовская, она или выполняется или не выполняется, кастомайзить можно ток источники данных, но их уже давно и везде можно брать с любого говна на которое есть спецификация
Grigory
билдеры тоже от лукавого, даешь хранимки на бд
Артем
Здравствуйте еще раз. Подскажите, пожалуйста, у меня настроен graceful shutdown в приложении. В мейн горутине запускается http листенер, в другой горутине листенер телеграм бота ( long poll). На ендпоинты повесил panic-recovery мидлвару (ласт скрин). Специально http вызовом ендпоинта, в сервисе, форшу панику. Горутина паникует, рековери мидлвара ее поднимает на ноги. Все как-бы круто. Запросы дальше отправлять можно, бот работает. Но если после этого нажать cltr-c(interrupt), то сработает грейсфул шатдаун, но очень странно. defer в main'e не сработает, в терминале покажет что мейн горутина вышла, но в процес трекере остается main программа, бот не выключается. Очень странное поведение. Если запустить программу и не форсить панику и затем ctrl-c(interrupt), то грейсфул срабатывает отлично, мейн горутина выключается, все отлично, defer вызывается, в процесс трекере мейн падает. Подскажите, с чем связано? Буду рад помощи. Возможно как то с контекстом надо помудрить...
Артем
Артем
Артем
*рековери мидлвара
Grigory
может горутина утекает какая и из-за этого висит процесс
Larchenko
подскажити плес, как сетапите гошный энв
Larchenko
Larchenko
Артем
может горутина утекает какая и из-за этого висит процесс
так и происходит скорее всего. Не понимаю как пофиксить..
Larchenko
по предложению голенга, я скачал сдк, но не совсем понятно что ему не нрав, он где то хочет бинарник компайлера ?
Артем
так и происходит скорее всего. Не понимаю как пофиксить..
1 сто проц утекает. Хз че с ней сделать. После рекавера defer в мейне не вызывается. Не могу почитсить коннекшены даже...
Larchenko
рем = кринж
мне по кайфу
Larchenko
астольфо тут оч пиздатая
Илья
ну хоть бы кошкодевочку поставил
Артем
рем = кринж
Илья, не посмотрите, пожалуйста, праблу выше про утечку? Может что придет в голову. Буду очень благодарен если уделите время
Larchenko
короче я разобрался все стоит, ток зависимости не скачались и го мода нет и в мейкфайле не качаются, кажется у меня одного в проекте есть чувство стиля ...
Артем
останавливает горутину, которая лонг-поллит телеграм апи. ClosePoll просто обертка, на самом деле вызываю метод из библиотеки.
Артем
вот их внутренний лог из библиотеки после вызова ClosePoll
Илья
gctx, gcancel := ...... defer gcancel() убери где я пометил стрелкой это не причина ошибки, но просто на будущее