
Slach
23.01.2018
05:55:56
арод, объясните как правильно делать теги для yaml ?
prog.go:7:53: syntax error: unexpected literal yaml:"anomalies_definition" after top level declaration
https://play.golang.org/p/I2YTywherV-
почему тут ругается?
edited
хочу распарсить yaml
anomalies_defintion:
test_anomaly1:
table: test_table1
test_anomaly2:
table: test_table1

Alexey
23.01.2018
06:07:38
Теги можно навесить только на поля структуры, не на любой тип

Stanislav
23.01.2018
06:09:40
Добрый вечер! Подскажите, есть в go что-то на подобие генераторов списков в питоне?

Google

Slach
23.01.2018
06:09:44
т.е. надо какую то структуру объявить а внутри нее уже поле с таким типом и ему присвоить тег? так?

Alexey
23.01.2018
06:10:30
да

Slach
23.01.2018
06:11:18

ros
23.01.2018
06:15:12

Stanislav
23.01.2018
06:15:47
Спасибо!

Slach
23.01.2018
06:20:34

ros
23.01.2018
06:23:26
map[string]map[string]string
и так далее вложенность

Alexey
23.01.2018
06:29:42
Ругается на тег, которого не может быть у этого типа

Slach
23.01.2018
07:36:59
Ругается на тег, которого не может быть у этого типа
спасибо, разобрался
а вот следующая особенность golang
https://play.golang.org/p/o9KVKhfJBCJ
почему тут ругается? какой именно адрес она не может вычислить?
я правильно понял что не может вычислить адрес, потому что эти адреса вычисляют "на этапе компиляции"?
и правильный фикс это
for key, value := range MyMap {
}
??
а тогда вопрос value в данном случае будет копироваться и будет каждый раз производиться аллокация? так?
и чтобы это было проще надо сделать MyMap := map[string]*MyType ? вместо map[string]MyType ?

John
23.01.2018
07:39:42

Slach
23.01.2018
07:41:05
ок. указатель на структуру я храню
я правильно понимаю что range по map
будет аллоцировать и копировать на каждое значение мапы? или там указатель возвращается?

John
23.01.2018
07:42:06

Google

Slach
23.01.2018
07:43:57

dePuff
23.01.2018
10:28:38
Всем привет.
Нужно пользовательский тип данных создать. Который представляет собой кольцо из трех элементов
Эдакий ring.New(3)
Это технически возможно в go?

Daniel
23.01.2018
10:31:58
в чем проблема?

dePuff
23.01.2018
10:32:32
Я не умею такое объявлять
type MyTypeName ...
И что дальше
Это, блин не массив какой-нибудь

Daniel
23.01.2018
10:33:23
struct, вариантов нет
а что такое кольцо из трех элементов?

dePuff
23.01.2018
10:33:56
Некая сущность гоняемая в проге
Которая всегда кольцо из трех элементов
Через структуру я тоже не представляю как количество элементов зафигачить
Кольцо это изначально структура

Daniel
23.01.2018
10:38:54
я не понимаю
три элемента - это мало

Michael
23.01.2018
10:39:13
backing storage массив, метод Next() гоняющий по кругу, внутреннее состояние i - текущая позиция, и будет вам кольцо в виде структуры

Google

Daniel
23.01.2018
10:40:47
если в лабе - они, наверное, хотят реально односвязный закольцованый список

Michael
23.01.2018
10:41:02
хз хз

dePuff
23.01.2018
10:41:12
Это не лаба
Это моя поделка
Кольцо - готовая реализация из go
Может какой-то init метод есть у пользовательских данных
Который автоматом отработает
О. Реально есть)
Всем спасибо)

Daniel
23.01.2018
10:43:25
вот и поговорили...

dePuff
23.01.2018
10:44:17
Хорошо заданный вопрос же содержит половину ответа)


Anton
23.01.2018
11:30:43
всем привет! быстрый вопрос: у меня есть основная функция, которая запускает в горутинах неизвестное количество других функций; основная функция возвращает error или nil, я как делаю:
func ensureAdmins() error {
type result struct {
ok bool
err error
}
ch := make(chan result, 1)
for _, email := range config.Admins {
go func(ch chan result, email string) {
if err := somehowEnsureAdmin(email); err != nil {
ch <- result{
err: err,
}
return
}
ch <- result{
ok: true,
}
}(ch, email)
}
// вот тут вопрос:
for i := 0; i < len(config.Admins); i++ {
res := <-ch
if res.err != nil {
return res.err
}
log.Println('ensured admin')
}
return nil
}
в общем я создаю канал, в который шлются результаты выполнения функции из горутины. я хочу, чтобы, во-первых, основная функция вернула error, если из горутины вернулся результат с err != nil, и во-вторых, чтобы вот это for i := 0; ... не блокировало выполнение горутин, т.е. чтобы они выполнялись параллельно. в целом вопрос — правильно ли я это делаю?
ну и ещё маленький вопрос: ch := make(chan result, 1) или буферезировать на len(config.Admins) (`ch := make(chan result, len(config.Admins)`)?


