@gogolang

Страница 1307 из 1630
Wingman
23.08.2018
22:22:53
Вангую, ченить типа st.Close()

Nazary
23.08.2018
22:23:01
это везде где препер?

Wingman
23.08.2018
22:23:13
Угу

Нах ты их вообще готовишь в цикле

Google
Wingman
23.08.2018
22:23:30
Они не для этого

Один раз готовь, а дальше вызывай с разными переменными

Nazary
23.08.2018
22:24:52
ой бляха

вот это я дибил

Благодарю

Wingman
23.08.2018
22:25:14
Бгг

$100

:)

Crypt
23.08.2018
22:26:36
? зачот

Kirill
23.08.2018
22:27:59
$100
продешевил)

Petr
24.08.2018
07:41:48
Всем привет! Сейчас в поиске крутых 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
24.08.2018
07:59:30
Ребят, простите за нубский вопрос... Но уже и интернет перерыл, ваш чат в том числе и февральскую переписку. Я не могу понять как мне задать глобальную переменную конфига, который бы был виден во всех пакетах моего приложения. Структура такая: корень проекта - 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?

Google
Daniel
24.08.2018
08:03:45
1. Определить не в main 2. Обычно глобальный конфиг не нужен

Alexander
24.08.2018
08:03:45
Ну можно в мейне проинициализировать все необходимые структуры из соседних пакетов, передав туда в коструктор конфиг

Daniel
24.08.2018
08:04:02
Конструктор?

Alexander
24.08.2018
08:04:27
ну controller.New() :)

Zarif
24.08.2018
08:06:41
не совсем понял что конкретно нужно, но если требуется какая-то глобальная переменная, то проще определить её в переменной окружения, а потом через os.Getenv брать её где угодно

Аня
24.08.2018
08:08:33
Коллеги, привет! Меня зовут Аня, я веду поиск 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
24.08.2018
08:09:02
не совсем понял что конкретно нужно, но если требуется какая-то глобальная переменная, то проще определить её в переменной окружения, а потом через os.Getenv брать её где угодно
У меня в конфиге прописаны настройки подключения, порт, параметры подключения к БД (юзер, пасс, хост, имя бд). порт нормально заработал. А вот в функции http.HandleFunc("/api/v2/auth/login", controllers.AuthLogin) AuthLogin устанавливается соединение с БД, и сразу закрывается. Так вот для подключения необходимо передать параметры подключения

Eldar
24.08.2018
08:11:05
кек

Kirill
24.08.2018
08:12:36
Почему бы вам не сделать синглтон для подключения? И не передавать *sql.DB а не конфиг?
1. Как передать? Как параметр? 2. Это уже соединение с БД? Я бы не хотел, чтобы оно висело постоянно. Учитывая, что в CentOS соединение с Firebird постоянно рвется в отличии от винды.

Zarif
24.08.2018
08:13:20
Почему бы вам не сделать синглтон для подключения? И не передавать *sql.DB а не конфиг?
+ а ещё можно сделать свой контекст из набора поинтеров на DB и прочие нужные коннекты и передавать между обработчиками

Лемур
24.08.2018
08:14:36
1. Как параметр или выделить в пакет и подключать где надо. 2. Вам надо прочитать как go разруливает эти моменты. *sql.DB - это пул подключений. Подключение не висит постоянно. Автоматически открывается при запросе и висит только до таймаута. Таймаут и максимальное кол-во подключений настраивается. При ожидании свободного подключения рутина блокируется.

не забывайте stmt закрывать

Kirill
24.08.2018
08:16:39
Но хочется исправить на "правильный" вариант использования Go ;)

Alexander
24.08.2018
08:18:01
ну dependency injection надо погуглить прост

Aleksandr
24.08.2018
08:18:01
используй di - это правильный вариант в любом языке

конфиг получай в main, все остальные настройки передавай извне во время инициализации параметрами фабрики

Google
Kirill
24.08.2018
08:24:00
А есть более красивый вариант вот этого valConnectionString := []string{Config.Db.User, ":", Config.Db.Pass, "@", Config.Db.Host, "/", Config.Db.Dbname} conn, _ := sql.Open("firebirdsql", strings.Join(valConnectionString, ""))

Т.е. у меня есть параметры, мне надо их соединить, с помощью разных разделителей

Alexandr
24.08.2018
08:26:07
fmt.Sprintf?

Kirill
24.08.2018
08:26:38
fmt.Sprintf?
Он сформирует строку или выведет ее в консоль?

Alexandr
24.08.2018
08:27:06
Sprint* возвращает результат в качестве строки

Kirill
24.08.2018
08:27:34
Sprint* возвращает результат в качестве строки
Понял. То что нужно.... Большое спасибо

Fastumkruk ✅
24.08.2018
09:22:17
Всем привет. Слушаю localhost:8085, как сделать что бы обработка запроса была только от localhost, с других источников был бы ретурн?

Wingman
24.08.2018
09:23:21
если ты слушаешь только локалхост, другие источники до тебя не достучатся

Fastumkruk ✅
24.08.2018
09:29:58
если ты слушаешь только локалхост, другие источники до тебя не достучатся
У меня сервер 192.213.324.2:8085 принимает данные, как мне принимать данные например только от 192.213.324.1 ?

Алексей
24.08.2018
09:30:09
Господа, часто ли вы используете константы вместо переменных внутри функций? (там где это возможно) Случайно взглянул в код на JS, у них там принято по всюду юзать константы внутри локальных областях видимости. Интересно, с чем это связано, ведь в го, такое встречается крайне редко, по крайне мере - мне.

