Nazar
чёт нужно закрывать или как?
Nazar
работа с mysql
Wingman
Да, стейтменты
Nazar
Ну не совсем
Nazar
Но тип того
Nazar
ммм
Nazar
а как?)
Wingman
Вангую, ченить типа st.Close()
Nazar
это везде где препер?
Wingman
Угу
Wingman
Нах ты их вообще готовишь в цикле
Wingman
Они не для этого
Wingman
Один раз готовь, а дальше вызывай с разными переменными
Nazar
ой бляха
Nazar
вот это я дибил
Nazar
Благодарю
Wingman
Бгг
Wingman
$100
Wingman
:)
Nazar
Anonymous
😂 зачот
Kirill
$100
продешевил)
Petr
Всем привет! Сейчас в поиске крутых Golang-разработчиков в российскую IT-шную компанию IBCLabs, которая занимается созданием различного инструментария для трейдинга (алготрейдинг, торговля криптовалютой и т. д.), платежных систем для России и трансграничных платежей, инвестиционные продукты (в том числе связанные и с криптовалютой) Основная цель компании - запуск собственных fintech продуктов в сегментах B2B и B2C. На данный момент крупный проект по разработке крупной площадки для торговли различной валютой. Сейчас команда из 14 человек (помимо разработчиков есть QA, DevOps, аналитики), ищем одного ведущего/лида (с перспективой в ближайшее время роста до тимлида) и одного уровня middle+. Разработка по SCRUM, недельные спринты, процессы CI/CD настроены. Стек технологий: Go, PostgreSQL, Tarantool, Nginx, RabbitMQ. Условия: комфортный офис в центре Москвы на 25ом этаже БЦ (клевый вид на столицу обеспечен), оформление по ТК РФ, гибкий график (вся команда обычно в офисе с 12:00 до 18:00, остальное время по желанию), ЗП обсуждается на собеседовании (вилка 150-300к, зависит от уровня скиллов и бекграунда) Если вакансия заинтересовала и у вас опыт разработки от ~4 лет (из них последние 1-2 года именно на Go), пишите мне в ЛС, обещаю оперативно отвечать :) #go #golang #офис #Москва #фуллтайм #fulltime #работа #вакансия
Kirill
Ребят, простите за нубский вопрос... Но уже и интернет перерыл, ваш чат в том числе и февральскую переписку. Я не могу понять как мне задать глобальную переменную конфига, который бы был виден во всех пакетах моего приложения. Структура такая: корень проекта - main в корне две папки controllers и models. В пакете models описаны структуры type Config struct { Port string json:"port" Db Db json:"db" } type Db struct { Host string json:"host" User string json:"user" Pass string json:"pass" Dbname string json:"dbname" } и функция func LoadConfig() (config *Config, err error) { configFile, err := ioutil.ReadFile("./static/settings.local.json") if err == os.ErrNotExist { configFile, err = ioutil.ReadFile("./static/settings.json") } PanicOnErr(err) err = json.Unmarshal(configFile, &config) return config, err } В пакете main есть переменная и ее инициализация var GlobConf *models.Config func main() { GlobConf, _ := models.LoadConfig() valPort := []string{":", GlobConf.Port} listenPort := strings.Join(valPort, "") тут все работает... Но в функциях пакета controllers переменная GlobConf не видна. Как правильно использовать эту переменную? Может ее надо было определять не в main, а в models и дальше models.GlobConf.Db... Может ее надо в controllers как-то проинициализировать из пакета main?
Daniel
1. Определить не в main 2. Обычно глобальный конфиг не нужен
Alexander
Ну можно в мейне проинициализировать все необходимые структуры из соседних пакетов, передав туда в коструктор конфиг
Daniel
Конструктор?
Alexander
ну controller.New() :)
Zarif
не совсем понял что конкретно нужно, но если требуется какая-то глобальная переменная, то проще определить её в переменной окружения, а потом через os.Getenv брать её где угодно
Аня
Коллеги, привет! Меня зовут Аня, я веду поиск Golang-разработчика в Команду сайта банка ТОП-3. По функционалу - backend-разработка на Go. Коллеги переписывают сайт с node.js на golang. Проект масштабный, стратегически важный для компании. Уровень позиции: Middle / Senior. Если Ваш уровень по Golang-разработке выше, давайте знакомится, в портфеле проектов есть вакансии и для вас) Требования: опыт Golang от 1-2 лет, знание Go (структуры, интерфейсы, каналы, горутины и т.д.), понимание принципов работы клиент-серверной архитектуры, микросервисов, конкурентности. Условия: белая зп (вилка до 180-200 гросс по итогам технического интервью), ДМС, страхование жизни, страхование выезжающих за рубеж, 10 дней в году больничного 100% компенсируем. Ребята, кому интересно - за подробной инфой Go в личку @very_ann #go #golang #офис #Москва #fulltime #работа #вакансия
Kirill
не совсем понял что конкретно нужно, но если требуется какая-то глобальная переменная, то проще определить её в переменной окружения, а потом через os.Getenv брать её где угодно
У меня в конфиге прописаны настройки подключения, порт, параметры подключения к БД (юзер, пасс, хост, имя бд). порт нормально заработал. А вот в функции http.HandleFunc("/api/v2/auth/login", controllers.AuthLogin) AuthLogin устанавливается соединение с БД, и сразу закрывается. Так вот для подключения необходимо передать параметры подключения
Eldar
кек
Kirill
Почему бы вам не сделать синглтон для подключения? И не передавать *sql.DB а не конфиг?
1. Как передать? Как параметр? 2. Это уже соединение с БД? Я бы не хотел, чтобы оно висело постоянно. Учитывая, что в CentOS соединение с Firebird постоянно рвется в отличии от винды.
Zarif
Почему бы вам не сделать синглтон для подключения? И не передавать *sql.DB а не конфиг?
+ а ещё можно сделать свой контекст из набора поинтеров на DB и прочие нужные коннекты и передавать между обработчиками
Anonymous
1. Как параметр или выделить в пакет и подключать где надо. 2. Вам надо прочитать как go разруливает эти моменты. *sql.DB - это пул подключений. Подключение не висит постоянно. Автоматически открывается при запросе и висит только до таймаута. Таймаут и максимальное кол-во подключений настраивается. При ожидании свободного подключения рутина блокируется.
Anonymous
не забывайте stmt закрывать
Kirill
Но хочется исправить на "правильный" вариант использования Go ;)
Alexander
ну dependency injection надо погуглить прост
Aleksandr
используй di - это правильный вариант в любом языке
Aleksandr
конфиг получай в main, все остальные настройки передавай извне во время инициализации параметрами фабрики
Kirill
А есть более красивый вариант вот этого valConnectionString := []string{Config.Db.User, ":", Config.Db.Pass, "@", Config.Db.Host, "/", Config.Db.Dbname} conn, _ := sql.Open("firebirdsql", strings.Join(valConnectionString, ""))
Kirill
Т.е. у меня есть параметры, мне надо их соединить, с помощью разных разделителей
Alexandr
fmt.Sprintf?
Kirill
fmt.Sprintf?
Он сформирует строку или выведет ее в консоль?
Alexandr
Sprint* возвращает результат в качестве строки
Kirill
Sprint* возвращает результат в качестве строки
Понял. То что нужно.... Большое спасибо
Fastumkruk
Всем привет. Слушаю localhost:8085, как сделать что бы обработка запроса была только от localhost, с других источников был бы ретурн?
Wingman
если ты слушаешь только локалхост, другие источники до тебя не достучатся
Fastumkruk
если ты слушаешь только локалхост, другие источники до тебя не достучатся
У меня сервер 192.213.324.2:8085 принимает данные, как мне принимать данные например только от 192.213.324.1 ?
Alexey
Господа, часто ли вы используете константы вместо переменных внутри функций? (там где это возможно) Случайно взглянул в код на JS, у них там принято по всюду юзать константы внутри локальных областях видимости. Интересно, с чем это связано, ведь в го, такое встречается крайне редко, по крайне мере - мне.
Wingman
либо проксить nginx'ом
Alexey
После увиденного решил подойти к местным js разрабам, они удивились, что мы так не делаем и скзаали, что считают это говнокодом.
Fastumkruk
никак, ты же локалхост слушаешь, а не 192...
if (!in_array($_SERVER['REMOTE_ADDR'], array('185.71.65.92', '185.71.65.189', '149.202.17.210'))) return; Это на пых, как будет на го?
Wingman
но я бы тебе посоветовал на iptables посмотреть
Илья
можно по подробнее?
я не настоящий джиесер, но константы в js хоть и ограничены скоупом, должны кешироваться, насколько я помню, в отличие от var
Илья
ну и современные фронтендеры топят за семантику, типо если это не должно меняться, лепи const
Илья
да
Alexey
мм
Daniel
у нас константы похуже - они бывают только базовых типов
Daniel
так-то я бы тоже все, что меняться не должно, обозначал бы соответствующим образом
.
Кстати, почему константы есть только для базовых типов?
invariance
что значит только для базовых?
.
То и значит
.
Для строк, чисел
.
Создать константу с массивом или мапой нельзя
Daniel
Кстати, почему константы есть только для базовых типов?
я так понимаю - по тем же причинам, по которым нет иммутабельности. не знают пока, как впилить в компайлер
Daniel
Создать константу с массивом или мапой нельзя
даже для структуры, содержащей только базовые типы, нельзя
Andrei
Добрый день! А киньте в меня, плиз, либой которая умеет парсить /proc/net/(tcp,udp,tcp6,udp6)
Vasilii
https://github.com/prometheus/procfs