Атас
23.01.2018
12:13:45
я бы буферизиловал
учитывай что return res.err прервет выполнение ensureAdmins на первой ошибке
об остальных не узнаешь

Natalya
23.01.2018
12:15:52
Всем привет! Подскажите, а размещение вакансий по сабжу у вас в чате разрешено? :)

Daniel
23.01.2018
12:17:47
размещайте!


Natalya
23.01.2018
12:17:55
спасибо!
#вакансия #санкт_петербург #спб #питер #golang #fulltime #office #финтех #blockchain
Город: Санкт-Петербург
Метро: Черная речка/Старая деревня
Позиция:
Senior Go Developer
Вилка: ОТ 170к
Офис, полный день, гибкое начало рабочего дня
Один из партнеров группы компаний i-Free запускает новый международный финансовый сервис на самом горячем рынке блокчейна и ищет в свою команду единомышленников и профессионалов на позицию Senior Go Developer.
Обязанности:
- Разработка с нуля собственного бэкэнда для Highload проекта;
- Интеграция сложных API;
- Написание прозрачного и качественного кода;
- Активное взаимодействие с бэк-энд и фронт-энд разработкой;
- Реализация новых микросервисов;
- Написание тестов.
Что ждем от кандидата:
- Опыт коммерческой разработки на Go (Golang);
- Опыт разработки на С/С++ от 2-х лет;
- Техническое высшее образование;
- Опыт работы с SQL/NoSQL;
- Готовность к личной ответственности и фундаментальный подход к решению задач. Мы создаем финансовый инструмент и ожидаем должного уровня ответственности ежесекундно;
- Твердые знания алгоритмов и структур данных;
- Опыт работы с Agile-практиками и готовность к изменению требований в процессе разработки.
Будут значительным плюсом:
- Вы - адепт Linux/BSD;
- Ваш опыт разработки высоконагруженных сервисов.
Мы готовы предложить вам:
- Пространство для реализации ваших собственных идей в новом проекте на глобальном рынке;
- Место в уникальной команде с подтвержденными компетенциями в отрасли;
- Стабильную и конкурентоспособную заработную плату;
- Гибкий график;
- Большой и просторный офис в БЦ класса А с панорамным видом на Финский залив;
- Кофе/китайские чаи/овощи/фрукты/орехи в офисе;
- Оплачиваемые больничные, отпуск 28 календарных дней.
Вопросы можно адресовать в личку @natalya_langepas или на почту natalya.langepas@gmail.com


Alexey
23.01.2018
12:21:37
О, это же айфришечка ^__^

Google

Admin
ERROR: S client not available

Natalya
23.01.2018
12:22:44
спасибо!

Daniel
23.01.2018
12:23:26

Alexey
23.01.2018
12:24:38
не совсем
ну рядом) /me вспомнил свои 2008-2013

Атас
23.01.2018
12:31:37
да и если неизвестное количество горутин будет достаточно большим, а somehowEnsureAdmin(email) использует внутри сеть, то можешь нарваться на ограничение по сокетам и их не хватит и часть проверки не к чему не приведет
да и канал закрой в конце, здесь это не так важно, но луче привычку тренировать

Dmitry
23.01.2018
15:53:46
подскажите, есть красивый метод, как узнать статус systemd unit'a из го?

Aleksandr
23.01.2018
15:58:34
нет

hamper ?
23.01.2018
16:18:30
Через апи dbus наверное можно.
Вот в гугле первая ссылка https://github.com/coreos/go-systemd но не пробовал.

k1b3r
23.01.2018
16:56:55
Ребята подскажите wg := new(sync.WaitGroup) тут есть какойто лимит на создание потоков и можно ли его задать искуственно ?

Demuz
23.01.2018
16:59:51

John
23.01.2018
17:01:28

Sergey
23.01.2018
17:01:59

Demuz
23.01.2018
17:02:01
а юзают в каким ситуациях? ну например то что спросил тот пользователь? Для чего ему например

John
23.01.2018
17:02:32

Dmitry
23.01.2018
17:02:41

Sergey
23.01.2018
17:02:57

Dmitry
23.01.2018
17:02:58

Demuz
23.01.2018
17:03:11

Sergey
23.01.2018
17:03:14
Ты пробовал?
кореос пробовал, библиотека выглядит более-менее вменяемо.

Google

Sergey
23.01.2018
17:03:22

Dmitry
23.01.2018
17:03:40
Ну ок, я не нашел сразу, как дергать стейты

John
23.01.2018
17:03:45

Dmitry
23.01.2018
17:03:46
Посмотрю ещё

Sergey
23.01.2018
17:04:09

Dmitry
23.01.2018
17:04:36

Александр
23.01.2018
17:04:59
народ сравниваю две строки, в руне выглядят так
[50 48 49 56 45 48 56 45 48 57 84 49 56 58 51 49 58 52 50 43 48 51 58 51 48]
[50 48 49 56 45 48 56 45 48 57 84 49 56 58 51 49 58 52 50 43 48 51 58 51 48]
через != получаю FALSE
через strings.EqualFold - TRUE
КААААК?