Andrei 🦉
Ну да, но это не то, чтобы решает мою проблему. То есть решает, конечно, но это всё равно переписывание всех методов.
тогда либо фабрики, через которые вы будете прокидывать зависимости в хендлеры, либо глобальные переменные
Marperia
на самом деле, только таким образом на го и можно построить поддерживаемую кодовую базу
А можно я буду называть себя сеньором, раз постиг этот постулат Дао голанга?
Andrei 🦉
и то и другое - неподдерживаемо в дальней перспективе
🎉
@marperia посмотрите, я же вам ссылку дал.
Marperia
@marperia посмотрите, я же вам ссылку дал.
Ну я и читаю. 4 части, как-никак
Marperia
@marperia посмотрите, я же вам ссылку дал.
Самое смешное: вторая часть была у меня в закладках, или коротко о путях поиска решений.
Marperia
тогда либо фабрики, через которые вы будете прокидывать зависимости в хендлеры, либо глобальные переменные
>либо глобальные переменные Сразу хочу сказать, что буду делать через обёртки, но всё-таки. А где мы должны подулючаться к БД, чтобы вдруг *sql.DB у нас стал глобальным? Потому что в main() оно определяется только областью видимости этой main().
Andrei 🦉
пройдите го тур до конца, пожалуйста
Marperia
https://play.golang.org/p/C_LxWbj8_Aw
Ой, всё, я очень затупил, извиняюсь. Спасибо.
Marperia
Так, нет, всё правильно: глобальные переменные не такие уж глобальные, они ограничены областью видимости main(), а значит нельзя не создавать структуру с подключением для передачи в Модель.
Marperia
Иными словами, вот: https://toster.ru/q/240866 Спойлер: никак.
Andrei 🦉
Иными словами, вот: https://toster.ru/q/240866 Спойлер: никак.
создаете в отдельном пакете переменную и потом везде этот пакет импортируете и явно используете, но не в мейне, да
Marperia
создаете в отдельном пакете переменную и потом везде этот пакет импортируете и явно используете, но не в мейне, да
Если я правильно понял, так будет выглядеть контекст без своей структуры типа фреймворк/ОРМ?
Andrei 🦉
Если я правильно понял, так будет выглядеть контекст без своей структуры типа фреймворк/ОРМ?
нет, так будет выглядеть подключение к бд, доступное через глобальную переменную, эталонный говнокод в общем то
Marperia
что такое в вашем понимании контекст?
А ещё и формализировать надо? Ну... Если это контекст приложения — то это все его данные, к которым мы имеем доступ.
Marperia
*данные, методы...
Marperia
Соответственно, приватные (с маленькой буквы) переменные и функции контекстом не являются, я прав?
Artem
Сингелтон, чем вам не глобальная переменая?
Andrei 🦉
Соответственно, приватные (с маленькой буквы) переменные и функции контекстом не являются, я прав?
затрудняюсь ответить на ваш вопрос, поскольку обычно термином контекст в этом смысле не оперируют
Marperia
Ну хорошо, а в каком смысле оперируют?
Andrei 🦉
Ну хорошо, а в каком смысле оперируют?
контекст запроса, например
Marperia
Иными словами, вот: https://toster.ru/q/240866 Спойлер: никак.
Кстати, последний ответ по ссылке реализовал именно то, о чём я спрашивал. И я не могу не спросить, почему это считается эталонным говнокодом? Потому что изначально я хотел сделать именно так.
Andrei 🦉
Кстати, последний ответ по ссылке реализовал именно то, о чём я спрашивал. И я не могу не спросить, почему это считается эталонным говнокодом? Потому что изначально я хотел сделать именно так.
потому что плохо поддается тестированию и дальнейшей поддержке, приводит к абсолютно ненужным зависимостям между несвязанными друг с другом модулями и т.д.
Marperia
Сингелтон, чем вам не глобальная переменая?
Цимес в том, что сама структура sql.DB изначально задумывается как Singleton: один экземпляр на одну БД. Осталось только выполнить это технически в языке без конструктора. И хранить где-то, конечно.
Aleksandr
Package context defines the Context type, which carries deadlines, cancelation signals, and other request-scoped values across API boundaries and between processes.
Marperia
Но с фабриками.
Aleksandr
ключевое здесь - request-scoped values подключение - это не оно. Оно - это что-то имеющее отношение к конкретному запросу: ip клиента, токен, таймаут запроса итд
freezlite
Есть prometheus и го биндинг на него. Как с помощью метрики process_cpu_seconds_total отобразить процент использования процессора ?
Andrew
О, идеальная работа. Замечательно.
Andrew
К черту программирование.
Fastumkruk
Viktor
О, идеальная работа. Замечательно.
Наркокурьеры, 80к в неделю
Viktor
неплохо
Andrew
:)
Analoliy
"Клады" навевают подозрения, хм..
Alexander
А кто на Go с WSDL работал? Какую библиотеку посоветуете?
Konstantin
А кто на Go с WSDL работал? Какую библиотеку посоветуете?
там по-моему "net/http" достаточно)
freezlite
там вроде нет cpu usage
Daniel
конечно, нет
Daniel
процесс, вообще-то, не в курсе, сколько у вас на машине проца
freezlite
может какие-то наводки
freezlite
как это высчитать
Daniel
поставьте на машину node_exporter
Daniel
он вам все высчитает
Daniel
и не тольео про проц
aadz
Наркокурьеры, 80к в неделю
Это ты осторожней! Яровая с сегодняшнего дня весь твой SSL-трафик записывает в книжечку...
freezlite
у меня репозиторий с го кодом и метриками из него
freezlite
зачем мне всерху node если нужные метрики есть?
Viktor
Это ты осторожней! Яровая с сегодняшнего дня весь твой SSL-трафик записывает в книжечку...
На здоровье. Зря я что ли паки с интересными картиночками собирал
aadz
:)
Daniel
зачем мне всерху node если нужные метрики есть?
Так ведь не все есть. И кое-что из процесса пользовательского недоступно
freezlite
cpu total seconds должно быть достаточно вместе с общим временем
Daniel
If you say so
freezlite
ну але, у нас есть сколько времени процессор был занят программой
freezlite
ладно пример с node_explorer подходит, метрика в го такаяже
freezlite
ну количество процос я могу сам проверить
freezlite
график будет % одного ядра показывать
freezlite
можно поделить на количество цпу
freezlite
irate(node_cpu{job="node",mode="idle"}[5m])) * 100
freezlite
но понять как это работет я не могу
Ivan
как работает irate?
freezlite
не знаю (
Roman
Отсутствие интерпретируемых встраиваемых языков для Go с живым сообществом
а зачем нам именно интерпретируемый встраеваемый язык для Go? вот это к нигде не описано
Alexey
как работает irate?
Берёт две последние точки и делает rate между ними
Alexey
rate берёт первую и последнею точку в интервале, irate – две последние
Alexey
а зачем нам именно интерпретируемый встраеваемый язык для Go? вот это к нигде не описано
Я не знаю зачем тебе интерпретируемый встраеваемый язык для Go, потому не могу написать зачем он нам 🙂
Alexey
В целом, люди, кому он нужен, знают зачем им
Alexey
Я потом это всё напишу, на первом этапе важнее написать документацию для людей, которые знают зачем им
Roman
Я не знаю зачем тебе интерпретируемый встраеваемый язык для Go, потому не могу написать зачем он нам 🙂
ох… звучит это не очень убедительно)) интерпретируемые языки нужны для устранения компиляции (по причинам произшодительности, по причинам workflow), но в Go компиляция относительно быстрая и простая. Так-же Go это, опять же, не про SP, поэтому в интерпретируемом языке я лично не вижу смысла
Alexey
Это нормально
aadz
инопланетяне, они - такие... все по нескольку раз запускают :) Хотя и мы к Марсу вон, тоже по многу раз запускаем что ни попадя