Wingman
24.08.2018
09:30:33
либо проксить nginx'ом

Алексей
24.08.2018
09:32:15
После увиденного решил подойти к местным js разрабам, они удивились, что мы так не делаем и скзаали, что считают это говнокодом.

Fastumkruk ✅
24.08.2018
09:32:18
никак, ты же локалхост слушаешь, а не 192...
if (!in_array($_SERVER['REMOTE_ADDR'], array('185.71.65.92', '185.71.65.189', '149.202.17.210'))) return; Это на пых, как будет на го?

Алексей
24.08.2018
09:32:29
Wingman
24.08.2018
09:33:49
но я бы тебе посоветовал на iptables посмотреть

Илья
24.08.2018
09:34:24
можно по подробнее?
я не настоящий джиесер, но константы в js хоть и ограничены скоупом, должны кешироваться, насколько я помню, в отличие от var

Google
Илья
24.08.2018
09:34:49
ну и современные фронтендеры топят за семантику, типо если это не должно меняться, лепи const

Илья
24.08.2018
09:34:58
да

Алексей
24.08.2018
09:35:04
мм

Daniel
24.08.2018
10:00:18
у нас константы похуже - они бывают только базовых типов

Admin
ERROR: S client not available

Daniel
24.08.2018
10:02:00
так-то я бы тоже все, что меняться не должно, обозначал бы соответствующим образом

Никита
24.08.2018
10:07:45
Кстати, почему константы есть только для базовых типов?

F01134H
24.08.2018
10:08:56
что значит только для базовых?

Никита
24.08.2018
10:09:27
То и значит

Для строк, чисел

Создать константу с массивом или мапой нельзя

Daniel
24.08.2018
10:10:08
Кстати, почему константы есть только для базовых типов?
я так понимаю - по тем же причинам, по которым нет иммутабельности. не знают пока, как впилить в компайлер

Создать константу с массивом или мапой нельзя
даже для структуры, содержащей только базовые типы, нельзя

Andrey
24.08.2018
10:13:18
Добрый день! А киньте в меня, плиз, либой которая умеет парсить /proc/net/(tcp,udp,tcp6,udp6)

Vasilii
24.08.2018
10:18:38
https://github.com/prometheus/procfs

Roman
24.08.2018
10:23:31
даже для структуры, содержащей только базовые типы, нельзя
И вычисления на этапе компиляции тоже нет :(

Andrey
24.08.2018
10:27:11
https://github.com/prometheus/procfs
Видел, но она не умеет функционал ss/netstat Пока нашел только это https://github.com/drael/GOnetstat/blob/master/gonetstat.go

Илья
24.08.2018
11:44:57
так-то я бы тоже все, что меняться не должно, обозначал бы соответствующим образом
они же вообще не типизированные, и запрет на использования там ссылочных типов накладывает компилятор

тип выводится в месте использования

Google
Daniel
24.08.2018
11:49:07
типизованные константы тоже есть

Илья
24.08.2018
11:52:42
хм, да, я не прав, можно типизировать :S

Denys
24.08.2018
12:10:06
есть ридер и врайтер, но чтобы запись во врайтер с буффером была по делиметру

Илья
24.08.2018
12:12:26
берешь свою реализацию write, который пишет в буфер и фалшит по делиметеру

Alexey
24.08.2018
12:20:37
я в курсе, что в go есть generic типы - map, например я не в курсе, зачем вам нужны генерики кроме тех, что уже есть
Немного некропостинга, но так уж получилось, что у это сообщение попалось мне на глаза. Вот пример задачи в которой я страдаю без дженериков: отложенные вычисления. У меня есть пачка сервисов для которых нужно инициализировать клиенты. Эти клиенты это интерфейс с пачкой разных методов. Я бы хотел иметь возможность написать такой интерфейс, который будет возвращать типизированный ответ. Внутри это будет реализовано в виде значения, которое может быть nil. Если оно nil, то берем лок, и инициализирем. Сейчас у меня два варианта - либо копипастить, либо возвращать interface {}. Оба печальные.

Алексей
24.08.2018
12:21:26
у нас константы похуже - они бывают только базовых типов
У них вроде тоже только для примитивных типов константы по стандарту работают. Для того, чтобы массив или объект был immutable нужно его специальным образом зафризить, например так: Object.freeze({a : 1}) Константы не позвоволяют значение менять, вы не можете своей константе присвоить новый объект, а вот его значениям - легко. Дабы этого избежать юзают фризинг, причем обычный работает поверхностно, т.е не для вложенных свойств объектов, поэтому нужно пилить велосипеды аля deepFreeze.

Denis
24.08.2018
12:22:54
а что будет, если попытаться поменять значение такого объекта? эксепшн в рантайме? или просто ничего?

Tigran
24.08.2018
12:25:36
почему не воспользоыаться кодогенерацией?
кодогенерация — какая-то сомнительная альтернатива дженерикам

Илья
24.08.2018
12:26:02
кодогенерация — какая-то сомнительная альтернатива дженерикам
дженерики - это и есть кодогенерация, только на уровне компилятора

Alexey
24.08.2018
12:26:08
почему не воспользоыаться кодогенерацией?
Воспользоваться можно, но очень хочется обойтись без нее. Я хочу иметь возможность видеть в PR весь код. Могу еще добавить субъективного - нужно всегда помнить что у тебя есть два типа кода - один который ты можешь менять, а другой который нет.

Страница 1307 из 1630