Nazar
чёт нужно закрывать или как?
Nazar
работа с mysql
Wingman
Да, стейтменты
Nazar
Ну не совсем
Nazar
Но тип того
Nazar
ммм
Nazar
а как?)
Wingman
Вангую, ченить типа st.Close()
Nazar
это везде где препер?
Wingman
Угу
Wingman
Нах ты их вообще готовишь в цикле
Wingman
Они не для этого
Wingman
Wingman
Один раз готовь, а дальше вызывай с разными переменными
Nazar
ой бляха
Nazar
вот это я дибил
Nazar
Благодарю
Wingman
Бгг
Wingman
$100
Wingman
:)
Nazar
Anonymous
😂 зачот
Kirill
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
Anonymous
Eldar
кек
Anonymous
1. Как параметр или выделить в пакет и подключать где надо.
2. Вам надо прочитать как go разруливает эти моменты.
*sql.DB - это пул подключений. Подключение не висит постоянно. Автоматически открывается при запросе и висит только до таймаута. Таймаут и максимальное кол-во подключений настраивается. При ожидании свободного подключения рутина блокируется.
Anonymous
не забывайте stmt закрывать
Kirill
Kirill
Но хочется исправить на "правильный" вариант использования Go ;)
Anonymous
Alexander
ну dependency injection надо погуглить прост
Aleksandr
используй di - это правильный вариант в любом языке
Aleksandr
конфиг получай в main, все остальные настройки передавай извне во время инициализации параметрами фабрики
Anonymous
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
Fastumkruk
Всем привет. Слушаю localhost:8085, как сделать что бы обработка запроса была только от localhost, с других источников был бы ретурн?
Wingman
если ты слушаешь только локалхост, другие источники до тебя не достучатся
Alexey
Господа, часто ли вы используете константы вместо переменных внутри функций? (там где это возможно)
Случайно взглянул в код на JS, у них там принято по всюду юзать константы внутри локальных областях видимости.
Интересно, с чем это связано, ведь в го, такое встречается крайне редко, по крайне мере - мне.
Wingman
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;
Это на пых, как будет на го?
Alexey
Wingman
Wingman
но я бы тебе посоветовал на iptables посмотреть
Илья
можно по подробнее?
я не настоящий джиесер, но константы в js хоть и ограничены скоупом, должны кешироваться, насколько я помню, в отличие от var
Илья
ну и современные фронтендеры топят за семантику, типо если это не должно меняться, лепи const
Alexey
Илья
да
Alexey
мм
Daniel
у нас константы похуже - они бывают только базовых типов
Daniel
так-то я бы тоже все, что меняться не должно, обозначал бы соответствующим образом
.
Кстати, почему константы есть только для базовых типов?
invariance
что значит только для базовых?
.
То и значит
.
Для строк, чисел
.
Создать константу с массивом или мапой нельзя
Andrei
Добрый день! А киньте в меня, плиз, либой которая умеет парсить /proc/net/(tcp,udp,tcp6,udp6)
Vasilii
https://github.com/prometheus/procfs