Anonymous
🤦‍♂
другого слова не нашел 😊
🏁Александр
к темной стороне ведет это
Anonymous
не все так однозначно! Вопрос был поднят про TCP/IP не совсем это так , нужно думать о судьбе сокета
Anonymous
листенер не нужно а вот привязанный хандлер должен все за собой почистить и закрыть сокет на котором висит
Roman
https://github.com/golang/go/issues/22876 - Permission Genericity кстати интересная тема которую я почему-то совсем пропустил
Dk
аэа
Dk
Я тут придумал архитектуру и у меня всё упёрлось в глобальные переменные. Их же нет, да?
Dk
Если я в пакете сделал var x, то этот x функция в том же пакете увидит?
Anonymous
да
Dk
Спасибо
Anonymous
она и в других увилит если будет var X
Anonymous
ну увлекаться глобальными не стоит (МИНИМУМ с контролем гонки за доступ к переменной)
Dk
Ну, у меня идея в инит создать 3 канала, загрузить типабд там же и запустить горутину как менеджер, которая будет работать через эти каналы
Anonymous
и при чем init не ясно😂
Anonymous
почуствуйте разницу .... задать параметры соединения с БД и создать коннект к БД
Dk
Ну я не стал пока бд прикручивать, сделал на json
Dk
Пока интерфейс проработаю, потом бд прикручу
Dk
поэтому "типабд"
Anonymous
все равно функциональные вещи не нужно прятать в init
Anonymous
эта привычка позволит вам быстрее ориентироваться в своем приложении , когда соурс будет измеряться сотнями килобайт
Dk
func init() { session := make(sessions) session.load(sessionfile) } у меня вес инит
Anonymous
func init() { session := make(sessions) session.load(sessionfile) } у меня вес инит
чрез год забудете и удете искать инициализацию в main, неужели ``` func SessionInit() { session := make(sessions) session.load(sessionfile) } ``` и ее вызов в main и ее отображение в IDE не даст вам удобства
Dk
просто хотел как можно раньше их инициализировать
Anonymous
молодец! У программера всегда 2 цели : написать код и не запутаться в своем коде!
Dk
А что там добавить в default?
Dk
не понял как
Dk
типа if <-tick?
Dk
sleep не будет спать, когда что-то в канал придёт разве?
Dk
ну, так мне кажется лучше
Anonymous
но позволяет к асинхронной логике case-В добавлять поступательную логику
Dk
Сделал, понял. Неужели так дорого? И сколько наносекунд ставить?
Dk
т.е. можно не вставлять?
Anonymous
нет не буду советовать сам должен к какой то мысли прийти
Dk
Ну, я сделал выводы
Anonymous
пища для размышлялок! Тикер - корректное решение но не единственное
Dk
На сегодня всё. Спасибо за помощь
Altay unstppbl
Кто как хранит state юзера в телеграм боте?
Altay unstppbl
Redis? Cache?
🎉
Вот это юзал https://github.com/muesli/cache2go
Artem
Ничего нельзя забивать, нужно все завершать штатно при поступлении сигнала, называется graceful shutdown и в интернетах есть видосы про него. Если просто забить, то ты не знаешь в каком состоянии остаётся приложение: мб там останется не закрытая транзакция к базе которая повиснет там
ThunderAL
помогите: мне надо показать юзеру видео с ютуба без звука решил юзать github.com/zserge/webview вставляю html через webview.Settings{URL:url.PathEscape("<iframe .....")} на windows не отображается само видео, хотя любой другой html отображает и даже видно, что под фрейм выделено место, но видео не работает что не так может быть?
ThunderAL
ну, решение было таким: надо было всего создать временный файл и открывать его
Artem
дак с транзакциями наоборот все хорошо -- как бы приложение не завершилось -- она либо вся выполнится, либо не выполнится вообще (если мы про ACID)
Не всегда есть возможность делать 1 транзакцию на 1 запрос. Плюс ты тогда не узнаешь, прошла эта транзакция или нет
Pavel
это не важно -- целостность данных не будет нарушена
Artem
Для одной бд - мб и нет, а для всей системы конечно же да
Pavel
если в системе много источников данных (аля много транзакций в разные базы) -- то, если ты пишешь приложение исходя из того, что данные всегда целостны -- ну это...
Pavel
битые данные в таких системах -- это штатное состояние должно быть
Pavel
в общем, я не говорю, что грейсфул шатдаун -- плохо, но опять же -- никто не гарантирует, что он выполнится
Artem
Офк нет, но это полезно, что б не обрывать процессы, а завершить и штатно
Pavel
полезно, но смысла большого нет
Pavel
с таким же успехом можно забить 🙂
Daniel
Для начала - не надо создавать подключения в init
.
Вы валидируете входящие данные запроса, которые не идут на запись в базу? Так как я повсюду использую подобные конструкции как на скрине, а регулярки ну очень дорогие
.
Это зачем?
Валидировать только те что будут записываться?
Lucky
отказался от подключения в инит для удобства тестирования, настраиваю там конфиги
Artem
С OOM убийцей договорились уже?
Всегда выделяю 1kb на контейнер. Только ради этого и пишу на гошке
Misha
Всем доброго времени суток. Использую gin, нужно вызвать шаблон внутри другого шаблона. Такое чувство, что gin это игнорирует. Загружаю шаблоны глобально на engine. Что с этим сделать?
elton
мужики, сори новичек, есть ли в го интерактивная оболочка
Nikita
неа
Viktor
неа
gotk3?
Nikita
gotk3?
то байдинги к гтк, а ему надо repl
Roman
@onokonem func TakeSlice(s const? []int) s const? []int { s[0] = 12 // Compile-time error s[0] // reading is okay return s } immutability genericity как решение const poisoning
Michael
что за ругань
Daniel
я не понимаю, зачем const в возврате
Daniel
зачем в параметре - понимаю
🏁Александр
а это гоу или что?
🏁Александр
что-то я запутался
Daniel
это пропозал
Nikita
а это гоу или что?
с таким рвением скоро станет